/ / CryptoAPI - jak wyodrębnić klucz publiczny RSA z prywatnego - rsa, szyfrowanie z kluczem publicznym, cryptoapi, szyfrowanie-asymetryczne

CryptoAPI - jak wyodrębnić klucz publiczny RSA z prywatnego - RSA, klucz publiczny szyfrowania, kryptoapi, szyfrowanie-asymetria

Czy przy użyciu Windows CryptoAPI można uzyskać publiczny klucz RSA z klucza prywatnego, który został zaimportowany (nie wygenerowany)?

Jeśli używam CryptGenKey, mogę zadzwonićCryptExportPublicKeyInfo i CryptImportPublicKeyInfo, aby uzyskać uchwyt klucza publicznego. Jednak gdy próbuję zrobić to samo z kluczem prywatnym zdekodowanym z PEM i zaimportowanym za pomocą:

CryptImportKey(hCSP, pKeyBuf, cbKeyBuf, 0, CRYPT_EXPORTABLE, &hPrivKey)

import klucza prywatnego powiedzie się i mampoprawny uchwyt, ale kolejne wywołanie CryptExportPublicKeyInfo nie powiedzie się z błędem „Klucz nie istnieje”. Wygląda na to, że między CryptImportKey a CryptExportPublicKeyInfo brakuje innego wywołania, ale nie mogę znaleźć tego wywołania API.

Odpowiedzi:

1 dla odpowiedzi № 1

Problemem z eksportowaniem / importowaniem klucza publicznego był fakt, że klucz prywatny został wygenerowany przy użyciu AT_SIGNATURE, zamiast AT_EXCHANGE. Zobacz wyjaśnienie i przykładowy kod