public static KrbCred WrapTicket(KrbTicket ticket, KrbCredInfo credInfo) { if (ticket is null) { throw new ArgumentNullException(nameof(ticket)); } if (credInfo is null) { throw new ArgumentNullException(nameof(credInfo)); } Now(out DateTimeOffset timestamp, out int usec); var encPart = new KrbEncKrbCredPart { Timestamp = timestamp, USec = usec, TicketInfo = new[] { credInfo } }; var cred = new KrbCred { EncryptedPart = new KrbEncryptedData { Cipher = encPart.EncodeApplication() }, Tickets = new[] { ticket }, }; return(cred); }
public static KrbCred GenerateWrappedServiceTicket(ServiceTicketRequest request) { GenerateServiceTicket <KrbTgsRep>( request, out KrbEncTicketPart encTicketPart, out KrbTicket ticket, out _, out _, out _ ); return(KrbCred.WrapTicket(ticket, encTicketPart)); }
public static KrbCred WrapTicket(KrbTicket ticket, KrbEncTicketPart encTicketPart) { if (ticket is null) { throw new ArgumentNullException(nameof(ticket)); } if (encTicketPart is null) { throw new ArgumentNullException(nameof(encTicketPart)); } KerberosConstants.Now(out DateTimeOffset timestamp, out int usec); var encPart = new KrbEncKrbCredPart { Timestamp = timestamp, USec = usec, TicketInfo = new[] { new KrbCredInfo { Key = encTicketPart.Key, AuthTime = encTicketPart.AuthTime, EndTime = encTicketPart.EndTime, Flags = encTicketPart.Flags, PName = encTicketPart.CName, Realm = encTicketPart.CRealm, RenewTill = encTicketPart.RenewTill, SName = ticket.SName, SRealm = ticket.Realm, StartTime = encTicketPart.StartTime, } } }; var cred = new KrbCred { EncryptedPart = new KrbEncryptedData { Cipher = encPart.EncodeApplication() }, Tickets = new[] { ticket }, }; return(cred); }
public DelegationInfo Decode(ReadOnlyMemory <byte> value) { using (var reader = new BinaryReader(new MemoryStream(value.ToArray()))) { this.Length = reader.ReadInt32(); this.ChannelBinding = reader.ReadBytes(this.Length); this.Flags = (GssContextEstablishmentFlag)reader.ReadBytes(4).AsLong(littleEndian: true); if (reader.BytesAvailable() > 0) { this.DelegationOption = reader.ReadInt16(); } int delegationLength = 0; if (reader.BytesAvailable() > 0) { delegationLength = reader.ReadInt16(); } byte[] delegationTicket = null; if (reader.BytesAvailable() > 0) { delegationTicket = reader.ReadBytes(delegationLength); } if (delegationTicket != null && delegationTicket.Length > 0) { this.DelegationTicket = KrbCred.DecodeApplication(delegationTicket); } if (reader.BytesAvailable() > 0) { this.Extensions = reader.ReadBytes((int)reader.BytesAvailable()); } } return(this); }
public DelegationInfo Decode(ReadOnlyMemory <byte> value) { var reader = new BinaryReader(new MemoryStream(value.ToArray())); Length = reader.ReadInt32(); ChannelBinding = reader.ReadBytes(Length); Flags = (ChecksumFlag)BitConverter.ToInt32(reader.ReadBytes(4), 0); if (reader.BytesAvailable() > 0) { DelegationOption = reader.ReadInt16(); } int delegationLength = 0; if (reader.BytesAvailable() > 0) { delegationLength = reader.ReadInt16(); } byte[] delegationTicket = null; if (reader.BytesAvailable() > 0) { delegationTicket = reader.ReadBytes(delegationLength); } if (delegationTicket != null && delegationTicket.Length > 0) { DelegationTicket = KrbCred.DecodeApplication(delegationTicket); } if (reader.BytesAvailable() > 0) { Extensions = reader.ReadBytes((int)reader.BytesAvailable()); } return(this); }