Я использую CryptEncryptMessage
для создания огибаемого сообщения PKCS#7
. Я использую szOID_NIST_AES256_CBC
как алгоритм шифрования.
Сгенерированное сообщение представляется допустимым, но это RSAES-OAEP
для алгоритма транспорта ключей, который имеет ограниченную поддержку в дикой природе (Thunderbird, OpenSSL SMIME Module среди многих других не поддерживает его).
Мне бы хотелось, чтобы 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);