diff options
author | NIIBE Yutaka <[email protected]> | 2021-03-22 07:57:18 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2021-03-22 07:57:18 +0000 |
commit | 1524a942b645d9facbedd9ed4a472e343838b6a1 (patch) | |
tree | 9d8c98f413d9da168c5bcd1b9f743f1fa2818f0f /g10/export.c | |
parent | gpg: Fix exporting SSH key. (diff) | |
download | gnupg-1524a942b645d9facbedd9ed4a472e343838b6a1.tar.gz gnupg-1524a942b645d9facbedd9ed4a472e343838b6a1.zip |
gpg: Support exporting Ed448 SSH key.
* common/openpgp-oid.c (oid_ed448, openpgp_oidbuf_is_ed448): New.
(openpgp_oid_is_ed448): New.
* common/util.h (openpgp_oid_is_ed448): New.
* g10/export.c (export_one_ssh_key): Support Ed448 key.
Signed-off-by: NIIBE Yutaka <[email protected]>
Diffstat (limited to 'g10/export.c')
-rw-r--r-- | g10/export.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/g10/export.c b/g10/export.c index ac12ccddb..98c4623cf 100644 --- a/g10/export.c +++ b/g10/export.c @@ -2195,7 +2195,6 @@ export_one_ssh_key (estream_t fp, PKT_public_key *pk) gpg_error_t err; const char *identifier = NULL; membuf_t mb; - struct b64state b64_state; void *blob; size_t bloblen; @@ -2245,13 +2244,18 @@ export_one_ssh_key (estream_t fp, PKT_public_key *pk) break; case PUBKEY_ALGO_EDDSA: - if (!openpgp_oid_is_ed25519 (pk->pkey[0])) - err = gpg_error (GPG_ERR_UNKNOWN_CURVE); - else + if (openpgp_oid_is_ed25519 (pk->pkey[0])) { identifier = "ssh-ed25519"; err = key_to_sshblob (&mb, identifier, pk->pkey[1], NULL); } + else if (openpgp_oid_is_ed448 (pk->pkey[0])) + { + identifier = "ssh-ed448"; + err = key_to_sshblob (&mb, identifier, pk->pkey[1], NULL); + } + else + err = gpg_error (GPG_ERR_UNKNOWN_CURVE); break; case PUBKEY_ALGO_ELGAMAL_E: |