Current section

Files

Jump to
lib_secp256k1 c_src utils.h
Raw

c_src/utils.h

#include <erl_nif.h>
#include <secp256k1.h>
#include "random.h"
static secp256k1_context *ctx = NULL;
static int
load(ErlNifEnv *env, void **priv, ERL_NIF_TERM load_info)
{
unsigned char randomize[32];
ctx = secp256k1_context_create(SECP256K1_CONTEXT_NONE);
fill_random(randomize, sizeof(randomize));
secp256k1_context_randomize(ctx, randomize);
return 0;
}
static int
upgrade(ErlNifEnv *env, void **priv, void **old_priv, ERL_NIF_TERM load_info)
{
return 0;
}
static void
unload(ErlNifEnv *env, void *priv)
{
secp256k1_context_destroy(ctx);
return;
}
static ERL_NIF_TERM
error_result(ErlNifEnv *env, char *error_msg)
{
return enif_make_tuple2(env, enif_make_atom(env, "error"), enif_make_string(env, error_msg, ERL_NIF_LATIN1));
}
static ERL_NIF_TERM
ok_result(ErlNifEnv *env, ERL_NIF_TERM *r)
{
return enif_make_tuple2(env, enif_make_atom(env, "ok"), *r);
}