mirror of
https://github.com/jedisct1/libsodium.git
synced 2024-12-24 20:45:17 -07:00
Merge branch 'master' of github.com:jedisct1/libsodium
* 'master' of github.com:jedisct1/libsodium: Add -S for curl randombytes: make the emscripten version consistent with others
This commit is contained in:
commit
e1bff2608f
@ -39,11 +39,11 @@ fi
|
|||||||
command -v curl >/dev/null 2>&1 && {
|
command -v curl >/dev/null 2>&1 && {
|
||||||
echo "Downloading config.guess and config.sub..."
|
echo "Downloading config.guess and config.sub..."
|
||||||
|
|
||||||
curl -sL -o config.guess \
|
curl -sSL -o config.guess \
|
||||||
'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' &&
|
'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' &&
|
||||||
mv -f config.guess build-aux/config.guess
|
mv -f config.guess build-aux/config.guess
|
||||||
|
|
||||||
curl -sL -o config.sub \
|
curl -sSL -o config.sub \
|
||||||
'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' &&
|
'https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' &&
|
||||||
mv -f config.sub build-aux/config.sub
|
mv -f config.sub build-aux/config.sub
|
||||||
|
|
||||||
|
@ -30,60 +30,28 @@ static const randombytes_implementation *implementation;
|
|||||||
# ifdef __EMSCRIPTEN__
|
# ifdef __EMSCRIPTEN__
|
||||||
# define RANDOMBYTES_DEFAULT_IMPLEMENTATION NULL
|
# define RANDOMBYTES_DEFAULT_IMPLEMENTATION NULL
|
||||||
# else
|
# else
|
||||||
# define RANDOMBYTES_DEFAULT_IMPLEMENTATION &randombytes_sysrandom_implementation;
|
# define RANDOMBYTES_DEFAULT_IMPLEMENTATION &randombytes_sysrandom_implementation
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void
|
#ifdef __EMSCRIPTEN__
|
||||||
randombytes_init_if_needed(void)
|
static const char *
|
||||||
|
javascript_implementation_name(void)
|
||||||
{
|
{
|
||||||
if (implementation == NULL) {
|
|
||||||
implementation = RANDOMBYTES_DEFAULT_IMPLEMENTATION;
|
|
||||||
randombytes_stir();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
randombytes_set_implementation(randombytes_implementation *impl)
|
|
||||||
{
|
|
||||||
implementation = impl;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
const char *
|
|
||||||
randombytes_implementation_name(void)
|
|
||||||
{
|
|
||||||
#ifndef __EMSCRIPTEN__
|
|
||||||
randombytes_init_if_needed();
|
|
||||||
return implementation->implementation_name();
|
|
||||||
#else
|
|
||||||
return "js";
|
return "js";
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
static uint32_t
|
||||||
randombytes_random(void)
|
javascript_random(void)
|
||||||
{
|
{
|
||||||
#ifndef __EMSCRIPTEN__
|
|
||||||
randombytes_init_if_needed();
|
|
||||||
return implementation->random();
|
|
||||||
#else
|
|
||||||
return EM_ASM_INT_V({
|
return EM_ASM_INT_V({
|
||||||
return Module.getRandomValue();
|
return Module.getRandomValue();
|
||||||
});
|
});
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
static void
|
||||||
randombytes_stir(void)
|
javascript_stir(void)
|
||||||
{
|
{
|
||||||
#ifndef __EMSCRIPTEN__
|
|
||||||
randombytes_init_if_needed();
|
|
||||||
if (implementation->stir != NULL) {
|
|
||||||
implementation->stir();
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
EM_ASM({
|
EM_ASM({
|
||||||
if (Module.getRandomValue === undefined) {
|
if (Module.getRandomValue === undefined) {
|
||||||
try {
|
try {
|
||||||
@ -111,7 +79,66 @@ randombytes_stir(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
javascript_buf(void * const buf, const size_t size)
|
||||||
|
{
|
||||||
|
unsigned char *p = (unsigned char *) buf;
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = (size_t) 0U; i < size; i++) {
|
||||||
|
p[i] = (unsigned char) randombytes_random();
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
randombytes_init_if_needed(void)
|
||||||
|
{
|
||||||
|
if (implementation == NULL) {
|
||||||
|
#ifdef __EMSCRIPTEN__
|
||||||
|
static randombytes_implementation javascript_implementation;
|
||||||
|
javascript_implementation.implementation_name = javascript_implementation_name;
|
||||||
|
javascript_implementation.random = javascript_random;
|
||||||
|
javascript_implementation.stir = javascript_stir;
|
||||||
|
javascript_implementation.buf = javascript_buf;
|
||||||
|
implementation = &javascript_implementation;
|
||||||
|
#else
|
||||||
|
implementation = RANDOMBYTES_DEFAULT_IMPLEMENTATION;
|
||||||
|
#endif
|
||||||
|
randombytes_stir();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
randombytes_set_implementation(randombytes_implementation *impl)
|
||||||
|
{
|
||||||
|
implementation = impl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *
|
||||||
|
randombytes_implementation_name(void)
|
||||||
|
{
|
||||||
|
randombytes_init_if_needed();
|
||||||
|
return implementation->implementation_name();
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
randombytes_random(void)
|
||||||
|
{
|
||||||
|
randombytes_init_if_needed();
|
||||||
|
return implementation->random();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
randombytes_stir(void)
|
||||||
|
{
|
||||||
|
randombytes_init_if_needed();
|
||||||
|
if (implementation->stir != NULL) {
|
||||||
|
implementation->stir();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t
|
uint32_t
|
||||||
@ -120,12 +147,10 @@ randombytes_uniform(const uint32_t upper_bound)
|
|||||||
uint32_t min;
|
uint32_t min;
|
||||||
uint32_t r;
|
uint32_t r;
|
||||||
|
|
||||||
#ifndef __EMSCRIPTEN__
|
|
||||||
randombytes_init_if_needed();
|
randombytes_init_if_needed();
|
||||||
if (implementation->uniform != NULL) {
|
if (implementation->uniform != NULL) {
|
||||||
return implementation->uniform(upper_bound);
|
return implementation->uniform(upper_bound);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
if (upper_bound < 2) {
|
if (upper_bound < 2) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -142,19 +167,10 @@ randombytes_uniform(const uint32_t upper_bound)
|
|||||||
void
|
void
|
||||||
randombytes_buf(void * const buf, const size_t size)
|
randombytes_buf(void * const buf, const size_t size)
|
||||||
{
|
{
|
||||||
#ifndef __EMSCRIPTEN__
|
|
||||||
randombytes_init_if_needed();
|
randombytes_init_if_needed();
|
||||||
if (size > (size_t) 0U) {
|
if (size > (size_t) 0U) {
|
||||||
implementation->buf(buf, size);
|
implementation->buf(buf, size);
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
unsigned char *p = (unsigned char *) buf;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = (size_t) 0U; i < size; i++) {
|
|
||||||
p[i] = (unsigned char) randombytes_random();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user