diff options
author | tb <> | 2021-05-09 14:25:40 +0000 |
---|---|---|
committer | tb <> | 2021-05-09 14:25:40 +0000 |
commit | 43c113cccadf509f99393902ca7849399a77533a (patch) | |
tree | f112423d4c94314af4149c65ad8c2fc134c10edd /src/lib/libcrypto/evp/m_sigver.c | |
parent | 00a09bf96d7f1c78d30414599acdc9f4726ae1d9 (diff) | |
download | openbsd-43c113cccadf509f99393902ca7849399a77533a.tar.gz openbsd-43c113cccadf509f99393902ca7849399a77533a.tar.bz2 openbsd-43c113cccadf509f99393902ca7849399a77533a.zip |
Prepare to provide EVP_Digest{Sign,Verify}
These are one-shot versions combining EVP_Digest{Sign,Verify}{Update,Final}.
and are part of the OpenSSL 1.1.1 API. While they simplify callers in some
situations slightly, their real use is for EdDSA that by design can't be
split into Update/Final steps.
Based on OpenSSL commit 7539418981c140648a620d72edd7398564878b5c
ok inoguchi
Diffstat (limited to 'src/lib/libcrypto/evp/m_sigver.c')
-rw-r--r-- | src/lib/libcrypto/evp/m_sigver.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/lib/libcrypto/evp/m_sigver.c b/src/lib/libcrypto/evp/m_sigver.c index f7dcaff418..bd9374651a 100644 --- a/src/lib/libcrypto/evp/m_sigver.c +++ b/src/lib/libcrypto/evp/m_sigver.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: m_sigver.c,v 1.8 2021/03/29 15:57:23 tb Exp $ */ | 1 | /* $OpenBSD: m_sigver.c,v 1.9 2021/05/09 14:25:40 tb 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 | */ |
@@ -187,6 +187,18 @@ EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen) | |||
187 | } | 187 | } |
188 | 188 | ||
189 | int | 189 | int |
190 | EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen, | ||
191 | const unsigned char *tbs, size_t tbslen) | ||
192 | { | ||
193 | if (sigret != NULL) { | ||
194 | if (EVP_DigestSignUpdate(ctx, tbs, tbslen) <= 0) | ||
195 | return 0; | ||
196 | } | ||
197 | |||
198 | return EVP_DigestSignFinal(ctx, sigret, siglen); | ||
199 | } | ||
200 | |||
201 | int | ||
190 | EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, size_t siglen) | 202 | EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, size_t siglen) |
191 | { | 203 | { |
192 | EVP_MD_CTX tmp_ctx; | 204 | EVP_MD_CTX tmp_ctx; |
@@ -212,3 +224,13 @@ EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, size_t siglen) | |||
212 | return r; | 224 | return r; |
213 | return EVP_PKEY_verify(ctx->pctx, sig, siglen, md, mdlen); | 225 | return EVP_PKEY_verify(ctx->pctx, sig, siglen, md, mdlen); |
214 | } | 226 | } |
227 | |||
228 | int | ||
229 | EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, size_t siglen, | ||
230 | const unsigned char *tbs, size_t tbslen) | ||
231 | { | ||
232 | if (EVP_DigestVerifyUpdate(ctx, tbs, tbslen) <= 0) | ||
233 | return -1; | ||
234 | |||
235 | return EVP_DigestVerifyFinal(ctx, sigret, siglen); | ||
236 | } | ||