diff options
author | 2014-07-09 08:20:08 +0000 | |
---|---|---|
committer | 2014-07-09 08:20:08 +0000 | |
commit | 87203b09ae4087c72bdef490d474f017ac8c73cf (patch) | |
tree | d2a4f7968b7a0d1d12e65af3baac6e66fd262516 /lib/libcrypto/rsa/rsa_chk.c | |
parent | Set default of net.inet6.icmp6.nodeinfo to 0, (diff) | |
download | wireguard-openbsd-87203b09ae4087c72bdef490d474f017ac8c73cf.tar.xz wireguard-openbsd-87203b09ae4087c72bdef490d474f017ac8c73cf.zip |
KNF
Diffstat (limited to 'lib/libcrypto/rsa/rsa_chk.c')
-rw-r--r-- | lib/libcrypto/rsa/rsa_chk.c | 145 |
1 files changed, 87 insertions, 58 deletions
diff --git a/lib/libcrypto/rsa/rsa_chk.c b/lib/libcrypto/rsa/rsa_chk.c index d7e496aab2a..54113f89f6a 100644 --- a/lib/libcrypto/rsa/rsa_chk.c +++ b/lib/libcrypto/rsa/rsa_chk.c @@ -1,4 +1,4 @@ -/* $OpenBSD: rsa_chk.c,v 1.6 2014/06/12 15:49:30 deraadt Exp $ */ +/* $OpenBSD: rsa_chk.c,v 1.7 2014/07/09 08:20:08 miod Exp $ */ /* ==================================================================== * Copyright (c) 1999 The OpenSSL Project. All rights reserved. * @@ -53,18 +53,18 @@ #include <openssl/rsa.h> -int RSA_check_key(const RSA *key) - { +int +RSA_check_key(const RSA *key) +{ BIGNUM *i, *j, *k, *l, *m; BN_CTX *ctx; int r; - int ret=1; + int ret = 1; - if (!key->p || !key->q || !key->n || !key->e || !key->d) - { + if (!key->p || !key->q || !key->n || !key->e || !key->d) { RSAerr(RSA_F_RSA_CHECK_KEY, RSA_R_VALUE_MISSING); return 0; - } + } i = BN_new(); j = BN_new(); @@ -72,119 +72,148 @@ int RSA_check_key(const RSA *key) l = BN_new(); m = BN_new(); ctx = BN_CTX_new(); - if (i == NULL || j == NULL || k == NULL || l == NULL || - m == NULL || ctx == NULL) - { + if (i == NULL || j == NULL || k == NULL || l == NULL || m == NULL || + ctx == NULL) { ret = -1; RSAerr(RSA_F_RSA_CHECK_KEY, ERR_R_MALLOC_FAILURE); goto err; - } + } /* p prime? */ r = BN_is_prime_ex(key->p, BN_prime_checks, NULL, NULL); - if (r != 1) - { + if (r != 1) { ret = r; if (r != 0) goto err; RSAerr(RSA_F_RSA_CHECK_KEY, RSA_R_P_NOT_PRIME); - } + } /* q prime? */ r = BN_is_prime_ex(key->q, BN_prime_checks, NULL, NULL); - if (r != 1) - { + if (r != 1) { ret = r; if (r != 0) goto err; RSAerr(RSA_F_RSA_CHECK_KEY, RSA_R_Q_NOT_PRIME); - } + } /* n = p*q? */ r = BN_mul(i, key->p, key->q, ctx); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } - if (BN_cmp(i, key->n) != 0) - { + if (BN_cmp(i, key->n) != 0) { ret = 0; RSAerr(RSA_F_RSA_CHECK_KEY, RSA_R_N_DOES_NOT_EQUAL_P_Q); - } + } /* d*e = 1 mod lcm(p-1,q-1)? */ r = BN_sub(i, key->p, BN_value_one()); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } r = BN_sub(j, key->q, BN_value_one()); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } /* now compute k = lcm(i,j) */ r = BN_mul(l, i, j, ctx); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } r = BN_gcd(m, i, j, ctx); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } r = BN_div(k, NULL, l, m, ctx); /* remainder is 0 */ - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } r = BN_mod_mul(i, key->d, key->e, k, ctx); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } - if (!BN_is_one(i)) - { + if (!BN_is_one(i)) { ret = 0; RSAerr(RSA_F_RSA_CHECK_KEY, RSA_R_D_E_NOT_CONGRUENT_TO_1); - } + } - if (key->dmp1 != NULL && key->dmq1 != NULL && key->iqmp != NULL) - { + if (key->dmp1 != NULL && key->dmq1 != NULL && key->iqmp != NULL) { /* dmp1 = d mod (p-1)? */ r = BN_sub(i, key->p, BN_value_one()); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } r = BN_mod(j, key->d, i, ctx); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } - if (BN_cmp(j, key->dmp1) != 0) - { + if (BN_cmp(j, key->dmp1) != 0) { ret = 0; RSAerr(RSA_F_RSA_CHECK_KEY, - RSA_R_DMP1_NOT_CONGRUENT_TO_D); - } + RSA_R_DMP1_NOT_CONGRUENT_TO_D); + } /* dmq1 = d mod (q-1)? */ r = BN_sub(i, key->q, BN_value_one()); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } r = BN_mod(j, key->d, i, ctx); - if (!r) { ret = -1; goto err; } + if (!r) { + ret = -1; + goto err; + } - if (BN_cmp(j, key->dmq1) != 0) - { + if (BN_cmp(j, key->dmq1) != 0) { ret = 0; RSAerr(RSA_F_RSA_CHECK_KEY, - RSA_R_DMQ1_NOT_CONGRUENT_TO_D); - } + RSA_R_DMQ1_NOT_CONGRUENT_TO_D); + } /* iqmp = q^-1 mod p? */ - if(!BN_mod_inverse(i, key->q, key->p, ctx)) - { + if (!BN_mod_inverse(i, key->q, key->p, ctx)) { ret = -1; goto err; - } + } - if (BN_cmp(i, key->iqmp) != 0) - { + if (BN_cmp(i, key->iqmp) != 0) { ret = 0; RSAerr(RSA_F_RSA_CHECK_KEY, - RSA_R_IQMP_NOT_INVERSE_OF_Q); - } + RSA_R_IQMP_NOT_INVERSE_OF_Q); } + } err: - if (i != NULL) BN_free(i); - if (j != NULL) BN_free(j); - if (k != NULL) BN_free(k); - if (l != NULL) BN_free(l); - if (m != NULL) BN_free(m); - if (ctx != NULL) BN_CTX_free(ctx); + if (i != NULL) + BN_free(i); + if (j != NULL) + BN_free(j); + if (k != NULL) + BN_free(k); + if (l != NULL) + BN_free(l); + if (m != NULL) + BN_free(m); + if (ctx != NULL) + BN_CTX_free(ctx); return (ret); - } +} |