Esempio n. 1
0
        //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;
        }
Esempio n. 2
0
        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;
                }
            }
        }