コード例 #1
0
        public KerberosRequest(byte[] data)
        {
            var element = new Asn1Element(data);

            MechType         = new MechType(element[0].AsString());
            NegotiationToken = new NegTokenInit(element[1][0]);
        }
コード例 #2
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)
     {
     }
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
                }
            }
        }
コード例 #5
0
 /// <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)
 {
 }
コード例 #6
0
        private static DecryptedData DecryptNegotiate(NegTokenInit negotiationToken, KeyTable keytab)
        {
            var token = negotiationToken?.MechToken?.InnerContextToken;

            return(Decrypt(token, keytab));
        }