| From 1e7071684329f23ee3447310d203d193c283979e Mon Sep 17 00:00:00 2001 |
| From: James Hilliard <james.hilliard1@gmail.com> |
| Date: Wed, 5 Oct 2022 15:30:32 -0600 |
| Subject: [PATCH] Fix missing EVP_PKEY_ED25519 build error on libressl |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| Fixes: |
| gensio_filter_certauth.c: In function ‘v3_certauth_add_challenge_rsp’: |
| gensio_filter_certauth.c:838:44: error: ‘EVP_PKEY_ED25519’ undeclared (first use in this function); did you mean ‘EVP_PKEY_DSA1’? |
| 838 | if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) { |
| | ^~~~~~~~~~~~~~~~ |
| | EVP_PKEY_DSA1 |
| gensio_filter_certauth.c:838:44: note: each undeclared identifier is reported only once for each function it appears in |
| gensio_filter_certauth.c: In function ‘certauth_add_challenge_rsp’: |
| gensio_filter_certauth.c:901:44: error: ‘EVP_PKEY_ED25519’ undeclared (first use in this function); did you mean ‘EVP_PKEY_DSA1’? |
| 901 | if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) |
| | ^~~~~~~~~~~~~~~~ |
| | EVP_PKEY_DSA1 |
| gensio_filter_certauth.c: In function ‘certauth_check_challenge’: |
| gensio_filter_certauth.c:1048:35: error: ‘EVP_PKEY_ED25519’ undeclared (first use in this function); did you mean ‘EVP_PKEY_DSA1’? |
| 1048 | if (EVP_PKEY_base_id(pkey) == EVP_PKEY_ED25519) |
| | ^~~~~~~~~~~~~~~~ |
| | EVP_PKEY_DSA1 |
| |
| Signed-off-by: Corey Minyard <cminyard@mvista.com> |
| [Retrieved from: |
| https://github.com/cminyard/gensio/commit/1e7071684329f23ee3447310d203d193c283979e] |
| Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> |
| --- |
| lib/gensio_filter_certauth.c | 6 ++++++ |
| tools/gtlssh-keygen.c | 11 ++++++++++- |
| 2 files changed, 16 insertions(+), 1 deletion(-) |
| |
| diff --git a/lib/gensio_filter_certauth.c b/lib/gensio_filter_certauth.c |
| index 642379b6..c4552e79 100644 |
| --- a/lib/gensio_filter_certauth.c |
| +++ b/lib/gensio_filter_certauth.c |
| @@ -835,11 +835,13 @@ v3_certauth_add_challenge_rsp(struct certauth_filter *sfilter) |
| unsigned int lenpos, len; |
| int rv = 0; |
| |
| +#ifdef EVP_PKEY_ED25519 |
| if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) { |
| gca_log_err(sfilter, |
| "Remote end or SSL too old to support ed25519 key"); |
| return GE_KEYINVALID; |
| } |
| +#endif |
| |
| certauth_write_byte(sfilter, CERTAUTH_CHALLENGE_RSP); |
| lenpos = sfilter->write_buf_len; |
| @@ -898,8 +900,10 @@ certauth_add_challenge_rsp(struct certauth_filter *sfilter) |
| if (sfilter->version < 4 || sfilter->my_version < 4) |
| return v3_certauth_add_challenge_rsp(sfilter); |
| |
| +#ifdef EVP_PKEY_ED25519 |
| if (EVP_PKEY_base_id(sfilter->pkey) == EVP_PKEY_ED25519) |
| digest = NULL; |
| +#endif |
| |
| certauth_write_byte(sfilter, CERTAUTH_CHALLENGE_RSP); |
| lenpos = sfilter->write_buf_len; |
| @@ -1045,8 +1049,10 @@ certauth_check_challenge(struct certauth_filter *sfilter) |
| goto out_nomem; |
| } |
| |
| +#ifdef EVP_PKEY_ED25519 |
| if (EVP_PKEY_base_id(pkey) == EVP_PKEY_ED25519) |
| digest = NULL; |
| +#endif |
| |
| if (!EVP_DigestVerifyInit(sign_ctx, NULL, digest, NULL, pkey)) { |
| gca_logs_err(sfilter, "Digest verify init failed"); |
| diff --git a/tools/gtlssh-keygen.c b/tools/gtlssh-keygen.c |
| index c8c28937..0779dd78 100644 |
| --- a/tools/gtlssh-keygen.c |
| +++ b/tools/gtlssh-keygen.c |
| @@ -108,7 +108,12 @@ help(const char *progname) |
| P(" The default is your username for normal certificates and\n"); |
| P(" the fully qualified domain name for server certificates.\n"); |
| P(" --algorithm <algname> - Set the algorithm to use for the key,\n"); |
| - P(" either ed25519, rsa or ec. The default is ed25519.\n"); |
| + P(" either ed25519, rsa or ec. "); |
| +#ifdef EVP_PKEY_ED25519 |
| + P("The default is ed25519.\n"); |
| +#else |
| + P("The default is ec.\n"); |
| +#endif |
| P(" --force, -f - Don't ask questions, just do the operation. This\n"); |
| P(" may overwrite data without asking.\n"); |
| P(" --version - Print the version number and exit.\n"); |
| @@ -831,7 +836,11 @@ genpkey_ed25519(const char *key) |
| return rc != 0; |
| } |
| |
| +#ifdef EVP_PKEY_ED25519 |
| static int (*genpkey)(const char *key) = genpkey_ed25519; |
| +#else |
| +static int (*genpkey)(const char *key) = genpkey_ec; |
| +#endif |
| |
| /* |
| * Create a single key. If name is NULL, it's a server key, otherwise |