aboutsummaryrefslogtreecommitdiffstats
path: root/Source/lib/crypto/rsa/rsa_private_key.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/lib/crypto/rsa/rsa_private_key.c')
-rw-r--r--Source/lib/crypto/rsa/rsa_private_key.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/Source/lib/crypto/rsa/rsa_private_key.c b/Source/lib/crypto/rsa/rsa_private_key.c
index 0afadd179..879cade26 100644
--- a/Source/lib/crypto/rsa/rsa_private_key.c
+++ b/Source/lib/crypto/rsa/rsa_private_key.c
@@ -23,11 +23,11 @@
#include <gmp.h>
#include <sys/stat.h>
#include <unistd.h>
+#include <string.h>
#include "rsa_private_key.h"
#include <daemon.h>
-#include <utils/allocator.h>
#include <asn1/der_decoder.h>
@@ -188,7 +188,7 @@ static status_t compute_prime(private_rsa_private_key_t *this, size_t prime_size
/* get next prime */
mpz_nextprime (*prime, *prime);
- allocator_free(random_bytes.ptr);
+ free(random_bytes.ptr);
}
/* check if it isnt too large */
while (((mpz_sizeinbase(*prime, 2) + 7) / 8) > prime_size);
@@ -301,7 +301,7 @@ static status_t build_emsa_pkcs1_signature(private_rsa_private_key_t *this, hash
* T = oid || hash
*/
em.len = this->k;
- em.ptr = allocator_alloc(em.len);
+ em.ptr = malloc(em.len);
/* fill em with padding */
memset(em.ptr, 0xFF, em.len);
@@ -318,8 +318,8 @@ static status_t build_emsa_pkcs1_signature(private_rsa_private_key_t *this, hash
/* build signature */
*signature = this->rsasp1(this, em);
- allocator_free(hash.ptr);
- allocator_free(em.ptr);
+ free(hash.ptr);
+ free(em.ptr);
return SUCCESS;
}
@@ -349,7 +349,7 @@ static status_t get_key(private_rsa_private_key_t *this, chunk_t *key)
coeff.ptr = mpz_export(NULL, NULL, 1, coeff.len, 1, 0, this->coeff);
key->len = this->k * 8;
- key->ptr = allocator_alloc(key->len);
+ key->ptr = malloc(key->len);
memcpy(key->ptr + this->k * 0, n.ptr , n.len);
memcpy(key->ptr + this->k * 1, e.ptr, e.len);
memcpy(key->ptr + this->k * 2, p.ptr, p.len);
@@ -359,14 +359,14 @@ static status_t get_key(private_rsa_private_key_t *this, chunk_t *key)
memcpy(key->ptr + this->k * 6, exp2.ptr, exp2.len);
memcpy(key->ptr + this->k * 7, coeff.ptr, coeff.len);
- allocator_free(n.ptr);
- allocator_free(e.ptr);
- allocator_free(p.ptr);
- allocator_free(q.ptr);
- allocator_free(d.ptr);
- allocator_free(exp1.ptr);
- allocator_free(exp2.ptr);
- allocator_free(coeff.ptr);
+ free(n.ptr);
+ free(e.ptr);
+ free(p.ptr);
+ free(q.ptr);
+ free(d.ptr);
+ free(exp1.ptr);
+ free(exp2.ptr);
+ free(coeff.ptr);
return SUCCESS;
}
@@ -432,7 +432,7 @@ static void destroy(private_rsa_private_key_t *this)
mpz_clear(this->exp1);
mpz_clear(this->exp2);
mpz_clear(this->coeff);
- allocator_free(this);
+ free(this);
}
/**
@@ -440,7 +440,7 @@ static void destroy(private_rsa_private_key_t *this)
*/
static private_rsa_private_key_t *rsa_private_key_create_empty()
{
- private_rsa_private_key_t *this = allocator_alloc_thing(private_rsa_private_key_t);
+ private_rsa_private_key_t *this = malloc_thing(private_rsa_private_key_t);
/* public functions */
this->public.build_emsa_pkcs1_signature = (status_t (*) (rsa_private_key_t*,hash_algorithm_t,chunk_t,chunk_t*))build_emsa_pkcs1_signature;
@@ -474,13 +474,13 @@ rsa_private_key_t *rsa_private_key_create(size_t key_size)
/* Get values of primes p and q */
if (this->compute_prime(this, key_size/2, &p) != SUCCESS)
{
- allocator_free(this);
+ free(this);
return NULL;
}
if (this->compute_prime(this, key_size/2, &q) != SUCCESS)
{
mpz_clear(p);
- allocator_free(this);
+ free(this);
return NULL;
}
@@ -605,8 +605,10 @@ rsa_private_key_t *rsa_private_key_create_from_file(char *filename, char *passph
if (fread(buffer, stb.st_size, 1, file) != 1)
{
+ fclose(file);
return NULL;
}
+ fclose(file);
chunk.ptr = buffer;
chunk.len = stb.st_size;