shogun-core 6.2.4 → 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 +138979 -146789
  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 -392
  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,432 @@
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 { Web3Connector } from "./web3Connector.js";
38
+ import { ethers } from "ethers";
39
+ import derive from "../../gundb/derive.js";
40
+ /**
41
+ * Web3 Signer - Provides oneshot signing functionality
42
+ * Similar to webauthn.js but for Web3/MetaMask
43
+ * CONSISTENT with normal Web3 approach
44
+ */
45
+ var Web3Signer = /** @class */ (function () {
46
+ function Web3Signer(web3Connector) {
47
+ this.credentials = new Map();
48
+ this.MESSAGE_TO_SIGN = "I Love Shogun!"; // Same as normal approach
49
+ this.web3Connector = web3Connector || new Web3Connector();
50
+ }
51
+ /**
52
+ * Creates a new Web3 signing credential
53
+ * CONSISTENT with normal Web3 approach
54
+ */
55
+ Web3Signer.prototype.createSigningCredential = function (address) {
56
+ return __awaiter(this, void 0, void 0, function () {
57
+ var validAddress, signature, username, password, signingCredential, error_1;
58
+ return __generator(this, function (_a) {
59
+ switch (_a.label) {
60
+ case 0:
61
+ _a.trys.push([0, 2, , 3]);
62
+ validAddress = ethers.getAddress(address.toLowerCase());
63
+ return [4 /*yield*/, this.requestSignature(validAddress)];
64
+ case 1:
65
+ signature = _a.sent();
66
+ username = "".concat(validAddress.toLowerCase());
67
+ password = ethers.keccak256(ethers.toUtf8Bytes("".concat(validAddress.toLowerCase(), ":shogun-web3")));
68
+ signingCredential = {
69
+ address: validAddress,
70
+ signature: signature,
71
+ message: this.MESSAGE_TO_SIGN,
72
+ username: username,
73
+ password: password,
74
+ };
75
+ // Store credential for later use
76
+ this.credentials.set(validAddress.toLowerCase(), signingCredential);
77
+ return [2 /*return*/, signingCredential];
78
+ case 2:
79
+ error_1 = _a.sent();
80
+ console.error("Error creating Web3 signing credential:", error_1);
81
+ throw new Error("Failed to create Web3 signing credential: ".concat(error_1.message));
82
+ case 3: return [2 /*return*/];
83
+ }
84
+ });
85
+ });
86
+ };
87
+ /**
88
+ * Request signature from MetaMask
89
+ * Uses the same approach as normal Web3Connector
90
+ */
91
+ Web3Signer.prototype.requestSignature = function (address) {
92
+ return __awaiter(this, void 0, void 0, function () {
93
+ var signer, signerAddress, signature, error_2;
94
+ return __generator(this, function (_a) {
95
+ switch (_a.label) {
96
+ case 0:
97
+ _a.trys.push([0, 4, , 5]);
98
+ return [4 /*yield*/, this.web3Connector.getSigner()];
99
+ case 1:
100
+ signer = _a.sent();
101
+ return [4 /*yield*/, signer.getAddress()];
102
+ case 2:
103
+ signerAddress = _a.sent();
104
+ if (signerAddress.toLowerCase() !== address.toLowerCase()) {
105
+ throw new Error("Signer address (".concat(signerAddress, ") does not match expected address (").concat(address, ")"));
106
+ }
107
+ return [4 /*yield*/, signer.signMessage(this.MESSAGE_TO_SIGN)];
108
+ case 3:
109
+ signature = _a.sent();
110
+ return [2 /*return*/, signature];
111
+ case 4:
112
+ error_2 = _a.sent();
113
+ console.error("Failed to request signature:", error_2);
114
+ throw error_2;
115
+ case 5: return [2 /*return*/];
116
+ }
117
+ });
118
+ });
119
+ };
120
+ /**
121
+ * Creates an authenticator function compatible with SEA.sign
122
+ * This is the key function that makes it work like webauthn.js but for Web3
123
+ */
124
+ Web3Signer.prototype.createAuthenticator = function (address) {
125
+ var _this = this;
126
+ var credential = this.credentials.get(address.toLowerCase());
127
+ if (!credential) {
128
+ throw new Error("Credential for address ".concat(address, " not found"));
129
+ }
130
+ return function (data) { return __awaiter(_this, void 0, void 0, function () {
131
+ var signer, signerAddress, dataToSign, signature, error_3;
132
+ return __generator(this, function (_a) {
133
+ switch (_a.label) {
134
+ case 0:
135
+ _a.trys.push([0, 4, , 5]);
136
+ return [4 /*yield*/, this.web3Connector.getSigner()];
137
+ case 1:
138
+ signer = _a.sent();
139
+ return [4 /*yield*/, signer.getAddress()];
140
+ case 2:
141
+ signerAddress = _a.sent();
142
+ if (signerAddress.toLowerCase() !== address.toLowerCase()) {
143
+ throw new Error("Address mismatch during authentication");
144
+ }
145
+ dataToSign = JSON.stringify(data);
146
+ return [4 /*yield*/, signer.signMessage(dataToSign)];
147
+ case 3:
148
+ signature = _a.sent();
149
+ return [2 /*return*/, signature];
150
+ case 4:
151
+ error_3 = _a.sent();
152
+ console.error("Web3 authentication error:", error_3);
153
+ throw error_3;
154
+ case 5: return [2 /*return*/];
155
+ }
156
+ });
157
+ }); };
158
+ };
159
+ /**
160
+ * Creates a derived key pair from Web3 credential
161
+ * CONSISTENT with normal approach: uses password as seed
162
+ */
163
+ Web3Signer.prototype.createDerivedKeyPair = function (address, extra) {
164
+ return __awaiter(this, void 0, void 0, function () {
165
+ return __generator(this, function (_a) {
166
+ // Use the deterministic approach instead of stored credentials
167
+ return [2 /*return*/, this.createDerivedKeyPairFromAddress(address, extra)];
168
+ });
169
+ });
170
+ };
171
+ /**
172
+ * Authenticate with existing pair (for login)
173
+ * This generates the deterministic pair from address and authenticates with GunDB
174
+ * GunDB will recognize the user because the pair is deterministic
175
+ */
176
+ Web3Signer.prototype.authenticateWithExistingPair = function (address, gunInstance) {
177
+ return __awaiter(this, void 0, void 0, function () {
178
+ var derivedPair_1, error_4;
179
+ return __generator(this, function (_a) {
180
+ switch (_a.label) {
181
+ case 0:
182
+ _a.trys.push([0, 2, , 3]);
183
+ console.log("\uD83D\uDD27 Web3Signer - authenticating with deterministic pair for address:", address);
184
+ return [4 /*yield*/, this.createDerivedKeyPairFromAddress(address)];
185
+ case 1:
186
+ derivedPair_1 = _a.sent();
187
+ console.log("\uD83D\uDD27 Web3Signer - deterministic pair created, attempting auth with GunDB");
188
+ return [2 /*return*/, new Promise(function (resolve) {
189
+ // Authenticate directly with GunDB using the deterministic pair
190
+ gunInstance.user().auth(derivedPair_1, function (authAck) {
191
+ if (authAck.err) {
192
+ console.log("\uD83D\uDD27 Web3Signer - auth failed:", authAck.err);
193
+ resolve({ success: false, error: authAck.err });
194
+ }
195
+ else {
196
+ var userPub = authAck.pub;
197
+ console.log("\uD83D\uDD27 Web3Signer - auth successful, userPub:", userPub ? userPub.slice(0, 8) + "..." : "null");
198
+ resolve({ success: true, userPub: userPub });
199
+ }
200
+ });
201
+ })];
202
+ case 2:
203
+ error_4 = _a.sent();
204
+ console.error("Error authenticating with deterministic pair:", error_4);
205
+ return [2 /*return*/, { success: false, error: error_4.message }];
206
+ case 3: return [2 /*return*/];
207
+ }
208
+ });
209
+ });
210
+ };
211
+ /**
212
+ * Creates a derived key pair directly from address (deterministic)
213
+ * This ensures the same pair is generated every time for the same address
214
+ */
215
+ Web3Signer.prototype.createDerivedKeyPairFromAddress = function (address, extra) {
216
+ return __awaiter(this, void 0, void 0, function () {
217
+ var validAddress, password, derivedKeys, error_5;
218
+ return __generator(this, function (_a) {
219
+ switch (_a.label) {
220
+ case 0:
221
+ _a.trys.push([0, 2, , 3]);
222
+ validAddress = ethers.getAddress(address.toLowerCase());
223
+ password = ethers.keccak256(ethers.toUtf8Bytes("".concat(validAddress.toLowerCase(), ":shogun-web3")));
224
+ console.log("\uD83D\uDD27 Web3Signer - generating deterministic pair for address:", validAddress);
225
+ return [4 /*yield*/, derive(password, // Deterministic password from address
226
+ extra, { includeP256: true })];
227
+ case 1:
228
+ derivedKeys = _a.sent();
229
+ return [2 /*return*/, {
230
+ pub: derivedKeys.pub,
231
+ priv: derivedKeys.priv,
232
+ epub: derivedKeys.epub,
233
+ epriv: derivedKeys.epriv,
234
+ }];
235
+ case 2:
236
+ error_5 = _a.sent();
237
+ console.error("Error creating derived key pair from address:", error_5);
238
+ throw error_5;
239
+ case 3: return [2 /*return*/];
240
+ }
241
+ });
242
+ });
243
+ };
244
+ /**
245
+ * Creates a Gun user from Web3 credential
246
+ * This ensures the SAME user is created as with normal approach
247
+ * FIX: Use derived pair instead of username/password for GunDB auth
248
+ */
249
+ Web3Signer.prototype.createGunUser = function (address, gunInstance) {
250
+ return __awaiter(this, void 0, void 0, function () {
251
+ var derivedPair_2, error_6;
252
+ return __generator(this, function (_a) {
253
+ switch (_a.label) {
254
+ case 0:
255
+ _a.trys.push([0, 2, , 3]);
256
+ console.log("\uD83D\uDD27 Web3Signer - creating Gun user with deterministic pair for address:", address);
257
+ return [4 /*yield*/, this.createDerivedKeyPairFromAddress(address)];
258
+ case 1:
259
+ derivedPair_2 = _a.sent();
260
+ return [2 /*return*/, new Promise(function (resolve) {
261
+ // Use the derived pair directly for GunDB auth
262
+ gunInstance.user().create(derivedPair_2, function (ack) {
263
+ if (ack.err) {
264
+ console.log("\uD83D\uDD27 Web3Signer - user creation failed, trying auth:", ack.err);
265
+ // Try to login if user already exists
266
+ gunInstance.user().auth(derivedPair_2, function (authAck) {
267
+ if (authAck.err) {
268
+ console.log("\uD83D\uDD27 Web3Signer - auth also failed:", authAck.err);
269
+ resolve({ success: false, error: authAck.err });
270
+ }
271
+ else {
272
+ var userPub = authAck.pub;
273
+ console.log("\uD83D\uDD27 Web3Signer - auth successful, userPub:", userPub ? userPub.slice(0, 8) + "..." : "null");
274
+ resolve({ success: true, userPub: userPub });
275
+ }
276
+ });
277
+ }
278
+ else {
279
+ console.log("\uD83D\uDD27 Web3Signer - user created successfully, now logging in");
280
+ // User created, now login
281
+ gunInstance.user().auth(derivedPair_2, function (authAck) {
282
+ if (authAck.err) {
283
+ console.log("\uD83D\uDD27 Web3Signer - login after creation failed:", authAck.err);
284
+ resolve({ success: false, error: authAck.err });
285
+ }
286
+ else {
287
+ var userPub = authAck.pub;
288
+ console.log("\uD83D\uDD27 Web3Signer - login successful, userPub:", userPub ? userPub.slice(0, 8) + "..." : "null");
289
+ resolve({ success: true, userPub: userPub });
290
+ }
291
+ });
292
+ }
293
+ });
294
+ })];
295
+ case 2:
296
+ error_6 = _a.sent();
297
+ console.error("Error creating Gun user:", error_6);
298
+ return [2 /*return*/, { success: false, error: error_6.message }];
299
+ case 3: return [2 /*return*/];
300
+ }
301
+ });
302
+ });
303
+ };
304
+ /**
305
+ * Signs data using Web3 + derived keys
306
+ * This provides a hybrid approach: Web3 for user verification + derived keys for actual signing
307
+ * CONSISTENT with normal approach
308
+ */
309
+ Web3Signer.prototype.signWithDerivedKeys = function (data, address, extra) {
310
+ return __awaiter(this, void 0, void 0, function () {
311
+ var authenticator, keyPair, message, messageHash, wallet, signature, seaSignature, error_7;
312
+ return __generator(this, function (_a) {
313
+ switch (_a.label) {
314
+ case 0:
315
+ _a.trys.push([0, 4, , 5]);
316
+ authenticator = this.createAuthenticator(address);
317
+ return [4 /*yield*/, authenticator(data)];
318
+ case 1:
319
+ _a.sent(); // This verifies the user
320
+ return [4 /*yield*/, this.createDerivedKeyPair(address, extra)];
321
+ case 2:
322
+ keyPair = _a.sent();
323
+ message = JSON.stringify(data);
324
+ messageHash = ethers.keccak256(ethers.toUtf8Bytes(message));
325
+ wallet = new ethers.Wallet(keyPair.priv);
326
+ return [4 /*yield*/, wallet.signMessage(message)];
327
+ case 3:
328
+ signature = _a.sent();
329
+ seaSignature = {
330
+ m: message,
331
+ s: signature,
332
+ };
333
+ return [2 /*return*/, "SEA" + JSON.stringify(seaSignature)];
334
+ case 4:
335
+ error_7 = _a.sent();
336
+ console.error("Error signing with derived keys:", error_7);
337
+ throw error_7;
338
+ case 5: return [2 /*return*/];
339
+ }
340
+ });
341
+ });
342
+ };
343
+ /**
344
+ * Get the Gun user public key for a credential
345
+ * This allows checking if the same user would be created
346
+ */
347
+ Web3Signer.prototype.getGunUserPub = function (address) {
348
+ return __awaiter(this, void 0, void 0, function () {
349
+ var derivedPair, error_8;
350
+ return __generator(this, function (_a) {
351
+ switch (_a.label) {
352
+ case 0:
353
+ _a.trys.push([0, 2, , 3]);
354
+ return [4 /*yield*/, this.createDerivedKeyPairFromAddress(address)];
355
+ case 1:
356
+ derivedPair = _a.sent();
357
+ return [2 /*return*/, derivedPair.pub];
358
+ case 2:
359
+ error_8 = _a.sent();
360
+ console.error("Error getting Gun user pub:", error_8);
361
+ return [2 /*return*/, undefined];
362
+ case 3: return [2 /*return*/];
363
+ }
364
+ });
365
+ });
366
+ };
367
+ /**
368
+ * Get the password (for consistency checking)
369
+ */
370
+ Web3Signer.prototype.getPassword = function (address) {
371
+ try {
372
+ // Generate deterministic password from address (same as createSigningCredential)
373
+ var validAddress = ethers.getAddress(address.toLowerCase());
374
+ var password = ethers.keccak256(ethers.toUtf8Bytes("".concat(validAddress.toLowerCase(), ":shogun-web3")));
375
+ return password;
376
+ }
377
+ catch (error) {
378
+ console.error("Error getting password:", error);
379
+ return undefined;
380
+ }
381
+ };
382
+ /**
383
+ * Check if this credential would create the same Gun user as normal approach
384
+ */
385
+ Web3Signer.prototype.verifyConsistency = function (address, expectedUserPub) {
386
+ return __awaiter(this, void 0, void 0, function () {
387
+ var derivedKeys, error_9;
388
+ return __generator(this, function (_a) {
389
+ switch (_a.label) {
390
+ case 0:
391
+ _a.trys.push([0, 2, , 3]);
392
+ return [4 /*yield*/, this.createDerivedKeyPairFromAddress(address)];
393
+ case 1:
394
+ derivedKeys = _a.sent();
395
+ return [2 /*return*/, {
396
+ consistent: expectedUserPub
397
+ ? derivedKeys.pub === expectedUserPub
398
+ : true,
399
+ actualUserPub: derivedKeys.pub,
400
+ expectedUserPub: expectedUserPub,
401
+ }];
402
+ case 2:
403
+ error_9 = _a.sent();
404
+ console.error("Error verifying consistency:", error_9);
405
+ return [2 /*return*/, { consistent: false }];
406
+ case 3: return [2 /*return*/];
407
+ }
408
+ });
409
+ });
410
+ };
411
+ /**
412
+ * Get credential by address
413
+ */
414
+ Web3Signer.prototype.getCredential = function (address) {
415
+ return this.credentials.get(address.toLowerCase());
416
+ };
417
+ /**
418
+ * List all stored credentials
419
+ */
420
+ Web3Signer.prototype.listCredentials = function () {
421
+ return Array.from(this.credentials.values());
422
+ };
423
+ /**
424
+ * Remove a credential
425
+ */
426
+ Web3Signer.prototype.removeCredential = function (address) {
427
+ return this.credentials.delete(address.toLowerCase());
428
+ };
429
+ return Web3Signer;
430
+ }());
431
+ export { Web3Signer };
432
+ export default Web3Signer;
@@ -0,0 +1,3 @@
1
+ export * from "./webauthnPlugin.js";
2
+ export * from "./types.js";
3
+ export * from "./webauthn.js";
@@ -1,14 +1,11 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebAuthnEventType = void 0;
4
1
  /**
5
2
  * WebAuthn event types
6
3
  */
7
- var WebAuthnEventType;
4
+ export var WebAuthnEventType;
8
5
  (function (WebAuthnEventType) {
9
6
  WebAuthnEventType["DEVICE_REGISTERED"] = "deviceRegistered";
10
7
  WebAuthnEventType["DEVICE_REMOVED"] = "deviceRemoved";
11
8
  WebAuthnEventType["AUTHENTICATION_SUCCESS"] = "authenticationSuccess";
12
9
  WebAuthnEventType["AUTHENTICATION_FAILED"] = "authenticationFailed";
13
10
  WebAuthnEventType["ERROR"] = "error";
14
- })(WebAuthnEventType || (exports.WebAuthnEventType = WebAuthnEventType = {}));
11
+ })(WebAuthnEventType || (WebAuthnEventType = {}));