71

エンベロープ メッセージ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);
4

1 に答える 1