Используя Windows CryptoAPI, можно ли получить открытый ключ RSA из закрытого ключа, который был импортирован (не сгенерирован)?CryptoAPI - как извлечь открытый ключ RSA из частного
Если я использую CryptGenKey, я могу вызвать CryptExportPublicKeyInfo и CryptImportPublicKeyInfo для получения дескриптора открытого ключа. Однако, когда я пытаюсь сделать то же самое с закрытым ключом декодируется из П и импортировать с помощью:
CryptImportKey(hCSP, pKeyBuf, cbKeyBuf, 0, CRYPT_EXPORTABLE, &hPrivKey)
импорта закрытого ключа успешно, и у меня есть правильный дескриптор, но последующий вызов CryptExportPublicKeyInfo терпит неудачу с «Ключ делает не существует ". Похоже, что между CryptImportKey и CryptExportPublicKeyInfo нет другого вызова, но я не могу найти этот вызов API.
Как выглядит ваш вызов 'CryptExportPublicKey'? Это ключ подписи или ключ шифрования ключа? – erickson
Импорт PEM был сгенерирован путем вызова CryptExportKey (hKey, 0, PRIVATEKEYBLOB, 0, & buf и размера), а buf затем закодирован в DER -> PEM. Я могу успешно импортировать закрытый ключ из PEM, но не знаю, как получить из него открытый ключ. – Alex
Я говорю о «последующем вызове», который терпит неудачу, а не о происхождении закрытого ключа. Второй экспорт выглядит так же, как и исходный экспорт? Я не знаком с CryptoAPI, но другие API, которые, как я знаю, предлагают API, чтобы дать вам «прозрачное» представление о ключевом материале. В случае с секретным ключом RSA, который обычно дает вам структуру, представляющую ключ в форме теоремы о сохранении китайского остатка (CRT), которая будет иметь число больших целочисленных членов. Я не видел ничего похожего на то, что быстро просматривал документы Windows CryptoAPI. Это звонит? – erickson