// make data to be encrypted
unsigned bytesInKey = encryptingKey->KeyHeader.LogicalKeySizeInBits / 8;
- u_int8_t buffer[bytesInKey];
+ u_int8_t *buffer = (u_int8_t*)malloc(bytesInKey);
+ if (buffer == NULL) {
+ CssmError::throwMe(CSSMERR_CSSM_MEMORY_ERROR);
+ }
+
unsigned i;
for (i = 0; i < bytesInKey; ++i)
CSSM_RETURN result = CSSM_CSP_CreateAsymmetricContext(moduleHandle, encryptingKey->KeyHeader.AlgorithmId, &nullCreds, encryptingKey, CSSM_PADDING_NONE, &encryptHandle);
if (result != CSSM_OK)
{
+ free(buffer);
CssmError::throwMe(result);
}
result = CSSM_QuerySize(encryptHandle, CSSM_TRUE, 1, &qsData);
if (result == CSSMERR_CSP_INVALID_ALGORITHM)
{
+ free(buffer);
return;
}
result = CSSM_EncryptData(encryptHandle, &clearBuf, 1, &cipherBuf, 1, &bytesEncrypted, &remData);
if (result != CSSM_OK)
{
+ free(buffer);
CssmError::throwMe(result);
}
if (result != CSSM_OK)
{
+ free(buffer);
CssmError::throwMe(result);
}
result = CSSM_DecryptData(decryptHandle, &cipherBuf, 1, &decryptedBuf, 1, &bytesEncrypted, &remData);
if (result != CSSM_OK)
{
+ free(buffer);
CssmError::throwMe(result);
}
{
free(remData.Data);
}
+
+ free(buffer);
}
void CSPFullPluginSession::ObtainPrivateKeyFromPublicKey(const CssmKey &PublicKey,
// never add a key that is already in mKeyMap
assert(inserted);
- secdebug("SecAccessReference", "added a referenced key %p for key reference %d", &referencedKey, referencedKey.keyReference());
+ secinfo("SecAccessReference", "added a referenced key %p for key reference %ld", &referencedKey, referencedKey.keyReference());
}
ReferencedKey &
if (it == mKeyMap.end())
CssmError::throwMe(CSSMERR_CSP_INVALID_KEY_REFERENCE);
- secdebug("SecAccessReference", "found a referenced key %p for key reference %d [%d]", it->second, keyReference, it->second->keyReference());
+ secinfo("SecAccessReference", "found a referenced key %p for key reference %ld [%ld]", it->second, keyReference, it->second->keyReference());
return *it->second;
}