docs: def add_kirbi(self, krbcred, override_pp = True, include_expired = False):
  		c = Credential()
  		enc_credinfo = EncKrbCredPart.load(krbcred['enc-part']['cipher']).native
  		ticket_info = enc_credinfo['ticket-info'][0]
  		
  		"""
  		if ticket_info['endtime'] < datetime.datetime.now(datetime.timezone.utc):
  			if include_expired == True:
  				logging.debug('This ticket has most likely expired, but include_expired is forcing me to add it to cache! This can cause problems!')
  			else:
  				logging.debug('This ticket has most likely expired, skipping')
  				return
  		"""
  		
  		c.client = CCACHEPrincipal.from_asn1(ticket_info['pname'], ticket_info['prealm'])
  		if override_pp == True:
  			self.primary_principal = c.client
  		
  		#yaaaaay 4 additional weirdness!!!!
  		#if sname name-string contains a realm as well htne impacket will crash miserably :(
  		if len(ticket_info['sname']['name-string']) > 2 and ticket_info['sname']['name-string'][-1].upper() == ticket_info['srealm'].upper():
  			logging.debug('SNAME contains the realm as well, trimming it')
  			t = ticket_info['sname']
  			t['name-string'] = t['name-string'][:-1]
  			c.server = CCACHEPrincipal.from_asn1(t, ticket_info['srealm'])
  		else:
  			c.server = CCACHEPrincipal.from_asn1(ticket_info['sname'], ticket_info['srealm'])
  		
  		
  		c.time = Times.from_asn1(ticket_info)
  		c.key = Keyblock.from_asn1(ticket_info['key'])
  		c.is_skey = 0 #not sure!
  		
  		c.tktflags = TicketFlags(ticket_info['flags']).cast(core.IntegerBitString).native
  		c.num_address = 0
  		c.num_authdata = 0
  		c.ticket = CCACHEOctetString.from_asn1(Ticket(krbcred['tickets'][0]).dump()) #kirbi only stores one ticket per file
  		c.second_ticket = CCACHEOctetString.empty()
  		
  		self.credentials.append(c)