fixed memory issues
This commit is contained in:
@@ -111,10 +111,10 @@ str RSA_serializePublicKey_base64(const br_rsa_public_key* pk){
|
||||
return str_construct(serialized_buf, offset, true);
|
||||
}
|
||||
|
||||
Result(void) RSA_parsePublicKey_base64(const str src, br_rsa_public_key* pk){
|
||||
Result(void) RSA_parsePublicKey_base64(cstr src, br_rsa_public_key* pk){
|
||||
Deferral(8);
|
||||
u32 n_bitlen = 0;
|
||||
if(sscanf(src.data, "RSA-Public-%u:", &n_bitlen) != 1){
|
||||
if(sscanf(src, "RSA-Public-%u:", &n_bitlen) != 1){
|
||||
Return RESULT_ERROR("can't parse key size", false);
|
||||
}
|
||||
u32 key_buffer_size = BR_RSA_KBUF_PUB_SIZE(n_bitlen);
|
||||
@@ -122,11 +122,12 @@ Result(void) RSA_parsePublicKey_base64(const str src, br_rsa_public_key* pk){
|
||||
pk->elen = 4;
|
||||
pk->nlen = key_buffer_size - 4;
|
||||
pk->e = pk->n + pk->nlen;
|
||||
u32 offset = str_seekChar(src, ':', 10) + 1;
|
||||
str src_str = str_from_cstr(src);
|
||||
u32 offset = str_seekChar(src_str, ':', 10) + 1;
|
||||
if(offset == 0){
|
||||
Return RESULT_ERROR("missing ':' before key data", false);
|
||||
}
|
||||
str key_base64_str = src;
|
||||
str key_base64_str = src_str;
|
||||
key_base64_str.data += offset;
|
||||
key_base64_str.size -= offset;
|
||||
u32 decoded_size = base64_decodedSize(key_base64_str.data, key_base64_str.size);
|
||||
@@ -140,10 +141,10 @@ Result(void) RSA_parsePublicKey_base64(const str src, br_rsa_public_key* pk){
|
||||
Return RESULT_VOID;
|
||||
}
|
||||
|
||||
Result(void) RSA_parsePrivateKey_base64(const str src, br_rsa_private_key* sk){
|
||||
Result(void) RSA_parsePrivateKey_base64(cstr src, br_rsa_private_key* sk){
|
||||
Deferral(8);
|
||||
u32 n_bitlen = 0;
|
||||
if(sscanf(src.data, "RSA-Private-%u:", &n_bitlen) != 1){
|
||||
if(sscanf(src, "RSA-Private-%u:", &n_bitlen) != 1){
|
||||
Return RESULT_ERROR("can't parse key size", false);
|
||||
}
|
||||
sk->n_bitlen = n_bitlen;
|
||||
@@ -155,11 +156,12 @@ Result(void) RSA_parsePrivateKey_base64(const str src, br_rsa_private_key* sk){
|
||||
sk->dp = sk->q + field_len;
|
||||
sk->dq = sk->dp + field_len;
|
||||
sk->iq = sk->dq + field_len;
|
||||
u32 offset = str_seekChar(src, ':', 10) + 1;
|
||||
str src_str = str_from_cstr(src);
|
||||
u32 offset = str_seekChar(src_str, ':', 10) + 1;
|
||||
if(offset == 0){
|
||||
Return RESULT_ERROR("missing ':' before key data", false);
|
||||
}
|
||||
str key_base64_str = src;
|
||||
str key_base64_str = src_str;
|
||||
key_base64_str.data += offset;
|
||||
key_base64_str.size -= offset;
|
||||
u32 decoded_size = base64_decodedSize(key_base64_str.data, key_base64_str.size);
|
||||
|
||||
@@ -47,7 +47,7 @@ str RSA_serializePrivateKey_base64(const br_rsa_private_key* sk);
|
||||
|
||||
/// @param src serialized private key format "RSA-Private-%SIZE%:%DATA_BASE64%"
|
||||
/// @param sk out private key. WARNING: .p is allocated on heap
|
||||
Result(void) RSA_parsePrivateKey_base64(const str src, br_rsa_private_key* sk);
|
||||
Result(void) RSA_parsePrivateKey_base64(cstr src, br_rsa_private_key* sk);
|
||||
|
||||
/// @brief Encode key data in human-readable format
|
||||
/// @param src some data
|
||||
@@ -56,7 +56,7 @@ str RSA_serializePublicKey_base64(const br_rsa_public_key* sk);
|
||||
|
||||
/// @param src serialized public key format "RSA-Public-%SIZE%:%DATA_BASE64%"
|
||||
/// @param sk out public key. WARNING: .p is allocated on heap
|
||||
Result(void) RSA_parsePublicKey_base64(const str src, br_rsa_public_key* sk);
|
||||
Result(void) RSA_parsePublicKey_base64(cstr src, br_rsa_public_key* sk);
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
// RSAEncryptor //
|
||||
|
||||
Reference in New Issue
Block a user