如何从PEM文件导入带有passprhase的私钥

时间:2014-06-26 21:40:45

标签: c++ ssl cryptoapi

我尝试使用CryptStringToBinary和CryptDecodeObjectEx从PEM文件加载私钥,当私钥没有密码保护时,它可以正常工作,但当密钥受密码保护时它不起作用。

if(!CryptStringToBinary(buffer.get(), length, CRYPT_STRING_BASE64HEADER, reinterpret_cast<BYTE*>(outBuffer.get()),
                        &outLength, 0, 0))
{
    cerr << "CryptStringToBinary Error: " << GetLastError();
    return -1;
}

DWORD keyBlobLength = 0;
CRYPT_PRIVATE_KEY_INFO* keyBlob = 0;

if(!CryptDecodeObjectEx(X509_ASN_ENCODING, PKCS_PRIVATE_KEY_INFO, 
                        reinterpret_cast<const BYTE*>(outBuffer.get()), 
                        outLength, CRYPT_DECODE_ALLOC_FLAG, 0, &keyBlob, &keyBlobLength))
{
    cerr << "CryptDecodeObjectEx Error:\n" << GetLastError();
    return -1;
}

如何使用密码解密PEM文件?我需要使用WinCrypt而不是openssl。

0 个答案:

没有答案