@renown/sdk 6.0.0-dev.4 → 6.0.0-dev.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/common.d.ts +14 -8
- package/dist/src/common.d.ts.map +1 -1
- package/dist/src/common.js +35 -27
- package/dist/src/common.js.map +1 -1
- package/dist/src/crypto/browser-key-storage.d.ts +4 -2
- package/dist/src/crypto/browser-key-storage.d.ts.map +1 -1
- package/dist/src/crypto/browser-key-storage.js +54 -51
- package/dist/src/crypto/browser-key-storage.js.map +1 -1
- package/dist/src/crypto/index.d.ts +5 -34
- package/dist/src/crypto/index.d.ts.map +1 -1
- package/dist/src/crypto/index.js +7 -128
- package/dist/src/crypto/index.js.map +1 -1
- package/dist/src/crypto/memory-key-storage.d.ts +9 -0
- package/dist/src/crypto/memory-key-storage.d.ts.map +1 -0
- package/dist/src/crypto/memory-key-storage.js +18 -0
- package/dist/src/crypto/memory-key-storage.js.map +1 -0
- package/dist/src/crypto/node-key-storage.d.ts +16 -3
- package/dist/src/crypto/node-key-storage.d.ts.map +1 -1
- package/dist/src/crypto/node-key-storage.js +82 -42
- package/dist/src/crypto/node-key-storage.js.map +1 -1
- package/dist/src/crypto/renown-crypto-builder.d.ts +11 -0
- package/dist/src/crypto/renown-crypto-builder.d.ts.map +1 -0
- package/dist/src/crypto/renown-crypto-builder.js +34 -0
- package/dist/src/crypto/renown-crypto-builder.js.map +1 -0
- package/dist/src/crypto/renown-crypto.d.ts +26 -0
- package/dist/src/crypto/renown-crypto.d.ts.map +1 -0
- package/dist/src/crypto/renown-crypto.js +56 -0
- package/dist/src/crypto/renown-crypto.js.map +1 -0
- package/dist/src/crypto/signer.d.ts +13 -8
- package/dist/src/crypto/signer.d.ts.map +1 -1
- package/dist/src/crypto/signer.js +27 -26
- package/dist/src/crypto/signer.js.map +1 -1
- package/dist/src/crypto/types.d.ts +27 -0
- package/dist/src/crypto/types.d.ts.map +1 -0
- package/dist/src/crypto/types.js +2 -0
- package/dist/src/crypto/types.js.map +1 -0
- package/dist/src/crypto/utils.d.ts +13 -0
- package/dist/src/crypto/utils.d.ts.map +1 -0
- package/dist/src/crypto/utils.js +39 -0
- package/dist/src/crypto/utils.js.map +1 -0
- package/dist/src/event/memory.d.ts +8 -0
- package/dist/src/event/memory.d.ts.map +1 -0
- package/dist/src/event/memory.js +16 -0
- package/dist/src/event/memory.js.map +1 -0
- package/dist/src/hooks/use-user.d.ts +1 -1
- package/dist/src/hooks/use-user.js +1 -1
- package/dist/src/index.browser.d.ts +1 -1
- package/dist/src/index.browser.d.ts.map +1 -1
- package/dist/src/index.browser.js +1 -1
- package/dist/src/index.browser.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/index.node.d.ts +1 -1
- package/dist/src/index.node.d.ts.map +1 -1
- package/dist/src/index.node.js +1 -1
- package/dist/src/index.node.js.map +1 -1
- package/dist/src/init.browser.d.ts +51 -2
- package/dist/src/init.browser.d.ts.map +1 -1
- package/dist/src/init.browser.js +62 -3
- package/dist/src/init.browser.js.map +1 -1
- package/dist/src/init.node.d.ts +28 -2
- package/dist/src/init.node.d.ts.map +1 -1
- package/dist/src/init.node.js +26 -4
- package/dist/src/init.node.js.map +1 -1
- package/dist/src/lib/renown/credential.d.ts +2 -0
- package/dist/src/lib/renown/credential.d.ts.map +1 -0
- package/dist/src/lib/renown/credential.js +68 -0
- package/dist/src/lib/renown/credential.js.map +1 -0
- package/dist/src/lib/renown/utils.d.ts +4 -4
- package/dist/src/lib/renown/utils.d.ts.map +1 -1
- package/dist/src/lib/renown/utils.js +24 -43
- package/dist/src/lib/renown/utils.js.map +1 -1
- package/dist/src/node.d.ts +5 -1
- package/dist/src/node.d.ts.map +1 -1
- package/dist/src/node.js +5 -1
- package/dist/src/node.js.map +1 -1
- package/dist/src/providers/renown-user-provider.d.ts +9 -5
- package/dist/src/providers/renown-user-provider.d.ts.map +1 -1
- package/dist/src/providers/renown-user-provider.js +25 -30
- package/dist/src/providers/renown-user-provider.js.map +1 -1
- package/dist/src/renown-builder.d.ts +60 -0
- package/dist/src/renown-builder.d.ts.map +1 -0
- package/dist/src/renown-builder.js +115 -0
- package/dist/src/renown-builder.js.map +1 -0
- package/dist/src/storage/common.d.ts +14 -10
- package/dist/src/storage/common.d.ts.map +1 -1
- package/dist/src/storage/common.js +16 -3
- package/dist/src/storage/common.js.map +1 -1
- package/dist/src/storage/storage.browser.d.ts +1 -0
- package/dist/src/storage/storage.browser.d.ts.map +1 -1
- package/dist/src/storage/storage.browser.js +3 -1
- package/dist/src/storage/storage.browser.js.map +1 -1
- package/dist/src/storage/storage.node.d.ts +1 -1
- package/dist/src/storage/storage.node.d.ts.map +1 -1
- package/dist/src/storage/storage.node.js +7 -5
- package/dist/src/storage/storage.node.js.map +1 -1
- package/dist/src/types.d.ts +28 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +11 -10
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +8 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/{tests → test}/auth.test.d.ts.map +1 -1
- package/dist/test/auth.test.js.map +1 -0
- package/dist/test/script.test.d.ts +2 -0
- package/dist/test/script.test.d.ts.map +1 -0
- package/dist/test/script.test.js +45 -0
- package/dist/test/script.test.js.map +1 -0
- package/dist/test/storage.node.test.d.ts +2 -0
- package/dist/test/storage.node.test.d.ts.map +1 -0
- package/dist/test/storage.node.test.js +66 -0
- package/dist/test/storage.node.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +7 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +5 -5
- package/dist/src/lib/crypto/browser.d.ts +0 -8
- package/dist/src/lib/crypto/browser.d.ts.map +0 -1
- package/dist/src/lib/crypto/browser.js +0 -73
- package/dist/src/lib/crypto/browser.js.map +0 -1
- package/dist/src/lib/crypto/index.d.ts +0 -36
- package/dist/src/lib/crypto/index.d.ts.map +0 -1
- package/dist/src/lib/crypto/index.js +0 -150
- package/dist/src/lib/crypto/index.js.map +0 -1
- package/dist/src/lib/crypto/node.d.ts +0 -8
- package/dist/src/lib/crypto/node.d.ts.map +0 -1
- package/dist/src/lib/crypto/node.js +0 -67
- package/dist/src/lib/crypto/node.js.map +0 -1
- package/dist/tests/auth.test.js.map +0 -1
- /package/dist/{tests → test}/auth.test.d.ts +0 -0
- /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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
56
|
+
removeKeyPair() {
|
|
57
|
+
if (process.env[this.#envKeyName]) {
|
|
58
|
+
delete process.env[this.#envKeyName];
|
|
41
59
|
}
|
|
42
|
-
|
|
43
|
-
|
|
60
|
+
if (existsSync(this.#filePath)) {
|
|
61
|
+
unlinkSync(this.#filePath);
|
|
44
62
|
}
|
|
63
|
+
return Promise.resolve();
|
|
45
64
|
}
|
|
46
|
-
|
|
65
|
+
#loadFromFile() {
|
|
47
66
|
try {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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 (
|
|
53
|
-
throw new Error(`Failed to
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
63
|
-
throw new 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,
|
|
1
|
+
{"version":3,"file":"node-key-storage.js","sourceRoot":"","sources":["../../../src/crypto/node-key-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,EACZ,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAI1C,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACzB,SAAS,CAAS;IAClB,WAAW,CAAS;IACpB,OAAO,CAAW;IAElB,MAAM,CAAU,oBAAoB,GAAG,oBAAoB,CAAC;IAC5D,MAAM,CAAU,YAAY,GAAG,YAAY,CAAC;IAE5C,YACE,QAAiB,EACjB,UAAqD,EAAE;QAEvD,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,oBAAoB,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;QAE9B,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;IACH,CAAC;IAED,WAAW;QACT,mCAAmC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAY,CAAC;gBAClD,MAAM,OAAO,GAAe,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;gBAE5D,yCAAyC;gBACzC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAChE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,WAAW,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EACpF;oBACE,KAAK,EAAE,CAAC;iBACT,CACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAmB;QACnC,8BAA8B;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,eAAe;QACf,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa;QACX,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,aAAa;QACX,IAAI,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;YAC3C,MAAM,OAAO,GAAe,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,uBAAuB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC7D,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,mBAAmB,IAAI,CAAC,SAAS,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAClF;gBACE,KAAK,EAAE,CAAC;aACT,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAmB;QAC7B,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC;QACzB,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,oBAAoB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa,CAAC,IAAa;QACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,IAA4C,CAAC;QAC5D,IAAI,OAAmB,CAAC;QACxB,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QAED,IAAI,WAAW,IAAI,OAAO,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YACtD,OAAO,OAAO,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,CAAC;IACH,CAAC"}
|
|
@@ -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,10 +1,15 @@
|
|
|
1
|
-
import type { Action, ISigner, Signature, SignatureVerificationHandler } from "document-model";
|
|
2
|
-
import type {
|
|
3
|
-
export declare class
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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>;
|
|
@@ -15,7 +20,7 @@ export declare class ConnectCryptoSigner implements ISigner {
|
|
|
15
20
|
}
|
|
16
21
|
/**
|
|
17
22
|
* 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
|
|
23
|
+
* The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the RenownCrypto signing algorithm.
|
|
19
24
|
*/
|
|
20
25
|
export declare function createSignatureVerifier(): SignatureVerificationHandler;
|
|
21
26
|
//# 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,
|
|
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;YAgCP,UAAU;IAYxB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,mBAAmB;CAQ5B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,4BAA4B,CAuCtE"}
|
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
export class
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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.
|
|
24
|
+
return this.crypto.sign(data);
|
|
18
25
|
}
|
|
19
26
|
async verify(data, signature) {
|
|
20
|
-
const
|
|
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
|
|
29
|
+
throw new InvalidSignatureError();
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
async signAction(action, abortSignal) {
|
|
@@ -29,10 +34,6 @@ export class ConnectCryptoSigner {
|
|
|
29
34
|
throw new Error("Signing aborted");
|
|
30
35
|
}
|
|
31
36
|
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
37
|
const hash = await this.hashAction(action);
|
|
37
38
|
if (abortSignal?.aborted) {
|
|
38
39
|
throw new Error("Signing aborted");
|
|
@@ -40,12 +41,12 @@ export class ConnectCryptoSigner {
|
|
|
40
41
|
const prevStateHash = action.context?.prevOpHash ?? "";
|
|
41
42
|
const params = [
|
|
42
43
|
timestamp,
|
|
43
|
-
did,
|
|
44
|
+
this.crypto.did,
|
|
44
45
|
hash,
|
|
45
46
|
prevStateHash,
|
|
46
47
|
];
|
|
47
48
|
const message = this.buildSignatureMessage(params);
|
|
48
|
-
const signatureBytes = await this.
|
|
49
|
+
const signatureBytes = await this.crypto.sign(message);
|
|
49
50
|
const signatureHex = `0x${this.arrayBufferToHex(signatureBytes)}`;
|
|
50
51
|
if (abortSignal?.aborted) {
|
|
51
52
|
throw new Error("Signing aborted");
|
|
@@ -86,7 +87,7 @@ export class ConnectCryptoSigner {
|
|
|
86
87
|
}
|
|
87
88
|
/**
|
|
88
89
|
* 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
|
|
90
|
+
* The verification uses ECDSA with P-256 curve and SHA-256 hash, matching the RenownCrypto signing algorithm.
|
|
90
91
|
*/
|
|
91
92
|
export function createSignatureVerifier() {
|
|
92
93
|
return async (operation, publicKey) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Issuer } from "did-jwt-vc";
|
|
2
|
+
import type { CreateBearerTokenOptions } from "../types.js";
|
|
3
|
+
export type JwkKeyPair = {
|
|
4
|
+
publicKey: JsonWebKey;
|
|
5
|
+
privateKey: JsonWebKey;
|
|
6
|
+
};
|
|
7
|
+
export interface JsonWebKeyPairStorage {
|
|
8
|
+
loadKeyPair(): Promise<JwkKeyPair | undefined>;
|
|
9
|
+
saveKeyPair(keyPair: JwkKeyPair): Promise<void>;
|
|
10
|
+
removeKeyPair(): Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export type DID = `did:${string}`;
|
|
13
|
+
export interface IRenownCrypto {
|
|
14
|
+
did: DID;
|
|
15
|
+
publicKey: CryptoKey;
|
|
16
|
+
removeDid(): Promise<void>;
|
|
17
|
+
sign: (data: Uint8Array) => Promise<Uint8Array>;
|
|
18
|
+
verify: (data: Uint8Array, signature: Uint8Array) => Promise<boolean>;
|
|
19
|
+
issuer: Issuer;
|
|
20
|
+
getBearerToken: (address: string | undefined, options?: CreateBearerTokenOptions) => Promise<string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Use IRenownCrypto instead
|
|
24
|
+
*/
|
|
25
|
+
export interface IConnectCrypto extends IRenownCrypto {
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/crypto/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,UAAU,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAC/C,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,GAAG,GAAG,OAAO,MAAM,EAAE,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,CACd,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE,wBAAwB,KAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/crypto/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DID, JwkKeyPair } from "./types.js";
|
|
2
|
+
export declare const ECDSA_ALGORITHM: EcKeyAlgorithm;
|
|
3
|
+
export declare const ECDSA_SIGN_ALGORITHM: {
|
|
4
|
+
name: string;
|
|
5
|
+
namedCurve: string;
|
|
6
|
+
hash: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function ab2hex(ab: ArrayBuffer): string;
|
|
9
|
+
export declare function parseDid(keyPair: CryptoKeyPair, subtleCrypto: SubtleCrypto): Promise<DID>;
|
|
10
|
+
export declare function exportKeyPair(keyPair: CryptoKeyPair, subtleCrypto: SubtleCrypto): Promise<JwkKeyPair>;
|
|
11
|
+
export declare function importKeyPair(jwkKeyPair: JwkKeyPair, subtleCrypto: SubtleCrypto, algorithm?: EcKeyAlgorithm): Promise<CryptoKeyPair>;
|
|
12
|
+
export declare function generateKeyPair(subtleCrypto: SubtleCrypto, algorithm?: EcKeyAlgorithm): Promise<CryptoKeyPair>;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/crypto/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,cAG7B,CAAC;AAEF,eAAO,MAAM,oBAAoB;;;;CAIhC,CAAC;AAEF,wBAAgB,MAAM,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAI9C;AAED,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,GAAG,CAAC,CAOd;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EAC1B,SAAS,GAAE,cAAgC,GAC1C,OAAO,CAAC,aAAa,CAAC,CAiBxB;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,SAAS,GAAE,cAAgC,GAC1C,OAAO,CAAC,aAAa,CAAC,CAExB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { compressedKeyInHexfromRaw, encodeDIDfromHexString, rawKeyInHexfromUncompressed, } from "did-key-creator";
|
|
2
|
+
export const ECDSA_ALGORITHM = {
|
|
3
|
+
name: "ECDSA",
|
|
4
|
+
namedCurve: "P-256",
|
|
5
|
+
};
|
|
6
|
+
export const ECDSA_SIGN_ALGORITHM = {
|
|
7
|
+
name: "ECDSA",
|
|
8
|
+
namedCurve: "P-256",
|
|
9
|
+
hash: "SHA-256",
|
|
10
|
+
};
|
|
11
|
+
export function ab2hex(ab) {
|
|
12
|
+
return Array.prototype.map
|
|
13
|
+
.call(new Uint8Array(ab), (x) => ("00" + x.toString(16)).slice(-2))
|
|
14
|
+
.join("");
|
|
15
|
+
}
|
|
16
|
+
export async function parseDid(keyPair, subtleCrypto) {
|
|
17
|
+
const publicKeyRaw = await subtleCrypto.exportKey("raw", keyPair.publicKey);
|
|
18
|
+
const multicodecName = "p256-pub";
|
|
19
|
+
const rawKey = rawKeyInHexfromUncompressed(ab2hex(publicKeyRaw));
|
|
20
|
+
const compressedKey = compressedKeyInHexfromRaw(rawKey);
|
|
21
|
+
const did = encodeDIDfromHexString(multicodecName, compressedKey);
|
|
22
|
+
return did;
|
|
23
|
+
}
|
|
24
|
+
export async function exportKeyPair(keyPair, subtleCrypto) {
|
|
25
|
+
return {
|
|
26
|
+
publicKey: await subtleCrypto.exportKey("jwk", keyPair.publicKey),
|
|
27
|
+
privateKey: await subtleCrypto.exportKey("jwk", keyPair.privateKey),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export async function importKeyPair(jwkKeyPair, subtleCrypto, algorithm = ECDSA_ALGORITHM) {
|
|
31
|
+
return {
|
|
32
|
+
publicKey: await subtleCrypto.importKey("jwk", jwkKeyPair.publicKey, algorithm, true, ["verify"]),
|
|
33
|
+
privateKey: await subtleCrypto.importKey("jwk", jwkKeyPair.privateKey, algorithm, true, ["sign"]),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export async function generateKeyPair(subtleCrypto, algorithm = ECDSA_ALGORITHM) {
|
|
37
|
+
return subtleCrypto.generateKey(algorithm, true, ["sign", "verify"]);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/crypto/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,OAAO;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,OAAO;IACb,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,UAAU,MAAM,CAAC,EAAe;IACpC,OAAO,KAAK,CAAC,SAAS,CAAC,GAAG;SACvB,IAAI,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC1E,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAsB,EACtB,YAA0B;IAE1B,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,UAAU,CAAC;IAClC,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IACjE,MAAM,aAAa,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,sBAAsB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;IAClE,OAAO,GAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAsB,EACtB,YAA0B;IAE1B,OAAO;QACL,SAAS,EAAE,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC;QACjE,UAAU,EAAE,MAAM,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAAsB,EACtB,YAA0B,EAC1B,YAA4B,eAAe;IAE3C,OAAO;QACL,SAAS,EAAE,MAAM,YAAY,CAAC,SAAS,CACrC,KAAK,EACL,UAAU,CAAC,SAAS,EACpB,SAAS,EACT,IAAI,EACJ,CAAC,QAAQ,CAAC,CACX;QACD,UAAU,EAAE,MAAM,YAAY,CAAC,SAAS,CACtC,KAAK,EACL,UAAU,CAAC,UAAU,EACrB,SAAS,EACT,IAAI,EACJ,CAAC,MAAM,CAAC,CACT;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAA0B,EAC1B,YAA4B,eAAe;IAE3C,OAAO,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RenownEvents } from "../types.js";
|
|
2
|
+
import type { IEventEmitter } from "./types.js";
|
|
3
|
+
export declare class MemoryEventEmitter implements IEventEmitter<RenownEvents> {
|
|
4
|
+
#private;
|
|
5
|
+
on<K extends keyof RenownEvents>(event: K, listener: (data: RenownEvents[K]) => void): () => void;
|
|
6
|
+
emit<K extends keyof RenownEvents>(event: K, data: RenownEvents[K]): void;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/event/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,qBAAa,kBAAmB,YAAW,aAAa,CAAC,YAAY,CAAC;;IAGpE,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAC7B,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GACxC,MAAM,IAAI;IAUb,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI;CAG1E"}
|