gpg_do_public_key for ed25519

This commit is contained in:
NIIBE Yutaka
2014-03-31 16:58:48 +09:00
parent 89f0af1496
commit dc4584a8a5

View File

@@ -1689,10 +1689,12 @@ gpg_do_public_key (uint8_t kk_byte)
if (kk_byte == 0xb6) if (kk_byte == 0xb6)
#elif !defined(RSA_AUTH) && defined(RSA_SIG) #elif !defined(RSA_AUTH) && defined(RSA_SIG)
/* ECDSA with p256r1 for authentication */ /* ECDSA with p256r1 for authentication */
/* EdDSA with Ed25519 for authentication */
if (kk_byte == 0xa4) if (kk_byte == 0xa4)
#else #else
#error "not supported." #error "not supported."
#endif #endif
#if defined(ECDSA_AUTH)
{ /* ECDSA */ { /* ECDSA */
/* LEN */ /* LEN */
*res_p++ = 2 + 1 + 64; *res_p++ = 2 + 1 + 64;
@@ -1705,6 +1707,19 @@ gpg_do_public_key (uint8_t kk_byte)
res_p += 64; res_p += 64;
} }
} }
#else /* EDDSA_AUTH */
{ /* EdDSA */
/* LEN */
*res_p++ = 2 + 32;
{
/*TAG*/ /* LEN = 32 */
*res_p++ = 0x86; *res_p++ = 0x20;
/* 32-byte binary (little endian): Y with parity */
memcpy (res_p, key_addr + KEY_CONTENT_LEN, 32);
res_p += 32;
}
}
#endif
else else
{ /* RSA */ { /* RSA */
/* LEN = 9+256 */ /* LEN = 9+256 */