@lifeready/core 1.0.21 → 1.0.22
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/bundles/lifeready-core.umd.js +9745 -9700
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +2 -2
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/run-outside-angular.js +2 -2
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/api/lr-apollo.service.js +3 -3
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
- package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.gql.js +1 -28
- package/esm2015/lib/auth/auth.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
- package/esm2015/lib/category/category.gql.js +1 -1
- package/esm2015/lib/category/category.service.js +6 -6
- package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
- package/esm2015/lib/contact-card/contact-card.service.js +154 -0
- package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
- package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
- package/esm2015/lib/encryption/encryption.service.js +189 -0
- package/esm2015/lib/file-upload/file-upload.service.js +74 -0
- package/esm2015/lib/file-upload/file-upload.types.js +1 -0
- package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
- package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
- package/esm2015/lib/items2/item2.service.js +20 -20
- package/esm2015/lib/key/key-factory.service.js +237 -0
- package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
- package/esm2015/lib/key/key-meta.service.js +200 -0
- package/esm2015/lib/key/key.service.js +124 -0
- package/esm2015/lib/key/key.types.js +11 -0
- package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
- package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
- package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
- package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
- package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
- package/esm2015/lib/lbop/lbop.service.js +355 -0
- package/esm2015/lib/life-ready.module.js +2 -27
- package/esm2015/lib/lock/lock.gql.js +40 -0
- package/esm2015/lib/lock/lock.service.js +64 -0
- package/esm2015/lib/message/message.gql.js +32 -0
- package/esm2015/lib/message/message.service.js +116 -0
- package/esm2015/lib/message/message.types.js +1 -0
- package/esm2015/lib/password/password.gql.js +28 -0
- package/esm2015/lib/password/password.service.js +315 -0
- package/esm2015/lib/persist/persist.service.js +180 -0
- package/esm2015/lib/profile/profile-details.service.js +214 -0
- package/esm2015/lib/profile/profile.gql.js +97 -0
- package/esm2015/lib/profile/profile.service.js +169 -0
- package/esm2015/lib/profile/profile.types.js +34 -0
- package/esm2015/lib/record/record-attachment.service.js +15 -15
- package/esm2015/lib/record/record.service.js +3 -3
- package/esm2015/lib/register/register.service.js +172 -0
- package/esm2015/lib/scenario/scenario.controller.js +2 -2
- package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
- package/esm2015/lib/scenario/scenario.service.js +9 -9
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
- package/esm2015/lib/slip39/slip39.service.js +169 -0
- package/esm2015/lib/time/time.service.js +146 -0
- package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
- package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
- package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
- package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
- package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
- package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
- package/esm2015/lib/two-factor/two-factor.service.js +74 -0
- package/esm2015/lib/user/user.gql.js +60 -0
- package/esm2015/lib/user/user.service.js +79 -0
- package/esm2015/lib/user/user.types.js +1 -0
- package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
- package/esm2015/lifeready-core.js +15 -13
- package/esm2015/public-api.js +49 -51
- package/fesm2015/lifeready-core.js +9232 -9214
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/types.d.ts +3 -1
- package/lib/api/lr-apollo.service.d.ts +1 -1
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
- package/lib/api/query-processor/common-processors.service.d.ts +1 -1
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +11 -0
- package/lib/auth/auth.gql.d.ts +0 -3
- package/lib/auth/auth.types.d.ts +2 -2
- package/lib/auth/life-ready-auth.service.d.ts +12 -12
- package/lib/category/category.gql.d.ts +1 -1
- package/lib/category/category.service.d.ts +2 -2
- package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
- package/lib/contact-card/contact-card2.gql.d.ts +25 -0
- package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
- package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
- package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
- package/lib/file-upload/file-upload.types.d.ts +5 -0
- package/lib/{auth → idle}/idle.service.d.ts +4 -4
- package/lib/items2/item2.service.d.ts +11 -11
- package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
- package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
- package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
- package/lib/{cryptography → key}/key.service.d.ts +2 -2
- package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
- package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
- package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
- package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
- package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
- package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
- package/lib/{api → lock}/lock.gql.d.ts +1 -1
- package/lib/{api → lock}/lock.service.d.ts +1 -1
- package/lib/message/message.gql.d.ts +13 -0
- package/lib/message/message.service.d.ts +29 -0
- package/lib/message/message.types.d.ts +12 -0
- package/lib/password/password.gql.d.ts +3 -0
- package/lib/{auth → password}/password.service.d.ts +8 -8
- package/lib/{api → persist}/persist.service.d.ts +3 -3
- package/lib/{users → profile}/profile-details.service.d.ts +3 -3
- package/lib/{users → profile}/profile.gql.d.ts +2 -2
- package/lib/{users → profile}/profile.service.d.ts +6 -6
- package/lib/{users → profile}/profile.types.d.ts +1 -1
- package/lib/record/record-attachment.service.d.ts +6 -6
- package/lib/record/record.service.d.ts +1 -1
- package/lib/{auth → register}/register.service.d.ts +4 -4
- package/lib/scenario/scenario.controller.d.ts +1 -1
- package/lib/scenario/scenario.service.d.ts +2 -2
- package/lib/scenario/scenario.types.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
- package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
- package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
- package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
- package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
- package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
- package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
- package/lib/{users → user}/user.gql.d.ts +1 -1
- package/lib/{users → user}/user.types.d.ts +1 -1
- package/lifeready-core.d.ts +14 -12
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +48 -50
- package/esm2015/lib/api/contact-card.gql.js +0 -79
- package/esm2015/lib/api/contact-card.service.js +0 -154
- package/esm2015/lib/api/contact-card2.gql.js +0 -60
- package/esm2015/lib/api/contact-card2.service.js +0 -103
- package/esm2015/lib/api/file.service.js +0 -74
- package/esm2015/lib/api/key-exchange.gql.js +0 -188
- package/esm2015/lib/api/key-exchange.service.js +0 -442
- package/esm2015/lib/api/key-exchange.types.js +0 -7
- package/esm2015/lib/api/key-exchange2.gql.js +0 -171
- package/esm2015/lib/api/key-exchange2.service.js +0 -480
- package/esm2015/lib/api/lock.gql.js +0 -40
- package/esm2015/lib/api/lock.service.js +0 -64
- package/esm2015/lib/api/message.service.js +0 -138
- package/esm2015/lib/api/persist.service.js +0 -181
- package/esm2015/lib/api/shared-contact-card.service.js +0 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/api/time.service.js +0 -146
- package/esm2015/lib/auth/lbop.service.js +0 -355
- package/esm2015/lib/auth/password.service.js +0 -315
- package/esm2015/lib/auth/register.service.js +0 -172
- package/esm2015/lib/auth/two-factor.service.js +0 -74
- package/esm2015/lib/cryptography/cryptography.types.js +0 -11
- package/esm2015/lib/cryptography/encryption.service.js +0 -189
- package/esm2015/lib/cryptography/key-factory.service.js +0 -237
- package/esm2015/lib/cryptography/key-meta.service.js +0 -200
- package/esm2015/lib/cryptography/key.service.js +0 -124
- package/esm2015/lib/cryptography/slip39.service.js +0 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
- package/esm2015/lib/users/profile-details.service.js +0 -214
- package/esm2015/lib/users/profile.gql.js +0 -97
- package/esm2015/lib/users/profile.service.js +0 -169
- package/esm2015/lib/users/profile.types.js +0 -34
- package/esm2015/lib/users/user.gql.js +0 -60
- package/esm2015/lib/users/user.service.js +0 -79
- package/esm2015/lib/users/user.types.js +0 -1
- package/lib/api/contact-card2.gql.d.ts +0 -34
- package/lib/api/message.service.d.ts +0 -59
- /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
- /package/lib/{auth → idle}/idle.types.d.ts +0 -0
- /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
- /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
- /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
- /package/lib/{api → time}/time.service.d.ts +0 -0
- /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
- /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
- /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
- /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
- /package/lib/{users → user}/user.service.d.ts +0 -0
- /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { LrApolloService } from '../api/lr-apollo.service';
|
|
4
|
-
import { GetCategoryKeyIdQuery } from '../category/category.gql';
|
|
5
|
-
import { EncryptionService, } from './encryption.service';
|
|
6
|
-
import { KeyFactoryService } from './key-factory.service';
|
|
7
|
-
import { KeyGraphService } from './key-graph.service';
|
|
8
|
-
import { KeyService } from './key.service';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "./encryption.service";
|
|
11
|
-
import * as i2 from "./key-graph.service";
|
|
12
|
-
import * as i3 from "../api/lr-apollo.service";
|
|
13
|
-
import * as i4 from "./key.service";
|
|
14
|
-
import * as i5 from "./key-factory.service";
|
|
15
|
-
export class WrappedContent {
|
|
16
|
-
}
|
|
17
|
-
export class WrappingKey {
|
|
18
|
-
}
|
|
19
|
-
export class KeyMetaService {
|
|
20
|
-
constructor(encryptionService, keyGraph, lrApollo, keyService, keyFactory) {
|
|
21
|
-
this.encryptionService = encryptionService;
|
|
22
|
-
this.keyGraph = keyGraph;
|
|
23
|
-
this.lrApollo = lrApollo;
|
|
24
|
-
this.keyService = keyService;
|
|
25
|
-
this.keyFactory = keyFactory;
|
|
26
|
-
}
|
|
27
|
-
// async decryptFromString<T>(
|
|
28
|
-
// keyOrId: string | Key,
|
|
29
|
-
// cipherData: string,
|
|
30
|
-
// options?: DecryptOptions
|
|
31
|
-
// ): Promise<T> {
|
|
32
|
-
// if (cipherData) {
|
|
33
|
-
// const key = await this.keyGraphService.getJwkKey(keyOrId);
|
|
34
|
-
// return (await this.encryptionService.decrypt(
|
|
35
|
-
// key,
|
|
36
|
-
// JSON.parse(cipherData),
|
|
37
|
-
// options
|
|
38
|
-
// )) as any;
|
|
39
|
-
// }
|
|
40
|
-
// return null;
|
|
41
|
-
// }
|
|
42
|
-
decryptMeta(metaHaver) {
|
|
43
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
if (metaHaver.cipherMeta) {
|
|
45
|
-
const key = yield this.keyGraph.getJwkKey(metaHaver.keyId);
|
|
46
|
-
return (yield this.encryptionService.decrypt(key, JSON.parse(metaHaver.cipherMeta)));
|
|
47
|
-
}
|
|
48
|
-
return null;
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
// async decryptFile(keyId: string, file: any): Promise<any> {
|
|
52
|
-
// const key = await this.keyGraphService.getJwkKey(keyId);
|
|
53
|
-
// return (await this.encryptionService.decrypt(key, file, {
|
|
54
|
-
// payloadType: 'ArrayBuffer',
|
|
55
|
-
// })) as any;
|
|
56
|
-
// }
|
|
57
|
-
// // TODO rename this to encrypt() and use as the most common usecase
|
|
58
|
-
// async encryptToString(
|
|
59
|
-
// key: string | Key | JWK.Key,
|
|
60
|
-
// content: any
|
|
61
|
-
// ): Promise<string> {
|
|
62
|
-
// // Empty string should be encrypted since you want to clear the field.
|
|
63
|
-
// // Null is not encrypted because it's not valid JSON in the old JSON spec. Use
|
|
64
|
-
// // empty string instead. It'll function as a logic false as well.
|
|
65
|
-
// // Note that passing in empty string means it'll be encrypted which verifies
|
|
66
|
-
// // it's integrity. But we still want to have a way to set the DB field
|
|
67
|
-
// // to NULL, so we explicitly return null when content == null. A null
|
|
68
|
-
// // variable in graphql mutation on KC server clears the field to NULL.
|
|
69
|
-
// if (content == null) {
|
|
70
|
-
// return null;
|
|
71
|
-
// }
|
|
72
|
-
// const jwk =
|
|
73
|
-
// asJwk(key) || (await this.keyGraphService.getJwkKey(key as string | Key));
|
|
74
|
-
// return JSON.stringify(await this.encryptionService.encrypt(jwk, content));
|
|
75
|
-
// }
|
|
76
|
-
// // Wraps a symmetric encryption key.
|
|
77
|
-
// // Throws exception if wrapping public keys.
|
|
78
|
-
// async wrapKey<T>(
|
|
79
|
-
// wrappingKey: string | Key | JWK.Key,
|
|
80
|
-
// key: JWK.Key
|
|
81
|
-
// ): Promise<string> {
|
|
82
|
-
// if (!isSymmetricKey(key)) {
|
|
83
|
-
// throw new LrBadArgumentException(
|
|
84
|
-
// 'Only allowing wrapping of symmetric keys.'
|
|
85
|
-
// );
|
|
86
|
-
// }
|
|
87
|
-
// return this.encryptToString(wrappingKey, key.toJSON(true));
|
|
88
|
-
// }
|
|
89
|
-
// // TODO
|
|
90
|
-
// // async wrapPublicKey<T>();
|
|
91
|
-
// // async wrapPrivateKey<T>();
|
|
92
|
-
doubleWrapContent(secureContent, categoryIds, fileContent) {
|
|
93
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
-
const key = yield this.keyFactory.createKey();
|
|
95
|
-
const wrappedContent = yield this.wrapContent(key.toJSON(true), categoryIds);
|
|
96
|
-
return {
|
|
97
|
-
rootKey: wrappedContent.rootKey,
|
|
98
|
-
wrappedKeys: wrappedContent.wrappedKeys,
|
|
99
|
-
doubleWrappedKey: wrappedContent.cipherMeta,
|
|
100
|
-
cipherMeta: secureContent
|
|
101
|
-
? JSON.stringify(yield this.encryptionService.encrypt(key, secureContent))
|
|
102
|
-
: null,
|
|
103
|
-
cipherFileContent: fileContent
|
|
104
|
-
? JSON.stringify(yield this.encryptionService.encrypt(key, fileContent))
|
|
105
|
-
: null,
|
|
106
|
-
};
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
reWrapContent(keyId, secureContent) {
|
|
110
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
111
|
-
const key = yield this.keyGraph.getJwkKey(keyId);
|
|
112
|
-
const newKey = yield this.keyFactory.createKey();
|
|
113
|
-
return {
|
|
114
|
-
doubleWrappedKey: JSON.stringify(yield this.encryptionService.encrypt(key, newKey.toJSON(true))),
|
|
115
|
-
cipherMeta: secureContent
|
|
116
|
-
? JSON.stringify(yield this.encryptionService.encrypt(newKey, secureContent))
|
|
117
|
-
: null,
|
|
118
|
-
};
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
wrapContent(secureContent, categoryIds) {
|
|
122
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
const key = yield this.keyFactory.createKey();
|
|
124
|
-
let wrappedKeys;
|
|
125
|
-
let rootWrappingKey;
|
|
126
|
-
if (categoryIds && categoryIds.length) {
|
|
127
|
-
wrappedKeys = yield Promise.all(categoryIds.map((categoryId) => __awaiter(this, void 0, void 0, function* () {
|
|
128
|
-
const parentKey = yield this.getCategoryKeyId(categoryId);
|
|
129
|
-
const wrappedKey = JSON.stringify(yield this.encryptionService.encrypt(parentKey.key, key.toJSON(true)));
|
|
130
|
-
return {
|
|
131
|
-
directoryId: categoryId,
|
|
132
|
-
wrappingKeyId: parentKey.keyId,
|
|
133
|
-
wrappedKey,
|
|
134
|
-
};
|
|
135
|
-
})));
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
// Adding to root directory
|
|
139
|
-
const rootKey = this.keyService.getCurrentRootKey();
|
|
140
|
-
const wrappedKey = JSON.stringify(yield this.encryptionService.encrypt(rootKey.jwk, key.toJSON(true)));
|
|
141
|
-
rootWrappingKey = {
|
|
142
|
-
wrappingKeyId: rootKey.id,
|
|
143
|
-
wrappedKey,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
return {
|
|
147
|
-
key,
|
|
148
|
-
rootKey: rootWrappingKey,
|
|
149
|
-
wrappedKeys,
|
|
150
|
-
cipherMeta: secureContent
|
|
151
|
-
? JSON.stringify(yield this.encryptionService.encrypt(key, secureContent))
|
|
152
|
-
: null,
|
|
153
|
-
};
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
wrapContentWithKey(secureContent, keyId) {
|
|
157
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
158
|
-
const key = yield this.keyFactory.createKey();
|
|
159
|
-
const wrappedKey = yield this.keyGraph.encryptToString(keyId, key.toJSON(true));
|
|
160
|
-
return {
|
|
161
|
-
key,
|
|
162
|
-
rootKey: {
|
|
163
|
-
wrappingKeyId: keyId,
|
|
164
|
-
wrappedKey,
|
|
165
|
-
},
|
|
166
|
-
cipherMeta: secureContent
|
|
167
|
-
? JSON.stringify(yield this.encryptionService.encrypt(key, secureContent))
|
|
168
|
-
: null,
|
|
169
|
-
};
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
getCategoryKeyId(categoryId) {
|
|
173
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
174
|
-
const { category } = yield this.lrApollo.query({
|
|
175
|
-
query: GetCategoryKeyIdQuery,
|
|
176
|
-
variables: {
|
|
177
|
-
id: categoryId,
|
|
178
|
-
},
|
|
179
|
-
});
|
|
180
|
-
return {
|
|
181
|
-
keyId: category.keyId,
|
|
182
|
-
key: yield this.keyGraph.getJwkKey(category.keyId),
|
|
183
|
-
};
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
KeyMetaService.ɵprov = i0.ɵɵdefineInjectable({ factory: function KeyMetaService_Factory() { return new KeyMetaService(i0.ɵɵinject(i1.EncryptionService), i0.ɵɵinject(i2.KeyGraphService), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyService), i0.ɵɵinject(i5.KeyFactoryService)); }, token: KeyMetaService, providedIn: "root" });
|
|
188
|
-
KeyMetaService.decorators = [
|
|
189
|
-
{ type: Injectable, args: [{
|
|
190
|
-
providedIn: 'root',
|
|
191
|
-
},] }
|
|
192
|
-
];
|
|
193
|
-
KeyMetaService.ctorParameters = () => [
|
|
194
|
-
{ type: EncryptionService },
|
|
195
|
-
{ type: KeyGraphService },
|
|
196
|
-
{ type: LrApolloService },
|
|
197
|
-
{ type: KeyService },
|
|
198
|
-
{ type: KeyFactoryService }
|
|
199
|
-
];
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LW1ldGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY3J5cHRvZ3JhcGh5L2tleS1tZXRhLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2pFLE9BQU8sRUFHTCxpQkFBaUIsR0FFbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7OztBQU8zQyxNQUFNLE9BQU8sY0FBYztDQUsxQjtBQUVELE1BQU0sT0FBTyxXQUFXO0NBSXZCO0FBS0QsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxpQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsUUFBeUIsRUFDekIsVUFBc0IsRUFDdEIsVUFBNkI7UUFKN0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQ3BDLENBQUM7SUFFSiw4QkFBOEI7SUFDOUIsMkJBQTJCO0lBQzNCLHdCQUF3QjtJQUN4Qiw2QkFBNkI7SUFDN0Isa0JBQWtCO0lBQ2xCLHNCQUFzQjtJQUN0QixpRUFBaUU7SUFDakUsb0RBQW9EO0lBQ3BELGFBQWE7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TSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBTTtnQkFDbEQsS0FBSyxFQUFFLHFCQUFxQjtnQkFDNUIsU0FBUyxFQUFFO29CQUNULEVBQUUsRUFBRSxVQUFVO2lCQUNmO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDbkQsQ0FBQztRQUNKLENBQUM7S0FBQTs7OztZQTFORixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTNCQyxpQkFBaUI7WUFJVixlQUFlO1lBWGYsZUFBZTtZQVlmLFVBQVU7WUFGVixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xuaW1wb3J0IHsgTHJBcG9sbG9TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWFwb2xsby5zZXJ2aWNlJztcbmltcG9ydCB7IEdldENhdGVnb3J5S2V5SWRRdWVyeSB9IGZyb20gJy4uL2NhdGVnb3J5L2NhdGVnb3J5LmdxbCc7XG5pbXBvcnQgeyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IEtleSwgUGF5bG9hZFR5cGUgfSBmcm9tICcuL2NyeXB0b2dyYXBoeS50eXBlcyc7XG5pbXBvcnQge1xuICBhc0p3ayxcbiAgRGVjcnlwdE9wdGlvbnMsXG4gIEVuY3J5cHRpb25TZXJ2aWNlLFxuICBpc1N5bW1ldHJpY0tleSxcbn0gZnJvbSAnLi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuL2tleS1mYWN0b3J5LnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi9rZXktZ3JhcGguc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi9rZXkuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzQ2lwaGVyTWV0YSB7XG4gIGtleUlkOiBzdHJpbmc7XG4gIGNpcGhlck1ldGE6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFdyYXBwZWRDb250ZW50IHtcbiAga2V5OiBKV0suS2V5O1xuICBjaXBoZXJNZXRhOiBzdHJpbmc7XG4gIHdyYXBwZWRLZXlzPzogV3JhcHBpbmdLZXlbXTtcbiAgcm9vdEtleT86IFdyYXBwaW5nS2V5O1xufVxuXG5leHBvcnQgY2xhc3MgV3JhcHBpbmdLZXkge1xuICBkaXJlY3RvcnlJZD86IHN0cmluZztcbiAgd3JhcHBpbmdLZXlJZDogc3RyaW5nO1xuICB3cmFwcGVkS2V5OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBLZXlNZXRhU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5R3JhcGg6IEtleUdyYXBoU2VydmljZSxcbiAgICBwcml2YXRlIGxyQXBvbGxvOiBMckFwb2xsb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlTZXJ2aWNlOiBLZXlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5RmFjdG9yeTogS2V5RmFjdG9yeVNlcnZpY2VcbiAgKSB7fVxuXG4gIC8vIGFzeW5jIGRlY3J5cHRGcm9tU3RyaW5nPFQ+KFxuICAvLyAgIGtleU9ySWQ6IHN0cmluZyB8IEtleSxcbiAgLy8gICBjaXBoZXJEYXRhOiBzdHJpbmcsXG4gIC8vICAgb3B0aW9ucz86IERlY3J5cHRPcHRpb25zXG4gIC8vICk6IFByb21pc2U8VD4ge1xuICAvLyAgIGlmIChjaXBoZXJEYXRhKSB7XG4gIC8vICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRKd2tLZXkoa2V5T3JJZCk7XG4gIC8vICAgICByZXR1cm4gKGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgLy8gICAgICAga2V5LFxuICAvLyAgICAgICBKU09OLnBhcnNlKGNpcGhlckRhdGEpLFxuICAvLyAgICAgICBvcHRpb25zXG4gIC8vICAgICApKSBhcyBhbnk7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiBudWxsO1xuICAvLyB9XG5cbiAgYXN5bmMgZGVjcnlwdE1ldGE8VD4obWV0YUhhdmVyOiBIYXNDaXBoZXJNZXRhKTogUHJvbWlzZTxUPiB7XG4gICAgaWYgKG1ldGFIYXZlci5jaXBoZXJNZXRhKSB7XG4gICAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShtZXRhSGF2ZXIua2V5SWQpO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoXG4gICAgICAgIGtleSxcbiAgICAgICAgSlNPTi5wYXJzZShtZXRhSGF2ZXIuY2lwaGVyTWV0YSlcbiAgICAgICkpIGFzIGFueTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBhc3luYyBkZWNyeXB0RmlsZShrZXlJZDogc3RyaW5nLCBmaWxlOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAvLyAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEp3a0tleShrZXlJZCk7XG4gIC8vICAgcmV0dXJuIChhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmRlY3J5cHQoa2V5LCBmaWxlLCB7XG4gIC8vICAgICBwYXlsb2FkVHlwZTogJ0FycmF5QnVmZmVyJyxcbiAgLy8gICB9KSkgYXMgYW55O1xuICAvLyB9XG5cbiAgLy8gLy8gVE9ETyByZW5hbWUgdGhpcyB0byBlbmNyeXB0KCkgYW5kIHVzZSBhcyB0aGUgbW9zdCBjb21tb24gdXNlY2FzZVxuICAvLyBhc3luYyBlbmNyeXB0VG9TdHJpbmcoXG4gIC8vICAga2V5OiBzdHJpbmcgfCBLZXkgfCBKV0suS2V5LFxuICAvLyAgIGNvbnRlbnQ6IGFueVxuICAvLyApOiBQcm9taXNlPHN0cmluZz4ge1xuICAvLyAgIC8vIEVtcHR5IHN0cmluZyBzaG91bGQgYmUgZW5jcnlwdGVkIHNpbmNlIHlvdSB3YW50IHRvIGNsZWFyIHRoZSBmaWVsZC5cbiAgLy8gICAvLyBOdWxsIGlzIG5vdCBlbmNyeXB0ZWQgYmVjYXVzZSBpdCdzIG5vdCB2YWxpZCBKU09OIGluIHRoZSBvbGQgSlNPTiBzcGVjLiBVc2VcbiAgLy8gICAvLyBlbXB0eSBzdHJpbmcgaW5zdGVhZC4gSXQnbGwgZnVuY3Rpb24gYXMgYSBsb2dpYyBmYWxzZSBhcyB3ZWxsLlxuICAvLyAgIC8vIE5vdGUgdGhhdCBwYXNzaW5nIGluIGVtcHR5IHN0cmluZyBtZWFucyBpdCdsbCBiZSBlbmNyeXB0ZWQgd2hpY2ggdmVyaWZpZXNcbiAgLy8gICAvLyBpdCdzIGludGVncml0eS4gQnV0IHdlIHN0aWxsIHdhbnQgdG8gaGF2ZSBhIHdheSB0byBzZXQgdGhlIERCIGZpZWxkXG4gIC8vICAgLy8gdG8gTlVMTCwgc28gd2UgZXhwbGljaXRseSByZXR1cm4gbnVsbCB3aGVuIGNvbnRlbnQgPT0gbnVsbC4gQSBudWxsXG4gIC8vICAgLy8gdmFyaWFibGUgaW4gZ3JhcGhxbCBtdXRhdGlvbiBvbiBLQyBzZXJ2ZXIgY2xlYXJzIHRoZSBmaWVsZCB0byBOVUxMLlxuICAvLyAgIGlmIChjb250ZW50ID09IG51bGwpIHtcbiAgLy8gICAgIHJldHVybiBudWxsO1xuICAvLyAgIH1cblxuICAvLyAgIGNvbnN0IGp3ayA9XG4gIC8vICAgICBhc0p3ayhrZXkpIHx8IChhd2FpdCB0aGlzLmtleUdyYXBoU2VydmljZS5nZXRKd2tLZXkoa2V5IGFzIHN0cmluZyB8IEtleSkpO1xuICAvLyAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoandrLCBjb250ZW50KSk7XG4gIC8vIH1cblxuICAvLyAvLyBXcmFwcyBhIHN5bW1ldHJpYyBlbmNyeXB0aW9uIGtleS5cbiAgLy8gLy8gVGhyb3dzIGV4Y2VwdGlvbiBpZiB3cmFwcGluZyBwdWJsaWMga2V5cy5cbiAgLy8gYXN5bmMgd3JhcEtleTxUPihcbiAgLy8gICB3cmFwcGluZ0tleTogc3RyaW5nIHwgS2V5IHwgSldLLktleSxcbiAgLy8gICBrZXk6IEpXSy5LZXlcbiAgLy8gKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gICBpZiAoIWlzU3ltbWV0cmljS2V5KGtleSkpIHtcbiAgLy8gICAgIHRocm93IG5ldyBMckJhZEFyZ3VtZW50RXhjZXB0aW9uKFxuICAvLyAgICAgICAnT25seSBhbGxvd2luZyB3cmFwcGluZyBvZiBzeW1tZXRyaWMga2V5cy4nXG4gIC8vICAgICApO1xuICAvLyAgIH1cblxuICAvLyAgIHJldHVybiB0aGlzLmVuY3J5cHRUb1N0cmluZyh3cmFwcGluZ0tleSwga2V5LnRvSlNPTih0cnVlKSk7XG4gIC8vIH1cblxuICAvLyAvLyBUT0RPXG4gIC8vIC8vIGFzeW5jIHdyYXBQdWJsaWNLZXk8VD4oKTtcbiAgLy8gLy8gYXN5bmMgd3JhcFByaXZhdGVLZXk8VD4oKTtcblxuICBhc3luYyBkb3VibGVXcmFwQ29udGVudChcbiAgICBzZWN1cmVDb250ZW50OiBhbnksXG4gICAgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdLFxuICAgIGZpbGVDb250ZW50PzogQXJyYXlCdWZmZXJcbiAgKSB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3Qgd3JhcHBlZENvbnRlbnQgPSBhd2FpdCB0aGlzLndyYXBDb250ZW50KFxuICAgICAga2V5LnRvSlNPTih0cnVlKSxcbiAgICAgIGNhdGVnb3J5SWRzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICByb290S2V5OiB3cmFwcGVkQ29udGVudC5yb290S2V5LFxuICAgICAgd3JhcHBlZEtleXM6IHdyYXBwZWRDb250ZW50LndyYXBwZWRLZXlzLFxuICAgICAgZG91YmxlV3JhcHBlZEtleTogd3JhcHBlZENvbnRlbnQuY2lwaGVyTWV0YSxcbiAgICAgIGNpcGhlck1ldGE6IHNlY3VyZUNvbnRlbnRcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChrZXksIHNlY3VyZUNvbnRlbnQpXG4gICAgICAgICAgKVxuICAgICAgICA6IG51bGwsXG4gICAgICBjaXBoZXJGaWxlQ29udGVudDogZmlsZUNvbnRlbnRcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoa2V5LCBmaWxlQ29udGVudCkpXG4gICAgICAgIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgcmVXcmFwQ29udGVudChrZXlJZDogc3RyaW5nLCBzZWN1cmVDb250ZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShrZXlJZCk7XG4gICAgY29uc3QgbmV3S2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRvdWJsZVdyYXBwZWRLZXk6IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICBhd2FpdCB0aGlzLmVuY3J5cHRpb25TZXJ2aWNlLmVuY3J5cHQoa2V5LCBuZXdLZXkudG9KU09OKHRydWUpKVxuICAgICAgKSxcbiAgICAgIGNpcGhlck1ldGE6IHNlY3VyZUNvbnRlbnRcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChuZXdLZXksIHNlY3VyZUNvbnRlbnQpXG4gICAgICAgICAgKVxuICAgICAgICA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHdyYXBDb250ZW50KFxuICAgIHNlY3VyZUNvbnRlbnQ6IGFueSxcbiAgICBjYXRlZ29yeUlkcz86IHN0cmluZ1tdXG4gICk6IFByb21pc2U8V3JhcHBlZENvbnRlbnQ+IHtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG5cbiAgICBsZXQgd3JhcHBlZEtleXM6IFdyYXBwaW5nS2V5W107XG4gICAgbGV0IHJvb3RXcmFwcGluZ0tleTogV3JhcHBpbmdLZXk7XG5cbiAgICBpZiAoY2F0ZWdvcnlJZHMgJiYgY2F0ZWdvcnlJZHMubGVuZ3RoKSB7XG4gICAgICB3cmFwcGVkS2V5cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBjYXRlZ29yeUlkcy5tYXAoYXN5bmMgKGNhdGVnb3J5SWQpID0+IHtcbiAgICAgICAgICBjb25zdCBwYXJlbnRLZXkgPSBhd2FpdCB0aGlzLmdldENhdGVnb3J5S2V5SWQoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgY29uc3Qgd3JhcHBlZEtleSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KFxuICAgICAgICAgICAgICBwYXJlbnRLZXkua2V5LFxuICAgICAgICAgICAgICBrZXkudG9KU09OKHRydWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGlyZWN0b3J5SWQ6IGNhdGVnb3J5SWQsXG4gICAgICAgICAgICB3cmFwcGluZ0tleUlkOiBwYXJlbnRLZXkua2V5SWQsXG4gICAgICAgICAgICB3cmFwcGVkS2V5LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBZGRpbmcgdG8gcm9vdCBkaXJlY3RvcnlcbiAgICAgIGNvbnN0IHJvb3RLZXkgPSB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICAgIGNvbnN0IHdyYXBwZWRLZXkgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KHJvb3RLZXkuandrLCBrZXkudG9KU09OKHRydWUpKVxuICAgICAgKTtcbiAgICAgIHJvb3RXcmFwcGluZ0tleSA9IHtcbiAgICAgICAgd3JhcHBpbmdLZXlJZDogcm9vdEtleS5pZCxcbiAgICAgICAgd3JhcHBlZEtleSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIHJvb3RLZXk6IHJvb3RXcmFwcGluZ0tleSxcbiAgICAgIHdyYXBwZWRLZXlzLFxuICAgICAgY2lwaGVyTWV0YTogc2VjdXJlQ29udGVudFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KGtleSwgc2VjdXJlQ29udGVudClcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgd3JhcENvbnRlbnRXaXRoS2V5KFxuICAgIHNlY3VyZUNvbnRlbnQ6IGFueSxcbiAgICBrZXlJZDogc3RyaW5nXG4gICk6IFByb21pc2U8V3JhcHBlZENvbnRlbnQ+IHtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG5cbiAgICBjb25zdCB3cmFwcGVkS2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBrZXlJZCxcbiAgICAgIGtleS50b0pTT04odHJ1ZSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtleSxcbiAgICAgIHJvb3RLZXk6IHtcbiAgICAgICAgd3JhcHBpbmdLZXlJZDoga2V5SWQsXG4gICAgICAgIHdyYXBwZWRLZXksXG4gICAgICB9LFxuICAgICAgY2lwaGVyTWV0YTogc2VjdXJlQ29udGVudFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KGtleSwgc2VjdXJlQ29udGVudClcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRDYXRlZ29yeUtleUlkKFxuICAgIGNhdGVnb3J5SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHsga2V5SWQ6IHN0cmluZzsga2V5OiBhbnkgfT4ge1xuICAgIGNvbnN0IHsgY2F0ZWdvcnkgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogR2V0Q2F0ZWdvcnlLZXlJZFF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkOiBjYXRlZ29yeUlkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBrZXlJZDogY2F0ZWdvcnkua2V5SWQsXG4gICAgICBrZXk6IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KGNhdGVnb3J5LmtleUlkKSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import { LrNotFoundException } from '../_common/exceptions';
|
|
4
|
-
import { PersistService } from '../api/persist.service';
|
|
5
|
-
import { KeyFactoryService as KFS } from './key-factory.service';
|
|
6
|
-
import { LR_CONFIG } from '../life-ready.config';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "../life-ready.config";
|
|
9
|
-
import * as i2 from "../api/persist.service";
|
|
10
|
-
export class UserKeys {
|
|
11
|
-
}
|
|
12
|
-
export class KeyService {
|
|
13
|
-
constructor(config, persistService) {
|
|
14
|
-
this.config = config;
|
|
15
|
-
this.persistService = persistService;
|
|
16
|
-
this.STORE_MASTER_KEY = 'masterKey';
|
|
17
|
-
// AZ: This can't be change easily. It's basically a PassK or PassIdp rotation.
|
|
18
|
-
// todo: we should eventually increase this periodically to match with Moore's law.
|
|
19
|
-
// The iterations for each key are kept by the server as well but we assume the value
|
|
20
|
-
// from the server is not trustworthy, so need to have minimum thresholds here.
|
|
21
|
-
// If creating new keys, these minimum are used.
|
|
22
|
-
this.MIN_PASS_IDP_PBKDF_ITER = 100000;
|
|
23
|
-
this.MIN_PASS_KEY_PBKDF_ITER = 100000;
|
|
24
|
-
this.MIN_LBOP_KEY_PBKDF_ITER = 100000;
|
|
25
|
-
// These are used as the default values. They must be larger than the minimum values.
|
|
26
|
-
this.DEFAULT_PASS_IDP_PBKDF_ITER = this.MIN_PASS_IDP_PBKDF_ITER;
|
|
27
|
-
this.DEFAULT_PASS_KEY_PBKDF_ITER = this.MIN_PASS_KEY_PBKDF_ITER;
|
|
28
|
-
this.DEFAULT_LBOP_KEY_PBKDF_ITER = this.MIN_LBOP_KEY_PBKDF_ITER;
|
|
29
|
-
this.resetKeys();
|
|
30
|
-
}
|
|
31
|
-
resetKeys() {
|
|
32
|
-
this.keys = null;
|
|
33
|
-
this.masterKey = null;
|
|
34
|
-
}
|
|
35
|
-
purgeKeys() {
|
|
36
|
-
this.resetKeys();
|
|
37
|
-
this.persistService.clear();
|
|
38
|
-
}
|
|
39
|
-
populateKeys(keys) {
|
|
40
|
-
this.keys = keys;
|
|
41
|
-
}
|
|
42
|
-
getCurrentPassKey() {
|
|
43
|
-
return this.keys.passKey;
|
|
44
|
-
}
|
|
45
|
-
getCurrentMasterKey() {
|
|
46
|
-
return this.keys.masterKey;
|
|
47
|
-
}
|
|
48
|
-
getCurrentRootKey() {
|
|
49
|
-
return this.keys.rootKey;
|
|
50
|
-
}
|
|
51
|
-
getCurrentPxk() {
|
|
52
|
-
return this.keys.pxk;
|
|
53
|
-
}
|
|
54
|
-
getCurrentSigPxk() {
|
|
55
|
-
return this.keys.sigPxk;
|
|
56
|
-
}
|
|
57
|
-
expiresAfter(seconds) {
|
|
58
|
-
return new Date(Date.now() + 1000 * seconds);
|
|
59
|
-
}
|
|
60
|
-
persistMasterKey(masterKey, expiresAfterSeconds) {
|
|
61
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
62
|
-
const storedKey = {
|
|
63
|
-
id: masterKey.id,
|
|
64
|
-
jwk: masterKey.jwk.toJSON(true),
|
|
65
|
-
};
|
|
66
|
-
this.masterKey = masterKey;
|
|
67
|
-
// Save in an expirable cookie.
|
|
68
|
-
yield this.persistService.set({
|
|
69
|
-
name: this.STORE_MASTER_KEY,
|
|
70
|
-
value: storedKey,
|
|
71
|
-
expiry: this.expiresAfter(expiresAfterSeconds),
|
|
72
|
-
serverSession: !this.config.disableSessionEncryptionKey,
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
setMasterKeyExpiresAfterSeconds(seconds) {
|
|
77
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
const storedKey = yield this.persistService.get(this.STORE_MASTER_KEY);
|
|
79
|
-
if (storedKey == null) {
|
|
80
|
-
throw new LrNotFoundException(`Can not find masterKey in persisted storage using name: ${this.STORE_MASTER_KEY}`);
|
|
81
|
-
}
|
|
82
|
-
yield this.persistService.set({
|
|
83
|
-
name: this.STORE_MASTER_KEY,
|
|
84
|
-
value: storedKey,
|
|
85
|
-
expiry: this.expiresAfter(seconds),
|
|
86
|
-
serverSession: !this.config.disableSessionEncryptionKey,
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
// There's little benefit in using WebCrypto's none-extractable keys because if there
|
|
91
|
-
// is an XSS attack, then the attacker has control over the js that downloads the keys. The
|
|
92
|
-
// attacker can modify the code to import the keys as extractable. So none-extractable keys
|
|
93
|
-
// are only useful if they are already persisted and the user cannot download any more keys,
|
|
94
|
-
// which is not feasible.
|
|
95
|
-
// So storing the PassKey in localstorage for now, at least till we know what the usage
|
|
96
|
-
// pattern is, i.e. how often do we need to use the RootK, MaterK, and PassK.
|
|
97
|
-
loadMasterKey(masterKeyId) {
|
|
98
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
-
if (!this.masterKey) {
|
|
100
|
-
const storedKey = yield this.persistService.get(this.STORE_MASTER_KEY);
|
|
101
|
-
if (!storedKey) {
|
|
102
|
-
throw new LrNotFoundException('Could not find masterKey in persisted storage');
|
|
103
|
-
}
|
|
104
|
-
if (storedKey.id !== masterKeyId) {
|
|
105
|
-
throw new LrNotFoundException(`masterKeyId ${storedKey.id} in persisted storage does not match the one requested ${masterKeyId}`);
|
|
106
|
-
}
|
|
107
|
-
storedKey.jwk = yield KFS.asKey(storedKey.jwk);
|
|
108
|
-
this.masterKey = storedKey;
|
|
109
|
-
}
|
|
110
|
-
return this.masterKey;
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
KeyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function KeyService_Factory() { return new KeyService(i0.ɵɵinject(i1.LR_CONFIG), i0.ɵɵinject(i2.PersistService)); }, token: KeyService, providedIn: "root" });
|
|
115
|
-
KeyService.decorators = [
|
|
116
|
-
{ type: Injectable, args: [{
|
|
117
|
-
providedIn: 'root',
|
|
118
|
-
},] }
|
|
119
|
-
];
|
|
120
|
-
KeyService.ctorParameters = () => [
|
|
121
|
-
{ type: undefined, decorators: [{ type: Inject, args: [LR_CONFIG,] }] },
|
|
122
|
-
{ type: PersistService }
|
|
123
|
-
];
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NyeXB0b2dyYXBoeS9rZXkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRWxFLE1BQU0sT0FBTyxRQUFRO0NBTXBCO0FBVUQsTUFBTSxPQUFPLFVBQVU7SUFvQnJCLFlBQzZCLE1BQXVCLEVBQzFDLGNBQThCO1FBRFgsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBckJ2QixxQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFLaEQsK0VBQStFO1FBQy9FLG1GQUFtRjtRQUNuRixxRkFBcUY7UUFDckYsK0VBQStFO1FBQy9FLGdEQUFnRDtRQUNoQyw0QkFBdUIsR0FBRyxNQUFNLENBQUM7UUFDakMsNEJBQXVCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLDRCQUF1QixHQUFHLE1BQU0sQ0FBQztRQUVqRCxxRkFBcUY7UUFDckUsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQzNELGdDQUEyQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCxnQ0FBMkIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFNekUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENB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RUFBRTtvQkFDZCxNQUFNLElBQUksbUJBQW1CLENBQzNCLCtDQUErQyxDQUNoRCxDQUFDO2lCQUNIO2dCQUVELElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxXQUFXLEVBQUU7b0JBQ2hDLE1BQU0sSUFBSSxtQkFBbUIsQ0FDM0IsZUFBZSxTQUFTLENBQUMsRUFBRSwwREFBMEQsV0FBVyxFQUFFLENBQ25HLENBQUM7aUJBQ0g7Z0JBRUQsU0FBUyxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUUvQyxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQzthQUM1QjtZQUVELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN4QixDQUFDO0tBQUE7Ozs7WUFwSUYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7NENBc0JJLE1BQU0sU0FBQyxTQUFTO1lBekNaLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEtleSwgUGFzc0tleSB9IGZyb20gJy4vY3J5cHRvZ3JhcGh5LnR5cGVzJztcbmltcG9ydCB7IExyTm90Rm91bmRFeGNlcHRpb24gfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgUGVyc2lzdFNlcnZpY2UgfSBmcm9tICcuLi9hcGkvcGVyc2lzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIGFzIEtGUyB9IGZyb20gJy4va2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBMaWZlUmVhZHlDb25maWcsIExSX0NPTkZJRyB9IGZyb20gJy4uL2xpZmUtcmVhZHkuY29uZmlnJztcblxuZXhwb3J0IGNsYXNzIFVzZXJLZXlzIHtcbiAgcGFzc0tleTogUGFzc0tleTtcbiAgbWFzdGVyS2V5OiBLZXk7XG4gIHJvb3RLZXk/OiBLZXk7XG4gIHB4az86IEtleTtcbiAgc2lnUHhrPzogS2V5O1xufVxuXG5pbnRlcmZhY2UgU3RvcmVkUGFzc0tleSB7XG4gIGlkOiBzdHJpbmc7XG4gIGp3azogb2JqZWN0O1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgS2V5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgU1RPUkVfTUFTVEVSX0tFWSA9ICdtYXN0ZXJLZXknO1xuICAvLyB2YXJpYWJsZXNcbiAgcHJpdmF0ZSBrZXlzOiBVc2VyS2V5cztcbiAgcHJpdmF0ZSBtYXN0ZXJLZXk6IEtleTtcblxuICAvLyBBWjogVGhpcyBjYW4ndCBiZSBjaGFuZ2UgZWFzaWx5LiBJdCdzIGJhc2ljYWxseSBhIFBhc3NLIG9yIFBhc3NJZHAgcm90YXRpb24uXG4gIC8vIHRvZG86IHdlIHNob3VsZCBldmVudHVhbGx5IGluY3JlYXNlIHRoaXMgcGVyaW9kaWNhbGx5IHRvIG1hdGNoIHdpdGggTW9vcmUncyBsYXcuXG4gIC8vIFRoZSBpdGVyYXRpb25zIGZvciBlYWNoIGtleSBhcmUga2VwdCBieSB0aGUgc2VydmVyIGFzIHdlbGwgYnV0IHdlIGFzc3VtZSB0aGUgdmFsdWVcbiAgLy8gZnJvbSB0aGUgc2VydmVyIGlzIG5vdCB0cnVzdHdvcnRoeSwgc28gbmVlZCB0byBoYXZlIG1pbmltdW0gdGhyZXNob2xkcyBoZXJlLlxuICAvLyBJZiBjcmVhdGluZyBuZXcga2V5cywgdGhlc2UgbWluaW11bSBhcmUgdXNlZC5cbiAgcHVibGljIHJlYWRvbmx5IE1JTl9QQVNTX0lEUF9QQktERl9JVEVSID0gMTAwMDAwO1xuICBwdWJsaWMgcmVhZG9ubHkgTUlOX1BBU1NfS0VZX1BCS0RGX0lURVIgPSAxMDAwMDA7XG4gIHB1YmxpYyByZWFkb25seSBNSU5fTEJPUF9LRVlfUEJLREZfSVRFUiA9IDEwMDAwMDtcblxuICAvLyBUaGVzZSBhcmUgdXNlZCBhcyB0aGUgZGVmYXVsdCB2YWx1ZXMuIFRoZXkgbXVzdCBiZSBsYXJnZXIgdGhhbiB0aGUgbWluaW11bSB2YWx1ZXMuXG4gIHB1YmxpYyByZWFkb25seSBERUZBVUxUX1BBU1NfSURQX1BCS0RGX0lURVIgPSB0aGlzLk1JTl9QQVNTX0lEUF9QQktERl9JVEVSO1xuICBwdWJsaWMgcmVhZG9ubHkgREVGQVVMVF9QQVNTX0tFWV9QQktERl9JVEVSID0gdGhpcy5NSU5fUEFTU19LRVlfUEJLREZfSVRFUjtcbiAgcHVibGljIHJlYWRvbmx5IERFRkFVTFRfTEJPUF9LRVlfUEJLREZfSVRFUiA9IHRoaXMuTUlOX0xCT1BfS0VZX1BCS0RGX0lURVI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChMUl9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBMaWZlUmVhZHlDb25maWcsXG4gICAgcHJpdmF0ZSBwZXJzaXN0U2VydmljZTogUGVyc2lzdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5yZXNldEtleXMoKTtcbiAgfVxuXG4gIHJlc2V0S2V5cygpIHtcbiAgICB0aGlzLmtleXMgPSBudWxsO1xuICAgIHRoaXMubWFzdGVyS2V5ID0gbnVsbDtcbiAgfVxuXG4gIHB1cmdlS2V5cygpIHtcbiAgICB0aGlzLnJlc2V0S2V5cygpO1xuICAgIHRoaXMucGVyc2lzdFNlcnZpY2UuY2xlYXIoKTtcbiAgfVxuXG4gIHBvcHVsYXRlS2V5cyhrZXlzOiBVc2VyS2V5cykge1xuICAgIHRoaXMua2V5cyA9IGtleXM7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudFBhc3NLZXkoKTogS2V5IHtcbiAgICByZXR1cm4gdGhpcy5rZXlzLnBhc3NLZXk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudE1hc3RlcktleSgpOiBLZXkge1xuICAgIHJldHVybiB0aGlzLmtleXMubWFzdGVyS2V5O1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRSb290S2V5KCk6IEtleSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cy5yb290S2V5O1xuICB9XG5cbiAgcHVibGljIGdldEN1cnJlbnRQeGsoKTogS2V5IHtcbiAgICByZXR1cm4gdGhpcy5rZXlzLnB4aztcbiAgfVxuXG4gIHB1YmxpYyBnZXRDdXJyZW50U2lnUHhrKCk6IEtleSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cy5zaWdQeGs7XG4gIH1cblxuICBwcml2YXRlIGV4cGlyZXNBZnRlcihzZWNvbmRzOiBudW1iZXIpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIDEwMDAgKiBzZWNvbmRzKTtcbiAgfVxuXG4gIGFzeW5jIHBlcnNpc3RNYXN0ZXJLZXkoXG4gICAgbWFzdGVyS2V5OiBLZXksXG4gICAgZXhwaXJlc0FmdGVyU2Vjb25kczogbnVtYmVyXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0b3JlZEtleSA9IHtcbiAgICAgIGlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICBqd2s6IG1hc3RlcktleS5qd2sudG9KU09OKHRydWUpLFxuICAgIH07XG5cbiAgICB0aGlzLm1hc3RlcktleSA9IG1hc3RlcktleTtcblxuICAgIC8vIFNhdmUgaW4gYW4gZXhwaXJhYmxlIGNvb2tpZS5cbiAgICBhd2FpdCB0aGlzLnBlcnNpc3RTZXJ2aWNlLnNldCh7XG4gICAgICBuYW1lOiB0aGlzLlNUT1JFX01BU1RFUl9LRVksXG4gICAgICB2YWx1ZTogc3RvcmVkS2V5LFxuICAgICAgZXhwaXJ5OiB0aGlzLmV4cGlyZXNBZnRlcihleHBpcmVzQWZ0ZXJTZWNvbmRzKSxcbiAgICAgIHNlcnZlclNlc3Npb246ICF0aGlzLmNvbmZpZy5kaXNhYmxlU2Vzc2lvbkVuY3J5cHRpb25LZXksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRNYXN0ZXJLZXlFeHBpcmVzQWZ0ZXJTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0b3JlZEtleSA9IGF3YWl0IHRoaXMucGVyc2lzdFNlcnZpY2UuZ2V0KHRoaXMuU1RPUkVfTUFTVEVSX0tFWSk7XG4gICAgaWYgKHN0b3JlZEtleSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgTHJOb3RGb3VuZEV4Y2VwdGlvbihcbiAgICAgICAgYENhbiBub3QgZmluZCBtYXN0ZXJLZXkgaW4gcGVyc2lzdGVkIHN0b3JhZ2UgdXNpbmcgbmFtZTogJHt0aGlzLlNUT1JFX01BU1RFUl9LRVl9YFxuICAgICAgKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5wZXJzaXN0U2VydmljZS5zZXQoe1xuICAgICAgbmFtZTogdGhpcy5TVE9SRV9NQVNURVJfS0VZLFxuICAgICAgdmFsdWU6IHN0b3JlZEtleSxcbiAgICAgIGV4cGlyeTogdGhpcy5leHBpcmVzQWZ0ZXIoc2Vjb25kcyksXG4gICAgICBzZXJ2ZXJTZXNzaW9uOiAhdGhpcy5jb25maWcuZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gVGhlcmUncyBsaXR0bGUgYmVuZWZpdCBpbiB1c2luZyBXZWJDcnlwdG8ncyBub25lLWV4dHJhY3RhYmxlIGtleXMgYmVjYXVzZSBpZiB0aGVyZVxuICAvLyBpcyBhbiBYU1MgYXR0YWNrLCB0aGVuIHRoZSBhdHRhY2tlciBoYXMgY29udHJvbCBvdmVyIHRoZSBqcyB0aGF0IGRvd25sb2FkcyB0aGUga2V5cy4gVGhlXG4gIC8vIGF0dGFja2VyIGNhbiBtb2RpZnkgdGhlIGNvZGUgdG8gaW1wb3J0IHRoZSBrZXlzIGFzIGV4dHJhY3RhYmxlLiBTbyBub25lLWV4dHJhY3RhYmxlIGtleXNcbiAgLy8gYXJlIG9ubHkgdXNlZnVsIGlmIHRoZXkgYXJlIGFscmVhZHkgcGVyc2lzdGVkIGFuZCB0aGUgdXNlciBjYW5ub3QgZG93bmxvYWQgYW55IG1vcmUga2V5cyxcbiAgLy8gd2hpY2ggaXMgbm90IGZlYXNpYmxlLlxuICAvLyBTbyBzdG9yaW5nIHRoZSBQYXNzS2V5IGluIGxvY2Fsc3RvcmFnZSBmb3Igbm93LCBhdCBsZWFzdCB0aWxsIHdlIGtub3cgd2hhdCB0aGUgdXNhZ2VcbiAgLy8gcGF0dGVybiBpcywgaS5lLiBob3cgb2Z0ZW4gZG8gd2UgbmVlZCB0byB1c2UgdGhlIFJvb3RLLCBNYXRlckssIGFuZCBQYXNzSy5cbiAgYXN5bmMgbG9hZE1hc3RlcktleShtYXN0ZXJLZXlJZDogc3RyaW5nKTogUHJvbWlzZTxLZXk+IHtcbiAgICBpZiAoIXRoaXMubWFzdGVyS2V5KSB7XG4gICAgICBjb25zdCBzdG9yZWRLZXkgPSBhd2FpdCB0aGlzLnBlcnNpc3RTZXJ2aWNlLmdldCh0aGlzLlNUT1JFX01BU1RFUl9LRVkpO1xuXG4gICAgICBpZiAoIXN0b3JlZEtleSkge1xuICAgICAgICB0aHJvdyBuZXcgTHJOb3RGb3VuZEV4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgbWFzdGVyS2V5IGluIHBlcnNpc3RlZCBzdG9yYWdlJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RvcmVkS2V5LmlkICE9PSBtYXN0ZXJLZXlJZCkge1xuICAgICAgICB0aHJvdyBuZXcgTHJOb3RGb3VuZEV4Y2VwdGlvbihcbiAgICAgICAgICBgbWFzdGVyS2V5SWQgJHtzdG9yZWRLZXkuaWR9IGluIHBlcnNpc3RlZCBzdG9yYWdlIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgcmVxdWVzdGVkICR7bWFzdGVyS2V5SWR9YFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzdG9yZWRLZXkuandrID0gYXdhaXQgS0ZTLmFzS2V5KHN0b3JlZEtleS5qd2spO1xuXG4gICAgICB0aGlzLm1hc3RlcktleSA9IHN0b3JlZEtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tYXN0ZXJLZXk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { Slip39, Slip39Helper } from 'slip39';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
export class SecretShare {
|
|
6
|
-
constructor(assembly = 0, subAssembly = 0, mnemonics = '') {
|
|
7
|
-
this.assembly = assembly;
|
|
8
|
-
this.subAssembly = subAssembly;
|
|
9
|
-
this.mnemonics = mnemonics;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
export class SubAssembly {
|
|
13
|
-
constructor(index, threshold = 0, size = 0) {
|
|
14
|
-
this.index = index;
|
|
15
|
-
this.threshold = threshold;
|
|
16
|
-
this.size = size;
|
|
17
|
-
this.clearShares();
|
|
18
|
-
}
|
|
19
|
-
clearShares() {
|
|
20
|
-
this.shares = Array();
|
|
21
|
-
}
|
|
22
|
-
addShare(share) {
|
|
23
|
-
this.shares.push(share);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
export class Assembly {
|
|
27
|
-
constructor(threshold = 0) {
|
|
28
|
-
this.threshold = threshold;
|
|
29
|
-
this.clearSubAssemblies();
|
|
30
|
-
}
|
|
31
|
-
size() {
|
|
32
|
-
return this.subAssemblies.length;
|
|
33
|
-
}
|
|
34
|
-
clearSubAssemblies() {
|
|
35
|
-
this.subAssemblies = new Array();
|
|
36
|
-
}
|
|
37
|
-
addSubAssembly(subAssembly) {
|
|
38
|
-
this.subAssemblies.push(subAssembly);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
export class SubQuorum {
|
|
42
|
-
constructor(subAssemblyIndex) {
|
|
43
|
-
this.subAssemblyIndex = subAssemblyIndex;
|
|
44
|
-
this.clearShares();
|
|
45
|
-
}
|
|
46
|
-
clearShares() {
|
|
47
|
-
this.shares = new Array();
|
|
48
|
-
}
|
|
49
|
-
addShare(share) {
|
|
50
|
-
this.shares.push(share);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
export class Quorum {
|
|
54
|
-
constructor() {
|
|
55
|
-
this.clearSubQuora();
|
|
56
|
-
}
|
|
57
|
-
clearSubQuora() {
|
|
58
|
-
this.subQuora = new Array();
|
|
59
|
-
}
|
|
60
|
-
addSubQuorum(subQuorum) {
|
|
61
|
-
this.subQuora.push(subQuorum);
|
|
62
|
-
}
|
|
63
|
-
serialiseShares() {
|
|
64
|
-
let shares = [];
|
|
65
|
-
this.subQuora.forEach((subQuorum) => {
|
|
66
|
-
shares = shares.concat(subQuorum.shares);
|
|
67
|
-
});
|
|
68
|
-
return shares;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export class Slip39Service {
|
|
72
|
-
constructor() { }
|
|
73
|
-
generateShares(secret, passphrase, assembly) {
|
|
74
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
75
|
-
// Hex-encode secret.
|
|
76
|
-
let ems = btoa(secret);
|
|
77
|
-
ems = Slip39Helper.slip39EncodeHex(ems);
|
|
78
|
-
// Construct group specifications
|
|
79
|
-
const groups = [];
|
|
80
|
-
for (const sa of assembly.subAssemblies) {
|
|
81
|
-
groups.push([sa.threshold, sa.size]);
|
|
82
|
-
}
|
|
83
|
-
// Split!
|
|
84
|
-
const slip = yield Slip39.fromArray(ems, {
|
|
85
|
-
passphrase,
|
|
86
|
-
threshold: assembly.threshold,
|
|
87
|
-
groups,
|
|
88
|
-
title: '',
|
|
89
|
-
});
|
|
90
|
-
// Extract shares
|
|
91
|
-
assembly.subAssemblies.forEach((sa, isa) => {
|
|
92
|
-
// Remove any existing shares
|
|
93
|
-
sa.clearShares();
|
|
94
|
-
for (let im = 0; im < sa.size; im++) {
|
|
95
|
-
// Construct the path to the share, formatted as "r/<subassembly index>/<member index>"
|
|
96
|
-
// with <subassembly index> and <member index> being two-digit, zero-padded integers.
|
|
97
|
-
const path = 'r/' +
|
|
98
|
-
isa.toString().padStart(2, '0') +
|
|
99
|
-
'/' +
|
|
100
|
-
im.toString().padStart(2, '0');
|
|
101
|
-
const mnemonics = slip.fromPath(path).mnemonics[0];
|
|
102
|
-
const share = new SecretShare(isa, im, mnemonics);
|
|
103
|
-
sa.addShare(share);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
// Remove all redundant shares. i.e. keep only enough members and groups to satisfy the thresholds.
|
|
109
|
-
minimalSet(mnemonics) {
|
|
110
|
-
// Decode the mnemonics and sort then into groups.
|
|
111
|
-
let groupThresh = null;
|
|
112
|
-
const groups = new Map();
|
|
113
|
-
for (const mnemonic of mnemonics) {
|
|
114
|
-
const decoded = Slip39Helper.decodeMnemonic(mnemonic);
|
|
115
|
-
if (groupThresh && groupThresh !== decoded.groupThreshold) {
|
|
116
|
-
throw new Error('groupThreshold is different in mnemonics');
|
|
117
|
-
}
|
|
118
|
-
groupThresh = decoded.groupThreshold;
|
|
119
|
-
// Note that Slip39.recoverSecret() will do all the error checking again. So it's not critical
|
|
120
|
-
// that we error check here. So we just optimistically assume it's all good.
|
|
121
|
-
let g = groups.get(decoded.groupIndex);
|
|
122
|
-
if (g == null) {
|
|
123
|
-
g = {
|
|
124
|
-
memberThreshold: decoded.memberThreshold,
|
|
125
|
-
members: [],
|
|
126
|
-
};
|
|
127
|
-
groups.set(decoded.groupIndex, g);
|
|
128
|
-
}
|
|
129
|
-
g.members.push({
|
|
130
|
-
mnemonic,
|
|
131
|
-
decoded,
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
// Keep the minimum set of groups that meet threshold.
|
|
135
|
-
const mnemonicsMinSet = [];
|
|
136
|
-
let groupCount = 0;
|
|
137
|
-
for (const g of groups.values()) {
|
|
138
|
-
// Keep only groups that meet threshold
|
|
139
|
-
if (g.members.length < g.memberThreshold) {
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
// Keep minimum number of approvals needed for group
|
|
143
|
-
g.members.slice(0, g.memberThreshold).forEach((member) => {
|
|
144
|
-
mnemonicsMinSet.push(member.mnemonic);
|
|
145
|
-
});
|
|
146
|
-
++groupCount;
|
|
147
|
-
if (groupCount >= groupThresh) {
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return mnemonicsMinSet;
|
|
152
|
-
}
|
|
153
|
-
recoverSecret(shares, passphrase) {
|
|
154
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
-
shares = this.minimalSet(shares);
|
|
156
|
-
const recovered = yield Slip39.recoverSecret(shares, passphrase);
|
|
157
|
-
const secret = Slip39Helper.slip39DecodeHex(recovered);
|
|
158
|
-
return atob(secret);
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
Slip39Service.ɵprov = i0.ɵɵdefineInjectable({ factory: function Slip39Service_Factory() { return new Slip39Service(); }, token: Slip39Service, providedIn: "root" });
|
|
163
|
-
Slip39Service.decorators = [
|
|
164
|
-
{ type: Injectable, args: [{
|
|
165
|
-
providedIn: 'root',
|
|
166
|
-
},] }
|
|
167
|
-
];
|
|
168
|
-
Slip39Service.ctorParameters = () => [];
|
|
169
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpcDM5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NyeXB0b2dyYXBoeS9zbGlwMzkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7QUFFOUMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDUyxXQUFtQixDQUFDLEVBQ3BCLGNBQXNCLENBQUMsRUFDdkIsWUFBb0IsRUFBRTtRQUZ0QixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQWE7SUFDNUIsQ0FBQztDQUNMO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDUyxLQUFhLEVBQ2IsWUFBb0IsQ0FBQyxFQUNyQixPQUFlLENBQUM7UUFGaEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUV2QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUlNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQWtCO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxRQUFRO0lBQ25CLFlBQW1CLFlBQW9CLENBQUM7UUFBckIsY0FBUyxHQUFULFNBQVMsQ0FBWTtRQUN0QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lB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IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNsaXAzOSwgU2xpcDM5SGVscGVyIH0gZnJvbSAnc2xpcDM5JztcblxuZXhwb3J0IGNsYXNzIFNlY3JldFNoYXJlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGFzc2VtYmx5OiBudW1iZXIgPSAwLFxuICAgIHB1YmxpYyBzdWJBc3NlbWJseTogbnVtYmVyID0gMCxcbiAgICBwdWJsaWMgbW5lbW9uaWNzOiBzdHJpbmcgPSAnJ1xuICApIHt9XG59XG5cbmV4cG9ydCBjbGFzcyBTdWJBc3NlbWJseSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBpbmRleDogbnVtYmVyLFxuICAgIHB1YmxpYyB0aHJlc2hvbGQ6IG51bWJlciA9IDAsXG4gICAgcHVibGljIHNpemU6IG51bWJlciA9IDBcbiAgKSB7XG4gICAgdGhpcy5jbGVhclNoYXJlcygpO1xuICB9XG5cbiAgc2hhcmVzOiBTZWNyZXRTaGFyZVtdO1xuXG4gIHB1YmxpYyBjbGVhclNoYXJlcygpIHtcbiAgICB0aGlzLnNoYXJlcyA9IEFycmF5KCk7XG4gIH1cblxuICBwdWJsaWMgYWRkU2hhcmUoc2hhcmU6IFNlY3JldFNoYXJlKSB7XG4gICAgdGhpcy5zaGFyZXMucHVzaChzaGFyZSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFzc2VtYmx5IHtcbiAgY29uc3RydWN0b3IocHVibGljIHRocmVzaG9sZDogbnVtYmVyID0gMCkge1xuICAgIHRoaXMuY2xlYXJTdWJBc3NlbWJsaWVzKCk7XG4gIH1cblxuICBzdWJBc3NlbWJsaWVzOiBTdWJBc3NlbWJseVtdO1xuXG4gIHB1YmxpYyBzaXplKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkFzc2VtYmxpZXMubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU3ViQXNzZW1ibGllcygpIHtcbiAgICB0aGlzLnN1YkFzc2VtYmxpZXMgPSBuZXcgQXJyYXkoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRTdWJBc3NlbWJseShzdWJBc3NlbWJseTogU3ViQXNzZW1ibHkpIHtcbiAgICB0aGlzLnN1YkFzc2VtYmxpZXMucHVzaChzdWJBc3NlbWJseSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN1YlF1b3J1bSB7XG4gIHNoYXJlczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIHN1YkFzc2VtYmx5SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuY2xlYXJTaGFyZXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhclNoYXJlcygpIHtcbiAgICB0aGlzLnNoYXJlcyA9IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgcHVibGljIGFkZFNoYXJlKHNoYXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNoYXJlcy5wdXNoKHNoYXJlKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUXVvcnVtIHtcbiAgc3ViUXVvcmE6IFN1YlF1b3J1bVtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2xlYXJTdWJRdW9yYSgpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU3ViUXVvcmEoKSB7XG4gICAgdGhpcy5zdWJRdW9yYSA9IG5ldyBBcnJheSgpO1xuICB9XG5cbiAgcHVibGljIGFkZFN1YlF1b3J1bShzdWJRdW9ydW06IFN1YlF1b3J1bSkge1xuICAgIHRoaXMuc3ViUXVvcmEucHVzaChzdWJRdW9ydW0pO1xuICB9XG5cbiAgcHVibGljIHNlcmlhbGlzZVNoYXJlcygpIHtcbiAgICBsZXQgc2hhcmVzID0gW107XG5cbiAgICB0aGlzLnN1YlF1b3JhLmZvckVhY2goKHN1YlF1b3J1bSkgPT4ge1xuICAgICAgc2hhcmVzID0gc2hhcmVzLmNvbmNhdChzdWJRdW9ydW0uc2hhcmVzKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBzaGFyZXM7XG4gIH1cbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFNsaXAzOVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgcHVibGljIGFzeW5jIGdlbmVyYXRlU2hhcmVzKHNlY3JldCwgcGFzc3BocmFzZTogc3RyaW5nLCBhc3NlbWJseTogQXNzZW1ibHkpIHtcbiAgICAvLyBIZXgtZW5jb2RlIHNlY3JldC5cbiAgICBsZXQgZW1zID0gYnRvYShzZWNyZXQpO1xuICAgIGVtcyA9IFNsaXAzOUhlbHBlci5zbGlwMzlFbmNvZGVIZXgoZW1zKTtcblxuICAgIC8vIENvbnN0cnVjdCBncm91cCBzcGVjaWZpY2F0aW9uc1xuICAgIGNvbnN0IGdyb3VwcyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBzYSBvZiBhc3NlbWJseS5zdWJBc3NlbWJsaWVzKSB7XG4gICAgICBncm91cHMucHVzaChbc2EudGhyZXNob2xkLCBzYS5zaXplXSk7XG4gICAgfVxuXG4gICAgLy8gU3BsaXQhXG4gICAgY29uc3Qgc2xpcCA9IGF3YWl0IFNsaXAzOS5mcm9tQXJyYXkoZW1zLCB7XG4gICAgICBwYXNzcGhyYXNlLFxuICAgICAgdGhyZXNob2xkOiBhc3NlbWJseS50aHJlc2hvbGQsXG4gICAgICBncm91cHMsXG4gICAgICB0aXRsZTogJycsXG4gICAgfSk7XG5cbiAgICAvLyBFeHRyYWN0IHNoYXJlc1xuICAgIGFzc2VtYmx5LnN1YkFzc2VtYmxpZXMuZm9yRWFjaCgoc2EsIGlzYSkgPT4ge1xuICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBzaGFyZXNcbiAgICAgIHNhLmNsZWFyU2hhcmVzKCk7XG5cbiAgICAgIGZvciAobGV0IGltID0gMDsgaW0gPCBzYS5zaXplOyBpbSsrKSB7XG4gICAgICAgIC8vIENvbnN0cnVjdCB0aGUgcGF0aCB0byB0aGUgc2hhcmUsIGZvcm1hdHRlZCBhcyBcInIvPHN1YmFzc2VtYmx5IGluZGV4Pi88bWVtYmVyIGluZGV4PlwiXG4gICAgICAgIC8vIHdpdGggPHN1YmFzc2VtYmx5IGluZGV4PiBhbmQgPG1lbWJlciBpbmRleD4gYmVpbmcgdHdvLWRpZ2l0LCB6ZXJvLXBhZGRlZCBpbnRlZ2Vycy5cbiAgICAgICAgY29uc3QgcGF0aCA9XG4gICAgICAgICAgJ3IvJyArXG4gICAgICAgICAgaXNhLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKSArXG4gICAgICAgICAgJy8nICtcbiAgICAgICAgICBpbS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IG1uZW1vbmljcyA9IHNsaXAuZnJvbVBhdGgocGF0aCkubW5lbW9uaWNzWzBdO1xuICAgICAgICBjb25zdCBzaGFyZSA9IG5ldyBTZWNyZXRTaGFyZShpc2EsIGltLCBtbmVtb25pY3MpO1xuXG4gICAgICAgIHNhLmFkZFNoYXJlKHNoYXJlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlbW92ZSBhbGwgcmVkdW5kYW50IHNoYXJlcy4gaS5lLiBrZWVwIG9ubHkgZW5vdWdoIG1lbWJlcnMgYW5kIGdyb3VwcyB0byBzYXRpc2Z5IHRoZSB0aHJlc2hvbGRzLlxuICBwcml2YXRlIG1pbmltYWxTZXQobW5lbW9uaWNzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAvLyBEZWNvZGUgdGhlIG1uZW1vbmljcyBhbmQgc29ydCB0aGVuIGludG8gZ3JvdXBzLlxuICAgIGxldCBncm91cFRocmVzaCA9IG51bGw7XG4gICAgY29uc3QgZ3JvdXBzID0gbmV3IE1hcCgpO1xuICAgIGZvciAoY29uc3QgbW5lbW9uaWMgb2YgbW5lbW9uaWNzKSB7XG4gICAgICBjb25zdCBkZWNvZGVkID0gU2xpcDM5SGVscGVyLmRlY29kZU1uZW1vbmljKG1uZW1vbmljKTtcblxuICAgICAgaWYgKGdyb3VwVGhyZXNoICYmIGdyb3VwVGhyZXNoICE9PSBkZWNvZGVkLmdyb3VwVGhyZXNob2xkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignZ3JvdXBUaHJlc2hvbGQgaXMgZGlmZmVyZW50IGluIG1uZW1vbmljcycpO1xuICAgICAgfVxuXG4gICAgICBncm91cFRocmVzaCA9IGRlY29kZWQuZ3JvdXBUaHJlc2hvbGQ7XG5cbiAgICAgIC8vIE5vdGUgdGhhdCBTbGlwMzkucmVjb3ZlclNlY3JldCgpIHdpbGwgZG8gYWxsIHRoZSBlcnJvciBjaGVja2luZyBhZ2Fpbi4gU28gaXQncyBub3QgY3JpdGljYWxcbiAgICAgIC8vIHRoYXQgd2UgZXJyb3IgY2hlY2sgaGVyZS4gU28gd2UganVzdCBvcHRpbWlzdGljYWxseSBhc3N1bWUgaXQncyBhbGwgZ29vZC5cbiAgICAgIGxldCBnID0gZ3JvdXBzLmdldChkZWNvZGVkLmdyb3VwSW5kZXgpO1xuICAgICAgaWYgKGcgPT0gbnVsbCkge1xuICAgICAgICBnID0ge1xuICAgICAgICAgIG1lbWJlclRocmVzaG9sZDogZGVjb2RlZC5tZW1iZXJUaHJlc2hvbGQsXG4gICAgICAgICAgbWVtYmVyczogW10sXG4gICAgICAgIH07XG4gICAgICAgIGdyb3Vwcy5zZXQoZGVjb2RlZC5ncm91cEluZGV4LCBnKTtcbiAgICAgIH1cblxuICAgICAgZy5tZW1iZXJzLnB1c2goe1xuICAgICAgICBtbmVtb25pYyxcbiAgICAgICAgZGVjb2RlZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEtlZXAgdGhlIG1pbmltdW0gc2V0IG9mIGdyb3VwcyB0aGF0IG1lZXQgdGhyZXNob2xkLlxuICAgIGNvbnN0IG1uZW1vbmljc01pblNldCA9IFtdO1xuICAgIGxldCBncm91cENvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IGcgb2YgZ3JvdXBzLnZhbHVlcygpKSB7XG4gICAgICAvLyBLZWVwIG9ubHkgZ3JvdXBzIHRoYXQgbWVldCB0aHJlc2hvbGRcbiAgICAgIGlmIChnLm1lbWJlcnMubGVuZ3RoIDwgZy5tZW1iZXJUaHJlc2hvbGQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEtlZXAgbWluaW11bSBudW1iZXIgb2YgYXBwcm92YWxzIG5lZWRlZCBmb3IgZ3JvdXBcbiAgICAgIGcubWVtYmVycy5zbGljZSgwLCBnLm1lbWJlclRocmVzaG9sZCkuZm9yRWFjaCgobWVtYmVyKSA9PiB7XG4gICAgICAgIG1uZW1vbmljc01pblNldC5wdXNoKG1lbWJlci5tbmVtb25pYyk7XG4gICAgICB9KTtcblxuICAgICAgKytncm91cENvdW50O1xuICAgICAgaWYgKGdyb3VwQ291bnQgPj0gZ3JvdXBUaHJlc2gpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1uZW1vbmljc01pblNldDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNvdmVyU2VjcmV0KHNoYXJlczogc3RyaW5nW10sIHBhc3NwaHJhc2U6IHN0cmluZykge1xuICAgIHNoYXJlcyA9IHRoaXMubWluaW1hbFNldChzaGFyZXMpO1xuXG4gICAgY29uc3QgcmVjb3ZlcmVkID0gYXdhaXQgU2xpcDM5LnJlY292ZXJTZWNyZXQoc2hhcmVzLCBwYXNzcGhyYXNlKTtcblxuICAgIGNvbnN0IHNlY3JldCA9IFNsaXAzOUhlbHBlci5zbGlwMzlEZWNvZGVIZXgocmVjb3ZlcmVkKTtcblxuICAgIHJldHVybiBhdG9iKHNlY3JldCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { __awaiter } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class WebCryptoService {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.crypto = window.crypto;
|
|
7
|
-
}
|
|
8
|
-
toHex(buffer) {
|
|
9
|
-
// Ref: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
|
|
10
|
-
const array = Array.from(new Uint8Array(buffer)); // convert buffer to byte array
|
|
11
|
-
const hex = array.map((b) => b.toString(16).padStart(2, '0')).join(''); // convert bytes to hex string
|
|
12
|
-
return hex;
|
|
13
|
-
}
|
|
14
|
-
stringDigest(algorithm, message) {
|
|
15
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
const encoder = new TextEncoder();
|
|
17
|
-
const data = encoder.encode(message);
|
|
18
|
-
const hash = yield this.crypto.subtle.digest(algorithm, data);
|
|
19
|
-
return this.toHex(hash);
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
WebCryptoService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WebCryptoService_Factory() { return new WebCryptoService(); }, token: WebCryptoService, providedIn: "root" });
|
|
24
|
-
WebCryptoService.decorators = [
|
|
25
|
-
{ type: Injectable, args: [{
|
|
26
|
-
providedIn: 'root',
|
|
27
|
-
},] }
|
|
28
|
-
];
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLWNyeXB0by5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jcnlwdG9ncmFwaHkvd2ViLWNyeXB0by5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSUUsV0FBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUM7S0FlaEM7SUFiQyxLQUFLLENBQUMsTUFBbUI7UUFDdkIsNEVBQTRFO1FBQzVFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLCtCQUErQjtRQUNqRixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw4QkFBOEI7UUFDdEcsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUssWUFBWSxDQUFDLFNBQWlCLEVBQUUsT0FBZTs7WUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM5RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQztLQUFBOzs7O1lBbEJGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFdlYkNyeXB0b1NlcnZpY2Uge1xuICBjcnlwdG86IENyeXB0byA9IHdpbmRvdy5jcnlwdG87XG5cbiAgdG9IZXgoYnVmZmVyOiBBcnJheUJ1ZmZlcikge1xuICAgIC8vIFJlZjogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1N1YnRsZUNyeXB0by9kaWdlc3RcbiAgICBjb25zdCBhcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoYnVmZmVyKSk7IC8vIGNvbnZlcnQgYnVmZmVyIHRvIGJ5dGUgYXJyYXlcbiAgICBjb25zdCBoZXggPSBhcnJheS5tYXAoKGIpID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpOyAvLyBjb252ZXJ0IGJ5dGVzIHRvIGhleCBzdHJpbmdcbiAgICByZXR1cm4gaGV4O1xuICB9XG5cbiAgYXN5bmMgc3RyaW5nRGlnZXN0KGFsZ29yaXRobTogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUobWVzc2FnZSk7XG4gICAgY29uc3QgaGFzaCA9IGF3YWl0IHRoaXMuY3J5cHRvLnN1YnRsZS5kaWdlc3QoYWxnb3JpdGhtLCBkYXRhKTtcbiAgICByZXR1cm4gdGhpcy50b0hleChoYXNoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { gqlTyped } from '../_common/ast';
|
|
2
|
-
export const TpsKeysQuery = gqlTyped `
|
|
3
|
-
query TpsKeysQuery($ids: [ID]) {
|
|
4
|
-
tps(id_In: $ids) {
|
|
5
|
-
edges {
|
|
6
|
-
node {
|
|
7
|
-
id
|
|
8
|
-
currentUserSharedKey {
|
|
9
|
-
userSharedKey {
|
|
10
|
-
sharedKey {
|
|
11
|
-
id
|
|
12
|
-
}
|
|
13
|
-
mkSharedKey {
|
|
14
|
-
id
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
}`;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAtYXNzZW1ibHkuZ3FsLnByaXZhdGUuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RydXN0ZWQtcGFydGllcy90cC1hc3NlbWJseS5ncWwucHJpdmF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLMUMsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBb0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtQnRELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uLCBUcE5vZGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHBzS2V5c1F1ZXJ5UmVzdWx0IHtcbiAgdHBzOiBDb25uZWN0aW9uPFRwTm9kZT47XG59XG5leHBvcnQgY29uc3QgVHBzS2V5c1F1ZXJ5ID0gZ3FsVHlwZWQ8VHBzS2V5c1F1ZXJ5UmVzdWx0PmBcbnF1ZXJ5IFRwc0tleXNRdWVyeSgkaWRzOiBbSURdKSB7XG4gIHRwcyhpZF9JbjogJGlkcykge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICBpZFxuICAgICAgICBjdXJyZW50VXNlclNoYXJlZEtleSB7XG4gICAgICAgICAgdXNlclNoYXJlZEtleSB7XG4gICAgICAgICAgICBzaGFyZWRLZXkge1xuICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWtTaGFyZWRLZXkge1xuICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG4iXX0=
|