@maatara/core-pqc 0.1.0 → 0.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkBD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ9C;AAGD,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,CAKzD;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAKzE;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAKzG;AAGD,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,GAAE,MAAW,GACf,OAAO,CAAC,UAAU,CAAC,CAKrB;AAGD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKjE;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,CAAC,CAK9B;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAKhC;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAKnD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAOlD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAOvE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAO9C;AAGD,wBAAsB,WAAW,IAAI,OAAO,CAAC,YAAY,CAAC,CAKzD;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAKzE;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAKzG;AAGD,wBAAsB,UAAU,CAC9B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,GAAE,MAAW,GACf,OAAO,CAAC,UAAU,CAAC,CAKrB;AAGD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC,CAK7B;AAGD,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAKjE;AAED,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,mBAAmB,CAAC,CAK9B;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAKhC;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAKnD;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAOlD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAOvE"}
package/dist/index.js CHANGED
@@ -1,39 +1,67 @@
1
1
  'use strict';
2
2
 
3
- var initWasmPkg = require('@maatara/core-pqc-wasm');
3
+ var wasmPkg = require('@maatara/core-pqc-wasm');
4
+
5
+ function _interopNamespaceDefault(e) {
6
+ var n = Object.create(null);
7
+ if (e) {
8
+ Object.keys(e).forEach(function (k) {
9
+ if (k !== 'default') {
10
+ var d = Object.getOwnPropertyDescriptor(e, k);
11
+ Object.defineProperty(n, k, d.get ? d : {
12
+ enumerable: true,
13
+ get: function () { return e[k]; }
14
+ });
15
+ }
16
+ });
17
+ }
18
+ n.default = e;
19
+ return Object.freeze(n);
20
+ }
21
+
22
+ var wasmPkg__namespace = /*#__PURE__*/_interopNamespaceDefault(wasmPkg);
4
23
 
5
24
  // Ma'atara Core PQC Toolkit
6
25
  // Post-Quantum Cryptography for Browser and Node.js
7
- // Import WASM functions
26
+ // Import WASM functions (namespace import for better bundler compatibility)
27
+ const wasm_kyber_keygen = wasmPkg__namespace.kyber_keygen;
28
+ const wasm_kyber_encaps = wasmPkg__namespace.kyber_encaps;
29
+ const wasm_kyber_decaps = wasmPkg__namespace.kyber_decaps;
30
+ const wasm_hkdf_sha256 = wasmPkg__namespace.hkdf_sha256;
31
+ const wasm_aes_gcm_wrap = wasmPkg__namespace.aes_gcm_wrap;
32
+ const wasm_aes_gcm_unwrap = wasmPkg__namespace.aes_gcm_unwrap;
33
+ const wasm_dilithium_keygen = wasmPkg__namespace.dilithium_keygen;
34
+ const wasm_dilithium_sign = wasmPkg__namespace.dilithium_sign;
35
+ const wasm_dilithium_verify = wasmPkg__namespace.dilithium_verify;
8
36
  // Initialize WASM
9
37
  let wasmReady = false;
10
38
  async function initWasm() {
11
39
  if (!wasmReady) {
12
- // Some bundlers may not expose default; attempt call if function
13
- if (typeof initWasmPkg === 'function') {
14
- await initWasmPkg();
15
- }
40
+ // Call default init if present (web/bundler builds expose a default init function)
41
+ const maybeInit = wasmPkg__namespace.default;
42
+ if (typeof maybeInit === 'function')
43
+ await maybeInit();
16
44
  wasmReady = true;
17
45
  }
18
46
  }
19
47
  // Kyber functions
20
48
  async function kyberKeygen() {
21
49
  await initWasm();
22
- const result = JSON.parse(initWasmPkg.kyber_keygen());
50
+ const result = JSON.parse(wasm_kyber_keygen());
23
51
  if (result.error)
24
52
  throw new Error(result.error);
25
53
  return result;
26
54
  }
27
55
  async function kyberEncaps(publicB64u) {
28
56
  await initWasm();
29
- const result = JSON.parse(initWasmPkg.kyber_encaps(publicB64u));
57
+ const result = JSON.parse(wasm_kyber_encaps(publicB64u));
30
58
  if (result.error)
31
59
  throw new Error(result.error);
32
60
  return result;
33
61
  }
