public void ImportPrivateKey() { IExchangeKey aliceKey = null; IExchangeKey bobKey = null; byte[] firstPassDerivedKey = null; using (var alice = new BCryptDiffieHellmanOakleyGroup14()) using (var bob = new BCryptDiffieHellmanOakleyGroup14()) { aliceKey = alice.PrivateKey; bobKey = bob.PrivateKey; alice.ImportPartnerKey(bob.PublicKey); bob.ImportPartnerKey(alice.PublicKey); AssertKeysAgree(alice, bob); firstPassDerivedKey = alice.GenerateAgreement().ToArray(); } using (var alice = BCryptDiffieHellman.Import(aliceKey)) using (var bob = BCryptDiffieHellman.Import(bobKey)) { alice.ImportPartnerKey(bob.PublicKey); bob.ImportPartnerKey(alice.PublicKey); var aliceDerived = alice.GenerateAgreement(); AssertKeysAgree(alice, bob); Assert.IsTrue(aliceDerived.Span.SequenceEqual(firstPassDerivedKey)); } }
public ReadOnlyMemory <byte> Modp14() { using (var alice = new BCryptDiffieHellmanOakleyGroup14()) using (var bob = new BCryptDiffieHellmanOakleyGroup14()) { alice.ImportPartnerKey(bob.PublicKey); bob.ImportPartnerKey(alice.PublicKey); return(alice.GenerateAgreement()); } }