Я пытаюсь выполнить обмен ключами ECDH с помощью С# BouncyCastle. Мне удалось создать необходимые объекты AsymmetricCipherKeyPair, и я также могу сгенерировать общий ключ открытого ключа других сторон.
Однако для фактического обмена открытым ключом мне нужен byte[] или, по крайней мере, что-то, что я могу превратить в необработанные данные, поскольку протокол, который я использую для передачи ключей между сторонами, не будет принимать никаких объектов BouncyCastle.
X9ECParameters ecPars = NistNamedCurves.GetByName("P-521");
ECDomainParameters ecDomPars = new ECDomainParameters(ecPars.Curve, ecPars.G, ecPars.N, ecPars.H, ecPars.GetSeed());
IAsymmetricCipherKeyPairGenerator gen = GeneratorUtilities.GetKeyPairGenerator("ECDH");
gen.Init(new ECKeyGenerationParameters(ecDomPars, new SecureRandom()));
AsymmetricCipherKeyPair keyPair = gen.GenerateKeyPair();
IBasicAgreement keyAgreement = AgreementUtilities.GetBasicAgreement("ECDH");
keyAgreement.Init(keyPair.Private);
Итак, мне нужно здесь значение ключа keyPair.Public в виде byte[].
Надеюсь, вы понимаете, к чему я клоню, и сможете мне помочь.