@ledgerhq/ledger-key-ring-protocol 0.5.1-nightly.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/.eslintrc.js +33 -0
- package/.turbo/turbo-build.log +4 -0
- package/.unimportedrc.json +16 -0
- package/CHANGELOG.md +299 -0
- package/LICENSE.txt +21 -0
- package/README.md +3 -0
- package/jest.config.js +13 -0
- package/lib/HWDeviceProvider.d.ts +25 -0
- package/lib/HWDeviceProvider.d.ts.map +1 -0
- package/lib/HWDeviceProvider.js +88 -0
- package/lib/HWDeviceProvider.js.map +1 -0
- package/lib/api.d.ts +77 -0
- package/lib/api.d.ts.map +1 -0
- package/lib/api.js +150 -0
- package/lib/api.js.map +1 -0
- package/lib/auth.d.ts +3 -0
- package/lib/auth.d.ts.map +1 -0
- package/lib/auth.js +79 -0
- package/lib/auth.js.map +1 -0
- package/lib/errors.d.ts +40 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +18 -0
- package/lib/errors.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +17 -0
- package/lib/index.js.map +1 -0
- package/lib/mockSdk.d.ts +22 -0
- package/lib/mockSdk.d.ts.map +1 -0
- package/lib/mockSdk.js +208 -0
- package/lib/mockSdk.js.map +1 -0
- package/lib/qrcode/cipher.d.ts +12 -0
- package/lib/qrcode/cipher.d.ts.map +1 -0
- package/lib/qrcode/cipher.js +69 -0
- package/lib/qrcode/cipher.js.map +1 -0
- package/lib/qrcode/cipher.test.d.ts +2 -0
- package/lib/qrcode/cipher.test.d.ts.map +1 -0
- package/lib/qrcode/cipher.test.js +40 -0
- package/lib/qrcode/cipher.test.js.map +1 -0
- package/lib/qrcode/index.d.ts +70 -0
- package/lib/qrcode/index.d.ts.map +1 -0
- package/lib/qrcode/index.js +312 -0
- package/lib/qrcode/index.js.map +1 -0
- package/lib/qrcode/index.test.d.ts +2 -0
- package/lib/qrcode/index.test.d.ts.map +1 -0
- package/lib/qrcode/index.test.js +131 -0
- package/lib/qrcode/index.test.js.map +1 -0
- package/lib/qrcode/types.d.ts +69 -0
- package/lib/qrcode/types.d.ts.map +1 -0
- package/lib/qrcode/types.js +3 -0
- package/lib/qrcode/types.js.map +1 -0
- package/lib/sdk.d.ts +31 -0
- package/lib/sdk.d.ts.map +1 -0
- package/lib/sdk.js +380 -0
- package/lib/sdk.js.map +1 -0
- package/lib/store.d.ts +71 -0
- package/lib/store.d.ts.map +1 -0
- package/lib/store.js +62 -0
- package/lib/store.js.map +1 -0
- package/lib/types.d.ts +181 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +10 -0
- package/lib/types.js.map +1 -0
- package/lib-es/HWDeviceProvider.d.ts +25 -0
- package/lib-es/HWDeviceProvider.d.ts.map +1 -0
- package/lib-es/HWDeviceProvider.js +81 -0
- package/lib-es/HWDeviceProvider.js.map +1 -0
- package/lib-es/api.d.ts +77 -0
- package/lib-es/api.d.ts.map +1 -0
- package/lib-es/api.js +145 -0
- package/lib-es/api.js.map +1 -0
- package/lib-es/auth.d.ts +3 -0
- package/lib-es/auth.d.ts.map +1 -0
- package/lib-es/auth.js +75 -0
- package/lib-es/auth.js.map +1 -0
- package/lib-es/errors.d.ts +40 -0
- package/lib-es/errors.d.ts.map +1 -0
- package/lib-es/errors.js +15 -0
- package/lib-es/errors.js.map +1 -0
- package/lib-es/index.d.ts +6 -0
- package/lib-es/index.d.ts.map +1 -0
- package/lib-es/index.js +13 -0
- package/lib-es/index.js.map +1 -0
- package/lib-es/mockSdk.d.ts +22 -0
- package/lib-es/mockSdk.d.ts.map +1 -0
- package/lib-es/mockSdk.js +201 -0
- package/lib-es/mockSdk.js.map +1 -0
- package/lib-es/qrcode/cipher.d.ts +12 -0
- package/lib-es/qrcode/cipher.d.ts.map +1 -0
- package/lib-es/qrcode/cipher.js +61 -0
- package/lib-es/qrcode/cipher.js.map +1 -0
- package/lib-es/qrcode/cipher.test.d.ts +2 -0
- package/lib-es/qrcode/cipher.test.d.ts.map +1 -0
- package/lib-es/qrcode/cipher.test.js +38 -0
- package/lib-es/qrcode/cipher.test.js.map +1 -0
- package/lib-es/qrcode/index.d.ts +70 -0
- package/lib-es/qrcode/index.d.ts.map +1 -0
- package/lib-es/qrcode/index.js +304 -0
- package/lib-es/qrcode/index.js.map +1 -0
- package/lib-es/qrcode/index.test.d.ts +2 -0
- package/lib-es/qrcode/index.test.d.ts.map +1 -0
- package/lib-es/qrcode/index.test.js +126 -0
- package/lib-es/qrcode/index.test.js.map +1 -0
- package/lib-es/qrcode/types.d.ts +69 -0
- package/lib-es/qrcode/types.d.ts.map +1 -0
- package/lib-es/qrcode/types.js +2 -0
- package/lib-es/qrcode/types.js.map +1 -0
- package/lib-es/sdk.d.ts +31 -0
- package/lib-es/sdk.d.ts.map +1 -0
- package/lib-es/sdk.js +371 -0
- package/lib-es/sdk.js.map +1 -0
- package/lib-es/store.d.ts +71 -0
- package/lib-es/store.d.ts.map +1 -0
- package/lib-es/store.js +51 -0
- package/lib-es/store.js.map +1 -0
- package/lib-es/types.d.ts +181 -0
- package/lib-es/types.d.ts.map +1 -0
- package/lib-es/types.js +7 -0
- package/lib-es/types.js.map +1 -0
- package/mocks/scenarios/addSameMemberMultipleTimes.json +426 -0
- package/mocks/scenarios/create2trustchainInARow.json +616 -0
- package/mocks/scenarios/getOrCreateTransactionCases.json +591 -0
- package/mocks/scenarios/member3implicitlyAdded.json +648 -0
- package/mocks/scenarios/membersManySelfAdd.json +1427 -0
- package/mocks/scenarios/randomMemberTryToDestroy.json +371 -0
- package/mocks/scenarios/removeMemberWithTheWrongSeed.json +510 -0
- package/mocks/scenarios/removedMemberEjectedOnDeletedTrustchain.json +481 -0
- package/mocks/scenarios/removedMemberEjectedOnGetMembers.json +648 -0
- package/mocks/scenarios/removedMemberEjectedOnRestore.json +648 -0
- package/mocks/scenarios/removingAMemberCreatesAnInteraction.json +593 -0
- package/mocks/scenarios/removingYourselfIsForbidden.json +397 -0
- package/mocks/scenarios/success.json +978 -0
- package/mocks/scenarios/tokenExpires.json +371 -0
- package/mocks/scenarios/twoAddMembersFollowedByDeviceAdd.json +705 -0
- package/mocks/scenarios/userRefusesAuth.json +40 -0
- package/mocks/scenarios/userRefusesRemoveMember.json +542 -0
- package/package.json +91 -0
- package/scripts/README.md +15 -0
- package/scripts/e2e.ts +57 -0
- package/src/HWDeviceProvider.ts +105 -0
- package/src/__tests__/integration/mock.sdk.test.ts +47 -0
- package/src/__tests__/integration/sdk.test.ts +20 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/unit/sdk.test.ts +236 -0
- package/src/api.ts +202 -0
- package/src/auth.ts +81 -0
- package/src/errors.ts +18 -0
- package/src/index.ts +20 -0
- package/src/mockSdk.ts +253 -0
- package/src/qrcode/cipher.test.ts +30 -0
- package/src/qrcode/cipher.ts +63 -0
- package/src/qrcode/index.test.ts +138 -0
- package/src/qrcode/index.ts +395 -0
- package/src/qrcode/types.ts +70 -0
- package/src/sdk.ts +542 -0
- package/src/store.ts +99 -0
- package/src/types.ts +242 -0
- package/tests/scenarios/_template.ts +18 -0
- package/tests/scenarios/addSameMemberMultipleTimes.ts +20 -0
- package/tests/scenarios/create2trustchainInARow.ts +14 -0
- package/tests/scenarios/getOrCreateTransactionCases.ts +74 -0
- package/tests/scenarios/member3implicitlyAdded.ts +51 -0
- package/tests/scenarios/membersManySelfAdd.ts +18 -0
- package/tests/scenarios/randomMemberTryToDestroy.ts +23 -0
- package/tests/scenarios/removeMemberWithTheWrongSeed.ts +28 -0
- package/tests/scenarios/removedMemberEjectedOnDeletedTrustchain.ts +31 -0
- package/tests/scenarios/removedMemberEjectedOnGetMembers.ts +29 -0
- package/tests/scenarios/removedMemberEjectedOnRestore.ts +31 -0
- package/tests/scenarios/removingAMemberCreatesAnInteraction.ts +42 -0
- package/tests/scenarios/removingYourselfIsForbidden.ts +11 -0
- package/tests/scenarios/success.ts +94 -0
- package/tests/scenarios/tokenExpires.ts +20 -0
- package/tests/scenarios/twoAddMembersFollowedByDeviceAdd.ts +49 -0
- package/tests/scenarios/userRefusesAuth.ts +28 -0
- package/tests/scenarios/userRefusesRemoveMember.ts +66 -0
- package/tests/test-helpers/recordTrustchainSdkTests.ts +178 -0
- package/tests/test-helpers/replayTrustchainSdkTests.ts +141 -0
- package/tests/test-helpers/types.ts +45 -0
- package/tests/tsconfig.json +8 -0
- package/tsconfig.json +15 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/qrcode/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Trustchain } from "../types";
|
|
2
|
+
export type Encrypted<T> = {
|
|
3
|
+
encrypted: string;
|
|
4
|
+
};
|
|
5
|
+
export type Message = {
|
|
6
|
+
version: number;
|
|
7
|
+
publisher: string;
|
|
8
|
+
message: "InitiateHandshake";
|
|
9
|
+
payload: {
|
|
10
|
+
ephemeral_public_key: string;
|
|
11
|
+
};
|
|
12
|
+
} | {
|
|
13
|
+
version: number;
|
|
14
|
+
publisher: string;
|
|
15
|
+
message: "Failure";
|
|
16
|
+
payload: {
|
|
17
|
+
message: string;
|
|
18
|
+
type: string;
|
|
19
|
+
};
|
|
20
|
+
} | {
|
|
21
|
+
version: number;
|
|
22
|
+
publisher: string;
|
|
23
|
+
message: "HandshakeChallenge";
|
|
24
|
+
payload: Encrypted<{
|
|
25
|
+
digits: number;
|
|
26
|
+
connected: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
} | {
|
|
29
|
+
version: number;
|
|
30
|
+
publisher: string;
|
|
31
|
+
message: "CompleteHandshakeChallenge";
|
|
32
|
+
payload: Encrypted<{
|
|
33
|
+
digits: string;
|
|
34
|
+
}>;
|
|
35
|
+
} | {
|
|
36
|
+
version: number;
|
|
37
|
+
publisher: string;
|
|
38
|
+
message: "HandshakeCompletionSucceeded";
|
|
39
|
+
payload: Encrypted<Record<string, never>>;
|
|
40
|
+
} | {
|
|
41
|
+
version: number;
|
|
42
|
+
publisher: string;
|
|
43
|
+
message: "TrustchainRequestCredential";
|
|
44
|
+
payload: Encrypted<Record<string, never>>;
|
|
45
|
+
} | {
|
|
46
|
+
version: number;
|
|
47
|
+
publisher: string;
|
|
48
|
+
message: "TrustchainShareCredential";
|
|
49
|
+
payload: Encrypted<{
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
}>;
|
|
53
|
+
} | {
|
|
54
|
+
version: number;
|
|
55
|
+
publisher: string;
|
|
56
|
+
message: "TrustchainAddedMember";
|
|
57
|
+
payload: Encrypted<{
|
|
58
|
+
trustchain: Trustchain;
|
|
59
|
+
}>;
|
|
60
|
+
};
|
|
61
|
+
export type DecryptedPayload<M> = M extends {
|
|
62
|
+
payload: Encrypted<infer T>;
|
|
63
|
+
} ? T : M extends {
|
|
64
|
+
payload: infer T;
|
|
65
|
+
} ? T : never;
|
|
66
|
+
export type ExtractEncryptedPayloads<T> = T extends {
|
|
67
|
+
payload: Encrypted<infer P>;
|
|
68
|
+
} ? P : never;
|
|
69
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/qrcode/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,OAAO,GACf;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE;QAAE,oBAAoB,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,EAAE,SAAS,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC5D,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,4BAA4B,CAAC;IACtC,OAAO,EAAE,SAAS,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxC,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,8BAA8B,CAAC;IACxC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;CAC3C,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,6BAA6B,CAAC;IACvC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;CAC3C,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,2BAA2B,CAAC;IACrC,OAAO,EAAE,SAAS,CAAC;QAEjB,EAAE,EAAE,MAAM,CAAC;QAEX,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ,GACD;IACE,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,uBAAuB,CAAC;IACjC,OAAO,EAAE,SAAS,CAAC;QACjB,UAAU,EAAE,UAAU,CAAC;KACxB,CAAC,CAAC;CACJ,CAAC;AAEN,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,GACvE,CAAC,GACD,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAC,CAAA;CAAE,GAC5B,CAAC,GACD,KAAK,CAAC;AAEZ,MAAM,MAAM,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/qrcode/types.ts"],"names":[],"mappings":""}
|
package/lib-es/sdk.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { JWT, MemberCredentials, TrustchainSDKContext, Trustchain, TrustchainMember, TrustchainSDK, TrustchainDeviceCallbacks, AuthCachePolicy, TrustchainResult, TrustchainLifecycle, GetOrCreateTrustchainCallbacks } from "./types";
|
|
2
|
+
import { KeyPair as CryptoKeyPair } from "@ledgerhq/hw-ledger-key-ring-protocol/Crypto";
|
|
3
|
+
import { HWDeviceProvider } from "./HWDeviceProvider";
|
|
4
|
+
export declare class SDK implements TrustchainSDK {
|
|
5
|
+
private context;
|
|
6
|
+
private hwDeviceProvider;
|
|
7
|
+
private lifecycle?;
|
|
8
|
+
private api;
|
|
9
|
+
constructor(context: TrustchainSDKContext, hwDeviceProvider: HWDeviceProvider, lifecyle?: TrustchainLifecycle);
|
|
10
|
+
private jwt;
|
|
11
|
+
private jwtHash;
|
|
12
|
+
withAuth<T>(trustchain: Trustchain, memberCredentials: MemberCredentials, job: (jwt: JWT) => Promise<T>, policy?: AuthCachePolicy, ignorePermissionsChecks?: boolean): Promise<T>;
|
|
13
|
+
initMemberCredentials(): Promise<MemberCredentials>;
|
|
14
|
+
getOrCreateTrustchain(deviceId: string, memberCredentials: MemberCredentials, callbacks?: GetOrCreateTrustchainCallbacks, topic?: Uint8Array, currentTrustchain?: Trustchain): Promise<TrustchainResult>;
|
|
15
|
+
restoreTrustchain(trustchain: Trustchain, memberCredentials: MemberCredentials): Promise<Trustchain>;
|
|
16
|
+
getMembers(trustchain: Trustchain, memberCredentials: MemberCredentials): Promise<TrustchainMember[]>;
|
|
17
|
+
removeMember(deviceId: string, trustchain: Trustchain, memberCredentials: MemberCredentials, member: TrustchainMember, callbacks?: TrustchainDeviceCallbacks): Promise<Trustchain>;
|
|
18
|
+
addMember(trustchain: Trustchain, memberCredentials: MemberCredentials, member: TrustchainMember): Promise<void>;
|
|
19
|
+
invalidateJwt(): void;
|
|
20
|
+
destroyTrustchain(trustchain: Trustchain, memberCredentials: MemberCredentials): Promise<void>;
|
|
21
|
+
encryptUserData(trustchain: Trustchain, input: Uint8Array): Promise<Uint8Array>;
|
|
22
|
+
decryptUserData(trustchain: Trustchain, data: Uint8Array): Promise<Uint8Array>;
|
|
23
|
+
private fetchTrustchain;
|
|
24
|
+
private fetchTrustchainAndResolve;
|
|
25
|
+
private auth;
|
|
26
|
+
private pushMember;
|
|
27
|
+
private closeStream;
|
|
28
|
+
}
|
|
29
|
+
export declare function convertKeyPairToLiveCredentials(keyPair: CryptoKeyPair): MemberCredentials;
|
|
30
|
+
export declare function convertLiveCredentialsToKeyPair(memberCredentials: MemberCredentials): CryptoKeyPair;
|
|
31
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAEhB,mBAAmB,EACnB,8BAA8B,EAC/B,MAAM,SAAS,CAAC;AAYjB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAUxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAMtD,qBAAa,GAAI,YAAW,aAAa;IACvC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAC,CAAsB;IACxC,OAAO,CAAC,GAAG,CAA4B;gBAGrC,OAAO,EAAE,oBAAoB,EAC7B,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,CAAC,EAAE,mBAAmB;IAQhC,OAAO,CAAC,GAAG,CAA8B;IACzC,OAAO,CAAC,OAAO,CAAM;IACrB,QAAQ,CAAC,CAAC,EACR,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7B,MAAM,CAAC,EAAE,eAAe,EACxB,uBAAuB,CAAC,EAAE,OAAO,GAChC,OAAO,CAAC,CAAC,CAAC;IA8BP,qBAAqB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAKnD,qBAAqB,CACzB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,CAAC,EAAE,8BAA8B,EAC1C,KAAK,CAAC,EAAE,UAAU,EAClB,iBAAiB,CAAC,EAAE,UAAU,GAC7B,OAAO,CAAC,gBAAgB,CAAC;IAsFtB,iBAAiB,CACrB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;IAqBhB,UAAU,CACd,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAWxB,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,gBAAgB,EACxB,SAAS,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,UAAU,CAAC;IAqFhB,SAAS,CACb,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,IAAI,CAAC;IAiBhB,aAAa;IAKP,iBAAiB,CACrB,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,IAAI,CAAC;IAOV,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAM/E,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAMtE,eAAe;YAMf,yBAAyB;YASzB,IAAI;YA4BJ,UAAU;YAoCV,WAAW;CAkB1B;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,aAAa,GAAG,iBAAiB,CAKzF;AAED,wBAAgB,+BAA+B,CAC7C,iBAAiB,EAAE,iBAAiB,GACnC,aAAa,CAKf"}
|
package/lib-es/sdk.js
ADDED
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { TrustchainResultType, } from "./types";
|
|
11
|
+
import { crypto, Challenge, CommandStreamEncoder, StreamTree, Permissions, DerivationPath, SoftwareDevice, } from "@ledgerhq/hw-ledger-key-ring-protocol";
|
|
12
|
+
import getApi from "./api";
|
|
13
|
+
import { log } from "@ledgerhq/logs";
|
|
14
|
+
import { LedgerAPI4xx } from "@ledgerhq/errors";
|
|
15
|
+
import { TrustchainAlreadyInitialized, TrustchainAlreadyInitializedWithOtherSeed, TrustchainEjected, TrustchainNotAllowed, TrustchainOutdated, } from "./errors";
|
|
16
|
+
import { genericWithJWT } from "./auth";
|
|
17
|
+
export class SDK {
|
|
18
|
+
constructor(context, hwDeviceProvider, lifecyle) {
|
|
19
|
+
this.jwt = undefined;
|
|
20
|
+
this.jwtHash = "";
|
|
21
|
+
this.context = context;
|
|
22
|
+
this.hwDeviceProvider = hwDeviceProvider;
|
|
23
|
+
this.lifecycle = lifecyle;
|
|
24
|
+
this.api = getApi(context.apiBaseUrl);
|
|
25
|
+
}
|
|
26
|
+
withAuth(trustchain, memberCredentials, job, policy, ignorePermissionsChecks) {
|
|
27
|
+
const hash = trustchain.rootId + " " + memberCredentials.pubkey;
|
|
28
|
+
if (this.jwtHash !== hash) {
|
|
29
|
+
this.jwt = undefined;
|
|
30
|
+
this.jwtHash = hash;
|
|
31
|
+
}
|
|
32
|
+
return genericWithJWT(jwt => {
|
|
33
|
+
this.jwt = jwt;
|
|
34
|
+
if (!ignorePermissionsChecks) {
|
|
35
|
+
const permissions = jwt.permissions[trustchain.rootId];
|
|
36
|
+
if (!permissions) {
|
|
37
|
+
throw new TrustchainNotAllowed("permissions not available for current trustchain");
|
|
38
|
+
}
|
|
39
|
+
// check if the application path is allowed
|
|
40
|
+
if (!permissions[trustchain.applicationPath]) {
|
|
41
|
+
throw new TrustchainOutdated(`expected ${trustchain.applicationPath}, got: ${Object.keys(permissions)[0]}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return job(jwt);
|
|
45
|
+
}, this.jwt, () => this.auth(trustchain, memberCredentials), jwt => this.api.refreshAuth(jwt), policy);
|
|
46
|
+
}
|
|
47
|
+
initMemberCredentials() {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const kp = yield crypto.randomKeypair();
|
|
50
|
+
return convertKeyPairToLiveCredentials(kp);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
getOrCreateTrustchain(deviceId, memberCredentials, callbacks, topic, currentTrustchain) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
var _a;
|
|
56
|
+
this.invalidateJwt();
|
|
57
|
+
let type = TrustchainResultType.restored;
|
|
58
|
+
const withJwt = job => this.hwDeviceProvider.withJwt(deviceId, job, "cache", callbacks);
|
|
59
|
+
const withHw = job => this.hwDeviceProvider.withHw(deviceId, job, callbacks);
|
|
60
|
+
let trustchains = yield withJwt(this.api.getTrustchains);
|
|
61
|
+
(_a = callbacks === null || callbacks === void 0 ? void 0 : callbacks.onInitialResponse) === null || _a === void 0 ? void 0 : _a.call(callbacks, trustchains);
|
|
62
|
+
if (currentTrustchain) {
|
|
63
|
+
yield this.restoreTrustchain(currentTrustchain, memberCredentials).then(() => {
|
|
64
|
+
throw Object.keys(trustchains).includes(currentTrustchain.rootId)
|
|
65
|
+
? new TrustchainAlreadyInitialized()
|
|
66
|
+
: new TrustchainAlreadyInitializedWithOtherSeed();
|
|
67
|
+
}, () => {
|
|
68
|
+
// The user was ejected from the trustchain therefore we can continue
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (Object.keys(trustchains).length === 0) {
|
|
72
|
+
log("trustchain", "getOrCreateTrustchain: no trustchain yet, let's create one");
|
|
73
|
+
type = TrustchainResultType.created;
|
|
74
|
+
const streamTree = yield this.hwDeviceProvider.withHw(deviceId, hw => StreamTree.createNewTree(hw, { topic }));
|
|
75
|
+
yield streamTree.getRoot().resolve(); // double checks the signatures are correct before sending to the backend
|
|
76
|
+
const commandStream = CommandStreamEncoder.encode(streamTree.getRoot().blocks);
|
|
77
|
+
yield withJwt(jwt => this.api.postSeed(jwt, crypto.to_hex(commandStream)));
|
|
78
|
+
// deviceJwt have changed, proactively refresh it
|
|
79
|
+
yield this.hwDeviceProvider.refreshJwt(deviceId, callbacks);
|
|
80
|
+
trustchains = yield withJwt(this.api.getTrustchains);
|
|
81
|
+
}
|
|
82
|
+
// we find our trustchain root id
|
|
83
|
+
let trustchainRootId;
|
|
84
|
+
const trustchainRootPath = "m/";
|
|
85
|
+
for (const [trustchainId, info] of Object.entries(trustchains)) {
|
|
86
|
+
for (const path in info) {
|
|
87
|
+
if (path === trustchainRootPath) {
|
|
88
|
+
trustchainRootId = trustchainId;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
invariant(trustchainRootId, "trustchainRootId should be defined");
|
|
93
|
+
log("trustchain", "getOrCreateTrustchain rootId=" + trustchainRootId);
|
|
94
|
+
// make a stream tree from all the trustchains associated to this root id
|
|
95
|
+
let { streamTree } = yield withJwt(jwt => this.fetchTrustchain(jwt, trustchainRootId));
|
|
96
|
+
const path = streamTree.getApplicationRootPath(this.context.applicationId);
|
|
97
|
+
const child = streamTree.getChild(path);
|
|
98
|
+
let shouldShare = true;
|
|
99
|
+
if (child) {
|
|
100
|
+
const resolved = yield child.resolve();
|
|
101
|
+
const members = resolved.getMembers();
|
|
102
|
+
shouldShare = !members.some(m => crypto.to_hex(m) === memberCredentials.pubkey); // not already a member
|
|
103
|
+
}
|
|
104
|
+
if (shouldShare) {
|
|
105
|
+
if (type === TrustchainResultType.restored)
|
|
106
|
+
type = TrustchainResultType.updated;
|
|
107
|
+
streamTree = yield this.pushMember(streamTree, path, trustchainRootId, withJwt, withHw, {
|
|
108
|
+
id: memberCredentials.pubkey,
|
|
109
|
+
name: this.context.name,
|
|
110
|
+
permissions: Permissions.OWNER,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
const walletSyncEncryptionKey = yield extractEncryptionKey(streamTree, path, memberCredentials);
|
|
114
|
+
const trustchain = {
|
|
115
|
+
rootId: trustchainRootId,
|
|
116
|
+
walletSyncEncryptionKey,
|
|
117
|
+
applicationPath: path,
|
|
118
|
+
};
|
|
119
|
+
return { type, trustchain };
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
restoreTrustchain(trustchain, memberCredentials) {
|
|
123
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
124
|
+
const { streamTree, applicationRootPath } = yield this.withAuth(trustchain, memberCredentials, jwt => this.fetchTrustchainAndResolve(jwt, trustchain.rootId, this.context.applicationId), "refresh", true);
|
|
125
|
+
const walletSyncEncryptionKey = yield extractEncryptionKey(streamTree, applicationRootPath, memberCredentials);
|
|
126
|
+
return {
|
|
127
|
+
rootId: trustchain.rootId,
|
|
128
|
+
walletSyncEncryptionKey,
|
|
129
|
+
applicationPath: applicationRootPath,
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
getMembers(trustchain, memberCredentials) {
|
|
134
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
135
|
+
const { resolved } = yield this.withAuth(trustchain, memberCredentials, jwt => this.fetchTrustchainAndResolve(jwt, trustchain.rootId, this.context.applicationId));
|
|
136
|
+
const members = resolved.getMembersData();
|
|
137
|
+
if (!members.some(m => m.id === memberCredentials.pubkey)) {
|
|
138
|
+
throw new TrustchainEjected("Not a member of trustchain");
|
|
139
|
+
}
|
|
140
|
+
return members;
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
removeMember(deviceId, trustchain, memberCredentials, member, callbacks) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
var _a;
|
|
146
|
+
this.invalidateJwt();
|
|
147
|
+
const withJwt = job => this.hwDeviceProvider.withJwt(deviceId, job, "cache", callbacks);
|
|
148
|
+
const withHw = job => this.hwDeviceProvider.withHw(deviceId, job, callbacks);
|
|
149
|
+
// invariant because the sdk does not support this case, and the UI should not allows it.
|
|
150
|
+
invariant(memberCredentials.pubkey !== member.id, "removeMember must not be used to remove the current member.");
|
|
151
|
+
const afterRotation = yield ((_a = this.lifecycle) === null || _a === void 0 ? void 0 : _a.onTrustchainRotation(this, trustchain, memberCredentials));
|
|
152
|
+
const applicationId = this.context.applicationId;
|
|
153
|
+
const trustchainId = trustchain.rootId;
|
|
154
|
+
// eslint-disable-next-line prefer-const
|
|
155
|
+
let { resolved, streamTree, applicationRootPath } = yield withJwt(jwt => this.fetchTrustchainAndResolve(jwt, trustchainId, applicationId));
|
|
156
|
+
const members = resolved.getMembersData();
|
|
157
|
+
const withoutMember = members.filter(m => m.id !== member.id);
|
|
158
|
+
invariant(withoutMember.length < members.length, "member not found"); // invariant because the UI should not allow this case.
|
|
159
|
+
const withoutMemberOrMe = withoutMember.filter(m => m.id !== memberCredentials.pubkey);
|
|
160
|
+
const softwareDevice = getSoftwareDevice(memberCredentials);
|
|
161
|
+
const newPath = streamTree.getApplicationRootPath(applicationId, 1);
|
|
162
|
+
// We close the current trustchain with the hardware wallet in order to get a user confirmation of the action
|
|
163
|
+
const sendCloseStreamToAPI = yield this.closeStream(streamTree, applicationRootPath, trustchainId, withJwt, withHw);
|
|
164
|
+
// derive a new branch of the tree on the new path
|
|
165
|
+
streamTree = yield this.pushMember(streamTree, newPath, trustchainId, withJwt, withHw, {
|
|
166
|
+
id: memberCredentials.pubkey,
|
|
167
|
+
name: this.context.name,
|
|
168
|
+
permissions: Permissions.OWNER,
|
|
169
|
+
});
|
|
170
|
+
// add the remaining members
|
|
171
|
+
const withSw = (job) => job(softwareDevice);
|
|
172
|
+
for (const m of withoutMemberOrMe) {
|
|
173
|
+
streamTree = yield this.pushMember(streamTree, newPath, trustchainId, withJwt, withSw, m);
|
|
174
|
+
}
|
|
175
|
+
const walletSyncEncryptionKey = yield extractEncryptionKey(streamTree, newPath, memberCredentials);
|
|
176
|
+
// we send the close stream to the API only after the new stream is created in case user cancelled the process in the middle.
|
|
177
|
+
yield sendCloseStreamToAPI();
|
|
178
|
+
// deviceJwt have changed, proactively refresh it
|
|
179
|
+
yield this.hwDeviceProvider.refreshJwt(deviceId, callbacks);
|
|
180
|
+
const newTrustchain = {
|
|
181
|
+
rootId: trustchainId,
|
|
182
|
+
walletSyncEncryptionKey,
|
|
183
|
+
applicationPath: newPath,
|
|
184
|
+
};
|
|
185
|
+
if (afterRotation)
|
|
186
|
+
yield afterRotation(newTrustchain);
|
|
187
|
+
// refresh the jwt with the new trustchain
|
|
188
|
+
this.jwt = yield this.withAuth(newTrustchain, memberCredentials, jwt => Promise.resolve(jwt), "refresh");
|
|
189
|
+
return newTrustchain;
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
addMember(trustchain, memberCredentials, member) {
|
|
193
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
194
|
+
const withJwt = f => this.withAuth(trustchain, memberCredentials, f);
|
|
195
|
+
const { streamTree, applicationRootPath } = yield withJwt(jwt => this.fetchTrustchainAndResolve(jwt, trustchain.rootId, this.context.applicationId));
|
|
196
|
+
const softwareDevice = getSoftwareDevice(memberCredentials);
|
|
197
|
+
const withSw = (job) => job(softwareDevice);
|
|
198
|
+
yield this.pushMember(streamTree, applicationRootPath, trustchain.rootId, withJwt, withSw, member);
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
invalidateJwt() {
|
|
202
|
+
this.jwt = undefined;
|
|
203
|
+
this.hwDeviceProvider.clearJwt();
|
|
204
|
+
}
|
|
205
|
+
destroyTrustchain(trustchain, memberCredentials) {
|
|
206
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
207
|
+
yield this.withAuth(trustchain, memberCredentials, jwt => this.api.deleteTrustchain(jwt, trustchain.rootId));
|
|
208
|
+
this.invalidateJwt();
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
encryptUserData(trustchain, input) {
|
|
212
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
213
|
+
const key = crypto.from_hex(trustchain.walletSyncEncryptionKey);
|
|
214
|
+
const encrypted = yield crypto.encryptUserData(key, input);
|
|
215
|
+
return encrypted;
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
decryptUserData(trustchain, data) {
|
|
219
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
220
|
+
const key = crypto.from_hex(trustchain.walletSyncEncryptionKey);
|
|
221
|
+
const decrypted = yield crypto.decryptUserData(key, data);
|
|
222
|
+
return decrypted;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
fetchTrustchain(jwt, trustchainId) {
|
|
226
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
227
|
+
const trustchainData = yield this.api.getTrustchain(jwt, trustchainId);
|
|
228
|
+
const streamTree = StreamTree.deserialize(trustchainData);
|
|
229
|
+
return { streamTree };
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
fetchTrustchainAndResolve(jwt, trustchainId, applicationId) {
|
|
233
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
234
|
+
const { streamTree } = yield this.fetchTrustchain(jwt, trustchainId);
|
|
235
|
+
const applicationRootPath = streamTree.getApplicationRootPath(applicationId);
|
|
236
|
+
const applicationNode = streamTree.getChild(applicationRootPath);
|
|
237
|
+
invariant(applicationNode, "could not find the application stream.");
|
|
238
|
+
const resolved = yield applicationNode.resolve();
|
|
239
|
+
return { resolved, streamTree, applicationRootPath, applicationNode };
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
auth(trustchain, memberCredentials) {
|
|
243
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
244
|
+
const challenge = yield this.api.getAuthenticationChallenge();
|
|
245
|
+
const data = crypto.from_hex(challenge.tlv);
|
|
246
|
+
const [parsed, _] = Challenge.fromBytes(data);
|
|
247
|
+
const hash = yield crypto.hash(parsed.getUnsignedTLV());
|
|
248
|
+
const keypair = convertLiveCredentialsToKeyPair(memberCredentials);
|
|
249
|
+
const response = yield this.api
|
|
250
|
+
.postChallengeResponse({
|
|
251
|
+
challenge: challenge.json,
|
|
252
|
+
signature: {
|
|
253
|
+
credential: credentialForPubKey(memberCredentials.pubkey),
|
|
254
|
+
signature: crypto.to_hex(yield crypto.sign(hash, keypair)),
|
|
255
|
+
attestation: crypto.to_hex(liveAuthentication(trustchain.rootId)),
|
|
256
|
+
},
|
|
257
|
+
})
|
|
258
|
+
.catch(e => {
|
|
259
|
+
if (e instanceof LedgerAPI4xx &&
|
|
260
|
+
(e.message.includes("Not a member of trustchain") ||
|
|
261
|
+
e.message.includes("You are not member"))) {
|
|
262
|
+
throw new TrustchainEjected(e.message);
|
|
263
|
+
}
|
|
264
|
+
throw e;
|
|
265
|
+
});
|
|
266
|
+
return response;
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
pushMember(streamTree, path, trustchainId, withJwt, withDevice, member) {
|
|
270
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
271
|
+
const isMemberAlreadyInStreamTree = yield isMemberInStreamTree(streamTree, path, member);
|
|
272
|
+
if (isMemberAlreadyInStreamTree) {
|
|
273
|
+
return streamTree;
|
|
274
|
+
}
|
|
275
|
+
const isNewDerivation = !streamTree.getChild(path);
|
|
276
|
+
streamTree = yield withDevice(device => streamTree.share(path, device, crypto.from_hex(member.id), member.name, member.permissions));
|
|
277
|
+
const child = streamTree.getChild(path);
|
|
278
|
+
invariant(child, "StreamTree.share failed to create the child stream.");
|
|
279
|
+
yield child.resolve(); // double checks the signatures are correct before sending to the backend
|
|
280
|
+
if (isNewDerivation) {
|
|
281
|
+
const commandStream = CommandStreamEncoder.encode(child.blocks);
|
|
282
|
+
yield withJwt(jwt => this.api.postDerivation(jwt, trustchainId, crypto.to_hex(commandStream)));
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
const commandStream = CommandStreamEncoder.encode([child.blocks[child.blocks.length - 1]]);
|
|
286
|
+
const request = {
|
|
287
|
+
path,
|
|
288
|
+
blocks: [crypto.to_hex(commandStream)],
|
|
289
|
+
};
|
|
290
|
+
yield withJwt(jwt => this.api.putCommands(jwt, trustchainId, request));
|
|
291
|
+
}
|
|
292
|
+
return streamTree;
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
closeStream(streamTree, path, trustchainId, withJwt, withDevice) {
|
|
296
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
297
|
+
streamTree = yield withDevice(device => streamTree.close(path, device));
|
|
298
|
+
const child = streamTree.getChild(path);
|
|
299
|
+
invariant(child, "StreamTree.close failed to create the child stream.");
|
|
300
|
+
yield child.resolve(); // double checks the signatures are correct before sending to the backend
|
|
301
|
+
const commandStream = CommandStreamEncoder.encode([child.blocks[child.blocks.length - 1]]);
|
|
302
|
+
const request = {
|
|
303
|
+
path,
|
|
304
|
+
blocks: [crypto.to_hex(commandStream)],
|
|
305
|
+
};
|
|
306
|
+
return () => withJwt(jwt => this.api.putCommands(jwt, trustchainId, request));
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
export function convertKeyPairToLiveCredentials(keyPair) {
|
|
311
|
+
return {
|
|
312
|
+
pubkey: crypto.to_hex(keyPair.publicKey),
|
|
313
|
+
privatekey: crypto.to_hex(keyPair.privateKey),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
export function convertLiveCredentialsToKeyPair(memberCredentials) {
|
|
317
|
+
return {
|
|
318
|
+
publicKey: crypto.from_hex(memberCredentials.pubkey),
|
|
319
|
+
privateKey: crypto.from_hex(memberCredentials.privatekey),
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
function getSoftwareDevice(memberCredentials) {
|
|
323
|
+
const kp = convertLiveCredentialsToKeyPair(memberCredentials);
|
|
324
|
+
return new SoftwareDevice(kp);
|
|
325
|
+
}
|
|
326
|
+
function extractEncryptionKey(streamTree, path, memberCredentials) {
|
|
327
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
328
|
+
const softwareDevice = getSoftwareDevice(memberCredentials);
|
|
329
|
+
const pathNumbers = DerivationPath.toIndexArray(path);
|
|
330
|
+
try {
|
|
331
|
+
const key = yield softwareDevice.readKey(streamTree, pathNumbers);
|
|
332
|
+
// private key is in the first 32 bytes
|
|
333
|
+
return crypto.to_hex(key.slice(0, 32));
|
|
334
|
+
}
|
|
335
|
+
catch (e) {
|
|
336
|
+
if (e instanceof Error) {
|
|
337
|
+
throw new TrustchainEjected(e.message);
|
|
338
|
+
}
|
|
339
|
+
throw e;
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
// spec https://ledgerhq.atlassian.net/wiki/spaces/TA/pages/4335960138/ARCH+LedgerLive+Auth+specifications
|
|
344
|
+
function liveAuthentication(rootId) {
|
|
345
|
+
const trustchainId = new TextEncoder().encode(rootId);
|
|
346
|
+
const att = new Uint8Array(2 + trustchainId.length);
|
|
347
|
+
att[0] = 0x02; // Prefix tag
|
|
348
|
+
att[1] = trustchainId.length;
|
|
349
|
+
att.set(trustchainId, 2);
|
|
350
|
+
return att;
|
|
351
|
+
}
|
|
352
|
+
function credentialForPubKey(publicKey) {
|
|
353
|
+
return { version: 0, curveId: 33, signAlgorithm: 1, publicKey };
|
|
354
|
+
}
|
|
355
|
+
function invariant(condition, message) {
|
|
356
|
+
if (!condition) {
|
|
357
|
+
throw new Error(message);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
function isMemberInStreamTree(streamTree, path, member) {
|
|
361
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
362
|
+
const child = streamTree.getChild(path);
|
|
363
|
+
if (!child) {
|
|
364
|
+
return false;
|
|
365
|
+
}
|
|
366
|
+
const resolved = yield child.resolve();
|
|
367
|
+
const members = resolved.getMembersData();
|
|
368
|
+
return members.some(m => m.id === member.id);
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.js","sourceRoot":"","sources":["../src/sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This exports all the logic related to the Trustchain store.
|
|
3
|
+
* The Trustchain store is a store that contains the data related to trustchain.
|
|
4
|
+
* It essentially is the client's credentials that are only stored on the
|
|
5
|
+
* client side and the trustchain returned by the backend.
|
|
6
|
+
*/
|
|
7
|
+
import { MemberCredentials, Trustchain } from "./types";
|
|
8
|
+
export type TrustchainStore = {
|
|
9
|
+
trustchain: Trustchain | null;
|
|
10
|
+
memberCredentials: MemberCredentials | null;
|
|
11
|
+
};
|
|
12
|
+
export declare const INITIAL_STATE: TrustchainStore;
|
|
13
|
+
export declare const getInitialStore: () => TrustchainStore;
|
|
14
|
+
export declare const trustchainStoreActionTypePrefix = "TRUSTCHAIN_STORE_";
|
|
15
|
+
export declare enum TrustchainHandlerType {
|
|
16
|
+
TRUSTCHAIN_STORE_IMPORT_STATE = "TRUSTCHAIN_STORE_IMPORT_STATE",
|
|
17
|
+
TRUSTCHAIN_STORE_RESET = "TRUSTCHAIN_STORE_RESET",
|
|
18
|
+
TRUSTCHAIN_STORE_SET_TRUSTCHAIN = "TRUSTCHAIN_STORE_SET_TRUSTCHAIN",
|
|
19
|
+
TRUSTCHAIN_STORE_SET_MEMBER_CREDENTIALS = "TRUSTCHAIN_STORE_SET_MEMBER_CREDENTIALS"
|
|
20
|
+
}
|
|
21
|
+
export type TrustchainHandlersPayloads = {
|
|
22
|
+
TRUSTCHAIN_STORE_IMPORT_STATE: {
|
|
23
|
+
trustchain: TrustchainStore;
|
|
24
|
+
};
|
|
25
|
+
TRUSTCHAIN_STORE_RESET: never;
|
|
26
|
+
TRUSTCHAIN_STORE_SET_TRUSTCHAIN: {
|
|
27
|
+
trustchain: Trustchain;
|
|
28
|
+
};
|
|
29
|
+
TRUSTCHAIN_STORE_SET_MEMBER_CREDENTIALS: {
|
|
30
|
+
memberCredentials: MemberCredentials;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
type Handlers<State, Types, PreciseKey = true> = {
|
|
34
|
+
[Key in keyof Types]: (state: State, body: {
|
|
35
|
+
payload: Types[PreciseKey extends true ? Key : keyof Types];
|
|
36
|
+
}) => State;
|
|
37
|
+
};
|
|
38
|
+
export type TrustchainHandlers<PreciseKey = true> = Handlers<TrustchainStore, TrustchainHandlersPayloads, PreciseKey>;
|
|
39
|
+
export declare const trustchainHandlers: TrustchainHandlers;
|
|
40
|
+
export declare const importTrustchainStoreState: (trustchain: TrustchainStore) => {
|
|
41
|
+
type: string;
|
|
42
|
+
payload: {
|
|
43
|
+
trustchain: TrustchainStore;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
export declare const resetTrustchainStore: () => {
|
|
47
|
+
type: string;
|
|
48
|
+
};
|
|
49
|
+
export declare const setTrustchain: (trustchain: Trustchain) => {
|
|
50
|
+
type: string;
|
|
51
|
+
payload: {
|
|
52
|
+
trustchain: Trustchain;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
export declare const setMemberCredentials: (memberCredentials: MemberCredentials) => {
|
|
56
|
+
type: string;
|
|
57
|
+
payload: {
|
|
58
|
+
memberCredentials: MemberCredentials;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
export declare const trustchainStoreSelector: (state: {
|
|
62
|
+
trustchain: TrustchainStore;
|
|
63
|
+
}) => TrustchainStore;
|
|
64
|
+
export declare const trustchainSelector: (state: {
|
|
65
|
+
trustchain: TrustchainStore;
|
|
66
|
+
}) => Trustchain | null;
|
|
67
|
+
export declare const memberCredentialsSelector: (state: {
|
|
68
|
+
trustchain: TrustchainStore;
|
|
69
|
+
}) => MemberCredentials | null;
|
|
70
|
+
export {};
|
|
71
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,eAG3B,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,eAElC,CAAC;AAEF,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,oBAAY,qBAAqB;IAC/B,6BAA6B,kCAAmD;IAChF,sBAAsB,2BAA4C;IAClE,+BAA+B,oCAAqD;IACpF,uCAAuC,4CAA6D;CACrG;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,6BAA6B,EAAE;QAAE,UAAU,EAAE,eAAe,CAAA;KAAE,CAAC;IAC/D,sBAAsB,EAAE,KAAK,CAAC;IAC9B,+BAA+B,EAAE;QAAE,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;IAC5D,uCAAuC,EAAE;QAAE,iBAAiB,EAAE,iBAAiB,CAAA;KAAE,CAAC;CACnF,CAAC;AAEF,KAAK,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,IAAI;KAC9C,GAAG,IAAI,MAAM,KAAK,GAAG,CACpB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE;QAAE,OAAO,EAAE,KAAK,CAAC,UAAU,SAAS,IAAI,GAAG,GAAG,GAAG,MAAM,KAAK,CAAC,CAAA;KAAE,KAClE,KAAK;CACX,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,UAAU,GAAG,IAAI,IAAI,QAAQ,CAC1D,eAAe,EACf,0BAA0B,EAC1B,UAAU,CACX,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,kBAahC,CAAC;AAIF,eAAO,MAAM,0BAA0B,eAAgB,eAAe;;;;;CAGpE,CAAC;AAEH,eAAO,MAAM,oBAAoB;;CAE/B,CAAC;AAEH,eAAO,MAAM,aAAa,eAAgB,UAAU;;;;;CAGlD,CAAC;AAEH,eAAO,MAAM,oBAAoB,sBAAuB,iBAAiB;;;;;CAGvE,CAAC;AAKH,eAAO,MAAM,uBAAuB,UAAW;IAAE,UAAU,EAAE,eAAe,CAAA;CAAE,KAAG,eAC/D,CAAC;AAEnB,eAAO,MAAM,kBAAkB,UAAW;IAAE,UAAU,EAAE,eAAe,CAAA;CAAE,KAAG,UAAU,GAAG,IAC5D,CAAC;AAE9B,eAAO,MAAM,yBAAyB,UAAW;IAC/C,UAAU,EAAE,eAAe,CAAC;CAC7B,KAAG,iBAAiB,GAAG,IAA0C,CAAC"}
|