@pinkparrot/qsafe-mayo-wasm 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bridge/mayo1_bridge.c +25 -33
- package/bridge/mayo2_bridge.c +25 -33
- package/build_mayo1.ps1 +3 -2
- package/build_mayo2.ps1 +3 -2
- package/dist/mayo.browser.min.js +44 -362
- package/dist/mayo1.cjs +0 -0
- package/dist/mayo1.js +0 -0
- package/dist/mayo2.cjs +0 -0
- package/dist/mayo2.js +0 -0
- package/dist/mayo_api.js +37 -49
- package/package.json +1 -1
package/bridge/mayo1_bridge.c
CHANGED
|
@@ -5,20 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
extern void randombytes_set_seed(const unsigned char *seed, size_t len);
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
static size_t _max_msg_size = 0;
|
|
9
|
+
static unsigned char *_msg_buf = NULL;
|
|
10
|
+
static unsigned char *_sig_buf = NULL;
|
|
11
|
+
static unsigned char *_sk_buf = NULL;
|
|
12
|
+
static unsigned char *_pk_buf = NULL;
|
|
13
|
+
static size_t _sig_len = 0; // written by sign(), read by JS
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// Must be called once before any sign/verify. Returns 0 on success.
|
|
19
|
-
int mayo_init_buffers(void) {
|
|
20
|
-
if (_msg_buf) return 0; // already initialized
|
|
21
|
-
_msg_buf = (unsigned char *)malloc(MAX_MSG_SIZE);
|
|
15
|
+
int mayo_init_buffers(size_t max_msg_size) {
|
|
16
|
+
if (_msg_buf) return 0;
|
|
17
|
+
_max_msg_size = max_msg_size;
|
|
18
|
+
_msg_buf = (unsigned char *)malloc(max_msg_size);
|
|
22
19
|
_sig_buf = (unsigned char *)malloc(CRYPTO_BYTES);
|
|
23
20
|
_sk_buf = (unsigned char *)malloc(CRYPTO_SECRETKEYBYTES);
|
|
24
21
|
_pk_buf = (unsigned char *)malloc(CRYPTO_PUBLICKEYBYTES);
|
|
@@ -26,33 +23,28 @@ int mayo_init_buffers(void) {
|
|
|
26
23
|
return 0;
|
|
27
24
|
}
|
|
28
25
|
|
|
26
|
+
// Pointer accessors — called once at init by JS, then cached.
|
|
27
|
+
unsigned char *get_msg_buf(void) { return _msg_buf; }
|
|
28
|
+
unsigned char *get_sig_buf(void) { return _sig_buf; }
|
|
29
|
+
unsigned char *get_sk_buf(void) { return _sk_buf; }
|
|
30
|
+
unsigned char *get_pk_buf(void) { return _pk_buf; }
|
|
31
|
+
size_t get_sig_len(void) { return _sig_len; }
|
|
32
|
+
|
|
29
33
|
int keypair_from_seed(const unsigned char *seed,
|
|
30
34
|
unsigned char *cpk, unsigned char *csk) {
|
|
31
35
|
randombytes_set_seed(seed, CRYPTO_SECRETKEYBYTES);
|
|
32
36
|
return crypto_sign_keypair(cpk, csk);
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
int sign(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!_msg_buf) return 1;
|
|
41
|
-
if (msglen > MAX_MSG_SIZE) return 1;
|
|
42
|
-
memcpy(_msg_buf, msg, msglen);
|
|
43
|
-
memcpy(_sk_buf, csk, CRYPTO_SECRETKEYBYTES);
|
|
44
|
-
int ret = crypto_sign_signature(_sig_buf, siglen, _msg_buf, msglen, _sk_buf);
|
|
45
|
-
if (ret == 0) memcpy(sig, _sig_buf, *siglen);
|
|
46
|
-
return ret;
|
|
39
|
+
// JS writes msg into _msg_buf, sk into _sk_buf before calling.
|
|
40
|
+
// Result signature written into _sig_buf, length into _sig_len.
|
|
41
|
+
int sign(size_t msglen) {
|
|
42
|
+
if (!_msg_buf || msglen > _max_msg_size) return 1;
|
|
43
|
+
return crypto_sign_signature(_sig_buf, &_sig_len, _msg_buf, msglen, _sk_buf);
|
|
47
44
|
}
|
|
48
45
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (!_msg_buf) return 1;
|
|
53
|
-
if (msglen > MAX_MSG_SIZE) return 1;
|
|
54
|
-
memcpy(_msg_buf, msg, msglen);
|
|
55
|
-
memcpy(_sig_buf, sig, CRYPTO_BYTES);
|
|
56
|
-
memcpy(_pk_buf, cpk, CRYPTO_PUBLICKEYBYTES);
|
|
46
|
+
// JS writes msg into _msg_buf, sig into _sig_buf, pk into _pk_buf before calling.
|
|
47
|
+
int verify(size_t msglen) {
|
|
48
|
+
if (!_msg_buf || msglen > _max_msg_size) return 1;
|
|
57
49
|
return crypto_sign_verify(_sig_buf, CRYPTO_BYTES, _msg_buf, msglen, _pk_buf);
|
|
58
50
|
}
|
package/bridge/mayo2_bridge.c
CHANGED
|
@@ -5,20 +5,17 @@
|
|
|
5
5
|
|
|
6
6
|
extern void randombytes_set_seed(const unsigned char *seed, size_t len);
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
static size_t _max_msg_size = 0;
|
|
9
|
+
static unsigned char *_msg_buf = NULL;
|
|
10
|
+
static unsigned char *_sig_buf = NULL;
|
|
11
|
+
static unsigned char *_sk_buf = NULL;
|
|
12
|
+
static unsigned char *_pk_buf = NULL;
|
|
13
|
+
static size_t _sig_len = 0; // written by sign(), read by JS
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
// Must be called once before any sign/verify. Returns 0 on success.
|
|
19
|
-
int mayo_init_buffers(void) {
|
|
20
|
-
if (_msg_buf) return 0; // already initialized
|
|
21
|
-
_msg_buf = (unsigned char *)malloc(MAX_MSG_SIZE);
|
|
15
|
+
int mayo_init_buffers(size_t max_msg_size) {
|
|
16
|
+
if (_msg_buf) return 0;
|
|
17
|
+
_max_msg_size = max_msg_size;
|
|
18
|
+
_msg_buf = (unsigned char *)malloc(max_msg_size);
|
|
22
19
|
_sig_buf = (unsigned char *)malloc(CRYPTO_BYTES);
|
|
23
20
|
_sk_buf = (unsigned char *)malloc(CRYPTO_SECRETKEYBYTES);
|
|
24
21
|
_pk_buf = (unsigned char *)malloc(CRYPTO_PUBLICKEYBYTES);
|
|
@@ -26,33 +23,28 @@ int mayo_init_buffers(void) {
|
|
|
26
23
|
return 0;
|
|
27
24
|
}
|
|
28
25
|
|
|
26
|
+
// Pointer accessors — called once at init by JS, then cached.
|
|
27
|
+
unsigned char *get_msg_buf(void) { return _msg_buf; }
|
|
28
|
+
unsigned char *get_sig_buf(void) { return _sig_buf; }
|
|
29
|
+
unsigned char *get_sk_buf(void) { return _sk_buf; }
|
|
30
|
+
unsigned char *get_pk_buf(void) { return _pk_buf; }
|
|
31
|
+
size_t get_sig_len(void) { return _sig_len; }
|
|
32
|
+
|
|
29
33
|
int keypair_from_seed(const unsigned char *seed,
|
|
30
34
|
unsigned char *cpk, unsigned char *csk) {
|
|
31
35
|
randombytes_set_seed(seed, CRYPTO_SECRETKEYBYTES);
|
|
32
36
|
return crypto_sign_keypair(cpk, csk);
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
int sign(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (!_msg_buf) return 1;
|
|
41
|
-
if (msglen > MAX_MSG_SIZE) return 1;
|
|
42
|
-
memcpy(_msg_buf, msg, msglen);
|
|
43
|
-
memcpy(_sk_buf, csk, CRYPTO_SECRETKEYBYTES);
|
|
44
|
-
int ret = crypto_sign_signature(_sig_buf, siglen, _msg_buf, msglen, _sk_buf);
|
|
45
|
-
if (ret == 0) memcpy(sig, _sig_buf, *siglen);
|
|
46
|
-
return ret;
|
|
39
|
+
// JS writes msg into _msg_buf, sk into _sk_buf before calling.
|
|
40
|
+
// Result signature written into _sig_buf, length into _sig_len.
|
|
41
|
+
int sign(size_t msglen) {
|
|
42
|
+
if (!_msg_buf || msglen > _max_msg_size) return 1;
|
|
43
|
+
return crypto_sign_signature(_sig_buf, &_sig_len, _msg_buf, msglen, _sk_buf);
|
|
47
44
|
}
|
|
48
45
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
if (!_msg_buf) return 1;
|
|
53
|
-
if (msglen > MAX_MSG_SIZE) return 1;
|
|
54
|
-
memcpy(_msg_buf, msg, msglen);
|
|
55
|
-
memcpy(_sig_buf, sig, CRYPTO_BYTES);
|
|
56
|
-
memcpy(_pk_buf, cpk, CRYPTO_PUBLICKEYBYTES);
|
|
46
|
+
// JS writes msg into _msg_buf, sig into _sig_buf, pk into _pk_buf before calling.
|
|
47
|
+
int verify(size_t msglen) {
|
|
48
|
+
if (!_msg_buf || msglen > _max_msg_size) return 1;
|
|
57
49
|
return crypto_sign_verify(_sig_buf, CRYPTO_BYTES, _msg_buf, msglen, _pk_buf);
|
|
58
50
|
}
|
package/build_mayo1.ps1
CHANGED
|
@@ -26,8 +26,9 @@ emcc `
|
|
|
26
26
|
-flto `
|
|
27
27
|
-o ./dist/mayo1.cjs `
|
|
28
28
|
-s WASM=1 `
|
|
29
|
-
-s "EXPORTED_FUNCTIONS=['_mayo_init_buffers','_keypair_from_seed','_sign','_verify','_malloc','_free']" `
|
|
30
|
-
-s "EXPORTED_RUNTIME_METHODS=['
|
|
29
|
+
-s "EXPORTED_FUNCTIONS=['_mayo_init_buffers','_keypair_from_seed','_sign','_verify','_malloc','_free','_get_msg_buf','_get_sig_buf','_get_sk_buf','_get_pk_buf','_get_sig_len']" `
|
|
30
|
+
-s "EXPORTED_RUNTIME_METHODS=['HEAPU8']" `
|
|
31
|
+
-s FILESYSTEM=0 `
|
|
31
32
|
-s MODULARIZE=1 `
|
|
32
33
|
-s EXPORT_NAME="Mayo1Module" `
|
|
33
34
|
-s SINGLE_FILE=1 `
|
package/build_mayo2.ps1
CHANGED
|
@@ -25,8 +25,9 @@ emcc `
|
|
|
25
25
|
-flto `
|
|
26
26
|
-o ./dist/mayo2.cjs `
|
|
27
27
|
-s WASM=1 `
|
|
28
|
-
-s "EXPORTED_FUNCTIONS=['_mayo_init_buffers','_keypair_from_seed','_sign','_verify','_malloc','_free']" `
|
|
29
|
-
-s "EXPORTED_RUNTIME_METHODS=['
|
|
28
|
+
-s "EXPORTED_FUNCTIONS=['_mayo_init_buffers','_keypair_from_seed','_sign','_verify','_malloc','_free','_get_msg_buf','_get_sig_buf','_get_sk_buf','_get_pk_buf','_get_sig_len']" `
|
|
29
|
+
-s "EXPORTED_RUNTIME_METHODS=['HEAPU8']" `
|
|
30
|
+
-s FILESYSTEM=0 `
|
|
30
31
|
-s MODULARIZE=1 `
|
|
31
32
|
-s EXPORT_NAME="Mayo2Module" `
|
|
32
33
|
-s SINGLE_FILE=1 `
|