X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=crypt.c;h=0d8b42410ea133355d396a2c689ddaf84b12c160;hp=c1a2d4e5c8ccd67007ab96bf751ef9d35eaf465b;hb=970247623b17124a5aacb14a8061da56e1f3b0be;hpb=c79899fe6a1e8eb3086749f46c599d9790d99921 diff --git a/crypt.c b/crypt.c index c1a2d4e5..0d8b4241 100644 --- a/crypt.c +++ b/crypt.c @@ -65,6 +65,19 @@ int get_rsa_key(char *key_file, RSA **rsa, int private) return RSA_size(*rsa); } +/** + * free an RSA structure + * + * \param rsa pointer to the RSA struct to free + * + * This must be called for any key obtained by get_rsa_key(). + */ +void rsa_free(RSA *rsa) +{ + if (rsa) + RSA_free(rsa); +} + /** * decrypt a buffer using an RSA key * @@ -88,6 +101,7 @@ int para_decrypt_buffer(char *key_file, unsigned char *outbuf, unsigned char *in if (ret < 0) return ret; ret = RSA_private_decrypt(rsa_inlen, inbuf, outbuf, rsa, RSA_PKCS1_PADDING); + rsa_free(rsa); return (ret > 0)? ret : -E_DECRYPT; }