@renown/sdk 6.0.0-staging.4 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-BLM2JCDq.js +815 -0
- package/dist/renown-builder-BLM2JCDq.js.map +1 -0
- package/dist/utils-BGF8Qb5f.d.ts +689 -0
- package/dist/utils-BGF8Qb5f.d.ts.map +1 -0
- package/package.json +18 -40
- 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 -21
- package/dist/src/common.d.ts.map +0 -1
- package/dist/src/common.js +0 -113
- 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 -10
- package/dist/src/crypto/browser-key-storage.d.ts.map +0 -1
- package/dist/src/crypto/browser-key-storage.js +0 -76
- package/dist/src/crypto/browser-key-storage.js.map +0 -1
- package/dist/src/crypto/index.d.ts +0 -7
- package/dist/src/crypto/index.d.ts.map +0 -1
- package/dist/src/crypto/index.js +0 -9
- package/dist/src/crypto/index.js.map +0 -1
- package/dist/src/crypto/memory-key-storage.d.ts +0 -9
- package/dist/src/crypto/memory-key-storage.d.ts.map +0 -1
- package/dist/src/crypto/memory-key-storage.js +0 -18
- package/dist/src/crypto/memory-key-storage.js.map +0 -1
- package/dist/src/crypto/node-key-storage.d.ts +0 -21
- package/dist/src/crypto/node-key-storage.d.ts.map +0 -1
- package/dist/src/crypto/node-key-storage.js +0 -107
- 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/renown-crypto-builder.d.ts +0 -11
- package/dist/src/crypto/renown-crypto-builder.d.ts.map +0 -1
- package/dist/src/crypto/renown-crypto-builder.js +0 -34
- package/dist/src/crypto/renown-crypto-builder.js.map +0 -1
- package/dist/src/crypto/renown-crypto.d.ts +0 -26
- package/dist/src/crypto/renown-crypto.d.ts.map +0 -1
- package/dist/src/crypto/renown-crypto.js +0 -56
- package/dist/src/crypto/renown-crypto.js.map +0 -1
- package/dist/src/crypto/signer.d.ts +0 -74
- package/dist/src/crypto/signer.d.ts.map +0 -1
- package/dist/src/crypto/signer.js +0 -306
- package/dist/src/crypto/signer.js.map +0 -1
- package/dist/src/crypto/types.d.ts +0 -27
- package/dist/src/crypto/types.d.ts.map +0 -1
- package/dist/src/crypto/types.js +0 -2
- package/dist/src/crypto/types.js.map +0 -1
- package/dist/src/crypto/utils.d.ts +0 -13
- package/dist/src/crypto/utils.d.ts.map +0 -1
- package/dist/src/crypto/utils.js +0 -39
- package/dist/src/crypto/utils.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/memory.d.ts +0 -8
- package/dist/src/event/memory.d.ts.map +0 -1
- package/dist/src/event/memory.js +0 -16
- package/dist/src/event/memory.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 -15
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -15
- 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 -52
- package/dist/src/init.browser.d.ts.map +0 -1
- package/dist/src/init.browser.js +0 -66
- package/dist/src/init.browser.js.map +0 -1
- package/dist/src/init.node.d.ts +0 -29
- package/dist/src/init.node.d.ts.map +0 -1
- package/dist/src/init.node.js +0 -30
- package/dist/src/init.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/credential.d.ts +0 -2
- package/dist/src/lib/renown/credential.d.ts.map +0 -1
- package/dist/src/lib/renown/credential.js +0 -68
- package/dist/src/lib/renown/credential.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 -188
- 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 -10
- package/dist/src/node.d.ts.map +0 -1
- package/dist/src/node.js +0 -10
- 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 -76
- package/dist/src/providers/renown-user-provider.d.ts.map +0 -1
- package/dist/src/providers/renown-user-provider.js +0 -166
- package/dist/src/providers/renown-user-provider.js.map +0 -1
- package/dist/src/renown-builder.d.ts +0 -60
- package/dist/src/renown-builder.d.ts.map +0 -1
- package/dist/src/renown-builder.js +0 -115
- package/dist/src/renown-builder.js.map +0 -1
- package/dist/src/storage/common.d.ts +0 -17
- package/dist/src/storage/common.d.ts.map +0 -1
- package/dist/src/storage/common.js +0 -20
- package/dist/src/storage/common.js.map +0 -1
- package/dist/src/storage/storage.browser.d.ts +0 -10
- package/dist/src/storage/storage.browser.d.ts.map +0 -1
- package/dist/src/storage/storage.browser.js +0 -27
- 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 -42
- package/dist/src/storage/storage.node.js.map +0 -1
- package/dist/src/types.d.ts +0 -104
- 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 -18
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -88
- package/dist/src/utils.js.map +0 -1
- package/dist/test/auth.test.d.ts +0 -2
- package/dist/test/auth.test.d.ts.map +0 -1
- package/dist/test/auth.test.js +0 -13
- package/dist/test/auth.test.js.map +0 -1
- package/dist/test/crypto/signer.test.d.ts +0 -2
- package/dist/test/crypto/signer.test.d.ts.map +0 -1
- package/dist/test/crypto/signer.test.js +0 -184
- package/dist/test/crypto/signer.test.js.map +0 -1
- package/dist/test/script.test.d.ts +0 -2
- package/dist/test/script.test.d.ts.map +0 -1
- package/dist/test/script.test.js +0 -144
- package/dist/test/script.test.js.map +0 -1
- package/dist/test/storage.node.test.d.ts +0 -2
- package/dist/test/storage.node.test.d.ts.map +0 -1
- package/dist/test/storage.node.test.js +0 -66
- package/dist/test/storage.node.test.js.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/vitest.config.d.ts +0 -3
- package/dist/vitest.config.d.ts.map +0 -1
- package/dist/vitest.config.js +0 -7
- package/dist/vitest.config.js.map +0 -1
package/dist/src/utils.d.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Issuer, VerifiedCredential } from "did-jwt-vc";
|
|
2
|
-
import { Resolver } from "did-resolver";
|
|
3
|
-
import type { AuthVerifiedCredential, CreateBearerTokenOptions, PKHDid } from "./types.js";
|
|
4
|
-
export type ILogger = {
|
|
5
|
-
level: "verbose" | "debug" | "info" | "warn" | "error";
|
|
6
|
-
verbose: (message: string, ...replacements: any[]) => void;
|
|
7
|
-
debug: (message: string, ...replacements: any[]) => void;
|
|
8
|
-
info: (message: string, ...replacements: any[]) => void;
|
|
9
|
-
warn: (message: string, ...replacements: any[]) => void;
|
|
10
|
-
error: (message: string, ...replacements: any[]) => void;
|
|
11
|
-
};
|
|
12
|
-
export declare function parsePkhDid(did: string): PKHDid;
|
|
13
|
-
export declare function verifyAuthBearerToken(jwt: string): Promise<false | AuthVerifiedCredential>;
|
|
14
|
-
export declare function assertIsAuthCredential(credential: VerifiedCredential): asserts credential is AuthVerifiedCredential;
|
|
15
|
-
export declare function createAuthBearerToken(chainId: number, networkId: string, address: string, issuer: Issuer, options?: CreateBearerTokenOptions): Promise<string>;
|
|
16
|
-
export declare const getResolver: () => Resolver;
|
|
17
|
-
export declare function getIssuer(privateKey: Uint8Array): Promise<Issuer>;
|
|
18
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,MAAM,EAEN,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,OAAO,KAAK,EACV,sBAAsB,EACtB,wBAAwB,EAExB,MAAM,EACP,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAEvD,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC3D,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACzD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IACxD,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CAC1D,CAAC;AAEF,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqB/C;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,GAAG,sBAAsB,CAAC,CAoBzC;AAED,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,UAAU,IAAI,sBAAsB,CAkB9C;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,wBAAwB,mBAoBnC;AAED,eAAO,MAAM,WAAW,gBAOvB,CAAC;AAEF,wBAAsB,SAAS,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvE"}
|
package/dist/src/utils.js
DELETED
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import { getAuthenticatedDID } from "@didtools/key-did";
|
|
2
|
-
import { EdDSASigner } from "did-jwt";
|
|
3
|
-
import { createVerifiableCredentialJwt, verifyCredential } from "did-jwt-vc";
|
|
4
|
-
import { Resolver } from "did-resolver";
|
|
5
|
-
import { getResolver as keyDidResolver } from "key-did-resolver";
|
|
6
|
-
export function parsePkhDid(did) {
|
|
7
|
-
const parts = did.split(":");
|
|
8
|
-
if (!did.startsWith("did:pkh:") || parts.length !== 5) {
|
|
9
|
-
throw new Error("Invalid pkh did");
|
|
10
|
-
}
|
|
11
|
-
const [, , networkId, chainIdStr, address] = parts;
|
|
12
|
-
if (!address.startsWith("0x")) {
|
|
13
|
-
throw new Error(`Invalid address: ${address}`);
|
|
14
|
-
}
|
|
15
|
-
const chainId = Number(chainIdStr);
|
|
16
|
-
if (isNaN(chainId)) {
|
|
17
|
-
throw new Error(`Invalid chain id: ${chainIdStr}`);
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
chainId,
|
|
21
|
-
networkId,
|
|
22
|
-
address: address,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
export async function verifyAuthBearerToken(jwt) {
|
|
26
|
-
try {
|
|
27
|
-
const now = parseInt(String(Date.now() / 1000));
|
|
28
|
-
const verified = await verifyCredential(jwt, getResolver(), {
|
|
29
|
-
policies: {
|
|
30
|
-
now: parseInt(String(Date.now() / 1000)),
|
|
31
|
-
expirationDate: true,
|
|
32
|
-
issuanceDate: true,
|
|
33
|
-
},
|
|
34
|
-
});
|
|
35
|
-
if (verified.payload.exp && verified.payload.exp < now) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
assertIsAuthCredential(verified);
|
|
39
|
-
return verified;
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
console.error(e);
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
export function assertIsAuthCredential(credential) {
|
|
47
|
-
const subjectKeys = Object.keys(credential.verifiableCredential.credentialSubject);
|
|
48
|
-
if (!["address", "chainId", "networkId"].every((key) => subjectKeys.includes(key))) {
|
|
49
|
-
throw new Error("Invalid Auth Credential Subject:" +
|
|
50
|
-
JSON.stringify(credential.verifiableCredential.credentialSubject, null, 2));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export async function createAuthBearerToken(chainId, networkId, address, issuer, options) {
|
|
54
|
-
const vcPayload = {
|
|
55
|
-
sub: issuer.did,
|
|
56
|
-
vc: {
|
|
57
|
-
"@context": ["https://www.w3.org/2018/credentials/v1"],
|
|
58
|
-
type: ["VerifiableCredential"],
|
|
59
|
-
credentialSubject: {
|
|
60
|
-
chainId,
|
|
61
|
-
networkId,
|
|
62
|
-
address,
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
aud: options?.aud,
|
|
66
|
-
};
|
|
67
|
-
const jwt = await createVerifiableCredentialJwt(vcPayload, issuer, {
|
|
68
|
-
expiresIn: options?.expiresIn,
|
|
69
|
-
});
|
|
70
|
-
return jwt;
|
|
71
|
-
}
|
|
72
|
-
export const getResolver = () => {
|
|
73
|
-
const keyResolver = keyDidResolver();
|
|
74
|
-
if (!keyResolver) {
|
|
75
|
-
throw new Error("Failed to get key resolver");
|
|
76
|
-
}
|
|
77
|
-
return new Resolver(keyResolver);
|
|
78
|
-
};
|
|
79
|
-
export async function getIssuer(privateKey) {
|
|
80
|
-
const signer = EdDSASigner(privateKey);
|
|
81
|
-
const did = await getAuthenticatedDID(privateKey);
|
|
82
|
-
return {
|
|
83
|
-
did: did.id,
|
|
84
|
-
signer,
|
|
85
|
-
alg: "EdDSA",
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=utils.js.map
|
package/dist/src/utils.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/test/auth.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.d.ts","sourceRoot":"","sources":["../../test/auth.test.ts"],"names":[],"mappings":""}
|
package/dist/test/auth.test.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { generatePrivateKey } from "@didtools/key-did";
|
|
2
|
-
import { describe, expect, it } from "vitest";
|
|
3
|
-
import { createAuthBearerToken, getIssuer, verifyAuthBearerToken, } from "../src/utils.js";
|
|
4
|
-
describe("auth", () => {
|
|
5
|
-
it("should be able to authenticate a user", async () => {
|
|
6
|
-
const randomKey = generatePrivateKey();
|
|
7
|
-
const issuer = await getIssuer(randomKey);
|
|
8
|
-
const token = await createAuthBearerToken(1, "test", "test", issuer);
|
|
9
|
-
const verified = await verifyAuthBearerToken(token);
|
|
10
|
-
expect(verified).toBeDefined();
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=auth.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../test/auth.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,SAAS,EACT,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;IACpB,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signer.test.d.ts","sourceRoot":"","sources":["../../../test/crypto/signer.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { MemoryKeyStorage, RenownCryptoBuilder, RenownCryptoSigner, createSignatureVerifier, parseSignatureHashField, extractResultingHashFromSignature, signatureHasResultingHash, } from "../../src/crypto/index.js";
|
|
2
|
-
import { deriveOperationId } from "document-model/core";
|
|
3
|
-
import { beforeEach, describe, expect, it } from "vitest";
|
|
4
|
-
const TEST_DOC_ID = "test-doc-id";
|
|
5
|
-
const TEST_BRANCH = "main";
|
|
6
|
-
const TEST_SCOPE = "global";
|
|
7
|
-
function createTestAction(options) {
|
|
8
|
-
return {
|
|
9
|
-
id: "action-1",
|
|
10
|
-
type: "TEST_ACTION",
|
|
11
|
-
timestampUtcMs: new Date().toISOString(),
|
|
12
|
-
input: { foo: "bar" },
|
|
13
|
-
scope: "global",
|
|
14
|
-
context: options?.prevOpHash
|
|
15
|
-
? { prevOpHash: options.prevOpHash }
|
|
16
|
-
: undefined,
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function createOperationWithSignature(action, signature, did) {
|
|
20
|
-
const signedAction = {
|
|
21
|
-
...action,
|
|
22
|
-
context: {
|
|
23
|
-
...action.context,
|
|
24
|
-
signer: {
|
|
25
|
-
user: { address: did, chainId: 1, networkId: "eip155" },
|
|
26
|
-
app: { name: "test-app", key: did },
|
|
27
|
-
signatures: [signature],
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
};
|
|
31
|
-
return {
|
|
32
|
-
id: deriveOperationId(TEST_DOC_ID, TEST_SCOPE, TEST_BRANCH, signedAction.id),
|
|
33
|
-
index: 0,
|
|
34
|
-
timestampUtcMs: action.timestampUtcMs,
|
|
35
|
-
hash: "",
|
|
36
|
-
skip: 0,
|
|
37
|
-
action: signedAction,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
describe("RenownCryptoSigner", () => {
|
|
41
|
-
let keyStorage;
|
|
42
|
-
let renownCrypto;
|
|
43
|
-
let signer;
|
|
44
|
-
let verifier;
|
|
45
|
-
beforeEach(async () => {
|
|
46
|
-
keyStorage = new MemoryKeyStorage();
|
|
47
|
-
renownCrypto = await new RenownCryptoBuilder()
|
|
48
|
-
.withKeyPairStorage(keyStorage)
|
|
49
|
-
.build();
|
|
50
|
-
signer = new RenownCryptoSigner(renownCrypto, "test-app");
|
|
51
|
-
verifier = createSignatureVerifier();
|
|
52
|
-
});
|
|
53
|
-
describe("signActionWithResultingState", () => {
|
|
54
|
-
it("should include resultingStateHash in signature element [3]", async () => {
|
|
55
|
-
const action = createTestAction();
|
|
56
|
-
const resultingHash = "resulting-hash-abc123";
|
|
57
|
-
const signature = await signer.signActionWithResultingState(action, resultingHash);
|
|
58
|
-
expect(signature).toHaveLength(5);
|
|
59
|
-
expect(signature[3]).toContain(":");
|
|
60
|
-
expect(signature[3]).toContain(resultingHash);
|
|
61
|
-
});
|
|
62
|
-
it("should format hashField as prevStateHash:resultingStateHash", async () => {
|
|
63
|
-
const action = createTestAction({ prevOpHash: "prev-hash-xyz" });
|
|
64
|
-
const resultingHash = "resulting-hash-abc123";
|
|
65
|
-
const signature = await signer.signActionWithResultingState(action, resultingHash);
|
|
66
|
-
expect(signature[3]).toBe("prev-hash-xyz:resulting-hash-abc123");
|
|
67
|
-
});
|
|
68
|
-
it("should handle empty prevStateHash", async () => {
|
|
69
|
-
const action = createTestAction(); // no prevOpHash
|
|
70
|
-
const resultingHash = "resulting-hash-abc123";
|
|
71
|
-
const signature = await signer.signActionWithResultingState(action, resultingHash);
|
|
72
|
-
expect(signature[3]).toBe(":resulting-hash-abc123");
|
|
73
|
-
});
|
|
74
|
-
it("should produce verifiable signatures", async () => {
|
|
75
|
-
const action = createTestAction();
|
|
76
|
-
const resultingHash = "resulting-hash-abc123";
|
|
77
|
-
const signature = await signer.signActionWithResultingState(action, resultingHash);
|
|
78
|
-
// The signature should still be cryptographically valid
|
|
79
|
-
// (verification rebuilds message from params[0-3])
|
|
80
|
-
const operation = createOperationWithSignature(action, signature, signer.app.key);
|
|
81
|
-
const result = await verifier(operation, signer.app.key);
|
|
82
|
-
expect(result).toBe(true);
|
|
83
|
-
});
|
|
84
|
-
it("should abort when signal is aborted before starting", async () => {
|
|
85
|
-
const action = createTestAction();
|
|
86
|
-
const controller = new AbortController();
|
|
87
|
-
controller.abort();
|
|
88
|
-
await expect(signer.signActionWithResultingState(action, "hash", controller.signal)).rejects.toThrow("Signing aborted");
|
|
89
|
-
});
|
|
90
|
-
it("should produce different signatures than signAction for same action", async () => {
|
|
91
|
-
const action = createTestAction({ prevOpHash: "prev-hash" });
|
|
92
|
-
const resultingHash = "resulting-hash";
|
|
93
|
-
const sig1 = await signer.signAction(action);
|
|
94
|
-
const sig2 = await signer.signActionWithResultingState(action, resultingHash);
|
|
95
|
-
// Element [3] should differ
|
|
96
|
-
expect(sig1[3]).toBe("prev-hash");
|
|
97
|
-
expect(sig2[3]).toBe("prev-hash:resulting-hash");
|
|
98
|
-
// Signature hex [4] should differ (different message signed)
|
|
99
|
-
expect(sig1[4]).not.toBe(sig2[4]);
|
|
100
|
-
});
|
|
101
|
-
it("should handle empty resultingStateHash", async () => {
|
|
102
|
-
const action = createTestAction({ prevOpHash: "prev-hash" });
|
|
103
|
-
const signature = await signer.signActionWithResultingState(action, "");
|
|
104
|
-
expect(signature[3]).toBe("prev-hash:");
|
|
105
|
-
});
|
|
106
|
-
it("should handle both empty hashes", async () => {
|
|
107
|
-
const action = createTestAction(); // no prevOpHash
|
|
108
|
-
const signature = await signer.signActionWithResultingState(action, "");
|
|
109
|
-
expect(signature[3]).toBe(":");
|
|
110
|
-
});
|
|
111
|
-
it("should include valid timestamp", async () => {
|
|
112
|
-
const action = createTestAction();
|
|
113
|
-
const beforeTimestamp = Math.floor(Date.now() / 1000);
|
|
114
|
-
const signature = await signer.signActionWithResultingState(action, "hash");
|
|
115
|
-
// Allow 2 second tolerance for timing variations
|
|
116
|
-
const afterTimestamp = Math.floor(Date.now() / 1000) + 2;
|
|
117
|
-
const signatureTimestamp = parseInt(signature[0], 10);
|
|
118
|
-
expect(signatureTimestamp).toBeGreaterThanOrEqual(beforeTimestamp);
|
|
119
|
-
expect(signatureTimestamp).toBeLessThanOrEqual(afterTimestamp);
|
|
120
|
-
});
|
|
121
|
-
it("should include signer DID in element [1]", async () => {
|
|
122
|
-
const action = createTestAction();
|
|
123
|
-
const signature = await signer.signActionWithResultingState(action, "hash");
|
|
124
|
-
expect(signature[1]).toBe(renownCrypto.did);
|
|
125
|
-
expect(signature[1].startsWith("did:key:z")).toBe(true);
|
|
126
|
-
});
|
|
127
|
-
it("should include action hash in element [2]", async () => {
|
|
128
|
-
const action = createTestAction();
|
|
129
|
-
const signature = await signer.signActionWithResultingState(action, "hash");
|
|
130
|
-
// Hash should be a non-empty base64 string
|
|
131
|
-
expect(signature[2]).toBeDefined();
|
|
132
|
-
expect(signature[2].length).toBeGreaterThan(0);
|
|
133
|
-
});
|
|
134
|
-
it("should include hex signature in element [4]", async () => {
|
|
135
|
-
const action = createTestAction();
|
|
136
|
-
const signature = await signer.signActionWithResultingState(action, "hash");
|
|
137
|
-
expect(signature[4].startsWith("0x")).toBe(true);
|
|
138
|
-
expect(signature[4].length).toBeGreaterThan(2);
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
});
|
|
142
|
-
describe("parseSignatureHashField", () => {
|
|
143
|
-
it("should parse old format (no resulting hash)", () => {
|
|
144
|
-
const result = parseSignatureHashField("prev-hash-abc");
|
|
145
|
-
expect(result.prevStateHash).toBe("prev-hash-abc");
|
|
146
|
-
expect(result.resultingStateHash).toBeUndefined();
|
|
147
|
-
});
|
|
148
|
-
it("should parse new format (with resulting hash)", () => {
|
|
149
|
-
const result = parseSignatureHashField("prev-hash:resulting-hash");
|
|
150
|
-
expect(result.prevStateHash).toBe("prev-hash");
|
|
151
|
-
expect(result.resultingStateHash).toBe("resulting-hash");
|
|
152
|
-
});
|
|
153
|
-
it("should handle empty prevStateHash", () => {
|
|
154
|
-
const result = parseSignatureHashField(":resulting-hash");
|
|
155
|
-
expect(result.prevStateHash).toBe("");
|
|
156
|
-
expect(result.resultingStateHash).toBe("resulting-hash");
|
|
157
|
-
});
|
|
158
|
-
it("should handle empty string", () => {
|
|
159
|
-
const result = parseSignatureHashField("");
|
|
160
|
-
expect(result.prevStateHash).toBe("");
|
|
161
|
-
expect(result.resultingStateHash).toBeUndefined();
|
|
162
|
-
});
|
|
163
|
-
});
|
|
164
|
-
describe("extractResultingHashFromSignature", () => {
|
|
165
|
-
it("should return undefined for old format signatures", () => {
|
|
166
|
-
const signature = ["ts", "did", "hash", "prevHash", "0xsig"];
|
|
167
|
-
expect(extractResultingHashFromSignature(signature)).toBeUndefined();
|
|
168
|
-
});
|
|
169
|
-
it("should return resulting hash for new format signatures", () => {
|
|
170
|
-
const signature = ["ts", "did", "hash", "prev:result", "0xsig"];
|
|
171
|
-
expect(extractResultingHashFromSignature(signature)).toBe("result");
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
describe("signatureHasResultingHash", () => {
|
|
175
|
-
it("should return false for old format", () => {
|
|
176
|
-
const signature = ["ts", "did", "hash", "prevHash", "0xsig"];
|
|
177
|
-
expect(signatureHasResultingHash(signature)).toBe(false);
|
|
178
|
-
});
|
|
179
|
-
it("should return true for new format", () => {
|
|
180
|
-
const signature = ["ts", "did", "hash", "prev:result", "0xsig"];
|
|
181
|
-
expect(signatureHasResultingHash(signature)).toBe(true);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
//# sourceMappingURL=signer.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signer.test.js","sourceRoot":"","sources":["../../../test/crypto/signer.test.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,iCAAiC,EACjC,yBAAyB,GAE1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE1D,MAAM,WAAW,GAAG,aAAa,CAAC;AAClC,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,MAAM,UAAU,GAAG,QAAQ,CAAC;AAE5B,SAAS,gBAAgB,CAAC,OAAiC;IACzD,OAAO;QACL,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,aAAa;QACnB,cAAc,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;QACrB,KAAK,EAAE,QAAQ;QACf,OAAO,EAAE,OAAO,EAAE,UAAU;YAC1B,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE;YACpC,CAAC,CAAC,SAAS;KACd,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CACnC,MAAc,EACd,SAAoB,EACpB,GAAW;IAEX,MAAM,YAAY,GAAW;QAC3B,GAAG,MAAM;QACT,OAAO,EAAE;YACP,GAAG,MAAM,CAAC,OAAO;YACjB,MAAM,EAAE;gBACN,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE;gBACvD,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE;gBACnC,UAAU,EAAE,CAAC,SAAS,CAAC;aACxB;SACF;KACF,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,iBAAiB,CACnB,WAAW,EACX,UAAU,EACV,WAAW,EACX,YAAY,CAAC,EAAE,CAChB;QACD,KAAK,EAAE,CAAC;QACR,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,YAAY;KACrB,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,UAA4B,CAAC;IACjC,IAAI,YAA2B,CAAC;IAChC,IAAI,MAA0B,CAAC;IAC/B,IAAI,QAAoD,CAAC;IAEzD,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACpC,YAAY,GAAG,MAAM,IAAI,mBAAmB,EAAE;aAC3C,kBAAkB,CAAC,UAAU,CAAC;aAC9B,KAAK,EAAE,CAAC;QACX,MAAM,GAAG,IAAI,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC1D,QAAQ,GAAG,uBAAuB,EAAE,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC5C,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,uBAAuB,CAAC;YAE9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,aAAa,CACd,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;YAC3E,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;YACjE,MAAM,aAAa,GAAG,uBAAuB,CAAC;YAE9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,aAAa,CACd,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YACnD,MAAM,aAAa,GAAG,uBAAuB,CAAC;YAE9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,aAAa,CACd,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,MAAM,aAAa,GAAG,uBAAuB,CAAC;YAE9C,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,aAAa,CACd,CAAC;YAEF,wDAAwD;YACxD,mDAAmD;YACnD,MAAM,SAAS,GAAG,4BAA4B,CAC5C,MAAM,EACN,SAAS,EACT,MAAM,CAAC,GAAG,CAAC,GAAG,CACf,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAEzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACzC,UAAU,CAAC,KAAK,EAAE,CAAC;YAEnB,MAAM,MAAM,CACV,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CACvE,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,gBAAgB,CAAC;YAEvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACpD,MAAM,EACN,aAAa,CACd,CAAC;YAEF,4BAA4B;YAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAEjD,6DAA6D;YAC7D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;YACtD,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;YAE7D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;YAEnD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEtD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,MAAM,CACP,CAAC;YAEF,iDAAiD;YACjD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAEtD,MAAM,CAAC,kBAAkB,CAAC,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC;YACnE,MAAM,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;YACxD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAElC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAElC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,MAAM,CACP,CAAC;YAEF,2CAA2C;YAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YACnC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAElC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,4BAA4B,CACzD,MAAM,EACN,MAAM,CACP,CAAC;YAEF,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,uBAAuB,CAAC,0BAA0B,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,aAAa,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,SAAS,GAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,SAAS,GAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS,GAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS,GAAc,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"script.test.d.ts","sourceRoot":"","sources":["../../test/script.test.ts"],"names":[],"mappings":""}
|
package/dist/test/script.test.js
DELETED
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { ReactorBuilder, ReactorClientBuilder } from "@powerhousedao/reactor";
|
|
2
|
-
import { MemoryKeyStorage, RenownCryptoBuilder, RenownCryptoSigner, } from "@renown/sdk/node";
|
|
3
|
-
import { actions, documentModelDocumentModelModule, setName, } from "document-model";
|
|
4
|
-
import { describe, expect, it } from "vitest";
|
|
5
|
-
describe("Renown on script", () => {
|
|
6
|
-
it("should create a document and add a signed SET_NAME action", async () => {
|
|
7
|
-
// Create user directly (parsed from DID format)
|
|
8
|
-
const testUser = {
|
|
9
|
-
address: "0x9aDdcBbaA28F7eB5f75E023F7C1Fcb13C9DFD8F7",
|
|
10
|
-
networkId: "eip155",
|
|
11
|
-
chainId: 1,
|
|
12
|
-
};
|
|
13
|
-
// Create signer without network access
|
|
14
|
-
const keyStorage = new MemoryKeyStorage();
|
|
15
|
-
const crypto = await new RenownCryptoBuilder()
|
|
16
|
-
.withKeyPairStorage(keyStorage)
|
|
17
|
-
.build();
|
|
18
|
-
const signer = new RenownCryptoSigner(crypto, "script", testUser);
|
|
19
|
-
// Build reactor
|
|
20
|
-
const reactorBuilder = new ReactorBuilder().withDocumentModels([
|
|
21
|
-
documentModelDocumentModelModule,
|
|
22
|
-
]);
|
|
23
|
-
const reactorClient = await new ReactorClientBuilder()
|
|
24
|
-
.withReactorBuilder(reactorBuilder)
|
|
25
|
-
.withSigner(signer)
|
|
26
|
-
.build();
|
|
27
|
-
// Create new document
|
|
28
|
-
const document = await reactorClient.createEmpty("powerhouse/document-model");
|
|
29
|
-
// Add SET_NAME action
|
|
30
|
-
const result = await reactorClient.execute(document.header.id, "main", [
|
|
31
|
-
setName("New name"),
|
|
32
|
-
]);
|
|
33
|
-
// Get action signature
|
|
34
|
-
const operation = result.operations.global[0];
|
|
35
|
-
const actionSigner = operation.action.context?.signer;
|
|
36
|
-
expect(actionSigner?.app).toStrictEqual({
|
|
37
|
-
key: crypto.did,
|
|
38
|
-
name: "script",
|
|
39
|
-
});
|
|
40
|
-
expect(actionSigner?.user).toStrictEqual({
|
|
41
|
-
address: "0x9aDdcBbaA28F7eB5f75E023F7C1Fcb13C9DFD8F7",
|
|
42
|
-
networkId: "eip155",
|
|
43
|
-
chainId: 1,
|
|
44
|
-
});
|
|
45
|
-
expect(operation.action.context?.signer?.signatures
|
|
46
|
-
.flat()
|
|
47
|
-
.filter((sig) => sig.length > 0).length).toBeGreaterThan(0);
|
|
48
|
-
});
|
|
49
|
-
it("should NOT overwrite pre-signed actions with resulting-state-hash format", async () => {
|
|
50
|
-
// Create a test user that both signers will share
|
|
51
|
-
const testUser = {
|
|
52
|
-
address: "0x9aDdcBbaA28F7eB5f75E023F7C1Fcb13C9DFD8F7",
|
|
53
|
-
networkId: "eip155",
|
|
54
|
-
chainId: 1,
|
|
55
|
-
};
|
|
56
|
-
// Create two Renown signers with different keys (no network access needed)
|
|
57
|
-
const keyStorageA = new MemoryKeyStorage();
|
|
58
|
-
const cryptoA = await new RenownCryptoBuilder()
|
|
59
|
-
.withKeyPairStorage(keyStorageA)
|
|
60
|
-
.build();
|
|
61
|
-
const signerA = new RenownCryptoSigner(cryptoA, "scriptA", testUser);
|
|
62
|
-
const keyStorageB = new MemoryKeyStorage();
|
|
63
|
-
const cryptoB = await new RenownCryptoBuilder()
|
|
64
|
-
.withKeyPairStorage(keyStorageB)
|
|
65
|
-
.build();
|
|
66
|
-
const signerB = new RenownCryptoSigner(cryptoB, "scriptB", testUser);
|
|
67
|
-
// Verify different app DIDs (different keypairs = different DIDs)
|
|
68
|
-
expect(signerA.app.key).not.toBe(signerB.app.key);
|
|
69
|
-
// Build ReactorClient with signerB
|
|
70
|
-
const reactorBuilder = new ReactorBuilder().withDocumentModels([
|
|
71
|
-
documentModelDocumentModelModule,
|
|
72
|
-
]);
|
|
73
|
-
const reactorClient = await new ReactorClientBuilder()
|
|
74
|
-
.withReactorBuilder(reactorBuilder)
|
|
75
|
-
.withSigner(signerB)
|
|
76
|
-
.build();
|
|
77
|
-
// Create a document
|
|
78
|
-
const doc = await reactorClient.createEmpty("powerhouse/document-model");
|
|
79
|
-
// Step 1: Execute a FIRST action normally to establish a real prevOpHash
|
|
80
|
-
// This creates operation 0 with a real resulting state hash
|
|
81
|
-
await reactorClient.execute(doc.header.id, "main", [setName("First Name")]);
|
|
82
|
-
// Get the latest operation from the store
|
|
83
|
-
const operations = await reactorClient.getOperations(doc.header.id, {
|
|
84
|
-
scopes: ["global"],
|
|
85
|
-
});
|
|
86
|
-
const latestOp = operations.results[operations.results.length - 1];
|
|
87
|
-
// operation.hash IS the state hash (hash of document.state after this operation)
|
|
88
|
-
const prevOpHash = latestOp.hash;
|
|
89
|
-
// Step 2: For the SECOND action, pre-sign it with signerA
|
|
90
|
-
// Now we have a real prevOpHash to use in the signature
|
|
91
|
-
const secondAction = actions.setName("Second Name");
|
|
92
|
-
// For resultingStateHash, we predict what the state will be after this action.
|
|
93
|
-
// In a real script, you'd run the reducer locally to compute this.
|
|
94
|
-
// For this test, we use the prevOpHash as a stand-in (it's a real hash format).
|
|
95
|
-
// The key is testing signature PRESERVATION, not hash validation.
|
|
96
|
-
const predictedResultingHash = prevOpHash; // Use real hash format for testing
|
|
97
|
-
// Create the action with prevOpHash in context (required for signature)
|
|
98
|
-
const actionWithContext = {
|
|
99
|
-
...secondAction,
|
|
100
|
-
context: {
|
|
101
|
-
...secondAction.context,
|
|
102
|
-
prevOpHash,
|
|
103
|
-
},
|
|
104
|
-
};
|
|
105
|
-
const signatureA = await signerA.signActionWithResultingState(actionWithContext, predictedResultingHash);
|
|
106
|
-
// Verify signature has resulting-hash format: "prevOpHash:resultingHash"
|
|
107
|
-
expect(signatureA[3]).toContain(":");
|
|
108
|
-
expect(signatureA[3]).toBe(`${prevOpHash}:${predictedResultingHash}`);
|
|
109
|
-
const preSignedAction = {
|
|
110
|
-
...actionWithContext,
|
|
111
|
-
context: {
|
|
112
|
-
...actionWithContext.context,
|
|
113
|
-
signer: {
|
|
114
|
-
user: signerA.user,
|
|
115
|
-
app: signerA.app,
|
|
116
|
-
signatures: [signatureA],
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
};
|
|
120
|
-
// Verify the preSignedAction has the signature before executing
|
|
121
|
-
expect(preSignedAction.context?.signer?.signatures).toHaveLength(1);
|
|
122
|
-
expect(preSignedAction.context?.signer?.app.key).toBe(signerA.app.key);
|
|
123
|
-
// Step 3: Execute the pre-signed action via ReactorClient (which uses signerB)
|
|
124
|
-
await reactorClient.execute(doc.header.id, "main", [preSignedAction]);
|
|
125
|
-
// Get the second operation from the store
|
|
126
|
-
const allOperations = await reactorClient.getOperations(doc.header.id, {
|
|
127
|
-
scopes: ["global"],
|
|
128
|
-
});
|
|
129
|
-
const secondOp = allOperations.results[1]; // Second SET_NAME operation
|
|
130
|
-
const opSigner = secondOp.action.context?.signer;
|
|
131
|
-
expect(opSigner).toBeDefined();
|
|
132
|
-
// Signature should be from signerA, not signerB
|
|
133
|
-
expect(opSigner?.app.key).toBe(signerA.app.key);
|
|
134
|
-
expect(opSigner?.app.key).not.toBe(signerB.app.key);
|
|
135
|
-
// Should have exactly one signature (the original from signerA)
|
|
136
|
-
expect(opSigner?.signatures).toHaveLength(1);
|
|
137
|
-
// Signature should be byte-for-byte identical to signatureA
|
|
138
|
-
expect(opSigner?.signatures[0]).toEqual(signatureA);
|
|
139
|
-
// Verify the resulting-hash format is preserved: "prevOpHash:predictedResultingHash"
|
|
140
|
-
expect(opSigner?.signatures[0][3]).toContain(":");
|
|
141
|
-
expect(opSigner?.signatures[0][3]).toBe(`${prevOpHash}:${predictedResultingHash}`);
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
//# sourceMappingURL=script.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"script.test.js","sourceRoot":"","sources":["../../test/script.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.node.test.d.ts","sourceRoot":"","sources":["../../test/storage.node.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { NodeKeyStorage, RenownCrypto, } from "@renown/sdk/node";
|
|
2
|
-
import { subtle } from "node:crypto";
|
|
3
|
-
import { rmSync, writeFileSync } from "node:fs";
|
|
4
|
-
import { afterEach } from "node:test";
|
|
5
|
-
import { beforeEach, describe, expect, it } from "vitest";
|
|
6
|
-
async function generateKeyPair() {
|
|
7
|
-
const keyPair = await subtle.generateKey(RenownCrypto.algorithm, true, [
|
|
8
|
-
"sign",
|
|
9
|
-
"verify",
|
|
10
|
-
]);
|
|
11
|
-
return {
|
|
12
|
-
publicKey: await subtle.exportKey("jwk", keyPair.publicKey),
|
|
13
|
-
privateKey: await subtle.exportKey("jwk", keyPair.privateKey),
|
|
14
|
-
};
|
|
15
|
-
}
|
|
16
|
-
describe("Node key storage", () => {
|
|
17
|
-
const keyPairPath = "./test/tmp/keypair.json";
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
rmSync(keyPairPath, { recursive: true, force: true });
|
|
20
|
-
});
|
|
21
|
-
afterEach(() => {
|
|
22
|
-
rmSync(keyPairPath, { recursive: true, force: true });
|
|
23
|
-
});
|
|
24
|
-
it("should load key pair from the provided filepath", async () => {
|
|
25
|
-
const keyPair = await generateKeyPair();
|
|
26
|
-
const keyStorage = new NodeKeyStorage(keyPairPath);
|
|
27
|
-
writeFileSync(keyPairPath, JSON.stringify({ keyPair })); // Save key pair
|
|
28
|
-
const loadedKeyPair = await keyStorage.loadKeyPair();
|
|
29
|
-
expect(loadedKeyPair).toStrictEqual(keyPair);
|
|
30
|
-
});
|
|
31
|
-
it("should save key pair to the provided filepath", async () => {
|
|
32
|
-
const keyStorage = new NodeKeyStorage(keyPairPath);
|
|
33
|
-
const existingKeyPair = await keyStorage.loadKeyPair();
|
|
34
|
-
expect(existingKeyPair).toBeUndefined();
|
|
35
|
-
const keyPair = await generateKeyPair();
|
|
36
|
-
await keyStorage.saveKeyPair(keyPair);
|
|
37
|
-
const loadedKeyPair = await keyStorage.loadKeyPair();
|
|
38
|
-
expect(loadedKeyPair).toStrictEqual(keyPair);
|
|
39
|
-
});
|
|
40
|
-
it("should load key pair from provided environment variable", async () => {
|
|
41
|
-
const keyPair = await generateKeyPair();
|
|
42
|
-
const ENV_KEY_NAME = "PH_RENOWN_PRIVATE_KEY_TEST";
|
|
43
|
-
process.env[ENV_KEY_NAME] = JSON.stringify({ keyPair });
|
|
44
|
-
const keyStorage = new NodeKeyStorage(keyPairPath, {
|
|
45
|
-
envKeyName: ENV_KEY_NAME,
|
|
46
|
-
});
|
|
47
|
-
process.env[ENV_KEY_NAME] = JSON.stringify(keyPair);
|
|
48
|
-
const loadedKeyPair = await keyStorage.loadKeyPair();
|
|
49
|
-
expect(loadedKeyPair).toStrictEqual(keyPair);
|
|
50
|
-
});
|
|
51
|
-
it("should load key pair from the default filepath", async () => {
|
|
52
|
-
const keyPair = await generateKeyPair();
|
|
53
|
-
const keyStorage = new NodeKeyStorage();
|
|
54
|
-
writeFileSync(NodeKeyStorage.DEFAULT_KEYPAIR_PATH, JSON.stringify({ keyPair }));
|
|
55
|
-
const loadedKeyPair = await keyStorage.loadKeyPair();
|
|
56
|
-
expect(loadedKeyPair).toStrictEqual(keyPair);
|
|
57
|
-
});
|
|
58
|
-
it("should load key pair from default env var if no file path is provided", async () => {
|
|
59
|
-
const keyPair = await generateKeyPair();
|
|
60
|
-
process.env[NodeKeyStorage.ENV_KEY_NAME] = JSON.stringify({ keyPair });
|
|
61
|
-
const keyStorage = new NodeKeyStorage();
|
|
62
|
-
const loadedKeyPair = await keyStorage.loadKeyPair();
|
|
63
|
-
expect(loadedKeyPair).toStrictEqual(keyPair);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
//# sourceMappingURL=storage.node.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.node.test.js","sourceRoot":"","sources":["../../test/storage.node.test.ts"],"names":[],"mappings":"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"}
|