@nekzus/liop 1.0.0-alpha.1

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.
Files changed (87) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +24 -0
  3. package/README.md +641 -0
  4. package/dist/bin/agent.d.ts +1 -0
  5. package/dist/bin/agent.js +897 -0
  6. package/dist/bin/agent.js.map +1 -0
  7. package/dist/bridge.d.ts +105 -0
  8. package/dist/bridge.js +5 -0
  9. package/dist/bridge.js.map +1 -0
  10. package/dist/chunk-3L2O2XKG.js +723 -0
  11. package/dist/chunk-3L2O2XKG.js.map +1 -0
  12. package/dist/chunk-7BSCUYUE.js +421 -0
  13. package/dist/chunk-7BSCUYUE.js.map +1 -0
  14. package/dist/chunk-7PITYWOV.js +68 -0
  15. package/dist/chunk-7PITYWOV.js.map +1 -0
  16. package/dist/chunk-7RXOIDXP.js +877 -0
  17. package/dist/chunk-7RXOIDXP.js.map +1 -0
  18. package/dist/chunk-BOISQ45Z.js +558 -0
  19. package/dist/chunk-BOISQ45Z.js.map +1 -0
  20. package/dist/chunk-DZ2FQGJD.js +206712 -0
  21. package/dist/chunk-DZ2FQGJD.js.map +1 -0
  22. package/dist/chunk-EG46XMJT.js +77 -0
  23. package/dist/chunk-EG46XMJT.js.map +1 -0
  24. package/dist/chunk-ESRXG36Y.js +115 -0
  25. package/dist/chunk-ESRXG36Y.js.map +1 -0
  26. package/dist/chunk-FTF6AMF6.js +3 -0
  27. package/dist/chunk-FTF6AMF6.js.map +1 -0
  28. package/dist/chunk-HA6YZ42O.js +64 -0
  29. package/dist/chunk-HA6YZ42O.js.map +1 -0
  30. package/dist/chunk-HD2N3IJX.js +3634 -0
  31. package/dist/chunk-HD2N3IJX.js.map +1 -0
  32. package/dist/chunk-IK7CGWAZ.js +24 -0
  33. package/dist/chunk-IK7CGWAZ.js.map +1 -0
  34. package/dist/chunk-L6J72C5X.js +1477 -0
  35. package/dist/chunk-L6J72C5X.js.map +1 -0
  36. package/dist/chunk-PAICJCKJ.js +332 -0
  37. package/dist/chunk-PAICJCKJ.js.map +1 -0
  38. package/dist/chunk-PEN3KFLF.js +114 -0
  39. package/dist/chunk-PEN3KFLF.js.map +1 -0
  40. package/dist/chunk-T7R5HUFD.js +775 -0
  41. package/dist/chunk-T7R5HUFD.js.map +1 -0
  42. package/dist/chunk-TKRX6CFI.js +168 -0
  43. package/dist/chunk-TKRX6CFI.js.map +1 -0
  44. package/dist/chunk-UCVP3XAL.js +279 -0
  45. package/dist/chunk-UCVP3XAL.js.map +1 -0
  46. package/dist/chunk-VH4K4U45.js +180 -0
  47. package/dist/chunk-VH4K4U45.js.map +1 -0
  48. package/dist/chunk-Y62GORQF.js +51 -0
  49. package/dist/chunk-Y62GORQF.js.map +1 -0
  50. package/dist/chunk-ZP3VVXOI.js +66 -0
  51. package/dist/chunk-ZP3VVXOI.js.map +1 -0
  52. package/dist/client.d.ts +7 -0
  53. package/dist/client.js +13 -0
  54. package/dist/client.js.map +1 -0
  55. package/dist/gateway.d.ts +7 -0
  56. package/dist/gateway.js +13 -0
  57. package/dist/gateway.js.map +1 -0
  58. package/dist/hybrid-CrKB50nh.d.ts +170 -0
  59. package/dist/index-CX43dvMs.d.ts +170 -0
  60. package/dist/index-DoW2gzBZ.d.ts +566 -0
  61. package/dist/index.d.ts +810 -0
  62. package/dist/index.js +357 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/kyber-CGOA7Q6A.js +3 -0
  65. package/dist/kyber-CGOA7Q6A.js.map +1 -0
  66. package/dist/mesh.d.ts +32 -0
  67. package/dist/mesh.js +6 -0
  68. package/dist/mesh.js.map +1 -0
  69. package/dist/node-B0b2vUFS.d.ts +164 -0
  70. package/dist/protocol/liop_core.proto +47 -0
  71. package/dist/server.d.ts +5 -0
  72. package/dist/server.js +9 -0
  73. package/dist/server.js.map +1 -0
  74. package/dist/types-lJIxBlWF.d.ts +256 -0
  75. package/dist/types.d.ts +3 -0
  76. package/dist/types.js +3 -0
  77. package/dist/types.js.map +1 -0
  78. package/dist/verifier-COnid_dg.d.ts +31 -0
  79. package/dist/verifier-HRFXBKT5.js +6 -0
  80. package/dist/verifier-HRFXBKT5.js.map +1 -0
  81. package/dist/workers/logic-execution.d.ts +26 -0
  82. package/dist/workers/logic-execution.js +272 -0
  83. package/dist/workers/logic-execution.js.map +1 -0
  84. package/dist/workers/zk-verifier.d.ts +26 -0
  85. package/dist/workers/zk-verifier.js +174 -0
  86. package/dist/workers/zk-verifier.js.map +1 -0
  87. package/package.json +230 -0
