code wiki / (root) / nx_ml_kem_768_wasm.nx

nx_ml_kem_768_wasm.nx

buildroot/runtime/nx_ml_kem_768_wasm.nx

52831 B1258 linesdepth 0pulls 0 transitivereach 3 importersview sourcekind librarytopic ml
docsdependenciesstructsconstsfunctions

about

nx_ml_kem_768_wasm.nx -- Provides cryptographic operations for secure key exchange and messaging in the Nishi sovereign ecosystem.

dependencies 0 imports · 3 importers

nx_ml_kem_768_wasm.nx nx_mlkem_kat_gate.nx nx_mlkem_verify.nx nx_x25519mlkem768.nx

imports: none

imported by: nx_mlkem_kat_gate.nxnx_mlkem_verify.nxnx_x25519mlkem768.nx

structs

none

consts

2const KYBER_MAGIC_32768: i64 = 32768
3const KYBER_MAGIC_65536: i64 = 65536
4const KYBER_MAGIC_20159: i64 = 20159
5const KYBER_MAGIC_33554432: i64 = 33554432
6const KYBER_MAGIC_1044: i64 = 1044
7const KYBER_MAGIC_1517: i64 = 1517
8const KYBER_MAGIC_1493: i64 = 1493
9const KYBER_MAGIC_1422: i64 = 1422
10const KYBER_MAGIC_1577: i64 = 1577
11const KYBER_MAGIC_1202: i64 = 1202
12const KYBER_MAGIC_1474: i64 = 1474
13const KYBER_MAGIC_1468: i64 = 1468
14const KYBER_MAGIC_1325: i64 = 1325
15const KYBER_MAGIC_1458: i64 = 1458
16const KYBER_MAGIC_1602: i64 = 1602
17const KYBER_MAGIC_1542: i64 = 1542
18const KYBER_MAGIC_1571: i64 = 1571
19const KYBER_MAGIC_1223: i64 = 1223
20const KYBER_MAGIC_1293: i64 = 1293
21const KYBER_MAGIC_1491: i64 = 1491
22const KYBER_MAGIC_1544: i64 = 1544
23const KYBER_MAGIC_1618: i64 = 1618
24const KYBER_MAGIC_1162: i64 = 1162
25const KYBER_MAGIC_1469: i64 = 1469
26const KYBER_MAGIC_1421: i64 = 1421
27const KYBER_MAGIC_1508: i64 = 1508
28const KYBER_MAGIC_1065: i64 = 1065
29const KYBER_MAGIC_1275: i64 = 1275
30const KYBER_MAGIC_1103: i64 = 1103
31const KYBER_MAGIC_1251: i64 = 1251
32const KYBER_MAGIC_1550: i64 = 1550
33const KYBER_MAGIC_1574: i64 = 1574
34const KYBER_MAGIC_1653: i64 = 1653
35const KYBER_MAGIC_1159: i64 = 1159
36const KYBER_MAGIC_1483: i64 = 1483
37const KYBER_MAGIC_1119: i64 = 1119
38const KYBER_MAGIC_1590: i64 = 1590
39const KYBER_MAGIC_1097: i64 = 1097
40const KYBER_MAGIC_1322: i64 = 1322
41const KYBER_MAGIC_1285: i64 = 1285
42const KYBER_MAGIC_1465: i64 = 1465
43const KYBER_MAGIC_1215: i64 = 1215
44const KYBER_MAGIC_1218: i64 = 1218
45const KYBER_MAGIC_1335: i64 = 1335
46const KYBER_MAGIC_1187: i64 = 1187
47const KYBER_MAGIC_1659: i64 = 1659
48const KYBER_MAGIC_1185: i64 = 1185
49const KYBER_MAGIC_1530: i64 = 1530
50const KYBER_MAGIC_1278: i64 = 1278
51const KYBER_MAGIC_1510: i64 = 1510
52const KYBER_MAGIC_1460: i64 = 1460
53const KYBER_MAGIC_1522: i64 = 1522
54const KYBER_MAGIC_1628: i64 = 1628
55const KYBER_MAGIC_1441: i64 = 1441
56const KYBER_MAGIC_1535: i64 = 1535
57const KYBER_MAGIC_1536: i64 = 1536
58const KYBER_MAGIC_1567: i64 = 1567
59const KYBER_MAGIC_1568: i64 = 1568
60const KYBER_MAGIC_1599: i64 = 1599
61const KYBER_MAGIC_1600: i64 = 1600
62const KYBER_MAGIC_1663: i64 = 1663
63const KYBER_MAGIC_1664: i64 = 1664
64const KYBER_MAGIC_2175: i64 = 2175
65const KYBER_MAGIC_2176: i64 = 2176
66const KYBER_MAGIC_3711: i64 = 3711
67const KYBER_MAGIC_3712: i64 = 3712
68const KYBER_MAGIC_5247: i64 = 5247
69const KYBER_MAGIC_5248: i64 = 5248
70const KYBER_MAGIC_6783: i64 = 6783
71const KYBER_MAGIC_6784: i64 = 6784
72const KYBER_MAGIC_7295: i64 = 7295
73const KYBER_MAGIC_7296: i64 = 7296
74const KYBER_MAGIC_8831: i64 = 8831
75const KYBER_MAGIC_8832: i64 = 8832
76const KYBER_MAGIC_10367: i64 = 10367
77const KYBER_MAGIC_10368: i64 = 10368
78const KYBER_MAGIC_10879: i64 = 10879
79const KYBER_MAGIC_10880: i64 = 10880
80const KYBER_MAGIC_11391: i64 = 11391
81const KYBER_MAGIC_11392: i64 = 11392
82const KYBER_MAGIC_11903: i64 = 11903
83const KYBER_MAGIC_11904: i64 = 11904
84const KYBER_MAGIC_13439: i64 = 13439
85const KYBER_MAGIC_13440: i64 = 13440
86const KYBER_MAGIC_14975: i64 = 14975
87const KYBER_MAGIC_14976: i64 = 14976
88const KYBER_MAGIC_16511: i64 = 16511
89const KYBER_MAGIC_16512: i64 = 16512
90const KYBER_MAGIC_18047: i64 = 18047
91const KYBER_MAGIC_18048: i64 = 18048
92const KYBER_MAGIC_18559: i64 = 18559
93const KYBER_MAGIC_18560: i64 = 18560
94const KYBER_MAGIC_19071: i64 = 19071
95const KYBER_MAGIC_19072: i64 = 19072
96const KYBER_MAGIC_1152: i64 = 1152
97const KYBER_MAGIC_1184: i64 = 1184
98const KYBER_MAGIC_20224: i64 = 20224
99const KYBER_MAGIC_20096: i64 = 20096
100const KYBER_MAGIC_20160: i64 = 20160
101const KYBER_MAGIC_19103: i64 = 19103
102const KYBER_MAGIC_19104: i64 = 19104
103const KYBER_MAGIC_20191: i64 = 20191
104const KYBER_MAGIC_20192: i64 = 20192
105const KYBER_MAGIC_20255: i64 = 20255
106const KYBER_MAGIC_20256: i64 = 20256
107const KYBER_MAGIC_20319: i64 = 20319
108const KYBER_MAGIC_20320: i64 = 20320
109const KYBER_MAGIC_20351: i64 = 20351
110const KYBER_MAGIC_22000: i64 = 22000
111const KYBER_MAGIC_23119: i64 = 23119
112const KYBER_MAGIC_28000: i64 = 28000
113const KYBER_MAGIC_30000: i64 = 30000
114const KYBER_MAGIC_2400: i64 = 2400
115const KYBER_MAGIC_32400: i64 = 32400
116const KYBER_MAGIC_33000: i64 = 33000
117const KYBER_MAGIC_1088: i64 = 1088
118const KYBER_MAGIC_34088: i64 = 34088
119const KYBER_MAGIC_34200: i64 = 34200
120const KYBER_MAGIC_34300: i64 = 34300
173const KYBER_Q: i64 = 3329
174const KYBER_QINV: i64 = 62209
175const KYBER_N: i64 = 256
176const KYBER_K: i64 = 3
177const KYBER_ETA: i64 = 2
178const KYBER_F: i64 = 1353 // R^2 mod q (for tomont)
179const KYBER_HALF: i64 = 1665 // (q+1)/2 (for msg codec)
181const MLKEM_PK_BYTES: i64 = 1184
182const MLKEM_SK_BYTES: i64 = 2400
183const MLKEM_CT_BYTES: i64 = 1088
184const MLKEM_SS_BYTES: i64 = 32
187const POLY_BUF: i64 = 512
188const POLY_BYTES_12: i64 = 384 // 12-bit canonical encode
189const POLY_COMPR_U: i64 = 320 // d_u = 10
190const POLY_COMPR_V: i64 = 128 // d_v = 4

