94 lines
2.1 KiB
C++
Executable file
94 lines
2.1 KiB
C++
Executable file
/**
|
|
* Node Native Module for Lib Sodium
|
|
*
|
|
* @Author Pedro Paixao
|
|
* @email paixaop at gmail dot com
|
|
* @License MIT
|
|
*/
|
|
#include "node_sodium.h"
|
|
|
|
// Generating Random Data
|
|
// Docs: https://download.libsodium.org/doc/generating_random_data/index.html
|
|
|
|
// Lib Sodium Random
|
|
|
|
// void randombytes_buf(void *const buf, const size_t size)
|
|
NAPI_METHOD(randombytes_buf) {
|
|
Napi::Env env = info.Env();
|
|
|
|
ARGS(1, "argument must be a buffer");
|
|
|
|
ARG_TO_UCHAR_BUFFER(buffer);
|
|
randombytes_buf(buffer, buffer_size);
|
|
|
|
return NAPI_NULL;
|
|
}
|
|
|
|
// void randombytes_stir()
|
|
NAPI_METHOD(randombytes_stir) {
|
|
Napi::Env env = info.Env();
|
|
randombytes_stir();
|
|
|
|
return NAPI_NULL;
|
|
}
|
|
|
|
NAPI_METHOD(randombytes_close) {
|
|
Napi::Env env = info.Env();
|
|
|
|
// int randombytes_close()
|
|
return
|
|
Napi::Number::New(env, randombytes_close());
|
|
}
|
|
|
|
NAPI_METHOD(randombytes_random) {
|
|
Napi::Env env = info.Env();
|
|
|
|
// uint_32 randombytes_random()
|
|
return
|
|
Napi::Value::From(env, randombytes_random());
|
|
}
|
|
|
|
NAPI_METHOD(randombytes_uniform) {
|
|
Napi::Env env = info.Env();
|
|
|
|
ARGS(1, "argument size must be a positive number");
|
|
ARG_TO_NUMBER(upper_bound);
|
|
|
|
// uint32_t randombytes_uniform(const uint32_t upper_bound)
|
|
return
|
|
Napi::Value::From(env, randombytes_uniform(upper_bound));
|
|
}
|
|
|
|
/*
|
|
NAPI_METHOD(randombytes_keygen) {
|
|
NEW_BUFFER_AND_PTR(buffer, randombytes_SEEDBYTES);
|
|
randombytes_keygen(buffer_ptr);
|
|
return buffer;
|
|
}
|
|
*/
|
|
|
|
NAPI_METHOD(randombytes_buf_deterministic) {
|
|
Napi::Env env = info.Env();
|
|
|
|
ARGS(2, "arguments buf and seed must be buffers");
|
|
ARG_TO_UCHAR_BUFFER(buffer);
|
|
ARG_TO_UCHAR_BUFFER_LEN(seed, randombytes_SEEDBYTES);
|
|
randombytes_buf_deterministic(buffer, buffer_size, seed);
|
|
return NAPI_NULL;
|
|
}
|
|
|
|
/**
|
|
* Register function calls in node binding
|
|
*/
|
|
void register_randombytes(Napi::Env env, Napi::Object exports) {
|
|
|
|
EXPORT(randombytes_buf);
|
|
EXPORT_ALIAS(randombytes, randombytes_buf);
|
|
EXPORT(randombytes_close);
|
|
EXPORT(randombytes_stir);
|
|
EXPORT(randombytes_random);
|
|
EXPORT(randombytes_uniform);
|
|
EXPORT(randombytes_buf_deterministic);
|
|
|
|
EXPORT_INT(randombytes_SEEDBYTES);
|
|
} |