Esempio n. 1
0
        public void CredPartRoundtrip()
        {
            KrbEncKrbCredPart part = new KrbEncKrbCredPart
            {
                Nonce    = 123,
                RAddress = new KrbHostAddress
                {
                    Address     = Encoding.ASCII.GetBytes("blaaaaaaaah"),
                    AddressType = AddressType.NetBios
                },
                SAddress = new KrbHostAddress
                {
                    Address     = Encoding.ASCII.GetBytes("server"),
                    AddressType = AddressType.NetBios
                },
                Timestamp  = DateTimeOffset.UtcNow,
                USec       = 123,
                TicketInfo = new[]
                {
                    new KrbCredInfo
                    {
                        AuthorizationData = new KrbAuthorizationData[]
                        {
                            new KrbAuthorizationData
                            {
                                Data = Array.Empty <byte>(),
                                Type = AuthorizationDataType.AdAndOr
                            }
                        },
                        AuthTime  = DateTimeOffset.UtcNow,
                        EndTime   = DateTimeOffset.UtcNow,
                        RenewTill = DateTimeOffset.UtcNow,
                        Flags     = TicketFlags.Anonymous,
                        Key       = KrbEncryptionKey.Generate(EncryptionType.AES128_CTS_HMAC_SHA1_96),
                        PName     = new KrbPrincipalName
                        {
                            Name = new[] { "pname" },
                            Type = PrincipalNameType.NT_ENTERPRISE
                        },
                        Realm = "realm.com",
                        SName = new KrbPrincipalName
                        {
                            Name = new[] { "server" },
                            Type = PrincipalNameType.NT_ENTERPRISE
                        },
                        SRealm    = "srealm.com",
                        StartTime = DateTimeOffset.UtcNow
                    }
                }
            };

            var encoded = part.EncodeApplication();

            var decoded = KrbEncKrbCredPart.DecodeApplication(encoded);

            Assert.IsNotNull(decoded);

            Assert.AreEqual(part.Nonce, decoded.Nonce);
            Assert.AreEqual(1, part.TicketInfo.Length);
        }