Я новичок в криптографии и над головой пытаюсь разобраться в Windows, используя C # .NET.
Я создал ключ эллиптической кривой P-256 (он же secp256r1 и prime256v1), используя следующую команду:
openssl ecparam –name prime256v1 -genkey –noout –out private.key
Я сгенерировал запрос на подпись сертификата, используя следующую команду:
openssl req –new –key private.key –out certreq.csr –sha256
Другая команда прислала мне в ответ сертификат в кодировке base-64. Все идет нормально.
Теперь я получил некоторые «тестовые» данные, которые мне нужны для вычисления подписи ECDSA, используя закрытый ключ. Закрытый ключ выглядит примерно так:
-----BEGIN EC PRIVATE KEY-----
FunnyHow?LIKEACLOWN?DOIAMUSEYOU?DOIMAKEYOULAUGH?==
-----END EC PRIVATE KEY-----
До сих пор я боролся с кодом, подобным следующему:
byte[] cngBlob; // This was calculated based on another StackOverFlow post
byte[] testData = "JoePesciWasGreatInGoodfellas";
CngKey cngKey = CngKey.Import(cngBlob, CngKeyBlobFormat.EccPrivateBlob);
ECDsaCng eCDsaCng = new ECDsaCng(cngKey);
byte[] signatureECDSA = eCDsaCng.SignData(testData);
Я попытался вычислить byte[] cngBlob
с использованием файла закрытого ключа на основе Microsoft CNG | Как импортировать закрытый ключ ECDSA, закодированный в формате PEM, в поставщик хранилища ключей MS, но я не получаю правильный ответ в byte[] signatureECDSA
.
Как мне прочитать закрытый ключ из файла, а затем использовать его для вычисления подписи ECDSA тестовых данных?
Я начал погружаться в увлекательный мир криптографии, но мне потребуется время, чтобы познакомиться с ним. Я здесь на правильном пути? Буду очень признателен за любые советы, которые помогут мне с этой проблемой.