shogun-core 6.2.3 → 6.3.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.
Files changed (233) hide show
  1. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js +93 -341
  2. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_ed448_js.shogun-core.js.map +1 -1
  3. package/dist/browser/shogun-core.js +138850 -146638
  4. package/dist/browser/shogun-core.js.map +1 -1
  5. package/dist/{core.js → src/core.js} +167 -107
  6. package/dist/src/crypto/asymmetric.js +168 -0
  7. package/dist/src/crypto/double-ratchet.js +908 -0
  8. package/dist/src/crypto/file-encryption.js +352 -0
  9. package/dist/src/crypto/hashing.js +160 -0
  10. package/dist/src/crypto/index.js +18 -0
  11. package/dist/{crypto → src/crypto}/mls-codec.js +24 -34
  12. package/dist/src/crypto/mls.js +734 -0
  13. package/dist/src/crypto/pgp.js +619 -0
  14. package/dist/{crypto → src/crypto}/random-generation.js +125 -103
  15. package/dist/src/crypto/sframe.js +466 -0
  16. package/dist/src/crypto/signal-protocol.js +943 -0
  17. package/dist/src/crypto/symmetric.js +165 -0
  18. package/dist/src/crypto/utils.js +220 -0
  19. package/dist/src/examples/auth-test.js +535 -0
  20. package/dist/src/examples/crypto-identity-example.js +294 -0
  21. package/dist/src/examples/crypto-working-test.js +149 -0
  22. package/dist/src/examples/double-ratchet-test.js +240 -0
  23. package/dist/src/examples/mls-3-member-test.js +183 -0
  24. package/dist/src/examples/mls-multi-member.js +439 -0
  25. package/dist/src/examples/mls-sframe-test.js +491 -0
  26. package/dist/src/examples/mls-simple-test.js +122 -0
  27. package/dist/src/examples/pgp-example.js +354 -0
  28. package/dist/src/examples/random-generation-test.js +191 -0
  29. package/dist/src/examples/shogun-core-example.js +204 -0
  30. package/dist/src/examples/signal-protocol-test.js +82 -0
  31. package/dist/src/examples/zkproof-credentials-example.js +357 -0
  32. package/dist/src/examples/zkproof-example.js +357 -0
  33. package/dist/src/gundb/crypto.js +420 -0
  34. package/dist/src/gundb/db.js +728 -0
  35. package/dist/src/gundb/derive.js +327 -0
  36. package/dist/src/gundb/errors.js +115 -0
  37. package/dist/src/gundb/gun-es.js +8 -0
  38. package/dist/src/gundb/index.js +5 -0
  39. package/dist/{gundb → src/gundb}/rxjs.js +147 -111
  40. package/dist/{gundb → src/gundb}/types.js +1 -2
  41. package/dist/src/index.js +19 -0
  42. package/dist/src/interfaces/events.js +57 -0
  43. package/dist/{interfaces → src/interfaces}/shogun.js +4 -7
  44. package/dist/src/managers/AuthManager.js +301 -0
  45. package/dist/src/managers/CoreInitializer.js +304 -0
  46. package/dist/src/managers/CryptoIdentityManager.js +230 -0
  47. package/dist/{managers → src/managers}/EventManager.js +19 -21
  48. package/dist/{managers → src/managers}/PluginManager.js +123 -89
  49. package/dist/src/plugins/base.js +90 -0
  50. package/dist/src/plugins/index.js +17 -0
  51. package/dist/src/plugins/nostr/index.js +4 -0
  52. package/dist/src/plugins/nostr/nostrConnector.js +539 -0
  53. package/dist/src/plugins/nostr/nostrConnectorPlugin.js +663 -0
  54. package/dist/src/plugins/nostr/nostrSigner.js +414 -0
  55. package/dist/src/plugins/smartwallet/index.js +2 -0
  56. package/dist/src/plugins/smartwallet/smartWalletPlugin.js +824 -0
  57. package/dist/src/plugins/web3/index.js +4 -0
  58. package/dist/src/plugins/web3/types.js +1 -0
  59. package/dist/src/plugins/web3/web3Connector.js +738 -0
  60. package/dist/src/plugins/web3/web3ConnectorPlugin.js +639 -0
  61. package/dist/src/plugins/web3/web3Signer.js +432 -0
  62. package/dist/src/plugins/webauthn/index.js +3 -0
  63. package/dist/{plugins → src/plugins}/webauthn/types.js +2 -5
  64. package/dist/src/plugins/webauthn/webauthn.js +647 -0
  65. package/dist/src/plugins/webauthn/webauthnPlugin.js +689 -0
  66. package/dist/src/plugins/webauthn/webauthnSigner.js +419 -0
  67. package/dist/{plugins → src/plugins}/zkproof/index.js +3 -10
  68. package/dist/src/plugins/zkproof/types.js +1 -0
  69. package/dist/src/plugins/zkproof/zkCredentials.js +287 -0
  70. package/dist/src/plugins/zkproof/zkProofConnector.js +267 -0
  71. package/dist/src/plugins/zkproof/zkProofPlugin.js +405 -0
  72. package/dist/src/storage/storage.js +189 -0
  73. package/dist/src/utils/errorHandler.js +339 -0
  74. package/dist/{utils → src/utils}/eventEmitter.js +26 -26
  75. package/dist/{utils → src/utils}/seedPhrase.js +23 -32
  76. package/dist/{utils → src/utils}/validation.js +14 -21
  77. package/dist/tsconfig.tsbuildinfo +1 -0
  78. package/dist/types/{crypto → src/crypto}/double-ratchet.d.ts +1 -1
  79. package/dist/types/{crypto → src/crypto}/signal-protocol.d.ts +25 -0
  80. package/dist/types/{crypto → src/crypto}/types.d.ts +3 -1
  81. package/dist/types/src/examples/crypto-working-test.d.ts +1 -0
  82. package/dist/types/src/examples/double-ratchet-test.d.ts +1 -0
  83. package/dist/types/src/examples/mls-sframe-test.d.ts +1 -0
  84. package/dist/types/src/examples/random-generation-test.d.ts +1 -0
  85. package/dist/types/src/examples/signal-protocol-test.d.ts +1 -0
  86. package/dist/types/{gundb → src/gundb}/db.d.ts +14 -1
  87. package/dist/types/src/gundb/gun-es.d.ts +8 -0
  88. package/dist/types/src/gundb/min.d.ts +3 -0
  89. package/dist/types/{index.d.ts → src/index.d.ts} +1 -0
  90. package/package.json +14 -11
  91. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js +0 -1651
  92. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_abstract_curve_js-node_modules_noble_curves_esm_-1ce4ed.shogun-core.js.map +0 -1
  93. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js +0 -1608
  94. package/dist/browser/defaultVendors-node_modules_noble_curves_esm_nist_js.shogun-core.js.map +0 -1
  95. package/dist/crypto/asymmetric.js +0 -99
  96. package/dist/crypto/double-ratchet.js +0 -370
  97. package/dist/crypto/file-encryption.js +0 -213
  98. package/dist/crypto/hashing.js +0 -87
  99. package/dist/crypto/index.js +0 -34
  100. package/dist/crypto/mls.js +0 -569
  101. package/dist/crypto/pgp.js +0 -390
  102. package/dist/crypto/sframe.js +0 -352
  103. package/dist/crypto/signal-protocol.js +0 -456
  104. package/dist/crypto/symmetric.js +0 -91
  105. package/dist/crypto/types.js +0 -2
  106. package/dist/crypto/utils.js +0 -140
  107. package/dist/examples/auth-test.js +0 -453
  108. package/dist/examples/crypto-identity-example.js +0 -196
  109. package/dist/examples/crypto-working-test.js +0 -83
  110. package/dist/examples/double-ratchet-test.js +0 -155
  111. package/dist/examples/mls-3-member-test.js +0 -97
  112. package/dist/examples/mls-multi-member.js +0 -153
  113. package/dist/examples/mls-sframe-test.js +0 -307
  114. package/dist/examples/mls-simple-test.js +0 -58
  115. package/dist/examples/pgp-example.js +0 -200
  116. package/dist/examples/random-generation-test.js +0 -151
  117. package/dist/examples/shogun-core-example.js +0 -150
  118. package/dist/examples/signal-protocol-test.js +0 -38
  119. package/dist/examples/zkproof-credentials-example.js +0 -217
  120. package/dist/examples/zkproof-example.js +0 -242
  121. package/dist/gundb/crypto.js +0 -306
  122. package/dist/gundb/db.js +0 -485
  123. package/dist/gundb/derive.js +0 -232
  124. package/dist/gundb/errors.js +0 -76
  125. package/dist/gundb/gun-es.js +0 -12
  126. package/dist/gundb/index.js +0 -21
  127. package/dist/gundb/min.js +0 -10
  128. package/dist/index.esm.js +0 -22
  129. package/dist/index.js +0 -47
  130. package/dist/interfaces/common.js +0 -2
  131. package/dist/interfaces/events.js +0 -40
  132. package/dist/interfaces/plugin.js +0 -2
  133. package/dist/managers/AuthManager.js +0 -226
  134. package/dist/managers/CoreInitializer.js +0 -250
  135. package/dist/managers/CryptoIdentityManager.js +0 -138
  136. package/dist/plugins/base.js +0 -50
  137. package/dist/plugins/index.js +0 -32
  138. package/dist/plugins/nostr/index.js +0 -20
  139. package/dist/plugins/nostr/nostrConnector.js +0 -419
  140. package/dist/plugins/nostr/nostrConnectorPlugin.js +0 -453
  141. package/dist/plugins/nostr/nostrSigner.js +0 -319
  142. package/dist/plugins/nostr/types.js +0 -2
  143. package/dist/plugins/smartwallet/index.js +0 -18
  144. package/dist/plugins/smartwallet/smartWalletPlugin.js +0 -511
  145. package/dist/plugins/smartwallet/types.js +0 -2
  146. package/dist/plugins/web3/index.js +0 -20
  147. package/dist/plugins/web3/types.js +0 -2
  148. package/dist/plugins/web3/web3Connector.js +0 -533
  149. package/dist/plugins/web3/web3ConnectorPlugin.js +0 -455
  150. package/dist/plugins/web3/web3Signer.js +0 -314
  151. package/dist/plugins/webauthn/index.js +0 -19
  152. package/dist/plugins/webauthn/webauthn.js +0 -496
  153. package/dist/plugins/webauthn/webauthnPlugin.js +0 -490
  154. package/dist/plugins/webauthn/webauthnSigner.js +0 -310
  155. package/dist/plugins/zkproof/types.js +0 -2
  156. package/dist/plugins/zkproof/zkCredentials.js +0 -216
  157. package/dist/plugins/zkproof/zkProofConnector.js +0 -198
  158. package/dist/plugins/zkproof/zkProofPlugin.js +0 -272
  159. package/dist/storage/storage.js +0 -145
  160. package/dist/types/gundb/gun-es.d.ts +0 -8
  161. package/dist/utils/errorHandler.js +0 -246
  162. /package/dist/{types/examples/crypto-working-test.d.ts → src/crypto/types.js} +0 -0
  163. /package/dist/{types/gundb/min.d.ts → src/gundb/min.js} +0 -0
  164. /package/dist/{types/examples/double-ratchet-test.d.ts → src/interfaces/common.js} +0 -0
  165. /package/dist/{types/examples/mls-sframe-test.d.ts → src/interfaces/plugin.js} +0 -0
  166. /package/dist/{types/examples/random-generation-test.d.ts → src/plugins/nostr/types.js} +0 -0
  167. /package/dist/{types/examples/signal-protocol-test.d.ts → src/plugins/smartwallet/types.js} +0 -0
  168. /package/dist/types/{core.d.ts → src/core.d.ts} +0 -0
  169. /package/dist/types/{crypto → src/crypto}/asymmetric.d.ts +0 -0
  170. /package/dist/types/{crypto → src/crypto}/file-encryption.d.ts +0 -0
  171. /package/dist/types/{crypto → src/crypto}/hashing.d.ts +0 -0
  172. /package/dist/types/{crypto → src/crypto}/index.d.ts +0 -0
  173. /package/dist/types/{crypto → src/crypto}/mls-codec.d.ts +0 -0
  174. /package/dist/types/{crypto → src/crypto}/mls.d.ts +0 -0
  175. /package/dist/types/{crypto → src/crypto}/pgp.d.ts +0 -0
  176. /package/dist/types/{crypto → src/crypto}/random-generation.d.ts +0 -0
  177. /package/dist/types/{crypto → src/crypto}/sframe.d.ts +0 -0
  178. /package/dist/types/{crypto → src/crypto}/symmetric.d.ts +0 -0
  179. /package/dist/types/{crypto → src/crypto}/utils.d.ts +0 -0
  180. /package/dist/types/{examples → src/examples}/auth-test.d.ts +0 -0
  181. /package/dist/types/{examples → src/examples}/crypto-identity-example.d.ts +0 -0
  182. /package/dist/types/{examples → src/examples}/mls-3-member-test.d.ts +0 -0
  183. /package/dist/types/{examples → src/examples}/mls-multi-member.d.ts +0 -0
  184. /package/dist/types/{examples → src/examples}/mls-simple-test.d.ts +0 -0
  185. /package/dist/types/{examples → src/examples}/pgp-example.d.ts +0 -0
  186. /package/dist/types/{examples → src/examples}/shogun-core-example.d.ts +0 -0
  187. /package/dist/types/{examples → src/examples}/zkproof-credentials-example.d.ts +0 -0
  188. /package/dist/types/{examples → src/examples}/zkproof-example.d.ts +0 -0
  189. /package/dist/types/{gundb → src/gundb}/crypto.d.ts +0 -0
  190. /package/dist/types/{gundb → src/gundb}/derive.d.ts +0 -0
  191. /package/dist/types/{gundb → src/gundb}/errors.d.ts +0 -0
  192. /package/dist/types/{gundb → src/gundb}/index.d.ts +0 -0
  193. /package/dist/types/{gundb → src/gundb}/rxjs.d.ts +0 -0
  194. /package/dist/types/{gundb → src/gundb}/types.d.ts +0 -0
  195. /package/dist/types/{interfaces → src/interfaces}/common.d.ts +0 -0
  196. /package/dist/types/{interfaces → src/interfaces}/events.d.ts +0 -0
  197. /package/dist/types/{interfaces → src/interfaces}/plugin.d.ts +0 -0
  198. /package/dist/types/{interfaces → src/interfaces}/shogun.d.ts +0 -0
  199. /package/dist/types/{managers → src/managers}/AuthManager.d.ts +0 -0
  200. /package/dist/types/{managers → src/managers}/CoreInitializer.d.ts +0 -0
  201. /package/dist/types/{managers → src/managers}/CryptoIdentityManager.d.ts +0 -0
  202. /package/dist/types/{managers → src/managers}/EventManager.d.ts +0 -0
  203. /package/dist/types/{managers → src/managers}/PluginManager.d.ts +0 -0
  204. /package/dist/types/{plugins → src/plugins}/base.d.ts +0 -0
  205. /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
  206. /package/dist/types/{plugins → src/plugins}/nostr/index.d.ts +0 -0
  207. /package/dist/types/{plugins → src/plugins}/nostr/nostrConnector.d.ts +0 -0
  208. /package/dist/types/{plugins → src/plugins}/nostr/nostrConnectorPlugin.d.ts +0 -0
  209. /package/dist/types/{plugins → src/plugins}/nostr/nostrSigner.d.ts +0 -0
  210. /package/dist/types/{plugins → src/plugins}/nostr/types.d.ts +0 -0
  211. /package/dist/types/{plugins → src/plugins}/smartwallet/index.d.ts +0 -0
  212. /package/dist/types/{plugins → src/plugins}/smartwallet/smartWalletPlugin.d.ts +0 -0
  213. /package/dist/types/{plugins → src/plugins}/smartwallet/types.d.ts +0 -0
  214. /package/dist/types/{plugins → src/plugins}/web3/index.d.ts +0 -0
  215. /package/dist/types/{plugins → src/plugins}/web3/types.d.ts +0 -0
  216. /package/dist/types/{plugins → src/plugins}/web3/web3Connector.d.ts +0 -0
  217. /package/dist/types/{plugins → src/plugins}/web3/web3ConnectorPlugin.d.ts +0 -0
  218. /package/dist/types/{plugins → src/plugins}/web3/web3Signer.d.ts +0 -0
  219. /package/dist/types/{plugins → src/plugins}/webauthn/index.d.ts +0 -0
  220. /package/dist/types/{plugins → src/plugins}/webauthn/types.d.ts +0 -0
  221. /package/dist/types/{plugins → src/plugins}/webauthn/webauthn.d.ts +0 -0
  222. /package/dist/types/{plugins → src/plugins}/webauthn/webauthnPlugin.d.ts +0 -0
  223. /package/dist/types/{plugins → src/plugins}/webauthn/webauthnSigner.d.ts +0 -0
  224. /package/dist/types/{plugins → src/plugins}/zkproof/index.d.ts +0 -0
  225. /package/dist/types/{plugins → src/plugins}/zkproof/types.d.ts +0 -0
  226. /package/dist/types/{plugins → src/plugins}/zkproof/zkCredentials.d.ts +0 -0
  227. /package/dist/types/{plugins → src/plugins}/zkproof/zkProofConnector.d.ts +0 -0
  228. /package/dist/types/{plugins → src/plugins}/zkproof/zkProofPlugin.d.ts +0 -0
  229. /package/dist/types/{storage → src/storage}/storage.d.ts +0 -0
  230. /package/dist/types/{utils → src/utils}/errorHandler.d.ts +0 -0
  231. /package/dist/types/{utils → src/utils}/eventEmitter.d.ts +0 -0
  232. /package/dist/types/{utils → src/utils}/seedPhrase.d.ts +0 -0
  233. /package/dist/types/{utils → src/utils}/validation.d.ts +0 -0
