エンベロープ メッセージCryptEncryptMessage
の生成に使用しています。暗号化アルゴリズムとしてPKCS#7
使用しています。szOID_NIST_AES256_CBC
生成されたメッセージは有効であるように見えますが、実際にはRSAES-OAEP
サポートが制限されているキー トランスポート アルゴリズム用です (Thunderbird、OpenSSL SMIME モジュールの多くはサポートしていません)。
私は、CAPI がRSAencryption
キー転送のために古いものに戻ることを望みます。
それを行う方法はありますか、使用するのではなく方法があれば低レベルのメッセージング機能に戻すことができますCryptEncryptMessage
が、低レベルの機能を使用してもそれを行う方法が見つかりません。
コード:
CRYPT_ENCRYPT_MESSAGE_PARA EncryptMessageParams;
EncryptMessageParams.cbSize = sizeof(CMSG_ENVELOPED_ENCODE_INFO);
EncryptMessageParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING;
EncryptMessageParams.ContentEncryptionAlgorithm.pszObjId = szOID_NIST_AES256_CBC;
EncryptMessageParams.ContentEncryptionAlgorithm.Parameters.cbData = 0;
EncryptMessageParams.ContentEncryptionAlgorithm.Parameters.pbData = 0;
EncryptMessageParams.hCryptProv = NULL;
EncryptMessageParams.pvEncryptionAuxInfo = NULL;
EncryptMessageParams.dwFlags = 0;
EncryptMessageParams.dwInnerContentType = 0;
BYTE pbEncryptedBlob[640000];
DWORD pcbEncryptedBlob = 640000;
BOOL retval = CryptEncryptMessage(&EncryptMessageParams, cRecipientCert, pRecipCertContextArray, pbMsgText, dwMsgTextSize, pbEncryptedBlob, &pcbEncryptedBlob);