@renown/sdk 6.0.0-dev.6 → 6.0.0-dev.61

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 (141) hide show
  1. package/dist/src/common.d.ts +14 -8
  2. package/dist/src/common.d.ts.map +1 -1
  3. package/dist/src/common.js +35 -27
  4. package/dist/src/common.js.map +1 -1
  5. package/dist/src/crypto/browser-key-storage.d.ts +4 -2
  6. package/dist/src/crypto/browser-key-storage.d.ts.map +1 -1
  7. package/dist/src/crypto/browser-key-storage.js +54 -51
  8. package/dist/src/crypto/browser-key-storage.js.map +1 -1
  9. package/dist/src/crypto/index.d.ts +5 -34
  10. package/dist/src/crypto/index.d.ts.map +1 -1
  11. package/dist/src/crypto/index.js +7 -128
  12. package/dist/src/crypto/index.js.map +1 -1
  13. package/dist/src/crypto/memory-key-storage.d.ts +9 -0
  14. package/dist/src/crypto/memory-key-storage.d.ts.map +1 -0
  15. package/dist/src/crypto/memory-key-storage.js +18 -0
  16. package/dist/src/crypto/memory-key-storage.js.map +1 -0
  17. package/dist/src/crypto/node-key-storage.d.ts +16 -3
  18. package/dist/src/crypto/node-key-storage.d.ts.map +1 -1
  19. package/dist/src/crypto/node-key-storage.js +82 -42
  20. package/dist/src/crypto/node-key-storage.js.map +1 -1
  21. package/dist/src/crypto/renown-crypto-builder.d.ts +11 -0
  22. package/dist/src/crypto/renown-crypto-builder.d.ts.map +1 -0
  23. package/dist/src/crypto/renown-crypto-builder.js +34 -0
  24. package/dist/src/crypto/renown-crypto-builder.js.map +1 -0
  25. package/dist/src/crypto/renown-crypto.d.ts +26 -0
  26. package/dist/src/crypto/renown-crypto.d.ts.map +1 -0
  27. package/dist/src/crypto/renown-crypto.js +56 -0
  28. package/dist/src/crypto/renown-crypto.js.map +1 -0
  29. package/dist/src/crypto/signer.d.ts +61 -8
  30. package/dist/src/crypto/signer.d.ts.map +1 -1
  31. package/dist/src/crypto/signer.js +98 -28
  32. package/dist/src/crypto/signer.js.map +1 -1
  33. package/dist/src/crypto/types.d.ts +27 -0
  34. package/dist/src/crypto/types.d.ts.map +1 -0
  35. package/dist/src/crypto/types.js +2 -0
  36. package/dist/src/crypto/types.js.map +1 -0
  37. package/dist/src/crypto/utils.d.ts +13 -0
  38. package/dist/src/crypto/utils.d.ts.map +1 -0
  39. package/dist/src/crypto/utils.js +39 -0
  40. package/dist/src/crypto/utils.js.map +1 -0
  41. package/dist/src/event/event.browser.d.ts.map +1 -1
  42. package/dist/src/event/event.node.d.ts.map +1 -1
  43. package/dist/src/event/memory.d.ts +8 -0
  44. package/dist/src/event/memory.d.ts.map +1 -0
  45. package/dist/src/event/memory.js +16 -0
  46. package/dist/src/event/memory.js.map +1 -0
  47. package/dist/src/hooks/use-user.d.ts +1 -1
  48. package/dist/src/hooks/use-user.js +1 -1
  49. package/dist/src/index.browser.d.ts +1 -1
  50. package/dist/src/index.browser.d.ts.map +1 -1
  51. package/dist/src/index.browser.js +1 -1
  52. package/dist/src/index.browser.js.map +1 -1
  53. package/dist/src/index.d.ts +3 -1
  54. package/dist/src/index.d.ts.map +1 -1
  55. package/dist/src/index.js +3 -1
  56. package/dist/src/index.js.map +1 -1
  57. package/dist/src/index.node.d.ts +1 -1
  58. package/dist/src/index.node.d.ts.map +1 -1
  59. package/dist/src/index.node.js +1 -1
  60. package/dist/src/index.node.js.map +1 -1
  61. package/dist/src/init.browser.d.ts +51 -2
  62. package/dist/src/init.browser.d.ts.map +1 -1
  63. package/dist/src/init.browser.js +62 -3
  64. package/dist/src/init.browser.js.map +1 -1
  65. package/dist/src/init.node.d.ts +28 -2
  66. package/dist/src/init.node.d.ts.map +1 -1
  67. package/dist/src/init.node.js +26 -4
  68. package/dist/src/init.node.js.map +1 -1
  69. package/dist/src/lib/renown/credential.d.ts +2 -0
  70. package/dist/src/lib/renown/credential.d.ts.map +1 -0
  71. package/dist/src/lib/renown/credential.js +68 -0
  72. package/dist/src/lib/renown/credential.js.map +1 -0
  73. package/dist/src/lib/renown/utils.d.ts +4 -4
  74. package/dist/src/lib/renown/utils.d.ts.map +1 -1
  75. package/dist/src/lib/renown/utils.js +24 -43
  76. package/dist/src/lib/renown/utils.js.map +1 -1
  77. package/dist/src/node.d.ts +5 -1
  78. package/dist/src/node.d.ts.map +1 -1
  79. package/dist/src/node.js +5 -1
  80. package/dist/src/node.js.map +1 -1
  81. package/dist/src/providers/renown-user-provider.d.ts +9 -5
  82. package/dist/src/providers/renown-user-provider.d.ts.map +1 -1
  83. package/dist/src/providers/renown-user-provider.js +25 -30
  84. package/dist/src/providers/renown-user-provider.js.map +1 -1
  85. package/dist/src/renown-builder.d.ts +60 -0
  86. package/dist/src/renown-builder.d.ts.map +1 -0
  87. package/dist/src/renown-builder.js +115 -0
  88. package/dist/src/renown-builder.js.map +1 -0
  89. package/dist/src/storage/common.d.ts +14 -10
  90. package/dist/src/storage/common.d.ts.map +1 -1
  91. package/dist/src/storage/common.js +16 -3
  92. package/dist/src/storage/common.js.map +1 -1
  93. package/dist/src/storage/storage.browser.d.ts +1 -0
  94. package/dist/src/storage/storage.browser.d.ts.map +1 -1
  95. package/dist/src/storage/storage.browser.js +3 -1
  96. package/dist/src/storage/storage.browser.js.map +1 -1
  97. package/dist/src/storage/storage.node.d.ts +1 -1
  98. package/dist/src/storage/storage.node.d.ts.map +1 -1
  99. package/dist/src/storage/storage.node.js +7 -5
  100. package/dist/src/storage/storage.node.js.map +1 -1
  101. package/dist/src/types.d.ts +28 -4
  102. package/dist/src/types.d.ts.map +1 -1
  103. package/dist/src/utils.d.ts +11 -10
  104. package/dist/src/utils.d.ts.map +1 -1
  105. package/dist/src/utils.js +8 -0
  106. package/dist/src/utils.js.map +1 -1
  107. package/dist/{tests → test}/auth.test.d.ts.map +1 -1
  108. package/dist/test/auth.test.js.map +1 -0
  109. package/dist/test/crypto/signer.test.d.ts +2 -0
  110. package/dist/test/crypto/signer.test.d.ts.map +1 -0
  111. package/dist/test/crypto/signer.test.js +184 -0
  112. package/dist/test/crypto/signer.test.js.map +1 -0
  113. package/dist/test/script.test.d.ts +2 -0
  114. package/dist/test/script.test.d.ts.map +1 -0
  115. package/dist/test/script.test.js +144 -0
  116. package/dist/test/script.test.js.map +1 -0
  117. package/dist/test/storage.node.test.d.ts +2 -0
  118. package/dist/test/storage.node.test.d.ts.map +1 -0
  119. package/dist/test/storage.node.test.js +66 -0
  120. package/dist/test/storage.node.test.js.map +1 -0
  121. package/dist/tsconfig.tsbuildinfo +1 -1
  122. package/dist/vitest.config.d.ts +3 -0
  123. package/dist/vitest.config.d.ts.map +1 -0
  124. package/dist/vitest.config.js +7 -0
  125. package/dist/vitest.config.js.map +1 -0
  126. package/package.json +14 -14
  127. package/dist/src/lib/crypto/browser.d.ts +0 -8
  128. package/dist/src/lib/crypto/browser.d.ts.map +0 -1
  129. package/dist/src/lib/crypto/browser.js +0 -73
  130. package/dist/src/lib/crypto/browser.js.map +0 -1
  131. package/dist/src/lib/crypto/index.d.ts +0 -36
  132. package/dist/src/lib/crypto/index.d.ts.map +0 -1
  133. package/dist/src/lib/crypto/index.js +0 -150
  134. package/dist/src/lib/crypto/index.js.map +0 -1
  135. package/dist/src/lib/crypto/node.d.ts +0 -8
  136. package/dist/src/lib/crypto/node.d.ts.map +0 -1
  137. package/dist/src/lib/crypto/node.js +0 -67
  138. package/dist/src/lib/crypto/node.js.map +0 -1
  139. package/dist/tests/auth.test.js.map +0 -1
  140. /package/dist/{tests → test}/auth.test.d.ts +0 -0
  141. /package/dist/{tests → test}/auth.test.js +0 -0
