@maatara/core-pqc 0.1.0

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/README.md ADDED
@@ -0,0 +1,96 @@
1
+ # Ma'atara Core PQC Toolkit
2
+
3
+ A portable, audited Post-Quantum Cryptography toolkit for browser and Node.js environments.
4
+
5
+ ## Features
6
+
7
+ - **Kyber ML-KEM-768**: Key encapsulation mechanism for secure key exchange
8
+ - **Dilithium2**: Digital signatures with post-quantum security
9
+ - **HKDF-SHA256**: Key derivation function
10
+ - **AES-256-GCM**: Authenticated encryption
11
+ - **Base64url encoding**: URL-safe encoding utilities
12
+ - **Constant-time operations**: Security-focused implementations
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install @maatara/core-pqc
18
+ ```
19
+
20
+ ## Usage
21
+
22
+ ### Browser
23
+
24
+ ```javascript
25
+ import { initWasm, kyberKeygen, kyberEncaps, dilithiumKeygen, dilithiumSign, dilithiumVerify } from '@maatara/core-pqc';
26
+
27
+ // Initialize WASM (required once per process)
28
+ await initWasm();
29
+
30
+ // Kyber key exchange
31
+ const aliceKeys = await kyberKeygen();
32
+ const bobKeys = await kyberKeygen();
33
+
34
+ const encap = await kyberEncaps(aliceKeys.public_b64u);
35
+ const sharedSecret = await kyberDecaps(aliceKeys.secret_b64u, encap.kem_ct_b64u);
36
+
37
+ // Dilithium signatures
38
+ const signKeys = await dilithiumKeygen();
39
+ const message = b64uEncode(new TextEncoder().encode("Hello PQC!"));
40
+ const signature = await dilithiumSign(message, signKeys.secret_b64u);
41
+ const verified = await dilithiumVerify(message, signature.signature_b64u, signKeys.public_b64u);
42
+ ```
43
+
44
+ ### Node.js
45
+
46
+ ```javascript
47
+ const { kyberKeygen, dilithiumKeygen } = require('@maatara/core-pqc');
48
+
49
+ // Same API as browser
50
+ ```
51
+
52
+ ## API Reference
53
+
54
+ ### Kyber ML-KEM-768
55
+
56
+ - `kyberKeygen()`: Generate keypair
57
+ - `kyberEncaps(publicKey)`: Encapsulate shared secret
58
+ - `kyberDecaps(secretKey, ciphertext)`: Decapsulate shared secret
59
+
60
+ ### Dilithium2 (ML-DSA-65 compatible)
61
+
62
+ - `dilithiumKeygen()`: Generate keypair
63
+ - `dilithiumSign(message, secretKey)`: Sign message
64
+ - `dilithiumVerify(message, signature, publicKey)`: Verify signature
65
+
66
+ ### HKDF
67
+
68
+ - `hkdfSha256(secret, info, salt?, length)`: Derive key
69
+
70
+ ### AES-GCM
71
+
72
+ - `aesGcmWrap(key, plaintext, aad)`: Encrypt data
73
+ - `aesGcmUnwrap(key, iv, ciphertext, aad)`: Decrypt data
74
+
75
+ ## Security Notes
76
+
77
+ - **Zero-knowledge**: Server never receives user secrets or DEKs
78
+ - **Post-quantum security**: Resistant to quantum computing attacks
79
+ - **Constant-time operations**: Prevents timing attacks
80
+ - **Audited implementations**: Uses vetted cryptographic libraries
81
+
82
+ ## Building from Source
83
+
84
+ ```bash
85
+ # Build WASM package
86
+ cd packages/core-pqc-wasm
87
+ wasm-pack build --target web --out-dir pkg
88
+
89
+ # Build npm package
90
+ cd ../core-pqc
91
+ npm run build
92
+ ```
93
+
94
+ ## License
95
+
96
+ Apache-2.0
@@ -0,0 +1,47 @@
1
+ export interface KyberKeypair {
2
+ public_b64u: string;
3
+ secret_b64u: string;
4
+ }
5
+ export interface KyberEncap {
6
+ kem_ct_b64u: string;
7
+ shared_b64u: string;
8
+ }
9
+ export interface AesGcmWrap {
10
+ iv_b64u: string;
11
+ ct_b64u: string;
12
+ }
13
+ export interface DilithiumKeypair {
14
+ algorithm: string;
15
+ public_b64u: string;
16
+ secret_b64u: string;
17
+ }
18
+ export interface DilithiumSignResult {
19
+ signature_b64u: string;
20
+ algorithm: string;
21
+ }
22
+ export interface DilithiumVerifyResult {
23
+ is_valid: boolean;
24
+ algorithm: string;
25
+ }
26
+ export interface HkdfResult {
27
+ key_b64u: string;
28
+ }
29
+ export interface AesGcmUnwrapResult {
30
+ dek_b64u: string;
31
+ }
32
+ export declare function initWasm(): Promise<void>;
33
+ export declare function kyberKeygen(): Promise<KyberKeypair>;
34
+ export declare function kyberEncaps(publicB64u: string): Promise<KyberEncap>;
35
+ export declare function kyberDecaps(secretB64u: string, kemCtB64u: string): Promise<{
36
+ shared_b64u: string;
37
+ }>;
38
+ export declare function hkdfSha256(secretB64u: string, infoB64u: string, saltB64u?: string, len?: number): Promise<HkdfResult>;
39
+ export declare function aesGcmWrap(keyB64u: string, dekB64u: string, aadB64u: string): Promise<AesGcmWrap>;
40
+ export declare function aesGcmUnwrap(keyB64u: string, ivB64u: string, ctB64u: string, aadB64u: string): Promise<AesGcmUnwrapResult>;
41
+ export declare function dilithiumKeygen(): Promise<DilithiumKeypair>;
42
+ export declare function dilithiumSign(messageB64u: string, secretB64u: string): Promise<DilithiumSignResult>;
43
+ export declare function dilithiumVerify(messageB64u: string, signatureB64u: string, publicB64u: string): Promise<DilithiumVerifyResult>;
44
+ export declare function b64uEncode(data: Uint8Array): string;
45
+ export declare function b64uDecode(str: string): Uint8Array;
46
+ export declare function constantTimeEqual(a: Uint8Array, b: Uint8Array): boolean;
47
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +1,124 @@
1
+ 'use strict';
2
+
3
+ var initWasmPkg = require('@maatara/core-pqc-wasm');
4
+
5
+ // Ma'atara Core PQC Toolkit
6
+ // Post-Quantum Cryptography for Browser and Node.js
7
+ // Import WASM functions
8
+ // Initialize WASM
9
+ let wasmReady = false;
10
+ async function initWasm() {
11
+ if (!wasmReady) {
12
+ // Some bundlers may not expose default; attempt call if function
13
+ if (typeof initWasmPkg === 'function') {
14
+ await initWasmPkg();
15
+ }
16
+ wasmReady = true;
17
+ }
18
+ }
19
+ // Kyber functions
20
+ async function kyberKeygen() {
21
+ await initWasm();
22
+ const result = JSON.parse(initWasmPkg.kyber_keygen());
23
+ if (result.error)
24
+ throw new Error(result.error);
25
+ return result;
26
+ }
27
+ async function kyberEncaps(publicB64u) {
28
+ await initWasm();
29
+ const result = JSON.parse(initWasmPkg.kyber_encaps(publicB64u));
30
+ if (result.error)
31
+ throw new Error(result.error);
32
+ return result;
33
+ }
34
+ async function kyberDecaps(secretB64u, kemCtB64u) {
35
+ await initWasm();
36
+ const result = JSON.parse(initWasmPkg.kyber_decaps(secretB64u, kemCtB64u));
37
+ if (result.error)
38
+ throw new Error(result.error);
39
+ return result;
40
+ }
41
+ // HKDF functions
42
+ async function hkdfSha256(secretB64u, infoB64u, saltB64u, len = 32) {
43
+ await initWasm();
44
+ const result = JSON.parse(initWasmPkg.hkdf_sha256(secretB64u, infoB64u, saltB64u, len));
45
+ if (result.error)
46
+ throw new Error(result.error);
47
+ return result;
48
+ }
49
+ // AES-GCM functions
50
+ async function aesGcmWrap(keyB64u, dekB64u, aadB64u) {
51
+ await initWasm();
52
+ const result = JSON.parse(initWasmPkg.aes_gcm_wrap(keyB64u, dekB64u, aadB64u));
53
+ if (result.error)
54
+ throw new Error(result.error);
55
+ return result;
56
+ }
57
+ async function aesGcmUnwrap(keyB64u, ivB64u, ctB64u, aadB64u) {
58
+ await initWasm();
59
+ const result = JSON.parse(initWasmPkg.aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));
60
+ if (result.error)
61
+ throw new Error(result.error);
62
+ return result;
63
+ }
64
+ // Dilithium functions
65
+ async function dilithiumKeygen() {
66
+ await initWasm();
67
+ const result = JSON.parse(initWasmPkg.dilithium_keygen());
68
+ if (result.error)
69
+ throw new Error(result.error);
70
+ return result;
71
+ }
72
+ async function dilithiumSign(messageB64u, secretB64u) {
73
+ await initWasm();
74
+ const result = JSON.parse(initWasmPkg.dilithium_sign(messageB64u, secretB64u));
75
+ if (result.error)
76
+ throw new Error(result.error);
77
+ return result;
78
+ }
79
+ async function dilithiumVerify(messageB64u, signatureB64u, publicB64u) {
80
+ await initWasm();
81
+ const result = JSON.parse(initWasmPkg.dilithium_verify(messageB64u, signatureB64u, publicB64u));
82
+ if (result.error)
83
+ throw new Error(result.error);
84
+ return result;
85
+ }
86
+ // Utility functions
87
+ function b64uEncode(data) {
88
+ return btoa(String.fromCharCode(...data))
89
+ .replace(/\+/g, '-')
90
+ .replace(/\//g, '_')
91
+ .replace(/=/g, '');
92
+ }
93
+ function b64uDecode(str) {
94
+ const binary = atob(str.replace(/-/g, '+').replace(/_/g, '/'));
95
+ const bytes = new Uint8Array(binary.length);
96
+ for (let i = 0; i < binary.length; i++) {
97
+ bytes[i] = binary.charCodeAt(i);
98
+ }
99
+ return bytes;
100
+ }
101
+ function constantTimeEqual(a, b) {
102
+ if (a.length !== b.length)
103
+ return false;
104
+ let result = 0;
105
+ for (let i = 0; i < a.length; i++) {
106
+ result |= a[i] ^ b[i];
107
+ }
108
+ return result === 0;
109
+ }
110
+
111
+ exports.aesGcmUnwrap = aesGcmUnwrap;
112
+ exports.aesGcmWrap = aesGcmWrap;
113
+ exports.b64uDecode = b64uDecode;
114
+ exports.b64uEncode = b64uEncode;
115
+ exports.constantTimeEqual = constantTimeEqual;
116
+ exports.dilithiumKeygen = dilithiumKeygen;
117
+ exports.dilithiumSign = dilithiumSign;
118
+ exports.dilithiumVerify = dilithiumVerify;
119
+ exports.hkdfSha256 = hkdfSha256;
120
+ exports.initWasm = initWasm;
121
+ exports.kyberDecaps = kyberDecaps;
122
+ exports.kyberEncaps = kyberEncaps;
123
+ exports.kyberKeygen = kyberKeygen;
124
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,110 @@
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';
2
+
3
+ // Ma'atara Core PQC Toolkit
4
+ // Post-Quantum Cryptography for Browser and Node.js
5
+ // Import WASM functions
6
+ // Initialize WASM
7
+ let wasmReady = false;
8
+ async function initWasm() {
9
+ if (!wasmReady) {
10
+ // Some bundlers may not expose default; attempt call if function
11
+ if (typeof initWasmPkg === 'function') {
12
+ await initWasmPkg();
13
+ }
14
+ wasmReady = true;
15
+ }
16
+ }
17
+ // Kyber functions
18
+ async function kyberKeygen() {
19
+ await initWasm();
20
+ const result = JSON.parse(kyber_keygen());
21
+ if (result.error)
22
+ throw new Error(result.error);
23
+ return result;
24
+ }
25
+ async function kyberEncaps(publicB64u) {
26
+ await initWasm();
27
+ const result = JSON.parse(kyber_encaps(publicB64u));
28
+ if (result.error)
29
+ throw new Error(result.error);
30
+ return result;
31
+ }
32
+ async function kyberDecaps(secretB64u, kemCtB64u) {
33
+ await initWasm();
34
+ const result = JSON.parse(kyber_decaps(secretB64u, kemCtB64u));
35
+ if (result.error)
36
+ throw new Error(result.error);
37
+ return result;
38
+ }
39
+ // HKDF functions
40
+ async function hkdfSha256(secretB64u, infoB64u, saltB64u, len = 32) {
41
+ await initWasm();
42
+ const result = JSON.parse(hkdf_sha256(secretB64u, infoB64u, saltB64u, len));
43
+ if (result.error)
44
+ throw new Error(result.error);
45
+ return result;
46
+ }
47
+ // AES-GCM functions
48
+ async function aesGcmWrap(keyB64u, dekB64u, aadB64u) {
49
+ await initWasm();
50
+ const result = JSON.parse(aes_gcm_wrap(keyB64u, dekB64u, aadB64u));
51
+ if (result.error)
52
+ throw new Error(result.error);
53
+ return result;
54
+ }
55
+ async function aesGcmUnwrap(keyB64u, ivB64u, ctB64u, aadB64u) {
56
+ await initWasm();
57
+ const result = JSON.parse(aes_gcm_unwrap(keyB64u, ivB64u, ctB64u, aadB64u));
58
+ if (result.error)
59
+ throw new Error(result.error);
60
+ return result;
61
+ }
62
+ // Dilithium functions
63
+ async function dilithiumKeygen() {
64
+ await initWasm();
65
+ const result = JSON.parse(dilithium_keygen());
66
+ if (result.error)
67
+ throw new Error(result.error);
68
+ return result;
69
+ }
70
+ async function dilithiumSign(messageB64u, secretB64u) {
71
+ await initWasm();
72
+ const result = JSON.parse(dilithium_sign(messageB64u, secretB64u));
73
+ if (result.error)
74
+ throw new Error(result.error);
75
+ return result;
76
+ }
77
+ async function dilithiumVerify(messageB64u, signatureB64u, publicB64u) {
78
+ await initWasm();
79
+ const result = JSON.parse(dilithium_verify(messageB64u, signatureB64u, publicB64u));
80
+ if (result.error)
81
+ throw new Error(result.error);
82
+ return result;
83
+ }
84
+ // Utility functions
85
+ function b64uEncode(data) {
86
+ return btoa(String.fromCharCode(...data))
87
+ .replace(/\+/g, '-')
88
+ .replace(/\//g, '_')
89
+ .replace(/=/g, '');
90
+ }
91
+ function b64uDecode(str) {
92
+ const binary = atob(str.replace(/-/g, '+').replace(/_/g, '/'));
93
+ const bytes = new Uint8Array(binary.length);
94
+ for (let i = 0; i < binary.length; i++) {
95
+ bytes[i] = binary.charCodeAt(i);
96
+ }
97
+ return bytes;
98
+ }
99
+ function constantTimeEqual(a, b) {
100
+ if (a.length !== b.length)
101
+ return false;
102
+ let result = 0;
103
+ for (let i = 0; i < a.length; i++) {
104
+ result |= a[i] ^ b[i];
105
+ }
106
+ return result === 0;
107
+ }
108
+
109
+ export { aesGcmUnwrap, aesGcmWrap, b64uDecode, b64uEncode, constantTimeEqual, dilithiumKeygen, dilithiumSign, dilithiumVerify, hkdfSha256, initWasm, kyberDecaps, kyberEncaps, kyberKeygen };
110
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +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":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@maatara/core-pqc",
3
+ "version": "0.1.0",
4
+ "description": "Ma'atara Post-Quantum Cryptography Toolkit for Browser and Node.js",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.mjs",
8
+ "types": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist",
18
+ "README.md"
19
+ ],
20
+ "scripts": {
21
+ "build": "rollup -c",
22
+ "dev": "rollup -c -w",
23
+ "test": "jest",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "post-quantum",
28
+ "cryptography",
29
+ "pqc",
30
+ "kyber",
31
+ "dilithium",
32
+ "webassembly",
33
+ "wasm"
34
+ ],
35
+ "author": "Ma'atara",
36
+ "license": "Apache-2.0",
37
+ "devDependencies": {
38
+ "@rollup/plugin-node-resolve": "^15.0.0",
39
+ "@rollup/plugin-typescript": "^11.0.0",
40
+ "@types/jest": "^29.0.0",
41
+ "jest": "^29.0.0",
42
+ "rollup": "^3.0.0",
43
+ "tslib": "^2.0.0",
44
+ "typescript": "^5.0.0"
45
+ },
46
+ "dependencies": {
47
+ "@maatara/core-pqc-wasm": "^0.1.0"
48
+ }
49
+ }