[PATCH] Changes for EdDSA (1/3)
NIIBE Yutaka
gniibe at fsij.org
Mon Apr 7 04:40:40 CEST 2014
Here are small changes for EdDSA support.
(1) EdDSA a public key shoud have "(flags eddsa)" in the S-expression
to compute its keygrip (in g10/keyid.c).
(2) When Ed25519 curve is selected, it's a key for EdDSA.
I'm not sure if current UI is good or not, but just for now
(in g10/keygen.c).
(3) Update of OID of Ed25519 to match the ones in the
functions openpgp_curve_to_oid and openpgp_oid_to_curve
(in common/openpgp-oid.c).
It will be updated again soon, but just for now .
g10: EdDSA support.
* g10/keyid.c (keygrip_from_pk): Compute keygrip of EdDSA key.
* g10/keygen.c (generate_subkeypair): Ed25519 is for EdDSA.
* common/openpgp-oid.c (oid_ed25519): Update.
OK to commit&push?
diff --git a/g10/keyid.c b/g10/keyid.c
index 9ed64a4..4ce77aa 100644
--- a/g10/keyid.c
+++ b/g10/keyid.c
@@ -813,7 +813,9 @@ keygrip_from_pk (PKT_public_key *pk, unsigned char *array)
else
{
err = gcry_sexp_build (&s_pkey, NULL,
- "(public-key(ecc(curve%s)(q%m)))",
+ pk->pubkey_algo == PUBKEY_ALGO_EDDSA ?
+ "(public-key(ecc(curve%s)(flags eddsa)(q%m)))"
+ : "(public-key(ecc(curve%s)(q%m)))",
curve, pk->pkey[1]);
xfree (curve);
}
diff --git a/g10/keygen.c b/g10/keygen.c
index 135699d..f3052e4 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -4031,7 +4031,11 @@ generate_subkeypair (ctrl_t ctrl, kbnode_t keyblock)
else if (algo == PUBKEY_ALGO_ECDSA
|| algo == PUBKEY_ALGO_EDDSA
|| algo == PUBKEY_ALGO_ECDH)
- curve = ask_curve ();
+ {
+ curve = ask_curve ();
+ if (curve && !strcmp (curve, "Ed25519"))
+ algo = PUBKEY_ALGO_EDDSA;
+ }
else
nbits = ask_keysize (algo, 0);
diff --git a/common/openpgp-oid.c b/common/openpgp-oid.c
index a2a3617..94a2296 100644
--- a/common/openpgp-oid.c
+++ b/common/openpgp-oid.c
@@ -39,7 +39,7 @@
/* The OID for Curve Ed25519 in OpenPGP format. */
static const char oid_ed25519[] =
- { 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x97, 0x55, 0x01, 0x05, 0x01 };
+ { 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0xda, 0x47, 0x0f, 0x01 };
/* Helper for openpgp_oid_from_str. */
--
More information about the Gnupg-devel
mailing list