@renown/sdk 6.0.0-dev.22 → 6.0.0-dev.221
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/README.md +47 -437
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +173 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +136 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +305 -0
- package/dist/node.js.map +1 -0
- package/dist/renown-builder-xQpZet3I.js +816 -0
- package/dist/renown-builder-xQpZet3I.js.map +1 -0
- package/dist/utils-D7B6E7_Z.d.ts +682 -0
- package/dist/utils-D7B6E7_Z.d.ts.map +1 -0
- package/package.json +15 -38
- package/dist/e2e/fixtures/main.d.ts +0 -2
- package/dist/e2e/fixtures/main.d.ts.map +0 -1
- package/dist/e2e/fixtures/main.js +0 -97
- package/dist/e2e/fixtures/main.js.map +0 -1
- package/dist/e2e/fixtures/vite.config.d.ts +0 -3
- package/dist/e2e/fixtures/vite.config.d.ts.map +0 -1
- package/dist/e2e/fixtures/vite.config.js +0 -10
- package/dist/e2e/fixtures/vite.config.js.map +0 -1
- package/dist/e2e/renown-components.spec.d.ts +0 -2
- package/dist/e2e/renown-components.spec.d.ts.map +0 -1
- package/dist/e2e/renown-components.spec.js +0 -155
- package/dist/e2e/renown-components.spec.js.map +0 -1
- package/dist/playwright.config.d.ts +0 -3
- package/dist/playwright.config.d.ts.map +0 -1
- package/dist/playwright.config.js +0 -25
- package/dist/playwright.config.js.map +0 -1
- package/dist/src/assets/assets.d.ts +0 -19
- package/dist/src/assets/renown-hover.svg +0 -17
- package/dist/src/assets/renown-light.svg +0 -15
- package/dist/src/assets/renown-short-hover.png +0 -0
- package/dist/src/assets/renown-short.png +0 -0
- package/dist/src/assets/renown.svg +0 -16
- package/dist/src/common.d.ts +0 -15
- package/dist/src/common.d.ts.map +0 -1
- package/dist/src/common.js +0 -105
- package/dist/src/common.js.map +0 -1
- package/dist/src/components/RenownAuthButton.d.ts +0 -62
- package/dist/src/components/RenownAuthButton.d.ts.map +0 -1
- package/dist/src/components/RenownAuthButton.js +0 -82
- package/dist/src/components/RenownAuthButton.js.map +0 -1
- package/dist/src/components/RenownLoginButton.d.ts +0 -48
- package/dist/src/components/RenownLoginButton.d.ts.map +0 -1
- package/dist/src/components/RenownLoginButton.js +0 -175
- package/dist/src/components/RenownLoginButton.js.map +0 -1
- package/dist/src/components/RenownUserButton.d.ts +0 -66
- package/dist/src/components/RenownUserButton.d.ts.map +0 -1
- package/dist/src/components/RenownUserButton.js +0 -216
- package/dist/src/components/RenownUserButton.js.map +0 -1
- package/dist/src/components/icons.d.ts +0 -25
- package/dist/src/components/icons.d.ts.map +0 -1
- package/dist/src/components/icons.js +0 -24
- package/dist/src/components/icons.js.map +0 -1
- package/dist/src/components/image-data.d.ts +0 -3
- package/dist/src/components/image-data.d.ts.map +0 -1
- package/dist/src/components/image-data.js +0 -4
- package/dist/src/components/image-data.js.map +0 -1
- package/dist/src/components/index.d.ts +0 -8
- package/dist/src/components/index.d.ts.map +0 -1
- package/dist/src/components/index.js +0 -5
- package/dist/src/components/index.js.map +0 -1
- package/dist/src/constants.d.ts +0 -130
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -40
- package/dist/src/constants.js.map +0 -1
- package/dist/src/crypto/browser-key-storage.d.ts +0 -8
- package/dist/src/crypto/browser-key-storage.d.ts.map +0 -1
- package/dist/src/crypto/browser-key-storage.js +0 -73
- package/dist/src/crypto/browser-key-storage.js.map +0 -1
- package/dist/src/crypto/index.d.ts +0 -36
- package/dist/src/crypto/index.d.ts.map +0 -1
- package/dist/src/crypto/index.js +0 -130
- package/dist/src/crypto/index.js.map +0 -1
- package/dist/src/crypto/node-key-storage.d.ts +0 -8
- package/dist/src/crypto/node-key-storage.d.ts.map +0 -1
- package/dist/src/crypto/node-key-storage.js +0 -67
- package/dist/src/crypto/node-key-storage.js.map +0 -1
- package/dist/src/crypto/node.d.ts +0 -2
- package/dist/src/crypto/node.d.ts.map +0 -1
- package/dist/src/crypto/node.js +0 -3
- package/dist/src/crypto/node.js.map +0 -1
- package/dist/src/crypto/signer.d.ts +0 -21
- package/dist/src/crypto/signer.d.ts.map +0 -1
- package/dist/src/crypto/signer.js +0 -236
- package/dist/src/crypto/signer.js.map +0 -1
- package/dist/src/event/event.browser.d.ts +0 -10
- package/dist/src/event/event.browser.d.ts.map +0 -1
- package/dist/src/event/event.browser.js +0 -24
- package/dist/src/event/event.browser.js.map +0 -1
- package/dist/src/event/event.node.d.ts +0 -8
- package/dist/src/event/event.node.d.ts.map +0 -1
- package/dist/src/event/event.node.js +0 -17
- package/dist/src/event/event.node.js.map +0 -1
- package/dist/src/event/types.d.ts +0 -16
- package/dist/src/event/types.d.ts.map +0 -1
- package/dist/src/event/types.js +0 -2
- package/dist/src/event/types.js.map +0 -1
- package/dist/src/hooks/index.d.ts +0 -2
- package/dist/src/hooks/index.d.ts.map +0 -1
- package/dist/src/hooks/index.js +0 -2
- package/dist/src/hooks/index.js.map +0 -1
- package/dist/src/hooks/use-user.d.ts +0 -21
- package/dist/src/hooks/use-user.d.ts.map +0 -1
- package/dist/src/hooks/use-user.js +0 -30
- package/dist/src/hooks/use-user.js.map +0 -1
- package/dist/src/index.browser.d.ts +0 -4
- package/dist/src/index.browser.d.ts.map +0 -1
- package/dist/src/index.browser.js +0 -4
- package/dist/src/index.browser.js.map +0 -1
- package/dist/src/index.d.ts +0 -13
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -13
- package/dist/src/index.js.map +0 -1
- package/dist/src/index.node.d.ts +0 -4
- package/dist/src/index.node.d.ts.map +0 -1
- package/dist/src/index.node.js +0 -4
- package/dist/src/index.node.js.map +0 -1
- package/dist/src/init.browser.d.ts +0 -3
- package/dist/src/init.browser.d.ts.map +0 -1
- package/dist/src/init.browser.js +0 -7
- package/dist/src/init.browser.js.map +0 -1
- package/dist/src/init.node.d.ts +0 -3
- package/dist/src/init.node.d.ts.map +0 -1
- package/dist/src/init.node.js +0 -8
- package/dist/src/init.node.js.map +0 -1
- 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/src/lib/renown/constants.d.ts +0 -130
- package/dist/src/lib/renown/constants.d.ts.map +0 -1
- package/dist/src/lib/renown/constants.js +0 -40
- package/dist/src/lib/renown/constants.js.map +0 -1
- package/dist/src/lib/renown/did-parser.d.ts +0 -28
- package/dist/src/lib/renown/did-parser.d.ts.map +0 -1
- package/dist/src/lib/renown/did-parser.js +0 -57
- package/dist/src/lib/renown/did-parser.js.map +0 -1
- package/dist/src/lib/renown/index.d.ts +0 -4
- package/dist/src/lib/renown/index.d.ts.map +0 -1
- package/dist/src/lib/renown/index.js +0 -4
- package/dist/src/lib/renown/index.js.map +0 -1
- package/dist/src/lib/renown/utils.d.ts +0 -33
- package/dist/src/lib/renown/utils.d.ts.map +0 -1
- package/dist/src/lib/renown/utils.js +0 -207
- package/dist/src/lib/renown/utils.js.map +0 -1
- package/dist/src/lib/session-storage.d.ts +0 -40
- package/dist/src/lib/session-storage.d.ts.map +0 -1
- package/dist/src/lib/session-storage.js +0 -107
- package/dist/src/lib/session-storage.js.map +0 -1
- package/dist/src/node.d.ts +0 -6
- package/dist/src/node.d.ts.map +0 -1
- package/dist/src/node.js +0 -6
- package/dist/src/node.js.map +0 -1
- package/dist/src/providers/index.d.ts +0 -3
- package/dist/src/providers/index.d.ts.map +0 -1
- package/dist/src/providers/index.js +0 -2
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/providers/renown-user-provider.d.ts +0 -72
- package/dist/src/providers/renown-user-provider.d.ts.map +0 -1
- package/dist/src/providers/renown-user-provider.js +0 -171
- package/dist/src/providers/renown-user-provider.js.map +0 -1
- package/dist/src/storage/common.d.ts +0 -13
- package/dist/src/storage/common.d.ts.map +0 -1
- package/dist/src/storage/common.js +0 -7
- package/dist/src/storage/common.js.map +0 -1
- package/dist/src/storage/storage.browser.d.ts +0 -9
- package/dist/src/storage/storage.browser.d.ts.map +0 -1
- package/dist/src/storage/storage.browser.js +0 -25
- package/dist/src/storage/storage.browser.js.map +0 -1
- package/dist/src/storage/storage.node.d.ts +0 -11
- package/dist/src/storage/storage.node.d.ts.map +0 -1
- package/dist/src/storage/storage.node.js +0 -40
- package/dist/src/storage/storage.node.js.map +0 -1
- package/dist/src/types.d.ts +0 -80
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +0 -1
- package/dist/src/utils.d.ts +0 -17
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -80
- package/dist/src/utils.js.map +0 -1
- package/dist/tests/auth.test.d.ts +0 -2
- package/dist/tests/auth.test.d.ts.map +0 -1
- package/dist/tests/auth.test.js +0 -13
- package/dist/tests/auth.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
export class BrowserKeyStorage {
|
|
2
|
-
static #DB_NAME = "browserKeyDB";
|
|
3
|
-
static #STORE_NAME = "keyPairs";
|
|
4
|
-
static #KEY = "keyPair";
|
|
5
|
-
#db;
|
|
6
|
-
constructor() {
|
|
7
|
-
this.#db = this.#initializeDatabase();
|
|
8
|
-
}
|
|
9
|
-
#initializeDatabase() {
|
|
10
|
-
return new Promise((resolve, reject) => {
|
|
11
|
-
// Open without version to get current version or create new database
|
|
12
|
-
const req = indexedDB.open(BrowserKeyStorage.#DB_NAME);
|
|
13
|
-
req.onupgradeneeded = this.#handleDatabaseUpgrade;
|
|
14
|
-
req.onsuccess = () => this.#handleDatabaseSuccess(req.result, resolve, reject);
|
|
15
|
-
req.onerror = () => reject(req.error);
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
#handleDatabaseUpgrade = (event) => {
|
|
19
|
-
const db = event.target.result;
|
|
20
|
-
this.#ensureObjectStoreExists(db);
|
|
21
|
-
};
|
|
22
|
-
#handleDatabaseSuccess = (db, resolve, reject) => {
|
|
23
|
-
if (!db.objectStoreNames.contains(BrowserKeyStorage.#STORE_NAME)) {
|
|
24
|
-
// Close and reopen with a higher version to create the missing object store
|
|
25
|
-
const currentVersion = db.version;
|
|
26
|
-
db.close();
|
|
27
|
-
const upgradeReq = indexedDB.open(BrowserKeyStorage.#DB_NAME, currentVersion + 1);
|
|
28
|
-
upgradeReq.onupgradeneeded = this.#handleDatabaseUpgrade;
|
|
29
|
-
upgradeReq.onsuccess = () => resolve(upgradeReq.result);
|
|
30
|
-
upgradeReq.onerror = () => reject(upgradeReq.error);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
resolve(db);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
#ensureObjectStoreExists(db) {
|
|
37
|
-
if (!db.objectStoreNames.contains(BrowserKeyStorage.#STORE_NAME)) {
|
|
38
|
-
db.createObjectStore(BrowserKeyStorage.#STORE_NAME);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
async #useStore(mode = "readwrite") {
|
|
42
|
-
const database = await this.#db;
|
|
43
|
-
const transaction = database.transaction(BrowserKeyStorage.#STORE_NAME, mode);
|
|
44
|
-
const store = transaction.objectStore(BrowserKeyStorage.#STORE_NAME);
|
|
45
|
-
return store;
|
|
46
|
-
}
|
|
47
|
-
async saveKeyPair(keyPair) {
|
|
48
|
-
const store = await this.#useStore();
|
|
49
|
-
const request = store.put(keyPair, BrowserKeyStorage.#KEY);
|
|
50
|
-
return new Promise((resolve, reject) => {
|
|
51
|
-
request.onsuccess = () => {
|
|
52
|
-
resolve();
|
|
53
|
-
};
|
|
54
|
-
request.onerror = () => {
|
|
55
|
-
reject(new Error("Failed to save key pair"));
|
|
56
|
-
};
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
async loadKeyPair() {
|
|
60
|
-
const store = await this.#useStore("readonly");
|
|
61
|
-
const request = store.get(BrowserKeyStorage.#KEY);
|
|
62
|
-
return new Promise((resolve, reject) => {
|
|
63
|
-
request.onsuccess = () => {
|
|
64
|
-
const keyPair = request.result;
|
|
65
|
-
resolve(keyPair);
|
|
66
|
-
};
|
|
67
|
-
request.onerror = () => {
|
|
68
|
-
reject(new Error("Failed to load key pair"));
|
|
69
|
-
};
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=browser-key-storage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"browser-key-storage.js","sourceRoot":"","sources":["../../../src/crypto/browser-key-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { Issuer } from "did-jwt-vc";
|
|
2
|
-
import { type CreateBearerTokenOptions } from "../utils.js";
|
|
3
|
-
export { BrowserKeyStorage } from "./browser-key-storage.js";
|
|
4
|
-
export type JwkKeyPair = {
|
|
5
|
-
publicKey: JsonWebKey;
|
|
6
|
-
privateKey: JsonWebKey;
|
|
7
|
-
};
|
|
8
|
-
export interface JsonWebKeyPairStorage {
|
|
9
|
-
loadKeyPair(): Promise<JwkKeyPair | undefined>;
|
|
10
|
-
saveKeyPair(keyPair: JwkKeyPair): Promise<void>;
|
|
11
|
-
}
|
|
12
|
-
export interface IConnectCrypto {
|
|
13
|
-
did: () => Promise<DID>;
|
|
14
|
-
regenerateDid(): Promise<void>;
|
|
15
|
-
sign: (data: Uint8Array) => Promise<Uint8Array>;
|
|
16
|
-
getIssuer: () => Promise<Issuer>;
|
|
17
|
-
getBearerToken: (driveUrl: string, address: string | undefined, refresh?: boolean, options?: CreateBearerTokenOptions) => Promise<string>;
|
|
18
|
-
}
|
|
19
|
-
export type DID = `did:${string}`;
|
|
20
|
-
export declare class ConnectCrypto implements IConnectCrypto {
|
|
21
|
-
#private;
|
|
22
|
-
static algorithm: EcKeyAlgorithm;
|
|
23
|
-
static signAlgorithm: {
|
|
24
|
-
name: string;
|
|
25
|
-
namedCurve: string;
|
|
26
|
-
hash: string;
|
|
27
|
-
};
|
|
28
|
-
constructor(keyPairStorage: JsonWebKeyPairStorage, crypto?: SubtleCrypto);
|
|
29
|
-
getBearerToken(driveUrl: string, address: string | undefined, refresh?: boolean, options?: CreateBearerTokenOptions): Promise<string>;
|
|
30
|
-
did(): Promise<`did:${string}`>;
|
|
31
|
-
regenerateDid(): Promise<void>;
|
|
32
|
-
sign(data: Uint8Array | string): Promise<Uint8Array>;
|
|
33
|
-
getIssuer(): Promise<Issuer>;
|
|
34
|
-
}
|
|
35
|
-
export { ConnectCryptoSigner, createSignatureVerifier } from "./signer.js";
|
|
36
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAOzC,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAK7D,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;CACjD;AAQD,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACxB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACjC,cAAc,EAAE,CACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,CAAC,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,wBAAwB,KAC/B,OAAO,CAAC,MAAM,CAAC,CAAC;CACtB;AAED,MAAM,MAAM,GAAG,GAAG,OAAO,MAAM,EAAE,CAAC;AAElC,qBAAa,aAAc,YAAW,cAAc;;IAQlD,MAAM,CAAC,SAAS,EAAE,cAAc,CAG9B;IAEF,MAAM,CAAC,aAAa;;;;MAIlB;gBAGA,cAAc,EAAE,qBAAqB,EACrC,MAAM,GAAE,YAAuC;IAsB3C,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,UAAQ,EACf,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,MAAM,CAAC;IAmBlB,GAAG;IAIG,aAAa;IAmFb,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAiBpD,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;CAgBnC;AAED,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/src/crypto/index.js
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/* eslint-disable no-unused-private-class-members */
|
|
2
|
-
import { bytesToBase64url } from "did-jwt";
|
|
3
|
-
import { compressedKeyInHexfromRaw, encodeDIDfromHexString, rawKeyInHexfromUncompressed, } from "did-key-creator";
|
|
4
|
-
import { fromString } from "uint8arrays";
|
|
5
|
-
import { createAuthBearerToken, } from "../utils.js";
|
|
6
|
-
// Export the proper BrowserKeyStorage implementation
|
|
7
|
-
export { BrowserKeyStorage } from "./browser-key-storage.js";
|
|
8
|
-
const RENOWN_NETWORK_ID = "eip155";
|
|
9
|
-
const RENOWN_CHAIN_ID = 1;
|
|
10
|
-
function ab2hex(ab) {
|
|
11
|
-
return Array.prototype.map
|
|
12
|
-
.call(new Uint8Array(ab), (x) => ("00" + x.toString(16)).slice(-2))
|
|
13
|
-
.join("");
|
|
14
|
-
}
|
|
15
|
-
export class ConnectCrypto {
|
|
16
|
-
#subtleCrypto;
|
|
17
|
-
#keyPair;
|
|
18
|
-
#keyPairStorage;
|
|
19
|
-
#did;
|
|
20
|
-
#bearerToken;
|
|
21
|
-
static algorithm = {
|
|
22
|
-
name: "ECDSA",
|
|
23
|
-
namedCurve: "P-256",
|
|
24
|
-
};
|
|
25
|
-
static signAlgorithm = {
|
|
26
|
-
name: "ECDSA",
|
|
27
|
-
namedCurve: "P-256",
|
|
28
|
-
hash: "SHA-256",
|
|
29
|
-
};
|
|
30
|
-
constructor(keyPairStorage, crypto = globalThis.crypto.subtle) {
|
|
31
|
-
this.#keyPairStorage = keyPairStorage;
|
|
32
|
-
this.#subtleCrypto = crypto;
|
|
33
|
-
this.#did = this.#initialize();
|
|
34
|
-
}
|
|
35
|
-
// loads the key pair from storage or generates a new one if none is stored
|
|
36
|
-
async #initialize() {
|
|
37
|
-
const loadedKeyPair = await this.#keyPairStorage.loadKeyPair();
|
|
38
|
-
if (loadedKeyPair) {
|
|
39
|
-
this.#keyPair = await this.#importKeyPair(loadedKeyPair);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.#keyPair = await this.#generateECDSAKeyPair();
|
|
43
|
-
await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());
|
|
44
|
-
}
|
|
45
|
-
const did = await this.#parseDid();
|
|
46
|
-
return did;
|
|
47
|
-
}
|
|
48
|
-
async getBearerToken(driveUrl, address, refresh = false, options) {
|
|
49
|
-
const issuer = await this.getIssuer();
|
|
50
|
-
if (refresh || !this.#bearerToken) {
|
|
51
|
-
this.#bearerToken = await createAuthBearerToken(Number(RENOWN_CHAIN_ID), RENOWN_NETWORK_ID, address || (await this.#did), issuer, options);
|
|
52
|
-
}
|
|
53
|
-
if (!this.#bearerToken) {
|
|
54
|
-
throw new Error("Could not create bearer token");
|
|
55
|
-
}
|
|
56
|
-
return this.#bearerToken;
|
|
57
|
-
}
|
|
58
|
-
did() {
|
|
59
|
-
return this.#did;
|
|
60
|
-
}
|
|
61
|
-
async regenerateDid() {
|
|
62
|
-
this.#keyPair = await this.#generateECDSAKeyPair();
|
|
63
|
-
await this.#keyPairStorage.saveKeyPair(await this.#exportKeyPair());
|
|
64
|
-
}
|
|
65
|
-
async #parseDid() {
|
|
66
|
-
if (!this.#keyPair) {
|
|
67
|
-
throw new Error("No key pair available");
|
|
68
|
-
}
|
|
69
|
-
const publicKeyRaw = await this.#subtleCrypto.exportKey("raw", this.#keyPair.publicKey);
|
|
70
|
-
const multicodecName = "p256-pub";
|
|
71
|
-
const rawKey = rawKeyInHexfromUncompressed(ab2hex(publicKeyRaw));
|
|
72
|
-
const compressedKey = compressedKeyInHexfromRaw(rawKey);
|
|
73
|
-
const did = encodeDIDfromHexString(multicodecName, compressedKey);
|
|
74
|
-
return did;
|
|
75
|
-
}
|
|
76
|
-
async #generateECDSAKeyPair() {
|
|
77
|
-
const keyPair = await this.#subtleCrypto.generateKey(ConnectCrypto.algorithm, true, ["sign", "verify"]);
|
|
78
|
-
return keyPair;
|
|
79
|
-
}
|
|
80
|
-
async #exportKeyPair() {
|
|
81
|
-
if (!this.#keyPair) {
|
|
82
|
-
throw new Error("No key pair available");
|
|
83
|
-
}
|
|
84
|
-
const jwkKeyPair = {
|
|
85
|
-
publicKey: await this.#subtleCrypto.exportKey("jwk", this.#keyPair.publicKey),
|
|
86
|
-
privateKey: await this.#subtleCrypto.exportKey("jwk", this.#keyPair.privateKey),
|
|
87
|
-
};
|
|
88
|
-
return jwkKeyPair;
|
|
89
|
-
}
|
|
90
|
-
async #importKeyPair(jwkKeyPair) {
|
|
91
|
-
return {
|
|
92
|
-
publicKey: await this.#subtleCrypto.importKey("jwk", jwkKeyPair.publicKey, ConnectCrypto.algorithm, true, ["verify"]),
|
|
93
|
-
privateKey: await this.#subtleCrypto.importKey("jwk", jwkKeyPair.privateKey, ConnectCrypto.algorithm, true, ["sign"]),
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
#sign = async (...args) => {
|
|
97
|
-
return await this.#subtleCrypto.sign(...args);
|
|
98
|
-
};
|
|
99
|
-
#verify = async (...args) => {
|
|
100
|
-
return await this.#subtleCrypto.verify(...args);
|
|
101
|
-
};
|
|
102
|
-
#stringToBytes(s) {
|
|
103
|
-
return fromString(s, "utf-8");
|
|
104
|
-
}
|
|
105
|
-
async sign(data) {
|
|
106
|
-
if (this.#keyPair?.privateKey) {
|
|
107
|
-
const dataBytes = typeof data === "string" ? this.#stringToBytes(data) : data;
|
|
108
|
-
const arrayBuffer = await this.#subtleCrypto.sign(ConnectCrypto.signAlgorithm, this.#keyPair.privateKey, dataBytes.buffer);
|
|
109
|
-
return new Uint8Array(arrayBuffer);
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
throw new Error("No private key available");
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
async getIssuer() {
|
|
116
|
-
if (!this.#keyPair?.privateKey) {
|
|
117
|
-
throw new Error("No private key available");
|
|
118
|
-
}
|
|
119
|
-
return {
|
|
120
|
-
did: await this.#did,
|
|
121
|
-
signer: async (data) => {
|
|
122
|
-
const signature = await this.sign(typeof data === "string" ? new TextEncoder().encode(data) : data);
|
|
123
|
-
return bytesToBase64url(signature);
|
|
124
|
-
},
|
|
125
|
-
alg: "ES256",
|
|
126
|
-
};
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
export { ConnectCryptoSigner, createSignatureVerifier } from "./signer.js";
|
|
130
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/crypto/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { JsonWebKeyPairStorage, JwkKeyPair } from "./index.js";
|
|
2
|
-
export declare class NodeKeyStorage implements JsonWebKeyPairStorage {
|
|
3
|
-
#private;
|
|
4
|
-
constructor(filePath?: string);
|
|
5
|
-
saveKeyPair(keyPair: JwkKeyPair): Promise<void>;
|
|
6
|
-
loadKeyPair(): Promise<JwkKeyPair | undefined>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=node-key-storage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-key-storage.d.ts","sourceRoot":"","sources":["../../../src/crypto/node-key-storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpE,qBAAa,cAAe,YAAW,qBAAqB;;gBAO9C,QAAQ,CAAC,EAAE,MAAM;IAuCvB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAU/C,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;CASrD"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { dirname, join } from "node:path";
|
|
4
|
-
export class NodeKeyStorage {
|
|
5
|
-
static #DEFAULT_DIR = ".vetra";
|
|
6
|
-
static #DEFAULT_FILE = "keypair.json";
|
|
7
|
-
static #KEY = "keyPair";
|
|
8
|
-
#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
|
-
}
|
|
18
|
-
// Ensure directory exists
|
|
19
|
-
const dir = dirname(this.#filePath);
|
|
20
|
-
if (!existsSync(dir)) {
|
|
21
|
-
mkdirSync(dir, { recursive: true });
|
|
22
|
-
}
|
|
23
|
-
// Initialize file if it doesn't exist
|
|
24
|
-
if (!existsSync(this.#filePath)) {
|
|
25
|
-
this.#writeData({});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
#readData() {
|
|
29
|
-
try {
|
|
30
|
-
const data = readFileSync(this.#filePath, "utf-8");
|
|
31
|
-
return JSON.parse(data);
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
// If file is corrupted or doesn't exist, return empty object
|
|
35
|
-
return {};
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
#writeData(data) {
|
|
39
|
-
try {
|
|
40
|
-
writeFileSync(this.#filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
41
|
-
}
|
|
42
|
-
catch (error) {
|
|
43
|
-
throw new Error(`Failed to write key pair data: ${error}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async saveKeyPair(keyPair) {
|
|
47
|
-
try {
|
|
48
|
-
const data = this.#readData();
|
|
49
|
-
data[NodeKeyStorage.#KEY] = keyPair;
|
|
50
|
-
this.#writeData(data);
|
|
51
|
-
}
|
|
52
|
-
catch (error) {
|
|
53
|
-
throw new Error(`Failed to save key pair: ${error}`);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
async loadKeyPair() {
|
|
57
|
-
try {
|
|
58
|
-
const data = this.#readData();
|
|
59
|
-
const keyPair = data[NodeKeyStorage.#KEY];
|
|
60
|
-
return keyPair;
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
throw new Error(`Failed to load key pair: ${error}`);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=node-key-storage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../src/crypto/node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/src/crypto/node.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../../../src/crypto/node.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,21 +0,0 @@
|
|
|
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>;
|
|
8
|
-
sign(data: Uint8Array): Promise<Uint8Array>;
|
|
9
|
-
verify(data: Uint8Array, signature: Uint8Array): Promise<void>;
|
|
10
|
-
signAction(action: Action, abortSignal?: AbortSignal): Promise<Signature>;
|
|
11
|
-
private hashAction;
|
|
12
|
-
private buildSignatureMessage;
|
|
13
|
-
private arrayBufferToHex;
|
|
14
|
-
private arrayBufferToBase64;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* 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.
|
|
19
|
-
*/
|
|
20
|
-
export declare function createSignatureVerifier(): SignatureVerificationHandler;
|
|
21
|
-
//# sourceMappingURL=signer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,236 +0,0 @@
|
|
|
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;
|
|
15
|
-
}
|
|
16
|
-
async sign(data) {
|
|
17
|
-
return this.connectCrypto.sign(data);
|
|
18
|
-
}
|
|
19
|
-
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);
|
|
23
|
-
if (!isValid) {
|
|
24
|
-
throw new Error("invalid signature");
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
async signAction(action, abortSignal) {
|
|
28
|
-
if (abortSignal?.aborted) {
|
|
29
|
-
throw new Error("Signing aborted");
|
|
30
|
-
}
|
|
31
|
-
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
|
-
const hash = await this.hashAction(action);
|
|
37
|
-
if (abortSignal?.aborted) {
|
|
38
|
-
throw new Error("Signing aborted");
|
|
39
|
-
}
|
|
40
|
-
const prevStateHash = action.context?.prevOpHash ?? "";
|
|
41
|
-
const params = [
|
|
42
|
-
timestamp,
|
|
43
|
-
did,
|
|
44
|
-
hash,
|
|
45
|
-
prevStateHash,
|
|
46
|
-
];
|
|
47
|
-
const message = this.buildSignatureMessage(params);
|
|
48
|
-
const signatureBytes = await this.connectCrypto.sign(message);
|
|
49
|
-
const signatureHex = `0x${this.arrayBufferToHex(signatureBytes)}`;
|
|
50
|
-
if (abortSignal?.aborted) {
|
|
51
|
-
throw new Error("Signing aborted");
|
|
52
|
-
}
|
|
53
|
-
return [...params, signatureHex];
|
|
54
|
-
}
|
|
55
|
-
async hashAction(action) {
|
|
56
|
-
const payload = [
|
|
57
|
-
action.scope,
|
|
58
|
-
action.type,
|
|
59
|
-
JSON.stringify(action.input),
|
|
60
|
-
].join("");
|
|
61
|
-
const encoder = new TextEncoder();
|
|
62
|
-
const data = encoder.encode(payload);
|
|
63
|
-
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
64
|
-
return this.arrayBufferToBase64(hashBuffer);
|
|
65
|
-
}
|
|
66
|
-
buildSignatureMessage(params) {
|
|
67
|
-
const message = params.join("");
|
|
68
|
-
const prefix = "\x19Signed Operation:\n" + message.length.toString();
|
|
69
|
-
const encoder = new TextEncoder();
|
|
70
|
-
return encoder.encode(prefix + message);
|
|
71
|
-
}
|
|
72
|
-
arrayBufferToHex(buffer) {
|
|
73
|
-
const bytes = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);
|
|
74
|
-
return Array.from(bytes)
|
|
75
|
-
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
76
|
-
.join("");
|
|
77
|
-
}
|
|
78
|
-
arrayBufferToBase64(buffer) {
|
|
79
|
-
const bytes = new Uint8Array(buffer);
|
|
80
|
-
let binary = "";
|
|
81
|
-
for (let i = 0; i < bytes.length; i++) {
|
|
82
|
-
binary += String.fromCharCode(bytes[i]);
|
|
83
|
-
}
|
|
84
|
-
return btoa(binary);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* 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.
|
|
90
|
-
*/
|
|
91
|
-
export function createSignatureVerifier() {
|
|
92
|
-
return async (operation, publicKey) => {
|
|
93
|
-
const signer = operation.action.context?.signer;
|
|
94
|
-
if (!signer) {
|
|
95
|
-
return true;
|
|
96
|
-
}
|
|
97
|
-
const signatures = signer.signatures;
|
|
98
|
-
if (signatures.length === 0) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
const signature = signatures[signatures.length - 1];
|
|
102
|
-
const [timestamp, signerKey, hash, prevStateHash, signatureHex] = signature;
|
|
103
|
-
if (signerKey !== publicKey) {
|
|
104
|
-
return false;
|
|
105
|
-
}
|
|
106
|
-
const params = [
|
|
107
|
-
timestamp,
|
|
108
|
-
signerKey,
|
|
109
|
-
hash,
|
|
110
|
-
prevStateHash,
|
|
111
|
-
];
|
|
112
|
-
const message = buildSignatureMessage(params);
|
|
113
|
-
const signatureBytes = hexToUint8Array(signatureHex);
|
|
114
|
-
const cryptoKey = await importPublicKey(publicKey);
|
|
115
|
-
const isValid = await crypto.subtle.verify({ name: "ECDSA", hash: "SHA-256" }, cryptoKey, signatureBytes.buffer, message.buffer);
|
|
116
|
-
return isValid;
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
function buildSignatureMessage(params) {
|
|
120
|
-
const message = params.join("");
|
|
121
|
-
const prefix = "\x19Signed Operation:\n" + message.length.toString();
|
|
122
|
-
const encoder = new TextEncoder();
|
|
123
|
-
return encoder.encode(prefix + message);
|
|
124
|
-
}
|
|
125
|
-
function hexToUint8Array(hex) {
|
|
126
|
-
const cleanHex = hex.startsWith("0x") ? hex.slice(2) : hex;
|
|
127
|
-
const bytes = new Uint8Array(cleanHex.length / 2);
|
|
128
|
-
for (let i = 0; i < cleanHex.length; i += 2) {
|
|
129
|
-
bytes[i / 2] = parseInt(cleanHex.substring(i, i + 2), 16);
|
|
130
|
-
}
|
|
131
|
-
return bytes;
|
|
132
|
-
}
|
|
133
|
-
async function importPublicKey(did) {
|
|
134
|
-
const keyData = extractKeyFromDid(did);
|
|
135
|
-
return crypto.subtle.importKey("raw", keyData.buffer, { name: "ECDSA", namedCurve: "P-256" }, true, ["verify"]);
|
|
136
|
-
}
|
|
137
|
-
function extractKeyFromDid(did) {
|
|
138
|
-
const parts = did.split(":");
|
|
139
|
-
if (parts.length < 3 || parts[0] !== "did" || parts[1] !== "key") {
|
|
140
|
-
throw new Error(`Invalid DID format: ${did}`);
|
|
141
|
-
}
|
|
142
|
-
const multibaseKey = parts[2];
|
|
143
|
-
if (!multibaseKey.startsWith("z")) {
|
|
144
|
-
throw new Error(`Unsupported multibase encoding: ${multibaseKey[0]}`);
|
|
145
|
-
}
|
|
146
|
-
const decoded = base58Decode(multibaseKey.slice(1));
|
|
147
|
-
if (decoded[0] !== 0x80 || decoded[1] !== 0x24) {
|
|
148
|
-
throw new Error("Not a P-256 public key multicodec");
|
|
149
|
-
}
|
|
150
|
-
const compressedKey = decoded.slice(2);
|
|
151
|
-
return decompressP256PublicKey(compressedKey);
|
|
152
|
-
}
|
|
153
|
-
function base58Decode(input) {
|
|
154
|
-
const ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
|
|
155
|
-
const ALPHABET_MAP = new Map();
|
|
156
|
-
for (let i = 0; i < ALPHABET.length; i++) {
|
|
157
|
-
ALPHABET_MAP.set(ALPHABET[i], i);
|
|
158
|
-
}
|
|
159
|
-
if (input.length === 0) {
|
|
160
|
-
return new Uint8Array(0);
|
|
161
|
-
}
|
|
162
|
-
const bytes = [0];
|
|
163
|
-
for (const char of input) {
|
|
164
|
-
const value = ALPHABET_MAP.get(char);
|
|
165
|
-
if (value === undefined) {
|
|
166
|
-
throw new Error(`Invalid base58 character: ${char}`);
|
|
167
|
-
}
|
|
168
|
-
let carry = value;
|
|
169
|
-
for (let j = 0; j < bytes.length; j++) {
|
|
170
|
-
carry += bytes[j] * 58;
|
|
171
|
-
bytes[j] = carry & 0xff;
|
|
172
|
-
carry >>= 8;
|
|
173
|
-
}
|
|
174
|
-
while (carry > 0) {
|
|
175
|
-
bytes.push(carry & 0xff);
|
|
176
|
-
carry >>= 8;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
for (const char of input) {
|
|
180
|
-
if (char !== "1")
|
|
181
|
-
break;
|
|
182
|
-
bytes.push(0);
|
|
183
|
-
}
|
|
184
|
-
return new Uint8Array(bytes.reverse());
|
|
185
|
-
}
|
|
186
|
-
function decompressP256PublicKey(compressed) {
|
|
187
|
-
if (compressed.length !== 33) {
|
|
188
|
-
throw new Error(`Invalid compressed key length: ${compressed.length}`);
|
|
189
|
-
}
|
|
190
|
-
const prefix = compressed[0];
|
|
191
|
-
if (prefix !== 0x02 && prefix !== 0x03) {
|
|
192
|
-
throw new Error(`Invalid compression prefix: ${prefix}`);
|
|
193
|
-
}
|
|
194
|
-
const p = BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff");
|
|
195
|
-
const a = BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc");
|
|
196
|
-
const b = BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b");
|
|
197
|
-
let x = BigInt(0);
|
|
198
|
-
for (let i = 1; i < compressed.length; i++) {
|
|
199
|
-
x = (x << BigInt(8)) | BigInt(compressed[i]);
|
|
200
|
-
}
|
|
201
|
-
const ySquared = (modPow(x, BigInt(3), p) + a * x + b) % p;
|
|
202
|
-
let y = modPow(ySquared, (p + BigInt(1)) / BigInt(4), p);
|
|
203
|
-
const isYEven = y % BigInt(2) === BigInt(0);
|
|
204
|
-
const shouldBeEven = prefix === 0x02;
|
|
205
|
-
if (isYEven !== shouldBeEven) {
|
|
206
|
-
y = p - y;
|
|
207
|
-
}
|
|
208
|
-
const uncompressed = new Uint8Array(65);
|
|
209
|
-
uncompressed[0] = 0x04;
|
|
210
|
-
const xBytes = bigIntToBytes(x, 32);
|
|
211
|
-
const yBytes = bigIntToBytes(y, 32);
|
|
212
|
-
uncompressed.set(xBytes, 1);
|
|
213
|
-
uncompressed.set(yBytes, 33);
|
|
214
|
-
return uncompressed;
|
|
215
|
-
}
|
|
216
|
-
function modPow(base, exp, mod) {
|
|
217
|
-
let result = BigInt(1);
|
|
218
|
-
base = base % mod;
|
|
219
|
-
while (exp > BigInt(0)) {
|
|
220
|
-
if (exp % BigInt(2) === BigInt(1)) {
|
|
221
|
-
result = (result * base) % mod;
|
|
222
|
-
}
|
|
223
|
-
exp = exp >> BigInt(1);
|
|
224
|
-
base = (base * base) % mod;
|
|
225
|
-
}
|
|
226
|
-
return result;
|
|
227
|
-
}
|
|
228
|
-
function bigIntToBytes(n, length) {
|
|
229
|
-
const bytes = new Uint8Array(length);
|
|
230
|
-
for (let i = length - 1; i >= 0; i--) {
|
|
231
|
-
bytes[i] = Number(n & BigInt(0xff));
|
|
232
|
-
n = n >> BigInt(8);
|
|
233
|
-
}
|
|
234
|
-
return bytes;
|
|
235
|
-
}
|
|
236
|
-
//# sourceMappingURL=signer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signer.js","sourceRoot":"","sources":["../../../src/crypto/signer.ts"],"names":[],"mappings":"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"}
|