Added RSA encryption to crypto wrappers.
This commit is contained in:
parent
a2dfb28537
commit
ca0e51d89c
@ -196,6 +196,40 @@ int cRSAPrivateKey::Decrypt(const Byte * a_EncryptedData, size_t a_EncryptedLeng
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int cRSAPrivateKey::Encrypt(const Byte * a_PlainData, size_t a_PlainLength, Byte * a_EncryptedData, size_t a_EncryptedMaxLength)
|
||||||
|
{
|
||||||
|
if (a_EncryptedMaxLength < m_Rsa.len)
|
||||||
|
{
|
||||||
|
LOGD("%s: Invalid a_EncryptedMaxLength: got %u, exp at least %u",
|
||||||
|
__FUNCTION__, (unsigned)a_EncryptedMaxLength, (unsigned)(m_Rsa.len)
|
||||||
|
);
|
||||||
|
ASSERT(!"Invalid a_DecryptedMaxLength!");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (a_PlainLength < m_Rsa.len)
|
||||||
|
{
|
||||||
|
LOGD("%s: Invalid a_PlainLength: got %u, exp at least %u",
|
||||||
|
__FUNCTION__, (unsigned)a_PlainLength, (unsigned)(m_Rsa.len)
|
||||||
|
);
|
||||||
|
ASSERT(!"Invalid a_PlainLength!");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
size_t DecryptedLength;
|
||||||
|
int res = rsa_pkcs1_encrypt(
|
||||||
|
&m_Rsa, ctr_drbg_random, &m_Ctr_drbg, RSA_PUBLIC,
|
||||||
|
a_PlainLength, a_PlainData, a_EncryptedData
|
||||||
|
);
|
||||||
|
if (res != 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return (int)DecryptedLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// cAESCFBDecryptor:
|
// cAESCFBDecryptor:
|
||||||
|
|
||||||
|
@ -43,6 +43,11 @@ public:
|
|||||||
Returns the number of bytes decrypted, or negative number for error. */
|
Returns the number of bytes decrypted, or negative number for error. */
|
||||||
int Decrypt(const Byte * a_EncryptedData, size_t a_EncryptedLength, Byte * a_DecryptedData, size_t a_DecryptedMaxLength);
|
int Decrypt(const Byte * a_EncryptedData, size_t a_EncryptedLength, Byte * a_DecryptedData, size_t a_DecryptedMaxLength);
|
||||||
|
|
||||||
|
/** Encrypts the data using RSAES-PKCS#1 algorithm.
|
||||||
|
Both a_EncryptedData and a_DecryptedData must be at least <KeySizeBytes> bytes large.
|
||||||
|
Returns the number of bytes decrypted, or negative number for error. */
|
||||||
|
int Encrypt(const Byte * a_PlainData, size_t a_PlainLength, Byte * a_EncryptedData, size_t a_EncryptedMaxLength);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
rsa_context m_Rsa;
|
rsa_context m_Rsa;
|
||||||
entropy_context m_Entropy;
|
entropy_context m_Entropy;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user