Как сгенерировать пару ключей ECDSA?C#

Место общения программистов C#
Ответить
Anonymous
 Как сгенерировать пару ключей ECDSA?

Сообщение Anonymous »


How to generate an ECSDA key pair using the SecP256r1 curve in C# ??

Currently, I am using Bouncy Castle

Below is the code, that I am using to generate the ECSDA private key.

// Create ECDSA key pair generator var ecKeyPairGenerator = new ECKeyPairGenerator(); var genParam = new ECKeyGenerationParameters(SecObjectIdentifiers.SecP256r1, new SecureRandom()); ecKeyPairGenerator.Init(genParam); AsymmetricCipherKeyPair ecKeyPair = ecKeyPairGenerator.GenerateKeyPair(); // Convert Private Key to PEM format string privateKeyPem = ConvertToPem(ecKeyPair.Private); public string ConvertToPem(AsymmetricKeyParameter privateKey) { StringWriter stringWriter = new StringWriter(); // Manually construct PEM format for EC private key PemWriter pemWriter = new PemWriter(stringWriter); PemObject pemObject = new PemObject("EC PRIVATE KEY", EncodeEcPrivateKey(privateKey)); pemWriter.WriteObject(pemObject); return stringWriter.ToString(); } private byte[] EncodeEcPrivateKey(AsymmetricKeyParameter privateKey) { PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKey); return privateKeyInfo.ToAsn1Object().GetEncoded(); } when I go to read the private key which I generated, I am getting an error
string privateKeyContent = File.ReadAllText(@"C:\ZatcaKeys\privatekey.txt"); byte[] inArray = null; using (TextReader reader = new StringReader(privateKeyContent)) { Org.BouncyCastle.OpenSsl.PemReader pemReader = new Org.BouncyCastle.OpenSsl.PemReader(reader); PemObject pemObject = pemReader.ReadPemObject(); if (pemObject != null) { AsymmetricKeyParameter privateKey = (AsymmetricKeyParameter) PrivateKeyFactory.CreateKey(pemObject.Content); ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA"); signer.Init(forSigning: true, privateKey); signer.BlockUpdate((byte[])(object)array, 0, array.Length); inArray = signer.GenerateSignature(); } } Org.BouncyCastle.OpenSsl.PemException: 'problem creating EC private key: System.NullReferenceException: Object reference not set to an instance of an object. at Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey(PrivateKeyInfo keyInfo) at Org.BouncyCastle.OpenSsl.PemReader.ReadPrivateKey(PemObject pemObject)'

Источник: https://stackoverflow.com/questions/780 ... a-key-pair
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»