]> git.meshlink.io Git - meshlink/commitdiff
Free ECDSA and RSA structures when freeing a connection_t.
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 10 Jul 2011 19:02:34 +0000 (21:02 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 10 Jul 2011 19:04:31 +0000 (21:04 +0200)
src/connection.c
src/openssl/ecdsa.c
src/openssl/ecdsa.h
src/openssl/rsa.c
src/openssl/rsa.h

index 62bfccb64c852d5537f992904b13d81f9548096f..956607caaeb0c49ef72db81ad287f8483f787536 100644 (file)
@@ -69,6 +69,9 @@ void free_connection(connection_t *c) {
        cipher_close(&c->outcipher);
        digest_close(&c->outdigest);
 
+       ecdsa_free(&c->ecdsa);
+       rsa_free(&c->rsa);
+
        if(c->hischallenge)
                free(c->hischallenge);
 
index c3b9683334c36077e7a4d7812f91d41a049d5f34..a4f0f30d259b68355d94d9920d0416249df3c2ea 100644 (file)
@@ -105,3 +105,14 @@ bool ecdsa_verify(ecdsa_t *ecdsa, const void *in, size_t len, const void *sig) {
 
        return true;
 }
+
+bool ecdsa_active(ecdsa_t *ecdsa) {
+       return *ecdsa;
+}
+
+void ecdsa_free(ecdsa_t *ecdsa) {
+       if(*ecdsa) {
+               EC_KEY_free(*ecdsa);
+               *ecdsa = NULL;
+       }
+}
index fcdc3b372561c401a0ae44d26682e6469f8d6fee..cc0e7b02c6642c1bd1fae22a65188adb528fff00 100644 (file)
@@ -30,5 +30,7 @@ extern bool ecdsa_read_pem_private_key(ecdsa_t *ecdsa, FILE *fp);
 extern size_t ecdsa_size(ecdsa_t *ecdsa);
 extern bool ecdsa_sign(ecdsa_t *ecdsa, const void *in, size_t inlen, void *out);
 extern bool ecdsa_verify(ecdsa_t *ecdsa, const void *in, size_t inlen, const void *out);
+extern bool ecdsa_active(ecdsa_t *ecdsa);
+extern void ecdsa_free(ecdsa_t *ecdsa);
 
 #endif
index d39a1cba405df774e74bd7d322cbec673bc0b7ad..c3ea692d6235e14662b716e88670aa19c6cdcb2d 100644 (file)
@@ -88,3 +88,14 @@ 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;   
 }
+
+bool rsa_active(rsa_t *rsa) {
+       return *rsa;
+}
+
+void rsa_free(rsa_t *rsa) {
+       if(*rsa) {
+               RSA_free(*rsa);
+               *rsa = NULL;
+       }
+}
index 62836a8e83c35cef4d1a6628c0b447838fa44993..10fe3462978cf75dd602fb662d7c00af40377750 100644 (file)
@@ -31,5 +31,8 @@ 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 bool rsa_active(rsa_t *rsa);
+extern void rsa_free(rsa_t *rsa);
+
 
 #endif