Exemplo n.º 1
0
 public override void Decrypt(KerberosKey key)
 {
     this.Response = this.response.EncryptedPart.Decrypt(
         key,
         KeyUsage.EncApRepPart,
         data => KrbEncApRepPart.DecodeApplication(data)
         );
 }
Exemplo n.º 2
0
        public void KrbEncApRepPartRoundtrip()
        {
            var encPart = new KrbEncApRepPart
            {
                CTime          = DateTimeOffset.UtcNow,
                CuSec          = 123,
                SequenceNumber = 123,
                SubSessionKey  = KrbEncryptionKey.Generate(EncryptionType.AES128_CTS_HMAC_SHA1_96)
            };

            var encoded = encPart.Encode();

            var decoded = KrbEncApRepPart.DecodeApplication(encoded.AsMemory());

            Assert.IsNotNull(decoded);
        }
Exemplo n.º 3
0
        public async Task TestKdcTagPeekFailureUnknownHandler()
        {
            var kdc = new KdcServer(new ListenerOptions {
                DefaultRealm = "domain.com", IsDebug = true
            });

            var aprepPart = new KrbEncApRepPart {
            };

            ReadOnlySequence <byte> request = new ReadOnlySequence <byte>(aprepPart.EncodeApplication().ToArray());

            var response = await kdc.ProcessMessage(request);

            var err = KrbError.DecodeApplication(response);

            Assert.IsNotNull(err);

            Assert.AreEqual(KerberosErrorCode.KRB_ERR_GENERIC, err.ErrorCode);
            Assert.IsTrue(err.EText.Contains("doesn't have a message handler registered"));
        }
Exemplo n.º 4
0
        public async Task TestKdcTagPeekFailureNullBuilder()
        {
            var kdc = new KdcServer(new ListenerOptions {
                DefaultRealm = "domain.com", IsDebug = true
            });

            kdc.RegisterMessageHandler((MessageType)27, (b, o) => null);

            var aprepPart = new KrbEncApRepPart {
            };

            ReadOnlySequence <byte> request = new ReadOnlySequence <byte>(aprepPart.EncodeApplication().ToArray());

            var response = await kdc.ProcessMessage(request);

            var err = KrbError.DecodeApplication(response);

            Assert.IsNotNull(err);

            Assert.AreEqual(KerberosErrorCode.KRB_ERR_GENERIC, err.ErrorCode);
            Assert.IsTrue(err.EText.Contains("Message handler builder 27 must not return null"));
        }
Exemplo n.º 5
0
        private static DecryptedKrbApRep CreateResponseMessage(DateTimeOffset ctime, int cusec, int sequence, KerberosKey sessionKey)
        {
            var apRepPart = new KrbEncApRepPart
            {
                CTime          = ctime,
                CuSec          = cusec,
                SequenceNumber = sequence
            };

            var apRep = new KrbApRep
            {
                EncryptedPart = KrbEncryptedData.Encrypt(
                    apRepPart.EncodeApplication(),
                    sessionKey,
                    KeyUsage.EncApRepPart
                    )
            };

            var decrypted = new DecryptedKrbApRep(apRep);

            decrypted.Decrypt(sessionKey);

            return(decrypted);
        }