summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/rsa/rsa_pmeth.c
diff options
context:
space:
mode:
authorbeck <>2017-01-29 17:49:23 +0000
committerbeck <>2017-01-29 17:49:23 +0000
commit957b11334a7afb14537322f0e4795b2e368b3f59 (patch)
tree1a54abba678898ee5270ae4f3404a50ee9a92eea /src/lib/libcrypto/rsa/rsa_pmeth.c
parentdf96e020e729c6c37a8c7fe311fdd1fe6a8718c5 (diff)
downloadopenbsd-957b11334a7afb14537322f0e4795b2e368b3f59.tar.gz
openbsd-957b11334a7afb14537322f0e4795b2e368b3f59.tar.bz2
openbsd-957b11334a7afb14537322f0e4795b2e368b3f59.zip
Send the function codes from the error functions to the bit bucket,
as was done earlier in libssl. Thanks inoguchi@ for noticing libssl had more reacharounds into this. ok jsing@ inoguchi@
Diffstat (limited to 'src/lib/libcrypto/rsa/rsa_pmeth.c')
-rw-r--r--src/lib/libcrypto/rsa/rsa_pmeth.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/src/lib/libcrypto/rsa/rsa_pmeth.c b/src/lib/libcrypto/rsa/rsa_pmeth.c
index 4b7fc09514..2ef1f3c64a 100644
--- a/src/lib/libcrypto/rsa/rsa_pmeth.c
+++ b/src/lib/libcrypto/rsa/rsa_pmeth.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: rsa_pmeth.c,v 1.18 2016/10/19 16:49:11 jsing Exp $ */ 1/* $OpenBSD: rsa_pmeth.c,v 1.19 2017/01/29 17:49:23 beck Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project 2006. 3 * project 2006.
4 */ 4 */
@@ -170,8 +170,7 @@ pkey_rsa_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, size_t *siglen,
170 170
171 if (rctx->md) { 171 if (rctx->md) {
172 if (tbslen != (size_t)EVP_MD_size(rctx->md)) { 172 if (tbslen != (size_t)EVP_MD_size(rctx->md)) {
173 RSAerr(RSA_F_PKEY_RSA_SIGN, 173 RSAerror(RSA_R_INVALID_DIGEST_LENGTH);
174 RSA_R_INVALID_DIGEST_LENGTH);
175 return -1; 174 return -1;
176 } 175 }
177 176
@@ -228,13 +227,11 @@ pkey_rsa_verifyrecover(EVP_PKEY_CTX *ctx, unsigned char *rout, size_t *routlen,
228 ret--; 227 ret--;
229 if (rctx->tbuf[ret] != 228 if (rctx->tbuf[ret] !=
230 RSA_X931_hash_id(EVP_MD_type(rctx->md))) { 229 RSA_X931_hash_id(EVP_MD_type(rctx->md))) {
231 RSAerr(RSA_F_PKEY_RSA_VERIFYRECOVER, 230 RSAerror(RSA_R_ALGORITHM_MISMATCH);
232 RSA_R_ALGORITHM_MISMATCH);
233 return 0; 231 return 0;
234 } 232 }
235 if (ret != EVP_MD_size(rctx->md)) { 233 if (ret != EVP_MD_size(rctx->md)) {
236 RSAerr(RSA_F_PKEY_RSA_VERIFYRECOVER, 234 RSAerror(RSA_R_INVALID_DIGEST_LENGTH);
237 RSA_R_INVALID_DIGEST_LENGTH);
238 return 0; 235 return 0;
239 } 236 }
240 if (rout) 237 if (rout)
@@ -342,14 +339,13 @@ check_padding_md(const EVP_MD *md, int padding)
342 return 1; 339 return 1;
343 340
344 if (padding == RSA_NO_PADDING) { 341 if (padding == RSA_NO_PADDING) {
345 RSAerr(RSA_F_CHECK_PADDING_MD, RSA_R_INVALID_PADDING_MODE); 342 RSAerror(RSA_R_INVALID_PADDING_MODE);
346 return 0; 343 return 0;
347 } 344 }
348 345
349 if (padding == RSA_X931_PADDING) { 346 if (padding == RSA_X931_PADDING) {
350 if (RSA_X931_hash_id(EVP_MD_type(md)) == -1) { 347 if (RSA_X931_hash_id(EVP_MD_type(md)) == -1) {
351 RSAerr(RSA_F_CHECK_PADDING_MD, 348 RSAerror(RSA_R_INVALID_X931_DIGEST);
352 RSA_R_INVALID_X931_DIGEST);
353 return 0; 349 return 0;
354 } 350 }
355 return 1; 351 return 1;
@@ -385,8 +381,7 @@ pkey_rsa_ctrl(EVP_PKEY_CTX *ctx, int type, int p1, void *p2)
385 return 1; 381 return 1;
386 } 382 }
387bad_pad: 383bad_pad:
388 RSAerr(RSA_F_PKEY_RSA_CTRL, 384 RSAerror(RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE);
389 RSA_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE);
390 return -2; 385 return -2;
391 386
392 case EVP_PKEY_CTRL_GET_RSA_PADDING: 387 case EVP_PKEY_CTRL_GET_RSA_PADDING:
@@ -396,7 +391,7 @@ bad_pad:
396 case EVP_PKEY_CTRL_RSA_PSS_SALTLEN: 391 case EVP_PKEY_CTRL_RSA_PSS_SALTLEN:
397 case EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN: 392 case EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN:
398 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) { 393 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) {
399 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_PSS_SALTLEN); 394 RSAerror(RSA_R_INVALID_PSS_SALTLEN);
400 return -2; 395 return -2;
401 } 396 }
402 if (type == EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN) 397 if (type == EVP_PKEY_CTRL_GET_RSA_PSS_SALTLEN)
@@ -410,7 +405,7 @@ bad_pad:
410 405
411 case EVP_PKEY_CTRL_RSA_KEYGEN_BITS: 406 case EVP_PKEY_CTRL_RSA_KEYGEN_BITS:
412 if (p1 < 256) { 407 if (p1 < 256) {
413 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_KEYBITS); 408 RSAerror(RSA_R_INVALID_KEYBITS);
414 return -2; 409 return -2;
415 } 410 }
416 rctx->nbits = p1; 411 rctx->nbits = p1;
@@ -431,7 +426,7 @@ bad_pad:
431 case EVP_PKEY_CTRL_RSA_MGF1_MD: 426 case EVP_PKEY_CTRL_RSA_MGF1_MD:
432 case EVP_PKEY_CTRL_GET_RSA_MGF1_MD: 427 case EVP_PKEY_CTRL_GET_RSA_MGF1_MD:
433 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) { 428 if (rctx->pad_mode != RSA_PKCS1_PSS_PADDING) {
434 RSAerr(RSA_F_PKEY_RSA_CTRL, RSA_R_INVALID_MGF1_MD); 429 RSAerror(RSA_R_INVALID_MGF1_MD);
435 return -2; 430 return -2;
436 } 431 }
437 if (type == EVP_PKEY_CTRL_GET_RSA_MGF1_MD) { 432 if (type == EVP_PKEY_CTRL_GET_RSA_MGF1_MD) {
@@ -449,8 +444,7 @@ bad_pad:
449 case EVP_PKEY_CTRL_PKCS7_SIGN: 444 case EVP_PKEY_CTRL_PKCS7_SIGN:
450 return 1; 445 return 1;
451 case EVP_PKEY_CTRL_PEER_KEY: 446 case EVP_PKEY_CTRL_PEER_KEY:
452 RSAerr(RSA_F_PKEY_RSA_CTRL, 447 RSAerror(RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
453 RSA_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE);
454 return -2; 448 return -2;
455 449
456 default: 450 default:
@@ -465,7 +459,7 @@ pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
465 char *ep; 459 char *ep;
466 460
467 if (!value) { 461 if (!value) {
468 RSAerr(RSA_F_PKEY_RSA_CTRL_STR, RSA_R_VALUE_MISSING); 462 RSAerror(RSA_R_VALUE_MISSING);
469 return 0; 463 return 0;
470 } 464 }
471 if (!strcmp(type, "rsa_padding_mode")) { 465 if (!strcmp(type, "rsa_padding_mode")) {
@@ -485,8 +479,7 @@ pkey_rsa_ctrl_str(EVP_PKEY_CTX *ctx, const char *type, const char *value)
485 else if (!strcmp(value, "pss")) 479 else if (!strcmp(value, "pss"))
486 pm = RSA_PKCS1_PSS_PADDING; 480 pm = RSA_PKCS1_PSS_PADDING;
487 else { 481 else {
488 RSAerr(RSA_F_PKEY_RSA_CTRL_STR, 482 RSAerror(RSA_R_UNKNOWN_PADDING_TYPE);
489 RSA_R_UNKNOWN_PADDING_TYPE);
490 return -2; 483 return -2;
491 } 484 }
492 return EVP_PKEY_CTX_set_rsa_padding(ctx, pm); 485 return EVP_PKEY_CTX_set_rsa_padding(ctx, pm);