public KerberosRequest(byte[] data) { var element = new Asn1Element(data); MechType = new MechType(element[0].AsString()); NegotiationToken = new NegTokenInit(element[1][0]); }
private void SetKerberosValues(KerberosAuthorizeMessage kerberosAuthorizeMessage) { try { if (kerberosAuthorizeMessage.NegotiationToken == null) { return; } NegTokenInit negotiationToken = kerberosAuthorizeMessage.NegotiationToken as NegTokenInit; this.SPN = negotiationToken.MechToken.InnerContextToken.Ticket.ServiceName.ToString(); this.Domain = negotiationToken.MechToken.InnerContextToken.Ticket.Realm; } catch (Exception ex) { } }
public static byte[] EncodeInitialNegToken(byte[] token, KerberosConstValue.OidPkt oidPkt) { int[] oidInt; if (oidPkt == KerberosConstValue.OidPkt.KerberosToken) { oidInt = KerberosConstValue.GetKerberosOidInt(); } else if (oidPkt == KerberosConstValue.OidPkt.MSKerberosToken) { oidInt = KerberosConstValue.GetMsKerberosOidInt(); } else { throw new NotSupportedException("oid not support"); } MechTypeList mechTypeList = new MechTypeList( new MechType[] { new MechType(oidInt) } ); Asn1OctetString octetString = new Asn1OctetString(token); NegTokenInit init = new NegTokenInit(mechTypeList, null, new Asn1OctetString(octetString.ByteArrayValue), new Asn1OctetString((byte[])null)); NegotiationToken negToken = new NegotiationToken(NegotiationToken.negTokenInit, init); MechType spnegoMech = new MechType(KerberosConstValue.GetSpngOidInt()); InitialNegToken initToken = new InitialNegToken(spnegoMech, negToken); Asn1BerEncodingBuffer buffer = new Asn1BerEncodingBuffer(); initToken.BerEncode(buffer); return(buffer.Data); }
public KerberosRequest(byte[] data) { var element = new Asn1Element(data); for (var i = 0; i < element.Count; i++) { var child = element[i]; switch (child.ContextSpecificTag) { case 0: NegotiationToken = new NegTokenInit(child[0]); break; case MechType.ContextTag: MechType = new MechType(child.AsString()); break; case 110: Request = new KrbApReq(child[0]); break; } } }
/// <summary> /// Constructor /// Generally used when encoding /// </summary> /// <param name="token">The Asn.1 formatted token contains in the class</param> public SpngNegTokenInit(NegTokenInit token) : base(token) { }
private static DecryptedData DecryptNegotiate(NegTokenInit negotiationToken, KeyTable keytab) { var token = negotiationToken?.MechToken?.InnerContextToken; return(Decrypt(token, keytab)); }