@pinkparrot/qsafe-mayo-wasm 0.0.10 → 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 +37 -13
- package/bridge/mayo2_bridge.c +36 -12
- package/build_mayo1.ps1 +5 -3
- package/build_mayo2.ps1 +4 -3
- package/dist/mayo.browser.min.js +50 -303
- 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 +39 -42
- package/package.json +1 -1
- package/test/test.mjs +28 -11
package/bridge/mayo1_bridge.c
CHANGED
|
@@ -1,26 +1,50 @@
|
|
|
1
|
-
//
|
|
1
|
+
// mayo1_bridge.c - WASM bridge for MAYO-1
|
|
2
2
|
#include "../mayo-c/src/mayo_1/api.h"
|
|
3
|
+
#include <stdlib.h>
|
|
3
4
|
#include <string.h>
|
|
4
5
|
|
|
5
6
|
extern void randombytes_set_seed(const unsigned char *seed, size_t len);
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
14
|
+
|
|
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);
|
|
19
|
+
_sig_buf = (unsigned char *)malloc(CRYPTO_BYTES);
|
|
20
|
+
_sk_buf = (unsigned char *)malloc(CRYPTO_SECRETKEYBYTES);
|
|
21
|
+
_pk_buf = (unsigned char *)malloc(CRYPTO_PUBLICKEYBYTES);
|
|
22
|
+
if (!_msg_buf || !_sig_buf || !_sk_buf || !_pk_buf) return 1;
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
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
|
+
|
|
10
33
|
int keypair_from_seed(const unsigned char *seed,
|
|
11
|
-
|
|
34
|
+
unsigned char *cpk, unsigned char *csk) {
|
|
12
35
|
randombytes_set_seed(seed, CRYPTO_SECRETKEYBYTES);
|
|
13
36
|
return crypto_sign_keypair(cpk, csk);
|
|
14
37
|
}
|
|
15
38
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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);
|
|
20
44
|
}
|
|
21
45
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return crypto_sign_verify(
|
|
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;
|
|
49
|
+
return crypto_sign_verify(_sig_buf, CRYPTO_BYTES, _msg_buf, msglen, _pk_buf);
|
|
26
50
|
}
|
package/bridge/mayo2_bridge.c
CHANGED
|
@@ -1,26 +1,50 @@
|
|
|
1
|
-
//
|
|
1
|
+
// mayo2_bridge.c - WASM bridge for MAYO-2
|
|
2
2
|
#include "../mayo-c/src/mayo_2/api.h"
|
|
3
|
+
#include <stdlib.h>
|
|
3
4
|
#include <string.h>
|
|
4
5
|
|
|
5
6
|
extern void randombytes_set_seed(const unsigned char *seed, size_t len);
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
14
|
+
|
|
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);
|
|
19
|
+
_sig_buf = (unsigned char *)malloc(CRYPTO_BYTES);
|
|
20
|
+
_sk_buf = (unsigned char *)malloc(CRYPTO_SECRETKEYBYTES);
|
|
21
|
+
_pk_buf = (unsigned char *)malloc(CRYPTO_PUBLICKEYBYTES);
|
|
22
|
+
if (!_msg_buf || !_sig_buf || !_sk_buf || !_pk_buf) return 1;
|
|
23
|
+
return 0;
|
|
24
|
+
}
|
|
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
|
+
|
|
10
33
|
int keypair_from_seed(const unsigned char *seed,
|
|
11
34
|
unsigned char *cpk, unsigned char *csk) {
|
|
12
35
|
randombytes_set_seed(seed, CRYPTO_SECRETKEYBYTES);
|
|
13
36
|
return crypto_sign_keypair(cpk, csk);
|
|
14
37
|
}
|
|
15
38
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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);
|
|
20
44
|
}
|
|
21
45
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
return crypto_sign_verify(
|
|
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;
|
|
49
|
+
return crypto_sign_verify(_sig_buf, CRYPTO_BYTES, _msg_buf, msglen, _pk_buf);
|
|
26
50
|
}
|
package/build_mayo1.ps1
CHANGED
|
@@ -21,12 +21,14 @@ emcc `
|
|
|
21
21
|
-I ./mayo-c/src/generic `
|
|
22
22
|
-I ./mayo-c/src/mayo_1 `
|
|
23
23
|
-DENABLE_PARAMS_DYNAMIC `
|
|
24
|
-
-
|
|
24
|
+
-msimd128 `
|
|
25
|
+
-O3 `
|
|
25
26
|
-flto `
|
|
26
27
|
-o ./dist/mayo1.cjs `
|
|
27
28
|
-s WASM=1 `
|
|
28
|
-
-s "EXPORTED_FUNCTIONS=['_keypair_from_seed','_sign','_verify','_malloc','_free']" `
|
|
29
|
-
-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 `
|
|
30
32
|
-s MODULARIZE=1 `
|
|
31
33
|
-s EXPORT_NAME="Mayo1Module" `
|
|
32
34
|
-s SINGLE_FILE=1 `
|
package/build_mayo2.ps1
CHANGED
|
@@ -21,12 +21,13 @@ emcc `
|
|
|
21
21
|
-I ./mayo-c/src/generic `
|
|
22
22
|
-I ./mayo-c/src/mayo_2 `
|
|
23
23
|
-DENABLE_PARAMS_DYNAMIC `
|
|
24
|
-
-
|
|
24
|
+
-O3 `
|
|
25
25
|
-flto `
|
|
26
26
|
-o ./dist/mayo2.cjs `
|
|
27
27
|
-s WASM=1 `
|
|
28
|
-
-s "EXPORTED_FUNCTIONS=['_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 `
|