summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/m_sigver.c
diff options
context:
space:
mode:
authortb <>2021-05-09 14:25:40 +0000
committertb <>2021-05-09 14:25:40 +0000
commit43c113cccadf509f99393902ca7849399a77533a (patch)
treef112423d4c94314af4149c65ad8c2fc134c10edd /src/lib/libcrypto/evp/m_sigver.c
parent00a09bf96d7f1c78d30414599acdc9f4726ae1d9 (diff)
downloadopenbsd-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.c24
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
189int 189int
190EVP_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
201int
190EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, const unsigned char *sig, size_t siglen) 202EVP_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
228int
229EVP_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}