Free resources in rsa_t. 1.1-threads
authorGuus Sliepen <guus@tinc-vpn.org>
Sat, 15 Jan 2011 22:11:25 +0000 (23:11 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Sat, 15 Jan 2011 22:11:25 +0000 (23:11 +0100)
src/connection.c
src/gcrypt/rsa.c
src/gcrypt/rsa.h
src/openssl/rsa.c
src/openssl/rsa.h

index 2fa789b..bdbf1c3 100644 (file)
@@ -78,6 +78,9 @@ void free_connection(connection_t *c) {
        if(c->thread)
                thread_destroy(&c->thread);
 
+       if(c->rsa)
+               rsa_free(c->rsa);
+
        free(c);
 }
 
index a729591..e38b50b 100644 (file)
@@ -300,3 +300,9 @@ bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t len, void *out) {
 
        return true;
 }
+
+void rsa_free(rsa_t *rsa) {
+       gcry_mpi_release(rsa->n);
+       gcry_mpi_release(rsa->e);
+       gcry_mpi_release(rsa->d);
+}
index 143f015..a76bfde 100644 (file)
@@ -35,5 +35,6 @@ extern bool rsa_read_pem_private_key(rsa_t *rsa, FILE *fp);
 extern size_t rsa_size(rsa_t *rsa);
 extern bool rsa_public_encrypt(rsa_t *rsa, void *in, size_t len, void *out);
 extern bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t len, void *out);
+extern void rsa_free(rsa_t *rsa);
 
 #endif
index d39a1cb..a85bc8a 100644 (file)
@@ -88,3 +88,7 @@ bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t len, void *out) {
        logger(LOG_ERR, "Unable to perform RSA decryption: %s", ERR_error_string(ERR_get_error(), NULL));
        return false;   
 }
+
+void rsa_free(rsa_t *rsa) {
+       RSA_free(*rsa);
+}
index 62836a8..933cc11 100644 (file)
@@ -31,5 +31,6 @@ extern bool rsa_read_pem_private_key(rsa_t *rsa, FILE *fp);
 extern size_t rsa_size(rsa_t *rsa);
 extern bool rsa_public_encrypt(rsa_t *rsa, void *in, size_t inlen, void *out);
 extern bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t inlen, void *out);
+extern void rsa_free(rsa_t *rsa);
 
 #endif