@@ -0,0 +1,68 @@
1
+ import { createMlKem768 } from 'mlkem';
2
+
3
+ // src/rpc/crypto/kyber.ts
4
+ var kemInstance = null;
5
+ async function getKemInstance() {
6
+ if (!kemInstance) {
7
+ kemInstance = await createMlKem768();
8
+ }
9
+ return kemInstance;
10
+ }
11
+ var Kyber768Wrapper = {
12
+ /**
13
+ * Extracts and validates the 1184-byte Public Key from the Rust LIOP Data Node
14
+ * @param buffer Raw buffer sent via gRPC IntentResponse
15
+ */
16
+ importPublicKey(buffer) {
17
+ if (buffer.length !== 1184) {
18
+ throw new Error(
19
+ `Kyber768 Public Key must be exactly 1184 bytes (Received: ${buffer.length})`
20
+ );
21
+ }
22
+ return buffer;
23
+ },
24
+ /**
25
+ * Encapsulates a shared secret using the server's public key.
26
+ * Returns the 1088-byte ciphertext to be sent back, and the 32-byte shared AES secret.
27
+ */
28
+ async encapsulateAsymmetric(publicKey) {
29
+ try {
30
+ if (publicKey.length !== 1184) {
31
+ throw new Error("Kyber768 Public Key must be exactly 1184 bytes.");
32
+ }
33
+ const kem = await getKemInstance();
34
+ const [ct, ss] = kem.encap(publicKey);
35
+ return {
36
+ ciphertext: ct,
37
+ sharedSecret: ss
38
+ };
39
+ } catch (error) {
40
+ throw new Error(
41
+ `Failed to perform PQC encapsulation: ${error.message}`
42
+ );
43
+ }
44
+ },
45
+ /**
46
+ * Generates a Kyber768 KeyPair for the server to accept intents.
47
+ */
48
+ async generateKeyPair() {
49
+ const kem = await getKemInstance();
50
+ const [pk, sk] = kem.generateKeyPair();
51
+ return {
52
+ publicKey: pk,
53
+ secretKey: sk
54
+ };
55
+ },
56
+ /**
57
+ * Decapsulates the shared secret using the server's secret key.
58
+ * Zero-fills the shared secret buffer after extraction for side-channel protection.
59
+ */
60
+ async decapsulateSymmetric(ciphertext, secretKey) {
61
+ const kem = await getKemInstance();
62
+ return kem.decap(ciphertext, secretKey);
63
+ }
64
+ };
65
+
66
+ export { Kyber768Wrapper };
67
+ //# sourceMappingURL=chunk-7PITYWOV.js.map
68
+ //# sourceMappingURL=chunk-7PITYWOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rpc/crypto/kyber.ts"],"names":[],"mappings":";;;AAiBA,IAAI,WAAA,GAAiE,IAAA;AAErE,eAAe,cAAA,GAAiB;AAC/B,EAAA,IAAI,CAAC,WAAA,EAAa;AACjB,IAAA,WAAA,GAAc,MAAM,cAAA,EAAe;AAAA,EACpC;AACA,EAAA,OAAO,WAAA;AACR;AAEO,IAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,gBAAgB,MAAA,EAAgC;AAC/C,IAAA,IAAI,MAAA,CAAO,WAAW,IAAA,EAAM;AAC3B,MAAA,MAAM,IAAI,KAAA;AAAA,QACT,CAAA,0DAAA,EAA6D,OAAO,MAAM,CAAA,CAAA;AAAA,OAC3E;AAAA,IACD;AACA,IAAA,OAAO,MAAA;AAAA,EACR,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,sBAAsB,SAAA,EAGzB;AACF,IAAA,IAAI;AACH,MAAA,IAAI,SAAA,CAAU,WAAW,IAAA,EAAM;AAC9B,QAAA,MAAM,IAAI,MAAM,iDAAiD,CAAA;AAAA,MAClE;AAEA,MAAA,MAAM,GAAA,GAAM,MAAM,cAAA,EAAe;AACjC,MAAA,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,GAAI,GAAA,CAAI,MAAM,SAAS,CAAA;AAEpC,MAAA,OAAO;AAAA,QACN,UAAA,EAAY,EAAA;AAAA,QACZ,YAAA,EAAc;AAAA,OACf;AAAA,IACD,SAAS,KAAA,EAAO;AACf,MAAA,MAAM,IAAI,KAAA;AAAA,QACT,CAAA,qCAAA,EAAyC,MAAgB,OAAO,CAAA;AAAA,OACjE;AAAA,IACD;AAAA,EACD,CAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,eAAA,GAGH;AACF,IAAA,MAAM,GAAA,GAAM,MAAM,cAAA,EAAe;AACjC,IAAA,MAAM,CAAC,EAAA,EAAI,EAAE,CAAA,GAAI,IAAI,eAAA,EAAgB;AACrC,IAAA,OAAO;AAAA,MACN,SAAA,EAAW,EAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACZ;AAAA,EACD,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,oBAAA,CACL,UAAA,EACA,SAAA,EACsB;AACtB,IAAA,MAAM,GAAA,GAAM,MAAM,cAAA,EAAe;AACjC,IAAA,OAAO,GAAA,CAAI,KAAA,CAAM,UAAA,EAAY,SAAS,CAAA;AAAA,EACvC;AACD","file":"chunk-7PITYWOV.js","sourcesContent":["// Copyright 2026 Nekzus Solutions and contributors\n// SPDX-License-Identifier: Apache-2.0\n\nimport { createMlKem768 } from \"mlkem\";\n\n/**\n * LIOP Post-Quantum Cryptography Wrapper\n * Implements ML-KEM-768 (NIST FIPS 203) for Zero-Trust secure key encapsulation\n * directly compatible with `pqcrypto-kyber` on the Mesh-Node Backend.\n *\n * Uses the `mlkem` package which provides:\n * - FIPS 203 compliance (ML-KEM standard)\n * - Constant-time validation (KyberSlash patched)\n * - ~3.5x performance improvement over legacy crystals-kyber\n */\n\n/** Lazy-initialized singleton for the ML-KEM-768 engine */\nlet kemInstance: Awaited<ReturnType<typeof createMlKem768>> | null = null;\n\nasync function getKemInstance() {\n\tif (!kemInstance) {\n\t\tkemInstance = await createMlKem768();\n\t}\n\treturn kemInstance;\n}\n\nexport const Kyber768Wrapper = {\n\t/**\n\t * Extracts and validates the 1184-byte Public Key from the Rust LIOP Data Node\n\t * @param buffer Raw buffer sent via gRPC IntentResponse\n\t */\n\timportPublicKey(buffer: Uint8Array): Uint8Array {\n\t\tif (buffer.length !== 1184) {\n\t\t\tthrow new Error(\n\t\t\t\t`Kyber768 Public Key must be exactly 1184 bytes (Received: ${buffer.length})`,\n\t\t\t);\n\t\t}\n\t\treturn buffer;\n\t},\n\n\t/**\n\t * Encapsulates a shared secret using the server's public key.\n\t * Returns the 1088-byte ciphertext to be sent back, and the 32-byte shared AES secret.\n\t */\n\tasync encapsulateAsymmetric(publicKey: Uint8Array): Promise<{\n\t\tciphertext: Uint8Array;\n\t\tsharedSecret: Uint8Array;\n\t}> {\n\t\ttry {\n\t\t\tif (publicKey.length !== 1184) {\n\t\t\t\tthrow new Error(\"Kyber768 Public Key must be exactly 1184 bytes.\");\n\t\t\t}\n\n\t\t\tconst kem = await getKemInstance();\n\t\t\tconst [ct, ss] = kem.encap(publicKey);\n\n\t\t\treturn {\n\t\t\t\tciphertext: ct,\n\t\t\t\tsharedSecret: ss,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to perform PQC encapsulation: ${(error as Error).message}`,\n\t\t\t);\n\t\t}\n\t},\n\n\t/**\n\t * Generates a Kyber768 KeyPair for the server to accept intents.\n\t */\n\tasync generateKeyPair(): Promise<{\n\t\tpublicKey: Uint8Array;\n\t\tsecretKey: Uint8Array;\n\t}> {\n\t\tconst kem = await getKemInstance();\n\t\tconst [pk, sk] = kem.generateKeyPair();\n\t\treturn {\n\t\t\tpublicKey: pk,\n\t\t\tsecretKey: sk,\n\t\t};\n\t},\n\n\t/**\n\t * Decapsulates the shared secret using the server's secret key.\n\t * Zero-fills the shared secret buffer after extraction for side-channel protection.\n\t */\n\tasync decapsulateSymmetric(\n\t\tciphertext: Uint8Array,\n\t\tsecretKey: Uint8Array,\n\t): Promise<Uint8Array> {\n\t\tconst kem = await getKemInstance();\n\t\treturn kem.decap(ciphertext, secretKey);\n\t},\n};\n"]}