diff options
Diffstat (limited to 'rsa.c')
-rw-r--r-- | rsa.c | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rsa.c,v 1.28 2006/08/03 03:34:42 deraadt Exp $ */ | 1 | /* $OpenBSD: rsa.c,v 1.29 2006/11/06 21:25:28 markus Exp $ */ |
2 | /* | 2 | /* |
3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> | 3 | * Author: Tatu Ylonen <ylo@cs.hut.fi> |
4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | 4 | * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland |
@@ -91,7 +91,8 @@ rsa_public_encrypt(BIGNUM *out, BIGNUM *in, RSA *key) | |||
91 | RSA_PKCS1_PADDING)) <= 0) | 91 | RSA_PKCS1_PADDING)) <= 0) |
92 | fatal("rsa_public_encrypt() failed"); | 92 | fatal("rsa_public_encrypt() failed"); |
93 | 93 | ||
94 | BN_bin2bn(outbuf, len, out); | 94 | if (BN_bin2bn(outbuf, len, out) == NULL) |
95 | fatal("rsa_public_encrypt: BN_bin2bn failed"); | ||
95 | 96 | ||
96 | memset(outbuf, 0, olen); | 97 | memset(outbuf, 0, olen); |
97 | memset(inbuf, 0, ilen); | 98 | memset(inbuf, 0, ilen); |
@@ -116,7 +117,8 @@ rsa_private_decrypt(BIGNUM *out, BIGNUM *in, RSA *key) | |||
116 | RSA_PKCS1_PADDING)) <= 0) { | 117 | RSA_PKCS1_PADDING)) <= 0) { |
117 | error("rsa_private_decrypt() failed"); | 118 | error("rsa_private_decrypt() failed"); |
118 | } else { | 119 | } else { |
119 | BN_bin2bn(outbuf, len, out); | 120 | if (BN_bin2bn(outbuf, len, out) == NULL) |
121 | fatal("rsa_private_decrypt: BN_bin2bn failed"); | ||
120 | } | 122 | } |
121 | memset(outbuf, 0, olen); | 123 | memset(outbuf, 0, olen); |
122 | memset(inbuf, 0, ilen); | 124 | memset(inbuf, 0, ilen); |
@@ -137,11 +139,11 @@ rsa_generate_additional_parameters(RSA *rsa) | |||
137 | if ((ctx = BN_CTX_new()) == NULL) | 139 | if ((ctx = BN_CTX_new()) == NULL) |
138 | fatal("rsa_generate_additional_parameters: BN_CTX_new failed"); | 140 | fatal("rsa_generate_additional_parameters: BN_CTX_new failed"); |
139 | 141 | ||
140 | BN_sub(aux, rsa->q, BN_value_one()); | 142 | if ((BN_sub(aux, rsa->q, BN_value_one()) == 0) || |
141 | BN_mod(rsa->dmq1, rsa->d, aux, ctx); | 143 | (BN_mod(rsa->dmq1, rsa->d, aux, ctx) == 0) || |
142 | 144 | (BN_sub(aux, rsa->p, BN_value_one()) == 0) || | |
143 | BN_sub(aux, rsa->p, BN_value_one()); | 145 | (BN_mod(rsa->dmp1, rsa->d, aux, ctx) == 0)) |
144 | BN_mod(rsa->dmp1, rsa->d, aux, ctx); | 146 | fatal("rsa_generate_additional_parameters: BN_sub/mod failed"); |
145 | 147 | ||
146 | BN_clear_free(aux); | 148 | BN_clear_free(aux); |
147 | BN_CTX_free(ctx); | 149 | BN_CTX_free(ctx); |