Add compat functions for EVP_Digest{Sign,Verify}.

This should make LibreSSL 3.1.x through 3.3.x work again.  Code from
tb@, ok djm@.  Restore the test configs covering those.
This commit is contained in:
Darren Tucker 2024-08-17 11:10:19 +10:00
parent 1c3a714526
commit 2a50a8f1fa
No known key found for this signature in database
4 changed files with 40 additions and 0 deletions

View File

@ -57,6 +57,8 @@ jobs:
- { target: ubuntu-20.04, config: musl }
- { target: ubuntu-latest, config: boringssl }
- { target: ubuntu-latest, config: libressl-master }
- { target: ubuntu-latest, config: libressl-3.2.6 }
- { target: ubuntu-latest, config: libressl-3.3.6 }
- { target: ubuntu-latest, config: libressl-3.4.3 }
- { target: ubuntu-latest, config: libressl-3.5.3 }
- { target: ubuntu-latest, config: libressl-3.6.1 }

View File

@ -2983,6 +2983,8 @@ if test "x$openssl" = "xyes" ; then
BN_is_prime_ex \
DES_crypt \
DSA_generate_parameters_ex \
EVP_DigestSign \
EVP_DigestVerify \
EVP_DigestFinal_ex \
EVP_DigestInit_ex \
EVP_MD_CTX_cleanup \

View File

@ -95,4 +95,30 @@ ssh_libcrypto_init(void)
#endif /* USE_OPENSSL_ENGINE */
}
#ifndef HAVE_EVP_DIGESTSIGN
int
EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret, size_t *siglen,
const unsigned char *tbs, size_t tbslen)
{
if (sigret != NULL) {
if (EVP_DigestSignUpdate(ctx, tbs, tbslen) <= 0)
return 0;
}
return EVP_DigestSignFinal(ctx, sigret, siglen);
}
#endif
#ifndef HAVE_EVP_DIGESTVERIFY
int
EVP_DigestVerify(EVP_MD_CTX *ctx, const unsigned char *sigret, size_t siglen,
const unsigned char *tbs, size_t tbslen)
{
if (EVP_DigestVerifyUpdate(ctx, tbs, tbslen) <= 0)
return -1;
return EVP_DigestVerifyFinal(ctx, sigret, siglen);
}
#endif
#endif /* WITH_OPENSSL */

View File

@ -78,5 +78,15 @@ int EVP_CIPHER_CTX_set_iv(EVP_CIPHER_CTX *ctx,
const unsigned char *iv, size_t len);
#endif /* HAVE_EVP_CIPHER_CTX_SET_IV */
#ifndef HAVE_EVP_DIGESTSIGN
int EVP_DigestSign(EVP_MD_CTX *, unsigned char *, size_t *,
const unsigned char *, size_t);
#endif
#ifndef HAVE_EVP_DIGESTVERIFY
int EVP_DigestVerify(EVP_MD_CTX *, const unsigned char *, size_t,
const unsigned char *, size_t);
#endif
#endif /* WITH_OPENSSL */
#endif /* _OPENSSL_COMPAT_H */