34
62
  async function kyberDecaps(secretB64u, kemCtB64u) {
35
63
  await initWasm();
36
- const result = JSON.parse(initWasmPkg.kyber_decaps(secretB64u, kemCtB64u));
64
+ const result = JSON.parse(wasm_kyber_decaps(secretB64u, kemCtB64u));
37
65
  if (result.error)
38
66
  throw new Error(result.error);
39
67
  return result;
@@ -41,7 +69,7 @@ async function kyberDecaps(secretB64u, kemCtB64u) {
41
69
  // HKDF functions
42
70
  async function hkdfSha256(secretB64u, infoB64u, saltB64u, len = 32) {
43
71
  await initWasm();
44
- const result = JSON.parse(initWasmPkg.hkdf_sha256(secretB64u, infoB64u, saltB64u, len));
72
+ const result = JSON.parse(wasm_hkdf_sha256(secretB64u, infoB64u, saltB64u, len));
45
73
  if (result.error)
46
74
  throw new Error(result.error);
47
75
  return result;
@@ -49,14 +77,14 @@ async function hkdfSha256(secretB64u, infoB64u, saltB64u, len = 32) {
49
77
  // AES-GCM functions
50
78
  async function aesGcmWrap(keyB64u, dekB64u, aadB64u) {
51
79
  await initWasm();
52
- const result = JSON.parse(initWasmPkg.aes_gcm_wrap(keyB64u, dekB64u, aadB64u));
80
+ const result = JSON.parse(wasm_aes_gcm_wrap(keyB64u, dekB64u, aadB64u));
53
81
  if (result.error)
54
82
  throw new Error(result.error);
55
83
  return result;
56
84
  }
57
85
  async function aesGcmUnwrap(keyB64u, ivB64u, ctB64u, aadB64u) {
58
86
  await initWasm();
59
- const result = JSON.parse(initWasmPkg.aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));
87
+ const result = JSON.parse(wasm_aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));
60
88
  if (result.error)
61
89
  throw new Error(result.error);
62
90
  return result;
@@ -64,21 +92,21 @@ async function aesGcmUnwrap(keyB64u, ivB64u, ctB64u, aadB64u) {
64
92
  // Dilithium functions
65
93
  async function dilithiumKeygen() {
66
94
  await initWasm();
67
- const result = JSON.parse(initWasmPkg.dilithium_keygen());
95
+ const result = JSON.parse(wasm_dilithium_keygen());
68
96
  if (result.error)
69
97
  throw new Error(result.error);
70
98
  return result;
71
99
  }
72
100
  async function dilithiumSign(messageB64u, secretB64u) {
73
101
  await initWasm();
74
- const result = JSON.parse(initWasmPkg.dilithium_sign(messageB64u, secretB64u));
102
+ const result = JSON.parse(wasm_dilithium_sign(messageB64u, secretB64u));
75
103
  if (result.error)
76
104
  throw new Error(result.error);
77
105
  return result;
78
106
  }
79
107
  async function dilithiumVerify(messageB64u, signatureB64u, publicB64u) {
80
108
  await initWasm();
81
- const result = JSON.parse(initWasmPkg.dilithium_verify(messageB64u, signatureB64u, publicB64u));
109
+ const result = JSON.parse(wasm_dilithium_verify(messageB64u, signatureB64u, publicB64u));
82
110
  if (result.error)
83
111
  throw new Error(result.error);
84
112
  return result;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["// Ma'atara Core PQC Toolkit\r\n// Post-Quantum Cryptography for Browser and Node.js\r\n\r\nexport interface KyberKeypair {\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface KyberEncap {\r\n kem_ct_b64u: string;\r\n shared_b64u: string;\r\n}\r\n\r\nexport interface AesGcmWrap {\r\n iv_b64u: string;\r\n ct_b64u: string;\r\n}\r\n\r\nexport interface DilithiumKeypair {\r\n algorithm: string;\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface DilithiumSignResult {\r\n signature_b64u: string;\r\n algorithm: string;\r\n}\r\n\r\nexport interface DilithiumVerifyResult {\r\n is_valid: boolean;\r\n algorithm: string;\r\n}\r\n\r\nexport interface HkdfResult {\r\n key_b64u: string;\r\n}\r\n\r\nexport interface AesGcmUnwrapResult {\r\n dek_b64u: string;\r\n}\r\n\r\n// Import WASM functions\r\nimport initWasmPkg, {\r\n kyber_keygen as wasm_kyber_keygen,\r\n kyber_encaps as wasm_kyber_encaps,\r\n kyber_decaps as wasm_kyber_decaps,\r\n hkdf_sha256 as wasm_hkdf_sha256,\r\n aes_gcm_wrap as wasm_aes_gcm_wrap,\r\n aes_gcm_unwrap as wasm_aes_gcm_unwrap,\r\n dilithium_keygen as wasm_dilithium_keygen,\r\n dilithium_sign as wasm_dilithium_sign,\r\n dilithium_verify as wasm_dilithium_verify,\r\n} from '@maatara/core-pqc-wasm';\r\n\r\n// Initialize WASM\r\nlet wasmReady = false;\r\n\r\nexport async function initWasm(): Promise<void> {\r\n if (!wasmReady) {\r\n // Some bundlers may not expose default; attempt call if function\r\n if (typeof (initWasmPkg as any) === 'function') {\r\n await (initWasmPkg as any)();\r\n }\r\n wasmReady = true;\r\n }\r\n}\r\n\r\n// Kyber functions\r\nexport async function kyberKeygen(): Promise<KyberKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberEncaps(publicB64u: string): Promise<KyberEncap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_encaps(publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberDecaps(secretB64u: string, kemCtB64u: string): Promise<{ shared_b64u: string }> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_decaps(secretB64u, kemCtB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// HKDF functions\r\nexport async function hkdfSha256(\r\n secretB64u: string,\r\n infoB64u: string,\r\n saltB64u?: string,\r\n len: number = 32\r\n): Promise<HkdfResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_hkdf_sha256(secretB64u, infoB64u, saltB64u, len));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// AES-GCM functions\r\nexport async function aesGcmWrap(\r\n keyB64u: string,\r\n dekB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmWrap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_wrap(keyB64u, dekB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function aesGcmUnwrap(\r\n keyB64u: string,\r\n ivB64u: string,\r\n ctB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmUnwrapResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Dilithium functions\r\nexport async function dilithiumKeygen(): Promise<DilithiumKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumSign(\r\n messageB64u: string,\r\n secretB64u: string\r\n): Promise<DilithiumSignResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_sign(messageB64u, secretB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumVerify(\r\n messageB64u: string,\r\n signatureB64u: string,\r\n publicB64u: string\r\n): Promise<DilithiumVerifyResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_verify(messageB64u, signatureB64u, publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Utility functions\r\nexport function b64uEncode(data: Uint8Array): string {\r\n return btoa(String.fromCharCode(...data))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\nexport function b64uDecode(str: string): Uint8Array {\r\n const binary = atob(str.replace(/-/g, '+').replace(/_/g, '/'));\r\n const bytes = new Uint8Array(binary.length);\r\n for (let i = 0; i < binary.length; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nexport function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean {\r\n if (a.length !== b.length) return false;\r\n let result = 0;\r\n for (let i = 0; i < a.length; i++) {\r\n result |= a[i] ^ b[i];\r\n }\r\n return result === 0;\r\n}\r\n"],"names":["wasm_kyber_keygen","wasm_kyber_encaps","wasm_kyber_decaps","wasm_hkdf_sha256","wasm_aes_gcm_wrap","wasm_aes_gcm_unwrap","wasm_dilithium_keygen","wasm_dilithium_sign","wasm_dilithium_verify"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["// Ma'atara Core PQC Toolkit\r\n// Post-Quantum Cryptography for Browser and Node.js\r\n\r\nexport interface KyberKeypair {\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface KyberEncap {\r\n kem_ct_b64u: string;\r\n shared_b64u: string;\r\n}\r\n\r\nexport interface AesGcmWrap {\r\n iv_b64u: string;\r\n ct_b64u: string;\r\n}\r\n\r\nexport interface DilithiumKeypair {\r\n algorithm: string;\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface DilithiumSignResult {\r\n signature_b64u: string;\r\n algorithm: string;\r\n}\r\n\r\nexport interface DilithiumVerifyResult {\r\n is_valid: boolean;\r\n algorithm: string;\r\n}\r\n\r\nexport interface HkdfResult {\r\n key_b64u: string;\r\n}\r\n\r\nexport interface AesGcmUnwrapResult {\r\n dek_b64u: string;\r\n}\r\n\r\n// Import WASM functions (namespace import for better bundler compatibility)\r\nimport * as wasmPkg from '@maatara/core-pqc-wasm';\r\nconst wasm_kyber_keygen = (wasmPkg as any).kyber_keygen as () => string;\r\nconst wasm_kyber_encaps = (wasmPkg as any).kyber_encaps as (p: string) => string;\r\nconst wasm_kyber_decaps = (wasmPkg as any).kyber_decaps as (s: string, c: string) => string;\r\nconst wasm_hkdf_sha256 = (wasmPkg as any).hkdf_sha256 as (s: string, i: string, salt?: string, len?: number) => string;\r\nconst wasm_aes_gcm_wrap = (wasmPkg as any).aes_gcm_wrap as (k: string, d: string, a: string) => string;\r\nconst wasm_aes_gcm_unwrap = (wasmPkg as any).aes_gcm_unwrap as (k: string, iv: string, ct: string, a: string) => string;\r\nconst wasm_dilithium_keygen = (wasmPkg as any).dilithium_keygen as () => string;\r\nconst wasm_dilithium_sign = (wasmPkg as any).dilithium_sign as (m: string, s: string) => string;\r\nconst wasm_dilithium_verify = (wasmPkg as any).dilithium_verify as (m: string, sig: string, p: string) => string;\r\n\r\n// Initialize WASM\r\nlet wasmReady = false;\r\n\r\nexport async function initWasm(): Promise<void> {\r\n if (!wasmReady) {\r\n // Call default init if present (web/bundler builds expose a default init function)\r\n const maybeInit = (wasmPkg as any).default;\r\n if (typeof maybeInit === 'function') await maybeInit();\r\n wasmReady = true;\r\n }\r\n}\r\n\r\n// Kyber functions\r\nexport async function kyberKeygen(): Promise<KyberKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberEncaps(publicB64u: string): Promise<KyberEncap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_encaps(publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberDecaps(secretB64u: string, kemCtB64u: string): Promise<{ shared_b64u: string }> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_decaps(secretB64u, kemCtB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// HKDF functions\r\nexport async function hkdfSha256(\r\n secretB64u: string,\r\n infoB64u: string,\r\n saltB64u?: string,\r\n len: number = 32\r\n): Promise<HkdfResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_hkdf_sha256(secretB64u, infoB64u, saltB64u, len));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// AES-GCM functions\r\nexport async function aesGcmWrap(\r\n keyB64u: string,\r\n dekB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmWrap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_wrap(keyB64u, dekB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function aesGcmUnwrap(\r\n keyB64u: string,\r\n ivB64u: string,\r\n ctB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmUnwrapResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Dilithium functions\r\nexport async function dilithiumKeygen(): Promise<DilithiumKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumSign(\r\n messageB64u: string,\r\n secretB64u: string\r\n): Promise<DilithiumSignResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_sign(messageB64u, secretB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumVerify(\r\n messageB64u: string,\r\n signatureB64u: string,\r\n publicB64u: string\r\n): Promise<DilithiumVerifyResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_verify(messageB64u, signatureB64u, publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Utility functions\r\nexport function b64uEncode(data: Uint8Array): string {\r\n return btoa(String.fromCharCode(...data))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\nexport function b64uDecode(str: string): Uint8Array {\r\n const binary = atob(str.replace(/-/g, '+').replace(/_/g, '/'));\r\n const bytes = new Uint8Array(binary.length);\r\n for (let i = 0; i < binary.length; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nexport function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean {\r\n if (a.length !== b.length) return false;\r\n let result = 0;\r\n for (let i = 0; i < a.length; i++) {\r\n result |= a[i] ^ b[i];\r\n }\r\n return result === 0;\r\n}\r\n"],"names":["wasmPkg"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -1,37 +1,46 @@
1
- import initWasmPkg, { kyber_keygen, kyber_encaps, kyber_decaps, hkdf_sha256, aes_gcm_wrap, aes_gcm_unwrap, dilithium_keygen, dilithium_sign, dilithium_verify } from '@maatara/core-pqc-wasm';
1
+ import * as wasmPkg from '@maatara/core-pqc-wasm';
2
2
 
3
3
  // Ma'atara Core PQC Toolkit
4
4
  // Post-Quantum Cryptography for Browser and Node.js
5
- // Import WASM functions
5
+ // Import WASM functions (namespace import for better bundler compatibility)
6
+ const wasm_kyber_keygen = wasmPkg.kyber_keygen;
7
+ const wasm_kyber_encaps = wasmPkg.kyber_encaps;
8
+ const wasm_kyber_decaps = wasmPkg.kyber_decaps;
9
+ const wasm_hkdf_sha256 = wasmPkg.hkdf_sha256;
10
+ const wasm_aes_gcm_wrap = wasmPkg.aes_gcm_wrap;
11
+ const wasm_aes_gcm_unwrap = wasmPkg.aes_gcm_unwrap;
12
+ const wasm_dilithium_keygen = wasmPkg.dilithium_keygen;
13
+ const wasm_dilithium_sign = wasmPkg.dilithium_sign;
14
+ const wasm_dilithium_verify = wasmPkg.dilithium_verify;
6
15
  // Initialize WASM
7
16
  let wasmReady = false;
8
17
  async function initWasm() {
9
18
  if (!wasmReady) {
10
- // Some bundlers may not expose default; attempt call if function
11
- if (typeof initWasmPkg === 'function') {
12
- await initWasmPkg();
13
- }
19
+ // Call default init if present (web/bundler builds expose a default init function)
20
+ const maybeInit = wasmPkg.default;
21
+ if (typeof maybeInit === 'function')
22
+ await maybeInit();
14
23
  wasmReady = true;
15
24
  }
16
25
  }
17
26
  // Kyber functions
18
27
  async function kyberKeygen() {
19
28
  await initWasm();
20
- const result = JSON.parse(kyber_keygen());
29
+ const result = JSON.parse(wasm_kyber_keygen());
21
30
  if (result.error)
22
31
  throw new Error(result.error);
23
32
  return result;
24
33
  }
25
34
  async function kyberEncaps(publicB64u) {
26
35
  await initWasm();
27
- const result = JSON.parse(kyber_encaps(publicB64u));
36
+ const result = JSON.parse(wasm_kyber_encaps(publicB64u));
28
37
  if (result.error)
29
38
  throw new Error(result.error);
30
39
  return result;
31
40
  }
32
41
  async function kyberDecaps(secretB64u, kemCtB64u) {
33
42
  await initWasm();
34
- const result = JSON.parse(kyber_decaps(secretB64u, kemCtB64u));
43
+ const result = JSON.parse(wasm_kyber_decaps(secretB64u, kemCtB64u));
35
44
  if (result.error)
36
45
  throw new Error(result.error);
37
46
  return result;
@@ -39,7 +48,7 @@ async function kyberDecaps(secretB64u, kemCtB64u) {
39
48
  // HKDF functions
40
49
  async function hkdfSha256(secretB64u, infoB64u, saltB64u, len = 32) {
41
50
  await initWasm();
42
- const result = JSON.parse(hkdf_sha256(secretB64u, infoB64u, saltB64u, len));
51
+ const result = JSON.parse(wasm_hkdf_sha256(secretB64u, infoB64u, saltB64u, len));
43
52
  if (result.error)
44
53
  throw new Error(result.error);
45
54
  return result;
@@ -47,14 +56,14 @@ async function hkdfSha256(secretB64u, infoB64u, saltB64u, len = 32) {
47
56
  // AES-GCM functions
48
57
  async function aesGcmWrap(keyB64u, dekB64u, aadB64u) {
49
58
  await initWasm();
50
- const result = JSON.parse(aes_gcm_wrap(keyB64u, dekB64u, aadB64u));
59
+ const result = JSON.parse(wasm_aes_gcm_wrap(keyB64u, dekB64u, aadB64u));
51
60
  if (result.error)
52
61
  throw new Error(result.error);
53
62
  return result;
54
63
  }
55
64
  async function aesGcmUnwrap(keyB64u, ivB64u, ctB64u, aadB64u) {
56
65
  await initWasm();
57
- const result = JSON.parse(aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));
66
+ const result = JSON.parse(wasm_aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));
58
67
  if (result.error)
59
68
  throw new Error(result.error);
60
69
  return result;
@@ -62,21 +71,21 @@ async function aesGcmUnwrap(keyB64u, ivB64u, ctB64u, aadB64u) {
62
71
  // Dilithium functions
63
72
  async function dilithiumKeygen() {
64
73
  await initWasm();
65
- const result = JSON.parse(dilithium_keygen());
74
+ const result = JSON.parse(wasm_dilithium_keygen());
66
75
  if (result.error)
67
76
  throw new Error(result.error);
68
77
  return result;
69
78
  }
70
79
  async function dilithiumSign(messageB64u, secretB64u) {
71
80
  await initWasm();
72
- const result = JSON.parse(dilithium_sign(messageB64u, secretB64u));
81
+ const result = JSON.parse(wasm_dilithium_sign(messageB64u, secretB64u));
73
82
  if (result.error)
74
83
  throw new Error(result.error);
75
84
  return result;
76
85
  }
77
86
  async function dilithiumVerify(messageB64u, signatureB64u, publicB64u) {
78
87
  await initWasm();
79
- const result = JSON.parse(dilithium_verify(messageB64u, signatureB64u, publicB64u));
88
+ const result = JSON.parse(wasm_dilithium_verify(messageB64u, signatureB64u, publicB64u));
80
89
  if (result.error)
81
90
  throw new Error(result.error);
82
91
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["// Ma'atara Core PQC Toolkit\r\n// Post-Quantum Cryptography for Browser and Node.js\r\n\r\nexport interface KyberKeypair {\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface KyberEncap {\r\n kem_ct_b64u: string;\r\n shared_b64u: string;\r\n}\r\n\r\nexport interface AesGcmWrap {\r\n iv_b64u: string;\r\n ct_b64u: string;\r\n}\r\n\r\nexport interface DilithiumKeypair {\r\n algorithm: string;\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface DilithiumSignResult {\r\n signature_b64u: string;\r\n algorithm: string;\r\n}\r\n\r\nexport interface DilithiumVerifyResult {\r\n is_valid: boolean;\r\n algorithm: string;\r\n}\r\n\r\nexport interface HkdfResult {\r\n key_b64u: string;\r\n}\r\n\r\nexport interface AesGcmUnwrapResult {\r\n dek_b64u: string;\r\n}\r\n\r\n// Import WASM functions\r\nimport initWasmPkg, {\r\n kyber_keygen as wasm_kyber_keygen,\r\n kyber_encaps as wasm_kyber_encaps,\r\n kyber_decaps as wasm_kyber_decaps,\r\n hkdf_sha256 as wasm_hkdf_sha256,\r\n aes_gcm_wrap as wasm_aes_gcm_wrap,\r\n aes_gcm_unwrap as wasm_aes_gcm_unwrap,\r\n dilithium_keygen as wasm_dilithium_keygen,\r\n dilithium_sign as wasm_dilithium_sign,\r\n dilithium_verify as wasm_dilithium_verify,\r\n} from '@maatara/core-pqc-wasm';\r\n\r\n// Initialize WASM\r\nlet wasmReady = false;\r\n\r\nexport async function initWasm(): Promise<void> {\r\n if (!wasmReady) {\r\n // Some bundlers may not expose default; attempt call if function\r\n if (typeof (initWasmPkg as any) === 'function') {\r\n await (initWasmPkg as any)();\r\n }\r\n wasmReady = true;\r\n }\r\n}\r\n\r\n// Kyber functions\r\nexport async function kyberKeygen(): Promise<KyberKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberEncaps(publicB64u: string): Promise<KyberEncap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_encaps(publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberDecaps(secretB64u: string, kemCtB64u: string): Promise<{ shared_b64u: string }> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_decaps(secretB64u, kemCtB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// HKDF functions\r\nexport async function hkdfSha256(\r\n secretB64u: string,\r\n infoB64u: string,\r\n saltB64u?: string,\r\n len: number = 32\r\n): Promise<HkdfResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_hkdf_sha256(secretB64u, infoB64u, saltB64u, len));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// AES-GCM functions\r\nexport async function aesGcmWrap(\r\n keyB64u: string,\r\n dekB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmWrap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_wrap(keyB64u, dekB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function aesGcmUnwrap(\r\n keyB64u: string,\r\n ivB64u: string,\r\n ctB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmUnwrapResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Dilithium functions\r\nexport async function dilithiumKeygen(): Promise<DilithiumKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumSign(\r\n messageB64u: string,\r\n secretB64u: string\r\n): Promise<DilithiumSignResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_sign(messageB64u, secretB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumVerify(\r\n messageB64u: string,\r\n signatureB64u: string,\r\n publicB64u: string\r\n): Promise<DilithiumVerifyResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_verify(messageB64u, signatureB64u, publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Utility functions\r\nexport function b64uEncode(data: Uint8Array): string {\r\n return btoa(String.fromCharCode(...data))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\nexport function b64uDecode(str: string): Uint8Array {\r\n const binary = atob(str.replace(/-/g, '+').replace(/_/g, '/'));\r\n const bytes = new Uint8Array(binary.length);\r\n for (let i = 0; i < binary.length; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nexport function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean {\r\n if (a.length !== b.length) return false;\r\n let result = 0;\r\n for (let i = 0; i < a.length; i++) {\r\n result |= a[i] ^ b[i];\r\n }\r\n return result === 0;\r\n}\r\n"],"names":["wasm_kyber_keygen","wasm_kyber_encaps","wasm_kyber_decaps","wasm_hkdf_sha256","wasm_aes_gcm_wrap","wasm_aes_gcm_unwrap","wasm_dilithium_keygen","wasm_dilithium_sign","wasm_dilithium_verify"],"mappings":";;AAAA;AACA;AAyCA;AAaA;AACA,IAAI,SAAS,GAAG,KAAK,CAAC;AAEf,eAAe,QAAQ,GAAA;IAC5B,IAAI,CAAC,SAAS,EAAE;;AAEd,QAAA,IAAI,OAAQ,WAAmB,KAAK,UAAU,EAAE;YAC9C,MAAO,WAAmB,EAAE,CAAC;SAC9B;QACD,SAAS,GAAG,IAAI,CAAC;KAClB;AACH,CAAC;AAED;AACO,eAAe,WAAW,GAAA;IAC/B,MAAM,QAAQ,EAAE,CAAC;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACA,YAAiB,EAAE,CAAC,CAAC;IAC/C,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,eAAe,WAAW,CAAC,UAAkB,EAAA;IAClD,MAAM,QAAQ,EAAE,CAAC;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,YAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,eAAe,WAAW,CAAC,UAAkB,EAAE,SAAiB,EAAA;IACrE,MAAM,QAAQ,EAAE,CAAC;AACjB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,YAAiB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;IACpE,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;AACO,eAAe,UAAU,CAC9B,UAAkB,EAClB,QAAgB,EAChB,QAAiB,EACjB,GAAA,GAAc,EAAE,EAAA;IAEhB,MAAM,QAAQ,EAAE,CAAC;AACjB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,WAAgB,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;AACO,eAAe,UAAU,CAC9B,OAAe,EACf,OAAe,EACf,OAAe,EAAA;IAEf,MAAM,QAAQ,EAAE,CAAC;AACjB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,YAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,eAAe,YAAY,CAChC,OAAe,EACf,MAAc,EACd,MAAc,EACd,OAAe,EAAA;IAEf,MAAM,QAAQ,EAAE,CAAC;AACjB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,cAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACjF,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;AACO,eAAe,eAAe,GAAA;IACnC,MAAM,QAAQ,EAAE,CAAC;IACjB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,gBAAqB,EAAE,CAAC,CAAC;IACnD,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,eAAe,aAAa,CACjC,WAAmB,EACnB,UAAkB,EAAA;IAElB,MAAM,QAAQ,EAAE,CAAC;AACjB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,cAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,eAAe,eAAe,CACnC,WAAmB,EACnB,aAAqB,EACrB,UAAkB,EAAA;IAElB,MAAM,QAAQ,EAAE,CAAC;AACjB,IAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAACC,gBAAqB,CAAC,WAAW,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IACzF,IAAI,MAAM,CAAC,KAAK;AAAE,QAAA,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;AACM,SAAU,UAAU,CAAC,IAAgB,EAAA;IACzC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;AACtC,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;AACnB,SAAA,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AACvB,CAAC;AAEK,SAAU,UAAU,CAAC,GAAW,EAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACjC;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAEe,SAAA,iBAAiB,CAAC,CAAa,EAAE,CAAa,EAAA;AAC5D,IAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;AAAE,QAAA,OAAO,KAAK,CAAC;IACxC,IAAI,MAAM,GAAG,CAAC,CAAC;AACf,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;IACD,OAAO,MAAM,KAAK,CAAC,CAAC;AACtB;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["// Ma'atara Core PQC Toolkit\r\n// Post-Quantum Cryptography for Browser and Node.js\r\n\r\nexport interface KyberKeypair {\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface KyberEncap {\r\n kem_ct_b64u: string;\r\n shared_b64u: string;\r\n}\r\n\r\nexport interface AesGcmWrap {\r\n iv_b64u: string;\r\n ct_b64u: string;\r\n}\r\n\r\nexport interface DilithiumKeypair {\r\n algorithm: string;\r\n public_b64u: string;\r\n secret_b64u: string;\r\n}\r\n\r\nexport interface DilithiumSignResult {\r\n signature_b64u: string;\r\n algorithm: string;\r\n}\r\n\r\nexport interface DilithiumVerifyResult {\r\n is_valid: boolean;\r\n algorithm: string;\r\n}\r\n\r\nexport interface HkdfResult {\r\n key_b64u: string;\r\n}\r\n\r\nexport interface AesGcmUnwrapResult {\r\n dek_b64u: string;\r\n}\r\n\r\n// Import WASM functions (namespace import for better bundler compatibility)\r\nimport * as wasmPkg from '@maatara/core-pqc-wasm';\r\nconst wasm_kyber_keygen = (wasmPkg as any).kyber_keygen as () => string;\r\nconst wasm_kyber_encaps = (wasmPkg as any).kyber_encaps as (p: string) => string;\r\nconst wasm_kyber_decaps = (wasmPkg as any).kyber_decaps as (s: string, c: string) => string;\r\nconst wasm_hkdf_sha256 = (wasmPkg as any).hkdf_sha256 as (s: string, i: string, salt?: string, len?: number) => string;\r\nconst wasm_aes_gcm_wrap = (wasmPkg as any).aes_gcm_wrap as (k: string, d: string, a: string) => string;\r\nconst wasm_aes_gcm_unwrap = (wasmPkg as any).aes_gcm_unwrap as (k: string, iv: string, ct: string, a: string) => string;\r\nconst wasm_dilithium_keygen = (wasmPkg as any).dilithium_keygen as () => string;\r\nconst wasm_dilithium_sign = (wasmPkg as any).dilithium_sign as (m: string, s: string) => string;\r\nconst wasm_dilithium_verify = (wasmPkg as any).dilithium_verify as (m: string, sig: string, p: string) => string;\r\n\r\n// Initialize WASM\r\nlet wasmReady = false;\r\n\r\nexport async function initWasm(): Promise<void> {\r\n if (!wasmReady) {\r\n // Call default init if present (web/bundler builds expose a default init function)\r\n const maybeInit = (wasmPkg as any).default;\r\n if (typeof maybeInit === 'function') await maybeInit();\r\n wasmReady = true;\r\n }\r\n}\r\n\r\n// Kyber functions\r\nexport async function kyberKeygen(): Promise<KyberKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberEncaps(publicB64u: string): Promise<KyberEncap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_encaps(publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function kyberDecaps(secretB64u: string, kemCtB64u: string): Promise<{ shared_b64u: string }> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_kyber_decaps(secretB64u, kemCtB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// HKDF functions\r\nexport async function hkdfSha256(\r\n secretB64u: string,\r\n infoB64u: string,\r\n saltB64u?: string,\r\n len: number = 32\r\n): Promise<HkdfResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_hkdf_sha256(secretB64u, infoB64u, saltB64u, len));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// AES-GCM functions\r\nexport async function aesGcmWrap(\r\n keyB64u: string,\r\n dekB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmWrap> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_wrap(keyB64u, dekB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function aesGcmUnwrap(\r\n keyB64u: string,\r\n ivB64u: string,\r\n ctB64u: string,\r\n aadB64u: string\r\n): Promise<AesGcmUnwrapResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Dilithium functions\r\nexport async function dilithiumKeygen(): Promise<DilithiumKeypair> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_keygen());\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumSign(\r\n messageB64u: string,\r\n secretB64u: string\r\n): Promise<DilithiumSignResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_sign(messageB64u, secretB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\nexport async function dilithiumVerify(\r\n messageB64u: string,\r\n signatureB64u: string,\r\n publicB64u: string\r\n): Promise<DilithiumVerifyResult> {\r\n await initWasm();\r\n const result = JSON.parse(wasm_dilithium_verify(messageB64u, signatureB64u, publicB64u));\r\n if (result.error) throw new Error(result.error);\r\n return result;\r\n}\r\n\r\n// Utility functions\r\nexport function b64uEncode(data: Uint8Array): string {\r\n return btoa(String.fromCharCode(...data))\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n}\r\n\r\nexport function b64uDecode(str: string): Uint8Array {\r\n const binary = atob(str.replace(/-/g, '+').replace(/_/g, '/'));\r\n const bytes = new Uint8Array(binary.length);\r\n for (let i = 0; i < binary.length; i++) {\r\n bytes[i] = binary.charCodeAt(i);\r\n }\r\n return bytes;\r\n}\r\n\r\nexport function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean {\r\n if (a.length !== b.length) return false;\r\n let result = 0;\r\n for (let i = 0; i < a.length; i++) {\r\n result |= a[i] ^ b[i];\r\n }\r\n return result === 0;\r\n}\r\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maatara/core-pqc",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Ma'atara Post-Quantum Cryptography Toolkit for Browser and Node.js",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,8 +20,8 @@
20
20
  "scripts": {
21
21
  "build": "rollup -c",
22
22
  "dev": "rollup -c -w",
23
- "test": "jest",
24
- "prepublishOnly": "npm run build"
23
+ "test": "jest --passWithNoTests",
24
+ "prepublishOnly": "npm run build"
25
25
  },
26
26
  "keywords": [
27
27
  "post-quantum",
@@ -44,6 +44,6 @@
44
44
  "typescript": "^5.0.0"
45
45
  },
46
46
  "dependencies": {
47
- "@maatara/core-pqc-wasm": "^0.1.0"
47
+ "@maatara/core-pqc-wasm": "^0.1.2"
48
48
  }
49
49
  }