X-Git-Url: https://www.tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fopenssl%2Frsa.c;h=0e811722038145e4662084bca3ae5c97acba8596;hb=1c475ecb575367a6b3f9328b0f643ad636155341;hp=3543df3050f3d7decaa7ee2575a6c8e831ce426f;hpb=5822f817aa802c2c5a83e9d99a8ae78cb822799b;p=tinc diff --git a/src/openssl/rsa.c b/src/openssl/rsa.c index 3543df30..0e811722 100644 --- a/src/openssl/rsa.c +++ b/src/openssl/rsa.c @@ -32,9 +32,12 @@ typedef RSA rsa_t; #ifndef HAVE_RSA_SET0_KEY int RSA_set0_key(RSA *r, BIGNUM *n, BIGNUM *e, BIGNUM *d) { - BN_free(r->n); r->n = n; - BN_free(r->e); r->e = e; - BN_free(r->d); r->d = d; + BN_free(r->n); + r->n = n; + BN_free(r->e); + r->e = e; + BN_free(r->d); + r->d = d; return 1; } #endif @@ -43,16 +46,18 @@ rsa_t *rsa_set_hex_public_key(char *n, char *e) { BIGNUM *bn_n = NULL; BIGNUM *bn_e = NULL; - if(BN_hex2bn(&bn_n, n) != strlen(n) || BN_hex2bn(&bn_e, e) != strlen(e)) { + if((size_t)BN_hex2bn(&bn_n, n) != strlen(n) || (size_t)BN_hex2bn(&bn_e, e) != strlen(e)) { BN_free(bn_e); BN_free(bn_n); return false; } rsa_t *rsa = RSA_new(); - if(!rsa) + + if(!rsa) { return NULL; - + } + RSA_set0_key(rsa, bn_n, bn_e, NULL); return rsa; @@ -63,7 +68,7 @@ rsa_t *rsa_set_hex_private_key(char *n, char *e, char *d) { BIGNUM *bn_e = NULL; BIGNUM *bn_d = NULL; - if(BN_hex2bn(&bn_n, n) != strlen(n) || BN_hex2bn(&bn_e, e) != strlen(e) || BN_hex2bn(&bn_d, d) != strlen(d)) { + if((size_t)BN_hex2bn(&bn_n, n) != strlen(n) || (size_t)BN_hex2bn(&bn_e, e) != strlen(e) || (size_t)BN_hex2bn(&bn_d, d) != strlen(d)) { BN_free(bn_d); BN_free(bn_e); BN_free(bn_n); @@ -71,8 +76,10 @@ rsa_t *rsa_set_hex_private_key(char *n, char *e, char *d) { } rsa_t *rsa = RSA_new(); - if(!rsa) + + if(!rsa) { return NULL; + } RSA_set0_key(rsa, bn_n, bn_e, bn_d); @@ -89,8 +96,9 @@ rsa_t *rsa_read_pem_public_key(FILE *fp) { rsa = PEM_read_RSA_PUBKEY(fp, NULL, NULL, NULL); } - if(!rsa) + if(!rsa) { logger(DEBUG_ALWAYS, LOG_ERR, "Unable to read RSA public key: %s", ERR_error_string(ERR_get_error(), NULL)); + } return rsa; } @@ -98,8 +106,9 @@ rsa_t *rsa_read_pem_public_key(FILE *fp) { rsa_t *rsa_read_pem_private_key(FILE *fp) { rsa_t *rsa = PEM_read_RSAPrivateKey(fp, NULL, NULL, NULL); - if(!rsa) + if(!rsa) { logger(DEBUG_ALWAYS, LOG_ERR, "Unable to read RSA private key: %s", ERR_error_string(ERR_get_error(), NULL)); + } return rsa; } @@ -109,16 +118,18 @@ size_t rsa_size(rsa_t *rsa) { } bool rsa_public_encrypt(rsa_t *rsa, void *in, size_t len, void *out) { - if(RSA_public_encrypt(len, in, out, rsa, RSA_NO_PADDING) == len) + if((size_t)RSA_public_encrypt(len, in, out, rsa, RSA_NO_PADDING) == len) { return true; + } logger(DEBUG_ALWAYS, LOG_ERR, "Unable to perform RSA encryption: %s", ERR_error_string(ERR_get_error(), NULL)); return false; } bool rsa_private_decrypt(rsa_t *rsa, void *in, size_t len, void *out) { - if(RSA_private_decrypt(len, in, out, rsa, RSA_NO_PADDING) == len) + if((size_t)RSA_private_decrypt(len, in, out, rsa, RSA_NO_PADDING) == len) { return true; + } logger(DEBUG_ALWAYS, LOG_ERR, "Unable to perform RSA decryption: %s", ERR_error_string(ERR_get_error(), NULL)); return false; @@ -129,6 +140,7 @@ bool rsa_active(rsa_t *rsa) { } void rsa_free(rsa_t *rsa) { - if(rsa) + if(rsa) { RSA_free(rsa); + } }