public static void UpdateAuthDataInTicket(Ticket ticket, byte[] key, AuthorizationData authorizationData) { EncryptionType encryptType = (EncryptionType)ticket.enc_part.etype.Value; byte[] clearText = KileUtility.Decrypt( encryptType, key, ticket.enc_part.cipher.ByteArrayValue, (int)KeyUsageNumber.AS_REP_TicketAndTGS_REP_Ticket); // Decode the ticket. Asn1DecodingBuffer decodeBuffer = new Asn1DecodingBuffer(clearText); EncTicketPart encTicketPart = new EncTicketPart(); encTicketPart.BerDecode(decodeBuffer); // Set with new authorization data encTicketPart.authorization_data = authorizationData; Asn1BerEncodingBuffer ticketBerBuffer = new Asn1BerEncodingBuffer(); encTicketPart.BerEncode(ticketBerBuffer, true); byte[] cipherData = KileUtility.Encrypt( encryptType, key, ticketBerBuffer.Data, (int)KeyUsageNumber.AS_REP_TicketAndTGS_REP_Ticket); ticket.enc_part = new EncryptedData(new KerbInt32((int)encryptType), null, new Asn1OctetString(cipherData)); }
public static AuthorizationData GetAuthDataInTicket(Ticket ticket, byte[] key) { EncryptionType encryptType = (EncryptionType)ticket.enc_part.etype.Value; byte[] clearText = KileUtility.Decrypt( encryptType, key, ticket.enc_part.cipher.ByteArrayValue, (int)KeyUsageNumber.AS_REP_TicketAndTGS_REP_Ticket); // Decode the ticket. Asn1DecodingBuffer decodeBuffer = new Asn1DecodingBuffer(clearText); EncTicketPart encTicketPart = new EncTicketPart(); encTicketPart.BerDecode(decodeBuffer); return(encTicketPart.authorization_data); }