diff options
| author | tb <> | 2023-04-13 15:00:24 +0000 |
|---|---|---|
| committer | tb <> | 2023-04-13 15:00:24 +0000 |
| commit | 1f54371dd7e7019c23e6227ddb7b0eef5ff0468c (patch) | |
| tree | c77c650b80a2a5715e9d9f734b2d0a9c4b3a9ff7 | |
| parent | 15b6ca969589a3b9b2069bb0b796c42e2f146fc4 (diff) | |
| download | openbsd-1f54371dd7e7019c23e6227ddb7b0eef5ff0468c.tar.gz openbsd-1f54371dd7e7019c23e6227ddb7b0eef5ff0468c.tar.bz2 openbsd-1f54371dd7e7019c23e6227ddb7b0eef5ff0468c.zip | |
Fold ECDSA sign and verify mess into ecs_ossl.c
discussed with jsing
| -rw-r--r-- | src/lib/libcrypto/ecdsa/ecs_ossl.c | 67 | ||||
| -rw-r--r-- | src/lib/libcrypto/ecdsa/ecs_sign.c | 43 | ||||
| -rw-r--r-- | src/lib/libcrypto/ecdsa/ecs_vrf.c | 21 |
3 files changed, 68 insertions, 63 deletions
diff --git a/src/lib/libcrypto/ecdsa/ecs_ossl.c b/src/lib/libcrypto/ecdsa/ecs_ossl.c index 78e2b4a997..9702cd6dab 100644 --- a/src/lib/libcrypto/ecdsa/ecs_ossl.c +++ b/src/lib/libcrypto/ecdsa/ecs_ossl.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecs_ossl.c,v 1.32 2023/03/30 15:51:09 bluhm Exp $ */ | 1 | /* $OpenBSD: ecs_ossl.c,v 1.33 2023/04/13 15:00:24 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project | 3 | * Written by Nils Larsch for the OpenSSL project |
| 4 | */ | 4 | */ |
| @@ -62,9 +62,11 @@ | |||
| 62 | 62 | ||
| 63 | #include <openssl/bn.h> | 63 | #include <openssl/bn.h> |
| 64 | #include <openssl/err.h> | 64 | #include <openssl/err.h> |
| 65 | #include <openssl/evp.h> | ||
| 65 | #include <openssl/objects.h> | 66 | #include <openssl/objects.h> |
| 66 | 67 | ||
| 67 | #include "bn_local.h" | 68 | #include "bn_local.h" |
| 69 | #include "ec_local.h" | ||
| 68 | #include "ecs_local.h" | 70 | #include "ecs_local.h" |
| 69 | 71 | ||
| 70 | static int ecdsa_prepare_digest(const unsigned char *dgst, int dgst_len, | 72 | static int ecdsa_prepare_digest(const unsigned char *dgst, int dgst_len, |
| @@ -572,3 +574,66 @@ ossl_ecdsa_verify_sig(const unsigned char *dgst, int dgst_len, | |||
| 572 | return 0; | 574 | return 0; |
| 573 | return ecdsa->meth->ecdsa_do_verify(dgst, dgst_len, sig, eckey); | 575 | return ecdsa->meth->ecdsa_do_verify(dgst, dgst_len, sig, eckey); |
| 574 | } | 576 | } |
| 577 | |||
| 578 | ECDSA_SIG * | ||
| 579 | ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey) | ||
| 580 | { | ||
| 581 | return ECDSA_do_sign_ex(dgst, dlen, NULL, NULL, eckey); | ||
| 582 | } | ||
| 583 | |||
| 584 | ECDSA_SIG * | ||
| 585 | ECDSA_do_sign_ex(const unsigned char *dgst, int dlen, const BIGNUM *kinv, | ||
| 586 | const BIGNUM *rp, EC_KEY *eckey) | ||
| 587 | { | ||
| 588 | if (eckey->meth->sign_sig != NULL) | ||
| 589 | return eckey->meth->sign_sig(dgst, dlen, kinv, rp, eckey); | ||
| 590 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 591 | return 0; | ||
| 592 | } | ||
| 593 | |||
| 594 | int | ||
| 595 | ECDSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, | ||
| 596 | unsigned int *siglen, EC_KEY *eckey) | ||
| 597 | { | ||
| 598 | return ECDSA_sign_ex(type, dgst, dlen, sig, siglen, NULL, NULL, eckey); | ||
| 599 | } | ||
| 600 | |||
| 601 | int | ||
| 602 | ECDSA_sign_ex(int type, const unsigned char *dgst, int dlen, unsigned char *sig, | ||
| 603 | unsigned int *siglen, const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey) | ||
| 604 | { | ||
| 605 | if (eckey->meth->sign != NULL) | ||
| 606 | return eckey->meth->sign(type, dgst, dlen, sig, siglen, kinv, r, eckey); | ||
| 607 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 608 | return 0; | ||
| 609 | } | ||
| 610 | |||
| 611 | int | ||
| 612 | ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | ||
| 613 | { | ||
| 614 | if (eckey->meth->sign_setup != NULL) | ||
| 615 | return eckey->meth->sign_setup(eckey, ctx_in, kinvp, rp); | ||
| 616 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 617 | return 0; | ||
| 618 | } | ||
| 619 | |||
| 620 | int | ||
| 621 | ECDSA_do_verify(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *sig, | ||
| 622 | EC_KEY *eckey) | ||
| 623 | { | ||
| 624 | if (eckey->meth->verify_sig != NULL) | ||
| 625 | return eckey->meth->verify_sig(dgst, dgst_len, sig, eckey); | ||
| 626 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 627 | return 0; | ||
| 628 | } | ||
| 629 | |||
| 630 | int | ||
| 631 | ECDSA_verify(int type, const unsigned char *dgst, int dgst_len, | ||
| 632 | const unsigned char *sigbuf, int sig_len, EC_KEY *eckey) | ||
| 633 | { | ||
| 634 | if (eckey->meth->verify != NULL) | ||
| 635 | return eckey->meth->verify(type, dgst, dgst_len, | ||
| 636 | sigbuf, sig_len, eckey); | ||
| 637 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 638 | return 0; | ||
| 639 | } | ||
diff --git a/src/lib/libcrypto/ecdsa/ecs_sign.c b/src/lib/libcrypto/ecdsa/ecs_sign.c index 9aab20b0da..800529f7b2 100644 --- a/src/lib/libcrypto/ecdsa/ecs_sign.c +++ b/src/lib/libcrypto/ecdsa/ecs_sign.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecs_sign.c,v 1.10 2022/11/26 16:08:52 tb Exp $ */ | 1 | /* $OpenBSD: ecs_sign.c,v 1.11 2023/04/13 15:00:24 tb Exp $ */ |
| 2 | /* ==================================================================== | 2 | /* ==================================================================== |
| 3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. | 3 | * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. |
| 4 | * | 4 | * |
| @@ -65,44 +65,3 @@ | |||
| 65 | #include "ecs_local.h" | 65 | #include "ecs_local.h" |
| 66 | #include "ec_local.h" | 66 | #include "ec_local.h" |
| 67 | 67 | ||
| 68 | ECDSA_SIG * | ||
| 69 | ECDSA_do_sign(const unsigned char *dgst, int dlen, EC_KEY *eckey) | ||
| 70 | { | ||
| 71 | return ECDSA_do_sign_ex(dgst, dlen, NULL, NULL, eckey); | ||
| 72 | } | ||
| 73 | |||
| 74 | ECDSA_SIG * | ||
| 75 | ECDSA_do_sign_ex(const unsigned char *dgst, int dlen, const BIGNUM *kinv, | ||
| 76 | const BIGNUM *rp, EC_KEY *eckey) | ||
| 77 | { | ||
| 78 | if (eckey->meth->sign_sig != NULL) | ||
| 79 | return eckey->meth->sign_sig(dgst, dlen, kinv, rp, eckey); | ||
| 80 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 81 | return 0; | ||
| 82 | } | ||
| 83 | |||
| 84 | int | ||
| 85 | ECDSA_sign(int type, const unsigned char *dgst, int dlen, unsigned char *sig, | ||
| 86 | unsigned int *siglen, EC_KEY *eckey) | ||
| 87 | { | ||
| 88 | return ECDSA_sign_ex(type, dgst, dlen, sig, siglen, NULL, NULL, eckey); | ||
| 89 | } | ||
| 90 | |||
| 91 | int | ||
| 92 | ECDSA_sign_ex(int type, const unsigned char *dgst, int dlen, unsigned char *sig, | ||
| 93 | unsigned int *siglen, const BIGNUM *kinv, const BIGNUM *r, EC_KEY *eckey) | ||
| 94 | { | ||
| 95 | if (eckey->meth->sign != NULL) | ||
| 96 | return eckey->meth->sign(type, dgst, dlen, sig, siglen, kinv, r, eckey); | ||
| 97 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 98 | return 0; | ||
| 99 | } | ||
| 100 | |||
| 101 | int | ||
| 102 | ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp, BIGNUM **rp) | ||
| 103 | { | ||
| 104 | if (eckey->meth->sign_setup != NULL) | ||
| 105 | return eckey->meth->sign_setup(eckey, ctx_in, kinvp, rp); | ||
| 106 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 107 | return 0; | ||
| 108 | } | ||
diff --git a/src/lib/libcrypto/ecdsa/ecs_vrf.c b/src/lib/libcrypto/ecdsa/ecs_vrf.c index 4be4c89d80..bfb2a253ed 100644 --- a/src/lib/libcrypto/ecdsa/ecs_vrf.c +++ b/src/lib/libcrypto/ecdsa/ecs_vrf.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: ecs_vrf.c,v 1.10 2022/11/26 16:08:52 tb Exp $ */ | 1 | /* $OpenBSD: ecs_vrf.c,v 1.11 2023/04/13 15:00:24 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Written by Nils Larsch for the OpenSSL project | 3 | * Written by Nils Larsch for the OpenSSL project |
| 4 | */ | 4 | */ |
| @@ -73,28 +73,9 @@ | |||
| 73 | * 0: incorrect signature | 73 | * 0: incorrect signature |
| 74 | * -1: error | 74 | * -1: error |
| 75 | */ | 75 | */ |
| 76 | int | ||
| 77 | ECDSA_do_verify(const unsigned char *dgst, int dgst_len, const ECDSA_SIG *sig, | ||
| 78 | EC_KEY *eckey) | ||
| 79 | { | ||
| 80 | if (eckey->meth->verify_sig != NULL) | ||
| 81 | return eckey->meth->verify_sig(dgst, dgst_len, sig, eckey); | ||
| 82 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 83 | return 0; | ||
| 84 | } | ||
| 85 | 76 | ||
| 86 | /* returns | 77 | /* returns |
| 87 | * 1: correct signature | 78 | * 1: correct signature |
| 88 | * 0: incorrect signature | 79 | * 0: incorrect signature |
| 89 | * -1: error | 80 | * -1: error |
| 90 | */ | 81 | */ |
| 91 | int | ||
| 92 | ECDSA_verify(int type, const unsigned char *dgst, int dgst_len, | ||
| 93 | const unsigned char *sigbuf, int sig_len, EC_KEY *eckey) | ||
| 94 | { | ||
| 95 | if (eckey->meth->verify != NULL) | ||
| 96 | return eckey->meth->verify(type, dgst, dgst_len, | ||
| 97 | sigbuf, sig_len, eckey); | ||
| 98 | ECDSAerror(EVP_R_METHOD_NOT_SUPPORTED); | ||
| 99 | return 0; | ||
| 100 | } | ||
