//EncTicketPart::= [APPLICATION 3] SEQUENCE { // flags[0] TicketFlags, // key[1] EncryptionKey, // crealm[2] Realm, // cname[3] PrincipalName, // transited[4] TransitedEncoding, // authtime[5] KerberosTime, // starttime[6] KerberosTime OPTIONAL, // endtime[7] KerberosTime, // renew-till[8] KerberosTime OPTIONAL, // caddr[9] HostAddresses OPTIONAL, // authorization-data[10] AuthorizationData OPTIONAL //} public EncTicketPart(byte[] sessionKey, Interop.KERB_ETYPE etype, string domain, string user, Interop.TicketFlags ticketFlags, DateTime startTime) { // flags flags = ticketFlags; // default times authtime = startTime; starttime = startTime; endtime = starttime.AddHours(10); renew_till = starttime.AddDays(7); // set session key key = new EncryptionKey(); key.keytype = (int)etype; key.keyvalue = sessionKey; // cname information crealm = domain; cname = new PrincipalName(user); // default empty TransitedEncoding transited = new TransitedEncoding(); // null caddr and authdata caddr = null; authorization_data = null; }
public EncTicketPart(AsnElt body) { foreach (AsnElt s in body.Sub) { switch (s.TagValue) { case 0: UInt32 temp = Convert.ToUInt32(s.Sub[0].GetInteger()); byte[] tempBytes = BitConverter.GetBytes(temp); flags = (Interop.TicketFlags)BitConverter.ToInt32(tempBytes, 0); break; case 1: key = new EncryptionKey(s); break; case 2: crealm = Encoding.ASCII.GetString(s.Sub[0].GetOctetString()); break; case 3: cname = new PrincipalName(s.Sub[0]); break; case 4: transited = new TransitedEncoding(s.Sub[0]); break; case 5: authtime = s.Sub[0].GetTime(); break; case 6: starttime = s.Sub[0].GetTime(); break; case 7: endtime = s.Sub[0].GetTime(); break; case 8: renew_till = s.Sub[0].GetTime(); break; case 9: // caddr (optional) caddr = new List <HostAddress>(); caddr.Add(new HostAddress(s.Sub[0])); break; case 10: // authorization-data (optional) authorization_data = new AuthorizationData(s.Sub[0]); break; default: break; } } }