functions

196func _u16_load_le(p: *u8, i: i64) -> i64 {
204func _u16_store_le(p: *u8, i: i64, v: i64) -> i64 {
212func _canon_q(v: i64) -> i64 {
219func _rotl64(x: i64, n: i64) -> i64 {
called by 1: _keccak_f1600
231func _lane_load(p: *u8) -> i64 {
called by 1: _keccak_f1600
244func _lane_store(p: *u8, v: i64) -> i64 {
called by 1: _keccak_f1600
256func _keccak_rc(i: i64) -> i64 {
called by 1: _keccak_f1600
272func _rho_off(lane_idx: i64) -> i64 {
called by 1: _keccak_f1600
289func _keccak_f1600(state_ptr: *u8) -> i64 {
373func _sponge_one_shot(msg: *u8, msg_len: i64,
416func _sha3_256(msg: *u8, msg_len: i64, state: *u8, out: *u8) -> i64 {
419func _sha3_512(msg: *u8, msg_len: i64, state: *u8, out: *u8) -> i64 {
422func _shake128(msg: *u8, msg_len: i64, state: *u8, out: *u8, out_len: i64) -> i64 {
called by 1: _gen_matrix_entry calls 1: _sponge_one_shot
425func _shake256(msg: *u8, msg_len: i64, state: *u8, out: *u8, out_len: i64) -> i64 {
433func _mont(a: i64) -> i64 {
called by 2: _fqmul_poly_tomont
439func _barrett(a: i64) -> i64 {
called by 1: _invntt
445func _fqmul(a: i64, b: i64) -> i64 { return _mont(a * b) }
called by 3: _ntt_invntt_basemul_pair_acc calls 1: _mont
451func _zeta(i: i64) -> i64 {
487func _ntt(poly: *u8) -> i64 {
511func _invntt(poly: *u8) -> i64 {
546func _basemul_pair_acc(acc: *u8, off: i64, a: *u8, b: *u8, zeta: i64) -> i64 {
558func _poly_basemul_acc(acc: *u8, a: *u8, b: *u8) -> i64 {
569func _poly_zero(p: *u8) -> i64 {
575func _poly_tomont(poly: *u8) -> i64 {
585func _poly_add(out: *u8, a: *u8, b: *u8) -> i64 {
594func _poly_sub(out: *u8, a: *u8, b: *u8) -> i64 {
607func _compress10_one(v: i64) -> i64 {
called by 1: _poly_compress10 calls 1: _canon_q
611func _decompress10_one(x: i64) -> i64 { return (KYBER_Q * x + 512) >> 10 }
called by 1: _poly_decompress10
613func _poly_compress10(bytes_out: *u8, poly: *u8) -> i64 {
631func _poly_decompress10(poly: *u8, bytes_in: *u8) -> i64 {
653func _compress4_one(v: i64) -> i64 {
called by 1: _poly_compress4 calls 1: _canon_q
657func _decompress4_one(x: i64) -> i64 { return (KYBER_Q * x + 8) >> 4 }
called by 1: _poly_decompress4
659func _poly_compress4(bytes_out: *u8, poly: *u8) -> i64 {
670func _poly_decompress4(poly: *u8, bytes_in: *u8) -> i64 {
681func _poly_tobytes12(bytes_out: *u8, poly: *u8) -> i64 {
called by 1: _kpke_keygen calls 2: _canon_q_u16_load_le
695func _poly_frombytes12(poly: *u8, bytes_in: *u8) -> i64 {
715func _poly_cbd_eta2(out: *u8, buf: *u8) -> i64 {
called by 1: _gen_noise_eta2 calls 1: _u16_store_le
733func _sample_ntt(poly: *u8, buf: *u8, buf_len: i64) -> i64 {
called by 1: _gen_matrix_entry calls 1: _u16_store_le
758func _msg_to_poly(poly: *u8, msg: *u8) -> i64 {
called by 1: _kpke_encrypt calls 1: _u16_store_le
773func _msg_from_poly(msg: *u8, poly: *u8) -> i64 {
called by 1: _kpke_decrypt calls 2: _canon_q_u16_load_le
798func _gen_matrix_entry(poly: *u8, rho: *u8, x: i64, y: i64,
819func _gen_noise_eta2(poly: *u8, sigma: *u8, nonce: i64,
831func _cmov(out: *u8, src1: *u8, len: i64, mask: i64) -> i64 {
887func _kpke_keygen(d_seed_32: *u8, scratch: *u8, ek_out: *u8, dk_pke_out: *u8) -> i64 {
967func _kpke_encrypt(ek: *u8, msg_32: *u8, coins_32: *u8,
1056func _kpke_decrypt(dk_pke: *u8, ct: *u8, scratch: *u8, msg_out: *u8) -> i64 {
1107func nx_mlkem_keygen(seed_64: *u8, scratch: *u8, ek_out: *u8, dk_out: *u8) -> i64 {
1134func nx_mlkem_encaps(ek: *u8, msg_32: *u8, scratch: *u8,
1156func nx_mlkem_decaps(dk: *u8, ct: *u8, scratch: *u8, ss_out: *u8) -> i64 {
1233func nx_mlkem_round_trip_test(seed_64: *u8, msg_32: *u8, scratch: *u8) -> i64 {