const char *desc;
void (*keypair) (unsigned char *pk, unsigned char *sk);
+ void (*seed_keypair) (unsigned char *pk, unsigned char *sk, unsigned char *seed);
void (*sign) (unsigned char *sig, size_t *siglen_p,
const unsigned char *m, size_t mlen,
const unsigned char *sk);
#define ED25519_DECLARE(ext) \
void ed_keypair_##ext(unsigned char *pk, unsigned char *sk); \
+ void ed_seed_keypair_##ext(unsigned char *pk, unsigned char *sk, unsigned char *seed); \
void ed_sign_##ext(unsigned char *sig, size_t *siglen_p, \
const unsigned char *m, size_t mlen, \
const unsigned char *sk); \
const unsigned char *pk)
#define ED25519_IMPL(cpuflags, desc, ext) \
- {(cpuflags), desc, ed_keypair_##ext, ed_sign_##ext, ed_verify_##ext}
+ {(cpuflags), desc, ed_keypair_##ext, ed_seed_keypair_##ext, ed_sign_##ext, ed_verify_##ext}
ED25519_DECLARE(ref);
#define ED25519_REF ED25519_IMPL(0, "ref", ref)
return ed25519_opt->desc;
}
+void
+ed25519_seed_keypair (unsigned char *pk, unsigned char *sk, unsigned char *seed)
+{
+ ed25519_opt->seed_keypair (pk, sk, seed);
+}
+
void
ed25519_keypair (unsigned char *pk, unsigned char *sk)
{
const char* ed25519_load (void);
void ed25519_keypair (unsigned char *pk, unsigned char *sk);
+void ed25519_seed_keypair (unsigned char *pk, unsigned char *sk, unsigned char *seed);
void ed25519_sign (unsigned char *sig, size_t *siglen_p,
const unsigned char *m, size_t mlen,
const unsigned char *sk);