Я пытаюсь загрузить закрытый ключ prime192v1 в C # и подписать некоторые данные, я не получаю аналогичных результатов, которые я получаю в openssl - PullRequest
0 голосов
/ 30 октября 2019

У меня есть файл pem, который был создан в OpenSSL. Мне нужно использовать закрытый ключ для подписи некоторых шестнадцатеричных данных. Я думаю, что у меня все очень близко к функционалу, но я не могу получить аналогичные данные из моего кода, который возвращает openssl.

Это функция, которую я пытаюсь воспроизвести в C #

openssl dgst -sha256 -sign c:\openssl\privateKey.pem c:\openssl\msgtosign.bin > c:\openssl\msgsig.bin

privateKey.pem содержит следующее

-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBAQ==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MF8CAQEEGETOBCEpn9vbZUN8k+LfLfo9zlLPovGL9KAKBggqhkjOPQMBAaE0AzIA
BB/Kr/mLSNrJnONbc5EADZHTVLTesmlyLmGgLUaliztkVrma88eE3Jsg3EiZMq7S
+A==
-----END EC PRIVATE KEY-----

msgtosign.bin Содержит следующие шестнадцатеричные данные

04 9E 00 32 F9 45 84 01 54 52 49 31 02 00 10 20 00 00 00 07 65 43 21 00 00 00 00 00 00 00 00 00 00 00 10

OpenSSL отвечает информацией, подобной этой:

30 36 02 19 00 AC 88 C8 D3 BC C9 C5 21 FE D1 A1 10 B7 4E F0 87 0A 1B 11 83 CA 8F 67 09 02 19 00 B5 62 E4 24 79 BB 42 CA AC 8D 94 4D F2 19 1A 2D 5F 8D BC D9 F7 7B CD 09

Код, который я сейчас использую, производит этот вывод

B8 04 BB 27 5A 68 37 6D 9D BA 34 64 79 84 FE 4A 9C 86 2A 46 33 A1 26 56 B9 39 7E 07 2B F9 26 A6 A6 15 AE A5 96 2D 49 35 E0 8D 0D 92 8F FE 01 50

Из этого кода

            var pem = "MF8CAQEEGETOBCEpn9vbZUN8k+LfLfo9zlLPovGL9KAKBggqhkjOPQMBAaE0AzIABB/Kr/mLSNrJnONbc5EADZHTVLTesmlyLmGgLUaliztkVrma88eE3Jsg3EiZMq7S+A==";
            var derArray = Convert.FromBase64String(pem);
            var ecdsa = ECDsa.Create(ECCurve.CreateFromOid(new Oid("1.2.840.10045.3.1.1")));
            ecdsa.ImportECPrivateKey(derArray, out _);
            var signedData = ecdsa.SignData(File.ReadAllBytes(@"C:\OpenSSL\msgtosign.bin"), HashAlgorithmName.SHA256);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...