Merge branch 'sign-seed-keypair' of github.com:termoose/enacl
This commit is contained in:
@@ -496,6 +496,11 @@ static ERL_NIF_TERM enif_crypto_sign_SECRETKEYBYTES(ErlNifEnv *env, int argc,
|
||||
return enif_make_int64(env, crypto_sign_SECRETKEYBYTES);
|
||||
}
|
||||
|
||||
static ERL_NIF_TERM enif_crypto_sign_SEEDBYTES(ErlNifEnv *env, int argc,
|
||||
ERL_NIF_TERM const argv[]) {
|
||||
return enif_make_int64(env, crypto_sign_SEEDBYTES);
|
||||
}
|
||||
|
||||
static ERL_NIF_TERM enif_crypto_sign_keypair(ErlNifEnv *env, int argc,
|
||||
ERL_NIF_TERM const argv[]) {
|
||||
ErlNifBinary pk, sk;
|
||||
@@ -518,6 +523,28 @@ static ERL_NIF_TERM enif_crypto_sign_keypair(ErlNifEnv *env, int argc,
|
||||
enif_make_binary(env, &sk));
|
||||
}
|
||||
|
||||
static ERL_NIF_TERM enif_crypto_sign_seed_keypair(ErlNifEnv *env, int argc,
|
||||
ERL_NIF_TERM const argv[]) {
|
||||
ErlNifBinary pk, sk, seed;
|
||||
|
||||
if ((argc != 1) || (!enif_inspect_binary(env, argv[0], &seed))) {
|
||||
return enif_make_badarg(env);
|
||||
}
|
||||
|
||||
if (!enif_alloc_binary(crypto_sign_PUBLICKEYBYTES, &pk)) {
|
||||
return nacl_error_tuple(env, "alloc_failed");
|
||||
}
|
||||
|
||||
if (!enif_alloc_binary(crypto_sign_SECRETKEYBYTES, &sk)) {
|
||||
return nacl_error_tuple(env, "alloc_failed");
|
||||
}
|
||||
|
||||
crypto_sign_seed_keypair(pk.data, sk.data, seed.data);
|
||||
|
||||
return enif_make_tuple2(env, enif_make_binary(env, &pk),
|
||||
enif_make_binary(env, &sk));
|
||||
}
|
||||
|
||||
/*
|
||||
int crypto_sign(unsigned char *sm, unsigned long long *smlen,
|
||||
const unsigned char *m, unsigned long long mlen,
|
||||
@@ -1844,6 +1871,8 @@ static ErlNifFunc nif_funcs[] = {
|
||||
{"crypto_sign_SECRETKEYBYTES", 0, enif_crypto_sign_SECRETKEYBYTES},
|
||||
erl_nif_dirty_job_cpu_bound_macro("crypto_sign_keypair", 0,
|
||||
enif_crypto_sign_keypair),
|
||||
erl_nif_dirty_job_cpu_bound_macro("crypto_sign_seed_keypair", 1,
|
||||
enif_crypto_sign_seed_keypair),
|
||||
|
||||
erl_nif_dirty_job_cpu_bound_macro("crypto_sign", 2, enif_crypto_sign),
|
||||
erl_nif_dirty_job_cpu_bound_macro("crypto_sign_open", 2,
|
||||
|
||||
Reference in New Issue
Block a user