Импортировать открытые / закрытые ключи ECDH в BouncyCastle - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь импортировать открытые и закрытые ключи ECDH в BouncyCastle.Чтобы импортировать публичный ключ я использую C # код, приведенные ниже, и код работает нормально:

byte[] pc = HexStringToByteArray(PUBLIC_KEY);
var ecdp = TlsEccUtilities.GetParametersForNamedCurve(NamedCurve.secp256r1);
var basePoint = TlsEccUtilities.ValidateECPublicKey(TlsEccUtilities.DeserializeECPublicKey(null, ecdp, pc));
SubjectPublicKeyInfo subinfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(basePoint);
ECPublicKeyParameters publicKey = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(subinfo);

открытый ключ: 042e3e5ccf6b9ab04be7a22f3faccfde73c87e87155394a34815408a896ca18a374dac669af3bf6220fc863767f4af47507c5bc221fc4a19874daf39b4074e3eb8

1007 * закрытый ключ: be3f9bff87973356d04dad279e21535925c3656db011c9ae76b5a7f09ef8d9de

Но я не могу найти решение для импорта закрытого ключа.Не могли бы вы помочь мне с этим вопросом?

1 Ответ

0 голосов
/ 04 февраля 2019

Финли я ​​нашел решение:

// Import public key
byte[] pc = HexStringToByteArray(PUBLIC_KEY);
var ecdp = TlsEccUtilities.GetParametersForNamedCurve(NamedCurve.secp256r1);
var basePoint = TlsEccUtilities.ValidateECPublicKey(TlsEccUtilities.DeserializeECPublicKey(null, ecdp, pc));
SubjectPublicKeyInfo subinfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(basePoint);
ECPublicKeyParameters publicKey = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(subinfo);

// Import private key
BigInteger bi = new BigInteger(HexStringToByteArray(PRIVATE_KEY));
ECPrivateKeyParameters privateKey = new ECPrivateKeyParameters(bi, publicKey.Parameters);
...