@@ -0,0 +1,287 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { Group } from "@semaphore-protocol/group";
38
+ import { generateProof, verifyProof } from "@semaphore-protocol/proof";
39
+ import { ethers } from "ethers";
40
+ import { ErrorHandler, ErrorType } from "../../utils/errorHandler.js";
41
+ /**
42
+ * Types of verifiable credentials
43
+ */
44
+ export var CredentialType;
45
+ (function (CredentialType) {
46
+ CredentialType["AGE"] = "age";
47
+ CredentialType["CITIZENSHIP"] = "citizenship";
48
+ CredentialType["EDUCATION"] = "education";
49
+ CredentialType["INCOME"] = "income";
50
+ CredentialType["EMPLOYMENT"] = "employment";
51
+ CredentialType["HEALTH"] = "health";
52
+ CredentialType["CUSTOM"] = "custom";
53
+ })(CredentialType || (CredentialType = {}));
54
+ /**
55
+ * ZK Credentials Manager
56
+ * Extends ZK-Proof functionality to support verifiable credentials
57
+ */
58
+ var ZkCredentials = /** @class */ (function () {
59
+ function ZkCredentials() {
60
+ this.groups = new Map();
61
+ }
62
+ /**
63
+ * Create a verifiable credential from private data
64
+ */
65
+ ZkCredentials.prototype.createCredential = function (identity, credentialData) {
66
+ try {
67
+ // Hash the private data to create a credential commitment
68
+ var privateDataString = JSON.stringify(credentialData.privateData);
69
+ var credentialHash = ethers.keccak256(ethers.toUtf8Bytes(privateDataString));
70
+ // For now, return a basic credential structure
71
+ // Full proof generation requires circuit files
72
+ var credential = {
73
+ type: credentialData.type,
74
+ claim: credentialData.claim,
75
+ proof: {
76
+ merkleTreeRoot: "",
77
+ nullifierHash: "",
78
+ signal: credentialHash,
79
+ externalNullifier: "",
80
+ proof: [],
81
+ },
82
+ credentialHash: credentialHash,
83
+ timestamp: Date.now(),
84
+ };
85
+ return {
86
+ credential: credential,
87
+ credentialHash: credentialHash,
88
+ };
89
+ }
90
+ catch (error) {
91
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "CREDENTIAL_CREATION_FAILED", "Failed to create verifiable credential: ".concat(error.message), error);
92
+ throw error;
93
+ }
94
+ };
95
+ /**
96
+ * Prove an attribute about yourself without revealing the underlying data
97
+ */
98
+ ZkCredentials.prototype.proveAttribute = function (identity_1, credentialData_1) {
99
+ return __awaiter(this, arguments, void 0, function (identity, credentialData, groupId) {
100
+ var _a, credential, credentialHash, signal, signalBigInt, group, externalNullifier, fullProof, error_1;
101
+ if (groupId === void 0) { groupId = "verified-credentials"; }
102
+ return __generator(this, function (_b) {
103
+ switch (_b.label) {
104
+ case 0:
105
+ _b.trys.push([0, 2, , 3]);
106
+ _a = this.createCredential(identity, credentialData), credential = _a.credential, credentialHash = _a.credentialHash;
107
+ signal = ethers.keccak256(ethers.toUtf8Bytes(credentialData.claim));
108
+ signalBigInt = BigInt(signal);
109
+ group = this.getOrCreateGroup(groupId);
110
+ // Add identity if not already in group
111
+ if (group.indexOf(identity.commitment) === -1) {
112
+ group.addMember(identity.commitment);
113
+ }
114
+ externalNullifier = BigInt(ethers.keccak256(ethers.toUtf8Bytes(credentialData.type)));
115
+ return [4 /*yield*/, generateProof(identity, group, signalBigInt, externalNullifier, {
116
+ wasmFilePath: "./circuits/semaphore/20/semaphore.wasm",
117
+ zkeyFilePath: "./circuits/semaphore/20/semaphore.zkey",
118
+ })];
119
+ case 1:
120
+ fullProof = _b.sent();
121
+ return [2 /*return*/, {
122
+ type: credentialData.type,
123
+ claim: credentialData.claim,
124
+ proof: {
125
+ merkleTreeRoot: fullProof.merkleTreeRoot.toString(),
126
+ nullifierHash: fullProof.nullifierHash.toString(),
127
+ signal: fullProof.signal.toString(),
128
+ externalNullifier: fullProof.externalNullifier.toString(),
129
+ proof: fullProof.proof.map(function (p) { return p.toString(); }),
130
+ },
131
+ credentialHash: credentialHash,
132
+ timestamp: Date.now(),
133
+ }];
134
+ case 2:
135
+ error_1 = _b.sent();
136
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "ATTRIBUTE_PROOF_FAILED", "Failed to prove attribute: ".concat(error_1.message), error_1);
137
+ throw error_1;
138
+ case 3: return [2 /*return*/];
139
+ }
140
+ });
141
+ });
142
+ };
143
+ /**
144
+ * Verify a credential proof
145
+ */
146
+ ZkCredentials.prototype.verifyCredential = function (proof_1) {
147
+ return __awaiter(this, arguments, void 0, function (proof, treeDepth) {
148
+ var verified, error_2;
149
+ if (treeDepth === void 0) { treeDepth = 20; }
150
+ return __generator(this, function (_a) {
151
+ switch (_a.label) {
152
+ case 0:
153
+ _a.trys.push([0, 2, , 3]);
154
+ return [4 /*yield*/, verifyProof(proof.proof, treeDepth)];
155
+ case 1:
156
+ verified = _a.sent();
157
+ return [2 /*return*/, {
158
+ verified: verified,
159
+ type: proof.type,
160
+ claim: proof.claim,
161
+ timestamp: proof.timestamp,
162
+ }];
163
+ case 2:
164
+ error_2 = _a.sent();
165
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "CREDENTIAL_VERIFICATION_FAILED", "Failed to verify credential: ".concat(error_2.message), error_2);
166
+ return [2 /*return*/, {
167
+ verified: false,
168
+ error: error_2.message,
169
+ }];
170
+ case 3: return [2 /*return*/];
171
+ }
172
+ });
173
+ });
174
+ };
175
+ /**
176
+ * Create a group for credential holders
177
+ */
178
+ ZkCredentials.prototype.getOrCreateGroup = function (groupId) {
179
+ if (!this.groups.has(groupId)) {
180
+ var groupIdHash = ethers.keccak256(ethers.toUtf8Bytes(groupId));
181
+ var groupIdNumber = BigInt(groupIdHash);
182
+ this.groups.set(groupId, new Group(groupIdNumber));
183
+ }
184
+ return this.groups.get(groupId);
185
+ };
186
+ /**
187
+ * Add an identity to a credentials group
188
+ */
189
+ ZkCredentials.prototype.addToCredentialGroup = function (identity, groupId) {
190
+ if (groupId === void 0) { groupId = "verified-credentials"; }
191
+ var group = this.getOrCreateGroup(groupId);
192
+ if (group.indexOf(identity.commitment) === -1) {
193
+ group.addMember(identity.commitment);
194
+ }
195
+ };
196
+ /**
197
+ * Common credential proofs
198
+ */
199
+ /**
200
+ * Prove age without revealing exact birthdate
201
+ */
202
+ ZkCredentials.prototype.proveAge = function (identity, birthDate, minimumAge) {
203
+ return __awaiter(this, void 0, void 0, function () {
204
+ var age;
205
+ return __generator(this, function (_a) {
206
+ age = Math.floor((Date.now() - birthDate.getTime()) / (365.25 * 24 * 60 * 60 * 1000));
207
+ if (age < minimumAge) {
208
+ throw new Error("Age ".concat(age, " is less than required ").concat(minimumAge));
209
+ }
210
+ return [2 /*return*/, this.proveAttribute(identity, {
211
+ type: CredentialType.AGE,
212
+ claim: "Age is ".concat(minimumAge, " or older"),
213
+ privateData: {
214
+ birthDate: birthDate.toISOString(),
215
+ actualAge: age,
216
+ },
217
+ })];
218
+ });
219
+ });
220
+ };
221
+ /**
222
+ * Prove citizenship without revealing country
223
+ */
224
+ ZkCredentials.prototype.proveCitizenship = function (identity_1, country_1) {
225
+ return __awaiter(this, arguments, void 0, function (identity, country, region) {
226
+ if (region === void 0) { region = "EU"; }
227
+ return __generator(this, function (_a) {
228
+ return [2 /*return*/, this.proveAttribute(identity, {
229
+ type: CredentialType.CITIZENSHIP,
230
+ claim: "Citizen of ".concat(region),
231
+ privateData: {
232
+ country: country,
233
+ passportNumber: "hidden",
234
+ },
235
+ })];
236
+ });
237
+ });
238
+ };
239
+ /**
240
+ * Prove education without revealing institution
241
+ */
242
+ ZkCredentials.prototype.proveEducation = function (identity, degree, university, year) {
243
+ return __awaiter(this, void 0, void 0, function () {
244
+ return __generator(this, function (_a) {
245
+ return [2 /*return*/, this.proveAttribute(identity, {
246
+ type: CredentialType.EDUCATION,
247
+ claim: "Has ".concat(degree, " degree"),
248
+ privateData: {
249
+ university: university,
250
+ degree: degree,
251
+ year: year,
252
+ },
253
+ })];
254
+ });
255
+ });
256
+ };
257
+ /**
258
+ * Prove income range without revealing exact amount
259
+ */
260
+ ZkCredentials.prototype.proveIncome = function (identity_1, amount_1, minimumRequired_1) {
261
+ return __awaiter(this, arguments, void 0, function (identity, amount, minimumRequired, currency) {
262
+ if (currency === void 0) { currency = "USD"; }
263
+ return __generator(this, function (_a) {
264
+ if (amount < minimumRequired) {
265
+ throw new Error("Income ".concat(amount, " is less than required ").concat(minimumRequired));
266
+ }
267
+ return [2 /*return*/, this.proveAttribute(identity, {
268
+ type: CredentialType.INCOME,
269
+ claim: "Income \u2265 ".concat(minimumRequired, " ").concat(currency),
270
+ privateData: {
271
+ actualIncome: amount,
272
+ currency: currency,
273
+ verified: true,
274
+ },
275
+ })];
276
+ });
277
+ });
278
+ };
279
+ /**
280
+ * Cleanup resources
281
+ */
282
+ ZkCredentials.prototype.cleanup = function () {
283
+ this.groups.clear();
284
+ };
285
+ return ZkCredentials;
286
+ }());
287
+ export { ZkCredentials };
@@ -0,0 +1,267 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { Identity } from "@semaphore-protocol/identity";
38
+ import { Group } from "@semaphore-protocol/group";
39
+ import { generateProof, verifyProof } from "@semaphore-protocol/proof";
40
+ import { ethers } from "ethers";
41
+ import derive from "../../gundb/derive.js";
42
+ import { ErrorHandler, ErrorType } from "../../utils/errorHandler.js";
43
+ /**
44
+ * Connector for ZK-Proof operations using Semaphore protocol
45
+ */
46
+ var ZkProofConnector = /** @class */ (function () {
47
+ function ZkProofConnector() {
48
+ this.identityCache = new Map();
49
+ this.credentialCache = new Map();
50
+ this.groups = new Map();
51
+ }
52
+ /**
53
+ * Generate a new Semaphore identity
54
+ */
55
+ ZkProofConnector.prototype.generateIdentity = function (seed) {
56
+ return __awaiter(this, void 0, void 0, function () {
57
+ var identity, commitment, trapdoor, nullifier;
58
+ return __generator(this, function (_a) {
59
+ try {
60
+ identity = void 0;
61
+ if (seed) {
62
+ // Deterministic generation from seed
63
+ identity = new Identity(seed);
64
+ }
65
+ else {
66
+ // Random generation
67
+ identity = new Identity();
68
+ }
69
+ commitment = identity.commitment.toString();
70
+ trapdoor = identity.trapdoor.toString();
71
+ nullifier = identity.nullifier.toString();
72
+ // Cache the identity
73
+ this.identityCache.set(commitment, identity);
74
+ return [2 /*return*/, {
75
+ commitment: commitment,
76
+ trapdoor: trapdoor,
77
+ nullifier: nullifier,
78
+ createdAt: Date.now(),
79
+ }];
80
+ }
81
+ catch (error) {
82
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "ZK_IDENTITY_GENERATION_FAILED", "Failed to generate ZK identity: ".concat(error.message), error);
83
+ throw error;
84
+ }
85
+ return [2 /*return*/];
86
+ });
87
+ });
88
+ };
89
+ /**
90
+ * Restore identity from trapdoor
91
+ */
92
+ ZkProofConnector.prototype.restoreIdentity = function (trapdoor) {
93
+ return __awaiter(this, void 0, void 0, function () {
94
+ var identity, commitment;
95
+ return __generator(this, function (_a) {
96
+ try {
97
+ identity = new Identity(trapdoor);
98
+ commitment = identity.commitment.toString();
99
+ // Cache the identity
100
+ this.identityCache.set(commitment, identity);
101
+ return [2 /*return*/, {
102
+ commitment: commitment,
103
+ trapdoor: identity.trapdoor.toString(),
104
+ nullifier: identity.nullifier.toString(),
105
+ createdAt: Date.now(),
106
+ }];
107
+ }
108
+ catch (error) {
109
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "ZK_IDENTITY_RESTORE_FAILED", "Failed to restore ZK identity: ".concat(error.message), error);
110
+ throw error;
111
+ }
112
+ return [2 /*return*/];
113
+ });
114
+ });
115
+ };
116
+ /**
117
+ * Generate Gun credentials from ZK identity
118
+ */
119
+ ZkProofConnector.prototype.generateCredentials = function (identityData) {
120
+ return __awaiter(this, void 0, void 0, function () {
121
+ var username, password, gunPair, error_1;
122
+ return __generator(this, function (_a) {
123
+ switch (_a.label) {
124
+ case 0:
125
+ _a.trys.push([0, 2, , 3]);
126
+ username = "zk_".concat(identityData.commitment.slice(0, 16));
127
+ password = ethers.keccak256(ethers.toUtf8Bytes("".concat(identityData.trapdoor, "_").concat(identityData.nullifier)));
128
+ return [4 /*yield*/, derive(password, username, {
129
+ includeP256: true,
130
+ })];
131
+ case 1:
132
+ gunPair = _a.sent();
133
+ // Cache credential
134
+ this.credentialCache.set(identityData.commitment, {
135
+ commitment: identityData.commitment,
136
+ gunPair: gunPair,
137
+ createdAt: identityData.createdAt,
138
+ });
139
+ return [2 /*return*/, gunPair];
140
+ case 2:
141
+ error_1 = _a.sent();
142
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "ZK_CREDENTIAL_GENERATION_FAILED", "Failed to generate credentials from ZK identity: ".concat(error_1.message), error_1);
143
+ throw error_1;
144
+ case 3: return [2 /*return*/];
145
+ }
146
+ });
147
+ });
148
+ };
149
+ /**
150
+ * Get or create a Semaphore group
151
+ */
152
+ ZkProofConnector.prototype.getOrCreateGroup = function (groupId) {
153
+ if (groupId === void 0) { groupId = "default"; }
154
+ if (!this.groups.has(groupId)) {
155
+ // Convert string groupId to BigNumber using keccak256 hash
156
+ var groupIdHash = ethers.keccak256(ethers.toUtf8Bytes(groupId));
157
+ var groupIdNumber = BigInt(groupIdHash);
158
+ this.groups.set(groupId, new Group(groupIdNumber));
159
+ }
160
+ return this.groups.get(groupId);
161
+ };
162
+ /**
163
+ * Add identity to a group
164
+ */
165
+ ZkProofConnector.prototype.addToGroup = function (commitment, groupId) {
166
+ if (groupId === void 0) { groupId = "default"; }
167
+ var group = this.getOrCreateGroup(groupId);
168
+ group.addMember(BigInt(commitment));
169
+ };
170
+ /**
171
+ * Generate a Semaphore proof
172
+ */
173
+ ZkProofConnector.prototype.generateProof = function (identityData_1) {
174
+ return __awaiter(this, arguments, void 0, function (identityData, options) {
175
+ var groupId, messageString, scopeString, messageHash, message, scopeHash, scope, identity, group, fullProof, error_2;
176
+ if (options === void 0) { options = {}; }
177
+ return __generator(this, function (_a) {
178
+ switch (_a.label) {
179
+ case 0:
180
+ _a.trys.push([0, 2, , 3]);
181
+ groupId = options.groupId || "default";
182
+ messageString = options.message || "authenticate";
183
+ scopeString = options.scope || "shogun-auth";
184
+ messageHash = ethers.keccak256(ethers.toUtf8Bytes(messageString));
185
+ message = BigInt(messageHash);
186
+ scopeHash = ethers.keccak256(ethers.toUtf8Bytes(scopeString));
187
+ scope = BigInt(scopeHash);
188
+ identity = this.identityCache.get(identityData.commitment);
189
+ if (!identity && identityData.trapdoor) {
190
+ identity = new Identity(identityData.trapdoor);
191
+ this.identityCache.set(identityData.commitment, identity);
192
+ }
193
+ if (!identity) {
194
+ throw new Error("Identity not found and cannot be reconstructed");
195
+ }
196
+ group = this.getOrCreateGroup(groupId);
197
+ // Add identity to group if not already added
198
+ if (group.indexOf(identity.commitment) === -1) {
199
+ group.addMember(identity.commitment);
200
+ }
201
+ return [4 /*yield*/, generateProof(identity, group, message, scope)];
202
+ case 1:
203
+ fullProof = _a.sent();
204
+ return [2 /*return*/, {
205
+ merkleTreeRoot: fullProof.merkleTreeRoot.toString(),
206
+ nullifierHash: fullProof.nullifierHash.toString(),
207
+ signal: fullProof.signal.toString(),
208
+ externalNullifier: fullProof.externalNullifier.toString(),
209
+ proof: fullProof.proof.map(function (p) { return p.toString(); }),
210
+ }];
211
+ case 2:
212
+ error_2 = _a.sent();
213
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "ZK_PROOF_GENERATION_FAILED", "Failed to generate ZK proof: ".concat(error_2.message), error_2);
214
+ throw error_2;
215
+ case 3: return [2 /*return*/];
216
+ }
217
+ });
218
+ });
219
+ };
220
+ /**
221
+ * Verify a Semaphore proof
222
+ */
223
+ ZkProofConnector.prototype.verifyProof = function (proof_1) {
224
+ return __awaiter(this, arguments, void 0, function (proof, treeDepth) {
225
+ var verified, error_3;
226
+ if (treeDepth === void 0) { treeDepth = 20; }
227
+ return __generator(this, function (_a) {
228
+ switch (_a.label) {
229
+ case 0:
230
+ _a.trys.push([0, 2, , 3]);
231
+ return [4 /*yield*/, verifyProof(proof, treeDepth)];
232
+ case 1:
233
+ verified = _a.sent();
234
+ return [2 /*return*/, {
235
+ success: true,
236
+ verified: verified,
237
+ }];
238
+ case 2:
239
+ error_3 = _a.sent();
240
+ ErrorHandler.handle(ErrorType.ENCRYPTION, "ZK_PROOF_VERIFICATION_FAILED", "Failed to verify ZK proof: ".concat(error_3.message), error_3);
241
+ return [2 /*return*/, {
242
+ success: false,
243
+ verified: false,
244
+ error: error_3.message,
245
+ }];
246
+ case 3: return [2 /*return*/];
247
+ }
248
+ });
249
+ });
250
+ };
251
+ /**
252
+ * Get cached credential by commitment
253
+ */
254
+ ZkProofConnector.prototype.getCredential = function (commitment) {
255
+ return this.credentialCache.get(commitment);
256
+ };
257
+ /**
258
+ * Clear all caches
259
+ */
260
+ ZkProofConnector.prototype.cleanup = function () {
261
+ this.identityCache.clear();
262
+ this.credentialCache.clear();
263
+ this.groups.clear();
264
+ };
265
+ return ZkProofConnector;
266
+ }());
267
+ export { ZkProofConnector };