SecCmsRecipientInfoRef *recipientinfos;
SecCmsContentInfoRef cinfo;
SecSymmetricKeyRef bulkkey = NULL;
-#if USE_CDSA_CRYPTO
- SecAsn1AlgId algorithm;
-#endif
SECOidTag bulkalgtag;
//CK_MECHANISM_TYPE type;
//PK11SlotInfo *slot;
recipientinfos = envd->recipientInfos;
if (recipientinfos == NULL) {
PORT_SetError(SEC_ERROR_BAD_DATA);
-#if 0
- PORT_SetErrorString("Cannot find recipientinfos to encode.");
-#endif
goto loser;
}
bulkalgtag = SEC_OID_DES_EDE3_CBC;
}
-#if USE_CDSA_CRYPTO
- algorithm = SECOID_FindyCssmAlgorithmByTag(bulkalgtag);
- if (!algorithm)
- goto loser;
- rv = SecKeyGenerate(NULL, /* keychainRef */
- algorithm,
- SecCmsContentInfoGetBulkKeySize(cinfo),
- 0, /* contextHandle */
- CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_DECRYPT,
- CSSM_KEYATTR_EXTRACTABLE,
- NULL, /* initialAccess */
- &bulkkey);
- if (rv)
- goto loser;
-#else
{
size_t keysize = (cinfo->keysize + 7)/8;
uint8_t key_material[keysize];
require_noerr(SecRandomCopyBytes(kSecRandomDefault, keysize, key_material), loser);
bulkkey = (SecSymmetricKeyRef)CFDataCreate(kCFAllocatorDefault, key_material, keysize);
}
-#endif
mark = PORT_ArenaMark(poolp);