aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <herumi@nifty.com>2018-05-14 15:48:14 +0800
committerMITSUNARI Shigeo <herumi@nifty.com>2018-05-14 15:48:14 +0800
commite6c316cbbd2e75a158578aed0f592141e85bf754 (patch)
treeb7f56d5694ffd6bae5a4edc51a4577781e496609
parent241e38efe91d06e54a180a85e21d2e1cba22ad18 (diff)
downloadtangerine-mcl-e6c316cbbd2e75a158578aed0f592141e85bf754.tar.gz
tangerine-mcl-e6c316cbbd2e75a158578aed0f592141e85bf754.tar.zst
tangerine-mcl-e6c316cbbd2e75a158578aed0f592141e85bf754.zip
call cryptoGetRandomValues
-rw-r--r--Makefile2
-rw-r--r--include/mcl/randgen.hpp10
2 files changed, 9 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 6d3057d..582b474 100644
--- a/Makefile
+++ b/Makefile
@@ -259,7 +259,7 @@ endif
emcc -o $@ src/fp.cpp src/she_c384.cpp $(EMCC_OPT) -s TOTAL_MEMORY=67108864
../mcl-wasm/mcl_c.js: src/bn_c256.cpp $(MCL_C_DEP)
- emcc -o $@ src/fp.cpp src/bn_c256.cpp $(EMCC_OPT) -DMCL_MAX_BIT_SIZE=256 -DCYBOZU_MINIMUM_EXCEPTION
+ emcc -o $@ src/fp.cpp src/bn_c256.cpp $(EMCC_OPT) -DMCL_MAX_BIT_SIZE=256 -DCYBOZU_MINIMUM_EXCEPTION -DMCL_USE_WEB_CRYPTO_API
../mcl-wasm/mcl_c512.js: src/bn_c512.cpp $(MCL_C_DEP)
emcc -o $@ src/fp.cpp src/bn_c512.cpp $(EMCC_OPT) -DMCL_MAX_BIT_SIZE=512 -DCYBOZU_MINIMUM_EXCEPTION
diff --git a/include/mcl/randgen.hpp b/include/mcl/randgen.hpp
index 2e28378..30225e5 100644
--- a/include/mcl/randgen.hpp
+++ b/include/mcl/randgen.hpp
@@ -9,13 +9,15 @@
#ifdef MCL_USE_WEB_CRYPTO_API
#include <emscripten.h>
-struct RandomGenerator {
+namespace mcl {
+struct RandomGeneratorJS {
void read(void *buf, size_t bufSize)
{
// use crypto.getRandomValues
- EM_ASM({mod.cryptoGetRandomValues($0, $1)}, buf, bufSize);
+ EM_ASM({Module.cryptoGetRandomValues($0, $1)}, buf, bufSize);
}
};
+} // mcl
#else
#include <cybozu/random_generator.hpp>
@@ -88,7 +90,11 @@ public:
bool isZero() const { return self_ == 0 && readFunc_ == 0; }
static RandGen& get()
{
+#ifdef MCL_USE_WEB_CRYPTO_API
+ static mcl::RandomGeneratorJS rg;
+#else
static cybozu::RandomGenerator rg;
+#endif
static RandGen wrg(rg);
return wrg;
}