@@ -1,66 +1,106 @@
1
- import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
- import { homedir } from "node:os";
1
+ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync, } from "node:fs";
3
2
  import { dirname, join } from "node:path";
3
+ const ENV_KEY_NAME = "PH_RENOWN_PRIVATE_KEY";
4
+ const DEFAULT_KEYPAIR_PATH = join(process.cwd(), ".ph/.keypair.json");
5
+ /**
6
+ * Key storage that supports:
7
+ * 1. PH_RENOWN_PRIVATE_KEY environment variable (JSON-encoded JwkKeyPair)
8
+ * 2. Custom file path passed via options
9
+ * 3. Falls back to file storage at .ph/.keypair.json in current working directory
10
+ */
4
11
  export class NodeKeyStorage {
5
- static #DEFAULT_DIR = ".vetra";
6
- static #DEFAULT_FILE = "keypair.json";
7
- static #KEY = "keyPair";
8
12
  #filePath;
9
- constructor(filePath) {
10
- if (filePath) {
11
- this.#filePath = filePath;
12
- }
13
- else {
14
- const homeDir = homedir();
15
- const defaultDir = join(homeDir, NodeKeyStorage.#DEFAULT_DIR);
16
- this.#filePath = join(defaultDir, NodeKeyStorage.#DEFAULT_FILE);
17
- }
13
+ #envKeyName;
14
+ #logger;
15
+ static DEFAULT_KEYPAIR_PATH = DEFAULT_KEYPAIR_PATH;
16
+ static ENV_KEY_NAME = ENV_KEY_NAME;
17
+ constructor(filePath, options = {}) {
18
+ this.#filePath = filePath || DEFAULT_KEYPAIR_PATH;
19
+ this.#envKeyName = options.envKeyName || ENV_KEY_NAME;
20
+ this.#logger = options.logger;
18
21
  // Ensure directory exists
19
22
  const dir = dirname(this.#filePath);
20
23
  if (!existsSync(dir)) {
21
24
  mkdirSync(dir, { recursive: true });
22
25
  }
23
- // Initialize file if it doesn't exist
24
- if (!existsSync(this.#filePath)) {
25
- this.#writeData({});
26
- }
27
26
  }
28
- #readData() {
29
- try {
30
- const data = readFileSync(this.#filePath, "utf-8");
31
- return JSON.parse(data);
27
+ loadKeyPair() {
28
+ // First check environment variable
29
+ const envKey = process.env[this.#envKeyName];
30
+ if (envKey) {
31
+ try {
32
+ const keyPairJson = JSON.parse(envKey);
33
+ const keyPair = this.#parseKeyPair(keyPairJson);
34
+ // Validate it has the required structure
35
+ this.#logger?.debug("Loaded keypair from environment variable");
36
+ return Promise.resolve(keyPair);
37
+ }
38
+ catch (e) {
39
+ throw new Error(`Failed to parse ${this.#envKeyName}: ${e instanceof Error ? e.message : String(e)}`, {
40
+ cause: e,
41
+ });
42
+ }
32
43
  }
33
- catch (error) {
34
- // If file is corrupted or doesn't exist, return empty object
35
- return {};
44
+ // Fall back to file storage
45
+ return Promise.resolve(this.#loadFromFile());
46
+ }
47
+ async saveKeyPair(keyPair) {
48
+ // Don't save if using env var
49
+ if (process.env[this.#envKeyName]) {
50
+ return;
36
51
  }
52
+ // Save to file
53
+ this.#saveToFile(keyPair);
54
+ return Promise.resolve();
37
55
  }
38
- #writeData(data) {
39
- try {
40
- writeFileSync(this.#filePath, JSON.stringify(data, null, 2), "utf-8");
56
+ removeKeyPair() {
57
+ if (process.env[this.#envKeyName]) {
58
+ delete process.env[this.#envKeyName];
41
59
  }
42
- catch (error) {
43
- throw new Error(`Failed to write key pair data: ${error}`);
60
+ if (existsSync(this.#filePath)) {
61
+ unlinkSync(this.#filePath);
44
62
  }
63
+ return Promise.resolve();
45
64
  }
46
- async saveKeyPair(keyPair) {
65
+ #loadFromFile() {
47
66
  try {
48
- const data = this.#readData();
49
- data[NodeKeyStorage.#KEY] = keyPair;
50
- this.#writeData(data);
67
+ if (!existsSync(this.#filePath)) {
68
+ return undefined;
69
+ }
70
+ const data = readFileSync(this.#filePath, "utf-8");
71
+ const parsed = JSON.parse(data);
72
+ const keyPair = this.#parseKeyPair(parsed);
73
+ this.#logger?.debug(`Loaded keypair from ${this.#filePath}`);
74
+ return keyPair;
51
75
  }
52
- catch (error) {
53
- throw new Error(`Failed to save key pair: ${error}`);
76
+ catch (e) {
77
+ throw new Error(`Failed to parse ${this.#filePath}: ${e instanceof Error ? e.message : String(e)}`, {
78
+ cause: e,
79
+ });
54
80
  }
55
81
  }
56
- async loadKeyPair() {
57
- try {
58
- const data = this.#readData();
59
- const keyPair = data[NodeKeyStorage.#KEY];
82
+ #saveToFile(keyPair) {
83
+ const data = { keyPair };
84
+ writeFileSync(this.#filePath, JSON.stringify(data, null, 2), "utf-8");
85
+ this.#logger?.debug(`Saved keypair to ${this.#filePath}`);
86
+ }
87
+ #parseKeyPair(json) {
88
+ if (typeof json !== "object") {
89
+ throw new Error("Invalid keyPair format:" + JSON.stringify(json));
90
+ }
91
+ const object = json;
92
+ let keyPair;
93
+ if ("keyPair" in object) {
94
+ keyPair = object.keyPair;
95
+ }
96
+ else {
97
+ keyPair = object;
98
+ }
99
+ if ("publicKey" in keyPair && "privateKey" in keyPair) {
60
100
  return keyPair;
61
101
  }
62
- catch (error) {
63
- throw new Error(`Failed to load key pair: ${error}`);
102
+ else {
103
+ throw new Error("Invalid keyPair format:" + JSON.stringify(json));
64
104
  }
65
105
  }
66
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-key-storage.js","sourceRoot":"","sources":["../../../src/crypto/node-key-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,MAAM,OAAO,cAAc;IACzB,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;IAC/B,MAAM,CAAC,aAAa,GAAG,cAAc,CAAC;IACtC,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC;IAExB,SAAS,CAAS;IAElB,YAAY,QAAiB;QAC3B,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;QAClE,CAAC;QAED,0BAA0B;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,sCAAsC;QACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,SAAS;QACP,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,6DAA6D;YAC7D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAA6B;QACtC,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAA2B,CAAC;YACpE,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC"}
1
+ {"version":3,"file":"node-key-storage.js","sourceRoot":"","sources":["../../../src/crypto/node-key-storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { RenownCrypto } from "./renown-crypto.js";
2
+ import type { JsonWebKeyPairStorage } from "./types.js";
3
+ export declare class RenownCryptoBuilder {
4
+ #private;
5
+ private keyPairStorage?;
6
+ private subtleCrypto?;
7
+ withKeyPairStorage(storage: JsonWebKeyPairStorage): this;
8
+ withSubtleCrypto(crypto: SubtleCrypto): this;
9
+ build(): Promise<RenownCrypto>;
10
+ }
11
+ //# sourceMappingURL=renown-crypto-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renown-crypto-builder.d.ts","sourceRoot":"","sources":["../../../src/crypto/renown-crypto-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAQxD,qBAAa,mBAAmB;;IAC9B,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,YAAY,CAAC,CAAe;IAEpC,kBAAkB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAKxD,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAKtC,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC;CA+BrC"}
@@ -0,0 +1,34 @@
1
+ import { RenownCrypto } from "./renown-crypto.js";
2
+ import { exportKeyPair, generateKeyPair, importKeyPair, parseDid, } from "./utils.js";
3
+ export class RenownCryptoBuilder {
4
+ keyPairStorage;
5
+ subtleCrypto;
6
+ withKeyPairStorage(storage) {
7
+ this.keyPairStorage = storage;
8
+ return this;
9
+ }
10
+ withSubtleCrypto(crypto) {
11
+ this.subtleCrypto = crypto;
12
+ return this;
13
+ }
14
+ async build() {
15
+ if (!this.keyPairStorage) {
16
+ throw new Error("KeyPairStorage is required. Use withKeyPairStorage() to set it.");
17
+ }
18
+ const subtleCrypto = this.subtleCrypto ?? globalThis.crypto.subtle;
19
+ const keyPair = await this.#initializeKeyPair(subtleCrypto, this.keyPairStorage);
20
+ const did = await parseDid(keyPair, subtleCrypto);
21
+ return new RenownCrypto(this.keyPairStorage, subtleCrypto, keyPair, did);
22
+ }
23
+ async #initializeKeyPair(subtleCrypto, keyPairStorage) {
24
+ const loadedKeyPair = await keyPairStorage.loadKeyPair();
25
+ if (loadedKeyPair) {
26
+ return importKeyPair(loadedKeyPair, subtleCrypto);
27
+ }
28
+ const keyPair = await generateKeyPair(subtleCrypto);
29
+ const exported = await exportKeyPair(keyPair, subtleCrypto);
30
+ await keyPairStorage.saveKeyPair(exported);
31
+ return keyPair;
32
+ }
33
+ }
34
+ //# sourceMappingURL=renown-crypto-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renown-crypto-builder.js","sourceRoot":"","sources":["../../../src/crypto/renown-crypto-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EACb,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,mBAAmB;IACtB,cAAc,CAAyB;IACvC,YAAY,CAAgB;IAEpC,kBAAkB,CAAC,OAA8B;QAC/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,MAAoB;QACnC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;QACnE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAC3C,YAAY,EACZ,IAAI,CAAC,cAAc,CACpB,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAElD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,YAA0B,EAC1B,cAAqC;QAErC,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QACzD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC5D,MAAM,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import type { Issuer } from "did-jwt-vc";
2
+ import type { CreateBearerTokenOptions } from "../types.js";
3
+ import type { DID, IRenownCrypto, JsonWebKeyPairStorage } from "./types.js";
4
+ export declare class RenownCrypto implements IRenownCrypto {
5
+ #private;
6
+ readonly did: DID;
7
+ static algorithm: EcKeyAlgorithm;
8
+ static signAlgorithm: {
9
+ name: string;
10
+ namedCurve: string;
11
+ hash: string;
12
+ };
13
+ constructor(keyPairStorage: JsonWebKeyPairStorage, crypto: SubtleCrypto, keyPair: CryptoKeyPair, did: DID);
14
+ get publicKey(): CryptoKey;
15
+ getBearerToken(address: string | undefined, options?: CreateBearerTokenOptions): Promise<string>;
16
+ removeDid(): Promise<void>;
17
+ sign(data: Uint8Array | string): Promise<Uint8Array>;
18
+ verify(data: Uint8Array, signature: Uint8Array): Promise<boolean>;
19
+ get issuer(): Issuer;
20
+ }
21
+ /**
22
+ * @deprecated Use RenownCrypto instead
23
+ */
24
+ export declare class ConnectCrypto extends RenownCrypto {
25
+ }
26
+ //# sourceMappingURL=renown-crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renown-crypto.d.ts","sourceRoot":"","sources":["../../../src/crypto/renown-crypto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,GAAG,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAM5E,qBAAa,YAAa,YAAW,aAAa;;IAKhD,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAElB,MAAM,CAAC,SAAS,iBAAmB;IACnC,MAAM,CAAC,aAAa;;;;MAAwB;gBAG1C,cAAc,EAAE,qBAAqB,EACrC,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,GAAG;IAQV,IAAI,SAAS,cAEZ;IAEK,cAAc,CAClB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,MAAM,CAAC;IAUZ,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1B,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAapD,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IASvE,IAAI,MAAM,IAAI,MAAM,CAWnB;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;CAAG"}
@@ -0,0 +1,56 @@
1
+ import { bytesToBase64url } from "did-jwt";
2
+ import { fromString } from "uint8arrays";
3
+ import { createAuthBearerToken } from "../utils.js";
4
+ import { ECDSA_ALGORITHM, ECDSA_SIGN_ALGORITHM } from "./utils.js";
5
+ const RENOWN_NETWORK_ID = "eip155";
6
+ const RENOWN_CHAIN_ID = 1;
7
+ export class RenownCrypto {
8
+ #subtleCrypto;
9
+ #keyPair;
10
+ #keyPairStorage;
11
+ did;
12
+ static algorithm = ECDSA_ALGORITHM;
13
+ static signAlgorithm = ECDSA_SIGN_ALGORITHM;
14
+ constructor(keyPairStorage, crypto, keyPair, did) {
15
+ this.#keyPairStorage = keyPairStorage;
16
+ this.#subtleCrypto = crypto;
17
+ this.#keyPair = keyPair;
18
+ this.did = did;
19
+ }
20
+ get publicKey() {
21
+ return this.#keyPair.publicKey;
22
+ }
23
+ async getBearerToken(address, options) {
24
+ return await createAuthBearerToken(Number(RENOWN_CHAIN_ID), RENOWN_NETWORK_ID, address || this.did, this.issuer, options);
25
+ }
26
+ async removeDid() {
27
+ await this.#keyPairStorage.removeKeyPair();
28
+ }
29
+ #stringToBytes(s) {
30
+ return fromString(s, "utf-8");
31
+ }
32
+ async sign(data) {
33
+ const dataBytes = typeof data === "string" ? this.#stringToBytes(data) : data;
34
+ const arrayBuffer = await this.#subtleCrypto.sign(RenownCrypto.signAlgorithm, this.#keyPair.privateKey, dataBytes.buffer);
35
+ return new Uint8Array(arrayBuffer);
36
+ }
37
+ async verify(data, signature) {
38
+ return this.#subtleCrypto.verify({ name: "ECDSA", hash: "SHA-256" }, this.#keyPair.publicKey, signature.buffer, data.buffer);
39
+ }
40
+ get issuer() {
41
+ return {
42
+ did: this.did,
43
+ signer: async (data) => {
44
+ const signature = await this.sign(typeof data === "string" ? new TextEncoder().encode(data) : data);
45
+ return bytesToBase64url(signature);
46
+ },
47
+ alg: "ES256",
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * @deprecated Use RenownCrypto instead
53
+ */
54
+ export class ConnectCrypto extends RenownCrypto {
55
+ }
56
+ //# sourceMappingURL=renown-crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renown-crypto.js","sourceRoot":"","sources":["../../../src/crypto/renown-crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEnE,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,MAAM,OAAO,YAAY;IACvB,aAAa,CAAe;IAC5B,QAAQ,CAAgB;IACxB,eAAe,CAAwB;IAE9B,GAAG,CAAM;IAElB,MAAM,CAAC,SAAS,GAAG,eAAe,CAAC;IACnC,MAAM,CAAC,aAAa,GAAG,oBAAoB,CAAC;IAE5C,YACE,cAAqC,EACrC,MAAoB,EACpB,OAAsB,EACtB,GAAQ;QAER,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,OAA2B,EAC3B,OAAkC;QAElC,OAAO,MAAM,qBAAqB,CAChC,MAAM,CAAC,eAAe,CAAC,EACvB,iBAAiB,EACjB,OAAO,IAAI,IAAI,CAAC,GAAG,EACnB,IAAI,CAAC,MAAM,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,CAAS;QACtB,OAAO,UAAU,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAyB;QAClC,MAAM,SAAS,GACb,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAC/C,YAAY,CAAC,aAAa,EAC1B,IAAI,CAAC,QAAQ,CAAC,UAAU,EACxB,SAAS,CAAC,MAAqB,CAChC,CAAC;QAEF,OAAO,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAgB,EAAE,SAAqB;QAClD,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAC9B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,EACvB,SAAS,CAAC,MAAqB,EAC/B,IAAI,CAAC,MAAqB,CAC3B,CAAC;IACJ,CAAC;IAED,IAAI,MAAM;QACR,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,MAAM,EAAE,KAAK,EAAE,IAAyB,EAAE,EAAE;gBAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CACjE,CAAC;gBACF,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACrC,CAAC;YACD,GAAG,EAAE,OAAO;SACb,CAAC;IACJ,CAAC;;AAGH;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,YAAY;CAAG"}
@@ -1,13 +1,38 @@
1
- import type { Action, ISigner, Signature, SignatureVerificationHandler } from "document-model";
2
- import type { IConnectCrypto } from "./index.js";
3
- export declare class ConnectCryptoSigner implements ISigner {
4
- private readonly connectCrypto;
5
- private cachedPublicKey;
6
- constructor(connectCrypto: IConnectCrypto);
7
- publicKey(): Promise<JsonWebKey>;
1
+ import type { Action, AppActionSigner, ISigner, Signature, SignatureVerificationHandler, UserActionSigner } from "document-model";
2
+ import type { IRenownCrypto } from "./index.js";
3
+ export declare class InvalidSignatureError extends Error {
4
+ constructor();
5
+ }
6
+ export declare class RenownCryptoSigner implements ISigner {
7
+ private readonly crypto;
8
+ private readonly appName;
9
+ user?: UserActionSigner | undefined;
10
+ readonly app: AppActionSigner;
11
+ constructor(crypto: IRenownCrypto, appName: string, user?: UserActionSigner | undefined);
12
+ get publicKey(): CryptoKey;
8
13
  sign(data: Uint8Array): Promise<Uint8Array>;
9
14
  verify(data: Uint8Array, signature: Uint8Array): Promise<void>;
10
15
  signAction(action: Action, abortSignal?: AbortSignal): Promise<Signature>;
16
+ /**
17
+ * Signs an action including a predicted resulting state hash.
18
+ *
19
+ * The resulting hash is packed into the signature tuple's 4th element (index 3)
20
+ * using the format: `${prevStateHash}:${resultingStateHash}`
21
+ *
22
+ * This allows offline verification of documents without reducer logic:
23
+ * - Verifier can check that the signature is valid for the claimed resulting state
24
+ * - Verifier can compare claimed resulting state to actual operation.hash
25
+ *
26
+ * @param action - The action to sign
27
+ * @param resultingStateHash - The predicted hash of document state AFTER this action runs
28
+ * @param abortSignal - Optional abort signal
29
+ * @returns A Signature tuple with the resulting hash encoded in element [3]
30
+ */
31
+ signActionWithResultingState(action: Action, resultingStateHash: string, abortSignal?: AbortSignal): Promise<Signature>;
32
+ /**
33
+ * Internal signing implementation shared by signAction and signActionWithResultingState.
34
+ */
35
+ private _signAction;
11
36
  private hashAction;
12
37
  private buildSignatureMessage;
13
38
  private arrayBufferToHex;
@@ -15,7 +40,35 @@ export declare class ConnectCryptoSigner implements ISigner {
15
40
  }
16
41
  /**
17
42
  * Creates a signature verification handler that verifies signatures using the Web Crypto API.
18
- * The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the ConnectCrypto signing algorithm.
43
+ * The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the RenownCrypto signing algorithm.
19
44
  */
20
45
  export declare function createSignatureVerifier(): SignatureVerificationHandler;
46
+ /**
47
+ * Parses the hash field (element [3]) from a signature tuple.
48
+ *
49
+ * Supports two formats:
50
+ * - Old format: just `prevStateHash` (no colon)
51
+ * - New format: `prevStateHash:resultingStateHash` (colon-separated)
52
+ *
53
+ * @param hashField - The 4th element of a Signature tuple
54
+ * @returns Object with prevStateHash and optional resultingStateHash
55
+ */
56
+ export declare function parseSignatureHashField(hashField: string): {
57
+ prevStateHash: string;
58
+ resultingStateHash: string | undefined;
59
+ };
60
+ /**
61
+ * Extracts the resulting state hash from a signature, if present.
62
+ *
63
+ * @param signature - A Signature tuple
64
+ * @returns The resulting state hash, or undefined if not present
65
+ */
66
+ export declare function extractResultingHashFromSignature(signature: Signature): string | undefined;
67
+ /**
68
+ * Checks if a signature includes a resulting state hash.
69
+ *
70
+ * @param signature - A Signature tuple
71
+ * @returns true if the signature includes a resulting state hash
72
+ */
73
+ export declare function signatureHasResultingHash(signature: Signature): boolean;
21
74
  //# sourceMappingURL=signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,OAAO,EAEP,SAAS,EACT,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,mBAAoB,YAAW,OAAO;IAGrC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,eAAe,CAAyB;gBAEnB,aAAa,EAAE,cAAc;IAEpD,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IAgBhC,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3C,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D,UAAU,CACd,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,SAAS,CAAC;YAqCP,UAAU;IAYxB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;CAQ5B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,4BAA4B,CAuCtE"}
1
+ {"version":3,"file":"signer.d.ts","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,eAAe,EACf,OAAO,EAEP,SAAS,EACT,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,qBAAsB,SAAQ,KAAK;;CAI/C;AAED,qBAAa,kBAAmB,YAAW,OAAO;IAI9C,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACjB,IAAI,CAAC,EAAE,gBAAgB;IALhC,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC;gBAGX,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,EACzB,IAAI,CAAC,EAAE,gBAAgB,YAAA;IAQhC,IAAI,SAAS,cAEZ;IAEK,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3C,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D,UAAU,CACd,MAAM,EAAE,MAAM,EACd,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,SAAS,CAAC;IAKrB;;;;;;;;;;;;;;OAcG;IACG,4BAA4B,CAChC,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,MAAM,EAC1B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,SAAS,CAAC;IAMrB;;OAEG;YACW,WAAW;YAiCX,UAAU;IAYxB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;CAQ5B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,4BAA4B,CAuCtE;AA+JD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG;IAC1D,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAcA;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,GACnB,MAAM,GAAG,SAAS,CAIpB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAEvE"}
@@ -1,51 +1,78 @@
1
- export class ConnectCryptoSigner {
2
- connectCrypto;
3
- cachedPublicKey;
4
- constructor(connectCrypto) {
5
- this.connectCrypto = connectCrypto;
6
- }
7
- async publicKey() {
8
- if (!this.cachedPublicKey) {
9
- const did = await this.connectCrypto.did();
10
- const keyData = extractKeyFromDid(did);
11
- const cryptoKey = await crypto.subtle.importKey("raw", keyData.buffer, { name: "ECDSA", namedCurve: "P-256" }, true, ["verify"]);
12
- this.cachedPublicKey = await crypto.subtle.exportKey("jwk", cryptoKey);
13
- }
14
- return this.cachedPublicKey;
1
+ export class InvalidSignatureError extends Error {
2
+ constructor() {
3
+ super("Invalid signature");
4
+ }
5
+ }
6
+ export class RenownCryptoSigner {
7
+ crypto;
8
+ appName;
9
+ user;
10
+ app;
11
+ constructor(crypto, appName, user) {
12
+ this.crypto = crypto;
13
+ this.appName = appName;
14
+ this.user = user;
15
+ this.app = {
16
+ key: this.crypto.did,
17
+ name: this.appName,
18
+ };
19
+ }
20
+ get publicKey() {
21
+ return this.crypto.publicKey;
15
22
  }
16
23
  async sign(data) {
17
- return this.connectCrypto.sign(data);
24
+ return this.crypto.sign(data);
18
25
  }
19
26
  async verify(data, signature) {
20
- const did = await this.connectCrypto.did();
21
- const cryptoKey = await importPublicKey(did);
22
- const isValid = await crypto.subtle.verify({ name: "ECDSA", hash: "SHA-256" }, cryptoKey, signature.buffer, data.buffer);
27
+ const isValid = await this.crypto.verify(data, signature);
23
28
  if (!isValid) {
24
- throw new Error("invalid signature");
29
+ throw new InvalidSignatureError();
25
30
  }
26
31
  }
27
32
  async signAction(action, abortSignal) {
33
+ const hashField = action.context?.prevOpHash ?? "";
34
+ return this._signAction(action, hashField, abortSignal);
35
+ }
36
+ /**
37
+ * Signs an action including a predicted resulting state hash.
38
+ *
39
+ * The resulting hash is packed into the signature tuple's 4th element (index 3)
40
+ * using the format: `${prevStateHash}:${resultingStateHash}`
41
+ *
42
+ * This allows offline verification of documents without reducer logic:
43
+ * - Verifier can check that the signature is valid for the claimed resulting state
44
+ * - Verifier can compare claimed resulting state to actual operation.hash
45
+ *
46
+ * @param action - The action to sign
47
+ * @param resultingStateHash - The predicted hash of document state AFTER this action runs
48
+ * @param abortSignal - Optional abort signal
49
+ * @returns A Signature tuple with the resulting hash encoded in element [3]
50
+ */
51
+ async signActionWithResultingState(action, resultingStateHash, abortSignal) {
52
+ const prevStateHash = action.context?.prevOpHash ?? "";
53
+ const hashField = `${prevStateHash}:${resultingStateHash}`;
54
+ return this._signAction(action, hashField, abortSignal);
55
+ }
56
+ /**
57
+ * Internal signing implementation shared by signAction and signActionWithResultingState.
58
+ */
59
+ async _signAction(action, hashField, abortSignal) {
28
60
  if (abortSignal?.aborted) {
29
61
  throw new Error("Signing aborted");
30
62
  }
31
63
  const timestamp = (new Date().getTime() / 1000).toFixed(0);
32
- const did = await this.connectCrypto.did();
33
- if (abortSignal?.aborted) {
34
- throw new Error("Signing aborted");
35
- }
36
64
  const hash = await this.hashAction(action);
37
65
  if (abortSignal?.aborted) {
38
66
  throw new Error("Signing aborted");
39
67
  }
40
- const prevStateHash = action.context?.prevOpHash ?? "";
41
68
  const params = [
42
69
  timestamp,
43
- did,
70
+ this.crypto.did,
44
71
  hash,
45
- prevStateHash,
72
+ hashField,
46
73
  ];
47
74
  const message = this.buildSignatureMessage(params);
48
- const signatureBytes = await this.connectCrypto.sign(message);
75
+ const signatureBytes = await this.crypto.sign(message);
49
76
  const signatureHex = `0x${this.arrayBufferToHex(signatureBytes)}`;
50
77
  if (abortSignal?.aborted) {
51
78
  throw new Error("Signing aborted");
@@ -86,7 +113,7 @@ export class ConnectCryptoSigner {
86
113
  }
87
114
  /**
88
115
  * Creates a signature verification handler that verifies signatures using the Web Crypto API.
89
- * The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the ConnectCrypto signing algorithm.
116
+ * The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the RenownCrypto signing algorithm.
90
117
  */
91
118
  export function createSignatureVerifier() {
92
119
  return async (operation, publicKey) => {
@@ -233,4 +260,47 @@ function bigIntToBytes(n, length) {
233
260
  }
234
261
  return bytes;
235
262
  }
263
+ /**
264
+ * Parses the hash field (element [3]) from a signature tuple.
265
+ *
266
+ * Supports two formats:
267
+ * - Old format: just `prevStateHash` (no colon)
268
+ * - New format: `prevStateHash:resultingStateHash` (colon-separated)
269
+ *
270
+ * @param hashField - The 4th element of a Signature tuple
271
+ * @returns Object with prevStateHash and optional resultingStateHash
272
+ */
273
+ export function parseSignatureHashField(hashField) {
274
+ const colonIndex = hashField.indexOf(":");
275
+ if (colonIndex === -1) {
276
+ return {
277
+ prevStateHash: hashField,
278
+ resultingStateHash: undefined,
279
+ };
280
+ }
281
+ return {
282
+ prevStateHash: hashField.substring(0, colonIndex),
283
+ resultingStateHash: hashField.substring(colonIndex + 1),
284
+ };
285
+ }
286
+ /**
287
+ * Extracts the resulting state hash from a signature, if present.
288
+ *
289
+ * @param signature - A Signature tuple
290
+ * @returns The resulting state hash, or undefined if not present
291
+ */
292
+ export function extractResultingHashFromSignature(signature) {
293
+ const hashField = signature[3];
294
+ const { resultingStateHash } = parseSignatureHashField(hashField);
295
+ return resultingStateHash;
296
+ }
297
+ /**
298
+ * Checks if a signature includes a resulting state hash.
299
+ *
300
+ * @param signature - A Signature tuple
301
+ * @returns true if the signature includes a resulting state hash
302
+ */
303
+ export function signatureHasResultingHash(signature) {
304
+ return extractResultingHashFromSignature(signature) !== undefined;
305
+ }
236
306
  //# sourceMappingURL=signer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"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"}