Я новичок в криптографии и пытаюсь разобраться в Windows, используя C # .NET
Я сгенерировал ключ P-256 (a.k.a. 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 тестовых данных?
Я начал углубляться в увлекательный мир криптографии, но мне потребуется некоторое время, чтобы ознакомиться с ним. Я на правильном пути здесь? Тем временем любые советы, которые помогут мне с этим вопросом, будут высоко оценены.