Я сгенерировал ключ, выполнив следующую команду:
openssl ecparam -genkey -name secp256k1 -out private.key
Стоит упомянуть, что мне пришлось использовать secp256k1
кривой.
Вот private.key:
-----BEGIN EC PARAMETERS-----
BgUrgQQACg==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHQCAQEEIMaqRFP3zkco2B2xZaIDQ0/JGcgOqzLPcTTJPqvpu+UooAcGBSuBBAAK
oUQDQgAEp0mktO9BMlsVw9lG8EIxr9wZizBHSlUv3VIbf3sTBmCxE4myJvZcgF8b
qDp0T/o9TqnsBw15LU3wdnqV4tJp6w==
-----END EC PRIVATE KEY-----
Затем я попытался подписать какое-нибудь случайное текстовое сообщение:
var privateKey = CngKey.Import(privateKeyBytes, CngKeyBlobFormat.EccPrivateBlob);
var signer = new ECDsaCng(privateKey);
var signed = signer.SignData(messageBytes, HashAlgorithmName.SHA256);
Но столкнулся с проблемой при вызове CngKey.Import: Windows Cryptography Next Generation (CNG) is not supported on this platform.
(MacOS)
Есть ли способ выполнения sh это кроссплатформенный?