public override void Decrypt(KerberosKey key) { this.Response = this.response.EncryptedPart.Decrypt( key, KeyUsage.EncApRepPart, data => KrbEncApRepPart.DecodeApplication(data) ); }
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); }
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")); }
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")); }
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); }