internal object GetCacheItem(string key) { Krb5Credential cred = this.FindCredential(key); if (cred is null) { return(cred); } return(new KerberosClientCacheEntry { KdcResponse = new KrbTgsRep { Ticket = KrbTicket.DecodeApplication(cred.Ticket), CName = KrbPrincipalName.FromString(cred.Client.FullyQualifiedName), CRealm = cred.Client.Realm, EncPart = new KrbEncryptedData { } }, SessionKey = new KrbEncryptionKey { EType = cred.KeyBlock.Key, KeyValue = cred.KeyBlock.Value }, Flags = cred.Flags, SName = KrbPrincipalName.FromString(cred.Server.FullyQualifiedName) }); }
private static object CredToCacheEntry(Krb5Credential cred) { return(new KerberosClientCacheEntry { KdcResponse = new KrbTgsRep { Ticket = KrbTicket.DecodeApplication(cred.Ticket), CName = KrbPrincipalName.FromString(cred.Client.FullyQualifiedName, cred.Client.Type), CRealm = cred.Client.Realm, EncPart = new KrbEncryptedData { } }, SessionKey = new KrbEncryptionKey { EType = cred.KeyBlock.Key, KeyValue = cred.KeyBlock.Value }, Flags = cred.Flags, SName = KrbPrincipalName.FromString(cred.Server.FullyQualifiedName), AuthTime = cred.AuthTime, StartTime = cred.StartTime, EndTime = cred.EndTime, RenewTill = cred.RenewTill <= DateTimeOffset.MinValue ? null : cred.RenewTill }); }
private static KrbTicket TryParseTicket(ReadOnlyMemory <byte> ticket) { if (ticket.Length <= 0) { return(null); } try { return(KrbTicket.DecodeApplication(ticket)); } catch (CryptographicException) { } return(null); }