aboutsummaryrefslogtreecommitdiffstats
path: root/sm/call-agent.c
diff options
context:
space:
mode:
authorDamien Goutte-Gattat via Gnupg-devel <[email protected]>2019-02-17 17:40:51 +0000
committerNIIBE Yutaka <[email protected]>2019-02-18 02:33:20 +0000
commit3cbdf896e6919333b5423001ab58c01a04363386 (patch)
tree7d434971ab3021c5931e0c58e0fa1e33272ea2d8 /sm/call-agent.c
parentsm: Support generation of card-based ECDSA CSR. (diff)
downloadgnupg-3cbdf896e6919333b5423001ab58c01a04363386.tar.gz
gnupg-3cbdf896e6919333b5423001ab58c01a04363386.zip
sm: Support generation of card-based ed25519 CSR.
* sm/call-agent.c (gpgsm_scd_pksign): Allow SHA512. Create proper S-expression for EdDSA signature. * sm/certreqgen.c (create_request): Force use of SHA512 when using a ed25519 key. * sm/misc.c (transform_sigval): Insert OID for ed25519. -- GnuPG-bug-id: 4013 Signed-off-by: Damien Goutte-Gattat <[email protected]>
Diffstat (limited to 'sm/call-agent.c')
-rw-r--r--sm/call-agent.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/sm/call-agent.c b/sm/call-agent.c
index 6ac715fab..4f2b83f56 100644
--- a/sm/call-agent.c
+++ b/sm/call-agent.c
@@ -354,6 +354,7 @@ gpgsm_scd_pksign (ctrl_t ctrl, const char *keyid, const char *desc,
case GCRY_MD_RMD160:hashopt = "--hash=rmd160"; break;
case GCRY_MD_MD5: hashopt = "--hash=md5"; break;
case GCRY_MD_SHA256:hashopt = "--hash=sha256"; break;
+ case GCRY_MD_SHA512:hashopt = "--hash=sha512"; break;
default:
return gpg_error (GPG_ERR_DIGEST_ALGO);
}
@@ -417,6 +418,12 @@ gpgsm_scd_pksign (ctrl_t ctrl, const char *keyid, const char *desc,
sigbuflen/2, sigbuf + sigbuflen/2);
break;
+ case GCRY_PK_EDDSA:
+ rc = gcry_sexp_build (&sig, NULL, "(sig-val(eddsa(r%b)(s%b)))",
+ sigbuflen/2, sigbuf,
+ sigbuflen/2, sigbuf + sigbuflen/2);
+ break;
+
default:
rc = gpg_error (GPG_ERR_WRONG_PUBKEY_ALGO);
break;