@lifeready/core 9.0.7 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/fesm2022/lifeready-core.mjs +10522 -0
  2. package/fesm2022/lifeready-core.mjs.map +1 -0
  3. package/package.json +21 -16
  4. package/types/lifeready-core.d.ts +5329 -0
  5. package/bundles/lifeready-core.umd.js +0 -13231
  6. package/bundles/lifeready-core.umd.js.map +0 -1
  7. package/bundles/lifeready-core.umd.min.js +0 -2
  8. package/bundles/lifeready-core.umd.min.js.map +0 -1
  9. package/esm2015/lib/_common/ast.js +0 -41
  10. package/esm2015/lib/_common/deferred-promise.js +0 -24
  11. package/esm2015/lib/_common/exceptions.js +0 -186
  12. package/esm2015/lib/_common/index.js +0 -3
  13. package/esm2015/lib/_common/kc-lodash.js +0 -11
  14. package/esm2015/lib/_common/key.js +0 -28
  15. package/esm2015/lib/_common/queries.gql.js +0 -43
  16. package/esm2015/lib/_common/run-outside-angular.js +0 -80
  17. package/esm2015/lib/_common/storage.js +0 -28
  18. package/esm2015/lib/_common/types.js +0 -2
  19. package/esm2015/lib/_common/utils.js +0 -73
  20. package/esm2015/lib/api/lr-apollo.service.js +0 -47
  21. package/esm2015/lib/api/lr-graphql/index.js +0 -6
  22. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -170
  23. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -216
  24. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
  25. package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -91
  26. package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
  27. package/esm2015/lib/api/query-processor/common-processors.service.js +0 -94
  28. package/esm2015/lib/api/query-processor/index.js +0 -3
  29. package/esm2015/lib/api/query-processor/query-processor.service.js +0 -307
  30. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -110
  31. package/esm2015/lib/api/types/graphql.types.js +0 -8
  32. package/esm2015/lib/api/types/index.js +0 -3
  33. package/esm2015/lib/api/types/lr-graphql.types.js +0 -182
  34. package/esm2015/lib/auth/auth.config.js +0 -57
  35. package/esm2015/lib/auth/auth.gql.private.js +0 -85
  36. package/esm2015/lib/auth/auth.service.js +0 -616
  37. package/esm2015/lib/auth/auth.types.js +0 -19
  38. package/esm2015/lib/contact-card/contact-card.gql.js +0 -79
  39. package/esm2015/lib/contact-card/contact-card.service.js +0 -156
  40. package/esm2015/lib/contact-card/contact-card2.gql.js +0 -29
  41. package/esm2015/lib/contact-card/contact-card2.service.js +0 -103
  42. package/esm2015/lib/encryption/encryption.service.js +0 -188
  43. package/esm2015/lib/file-upload/file-upload.service.js +0 -70
  44. package/esm2015/lib/file-upload/file-upload.types.js +0 -2
  45. package/esm2015/lib/idle/idle.service.js +0 -159
  46. package/esm2015/lib/idle/idle.types.js +0 -7
  47. package/esm2015/lib/item/item.gql.js +0 -166
  48. package/esm2015/lib/item/item.gql.private.js +0 -41
  49. package/esm2015/lib/item/item.service.js +0 -662
  50. package/esm2015/lib/item/item.types.js +0 -2
  51. package/esm2015/lib/key/key-factory.service.js +0 -226
  52. package/esm2015/lib/key/key-graph.service.js +0 -314
  53. package/esm2015/lib/key/key-meta.service.js +0 -153
  54. package/esm2015/lib/key/key.service.js +0 -124
  55. package/esm2015/lib/key/key.types.js +0 -16
  56. package/esm2015/lib/key-exchange/key-exchange.gql.js +0 -174
  57. package/esm2015/lib/key-exchange/key-exchange.service.js +0 -496
  58. package/esm2015/lib/lbop/lbop.service.js +0 -351
  59. package/esm2015/lib/life-ready.config.js +0 -96
  60. package/esm2015/lib/life-ready.module.js +0 -42
  61. package/esm2015/lib/lock/lock.gql.js +0 -40
  62. package/esm2015/lib/lock/lock.service.js +0 -64
  63. package/esm2015/lib/notification/notification.gql.js +0 -43
  64. package/esm2015/lib/notification/notification.service.js +0 -118
  65. package/esm2015/lib/password/password.gql.js +0 -28
  66. package/esm2015/lib/password/password.service.js +0 -309
  67. package/esm2015/lib/persist/persist.service.js +0 -181
  68. package/esm2015/lib/plan/plan.gql.js +0 -91
  69. package/esm2015/lib/plan/plan.service.js +0 -191
  70. package/esm2015/lib/plan/plan.types.js +0 -2
  71. package/esm2015/lib/profile/profile-details.service.js +0 -261
  72. package/esm2015/lib/profile/profile.gql.js +0 -170
  73. package/esm2015/lib/profile/profile.service.js +0 -166
  74. package/esm2015/lib/profile/profile.types.js +0 -45
  75. package/esm2015/lib/register/register.service.js +0 -173
  76. package/esm2015/lib/register/register.types.js +0 -3
  77. package/esm2015/lib/reminder/reminder.gql.js +0 -27
  78. package/esm2015/lib/reminder/reminder.service.js +0 -85
  79. package/esm2015/lib/reminder/reminder.types.js +0 -2
  80. package/esm2015/lib/scenario/scenario.constants.js +0 -2
  81. package/esm2015/lib/scenario/scenario.controller.js +0 -34
  82. package/esm2015/lib/scenario/scenario.gql.js +0 -90
  83. package/esm2015/lib/scenario/scenario.private.gql.js +0 -200
  84. package/esm2015/lib/scenario/scenario.service.js +0 -679
  85. package/esm2015/lib/scenario/scenario.types.js +0 -2
  86. package/esm2015/lib/server-config/server-config.gql.js +0 -9
  87. package/esm2015/lib/server-config/server-config.service.js +0 -41
  88. package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +0 -119
  89. package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +0 -41
  90. package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +0 -117
  91. package/esm2015/lib/slip39/slip39.service.js +0 -167
  92. package/esm2015/lib/time/time.service.js +0 -152
  93. package/esm2015/lib/tp-assembly/tp-assembly.js +0 -363
  94. package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +0 -22
  95. package/esm2015/lib/tp-assembly/tp-assembly.types.js +0 -2
  96. package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +0 -98
  97. package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +0 -121
  98. package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +0 -4
  99. package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +0 -34
  100. package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +0 -74
  101. package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +0 -166
  102. package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +0 -54
  103. package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +0 -110
  104. package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +0 -2
  105. package/esm2015/lib/trusted-party/trusted-party.gql.js +0 -96
  106. package/esm2015/lib/trusted-party/trusted-party.gql.private.js +0 -51
  107. package/esm2015/lib/trusted-party/trusted-party.service.js +0 -461
  108. package/esm2015/lib/trusted-party/trusted-party.types.js +0 -2
  109. package/esm2015/lib/two-factor/two-factor.service.js +0 -74
  110. package/esm2015/lib/user/user.gql.js +0 -32
  111. package/esm2015/lib/user/user.service.js +0 -58
  112. package/esm2015/lib/user/user.types.js +0 -2
  113. package/esm2015/lib/web-crypto/web-crypto.service.js +0 -29
  114. package/esm2015/lifeready-core.js +0 -17
  115. package/esm2015/public-api.js +0 -60
  116. package/fesm2015/lifeready-core.js +0 -10970
  117. package/fesm2015/lifeready-core.js.map +0 -1
  118. package/lib/_common/ast.d.ts +0 -11
  119. package/lib/_common/deferred-promise.d.ts +0 -12
  120. package/lib/_common/exceptions.d.ts +0 -126
  121. package/lib/_common/index.d.ts +0 -2
  122. package/lib/_common/kc-lodash.d.ts +0 -5
  123. package/lib/_common/key.d.ts +0 -14
  124. package/lib/_common/queries.gql.d.ts +0 -4
  125. package/lib/_common/run-outside-angular.d.ts +0 -14
  126. package/lib/_common/storage.d.ts +0 -13
  127. package/lib/_common/types.d.ts +0 -15
  128. package/lib/_common/utils.d.ts +0 -12
  129. package/lib/api/lr-apollo.service.d.ts +0 -15
  130. package/lib/api/lr-graphql/index.d.ts +0 -5
  131. package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -81
  132. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -46
  133. package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
  134. package/lib/api/lr-graphql/lr-mutation.d.ts +0 -48
  135. package/lib/api/lr-graphql/lr.service.d.ts +0 -9
  136. package/lib/api/query-processor/common-processors.service.d.ts +0 -36
  137. package/lib/api/query-processor/index.d.ts +0 -2
  138. package/lib/api/query-processor/query-processor.service.d.ts +0 -18
  139. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +0 -15
  140. package/lib/api/types/graphql.types.d.ts +0 -30
  141. package/lib/api/types/index.d.ts +0 -2
  142. package/lib/api/types/lr-graphql.types.d.ts +0 -807
  143. package/lib/auth/auth.config.d.ts +0 -5
  144. package/lib/auth/auth.gql.private.d.ts +0 -25
  145. package/lib/auth/auth.service.d.ts +0 -72
  146. package/lib/auth/auth.types.d.ts +0 -70
  147. package/lib/contact-card/contact-card.gql.d.ts +0 -7
  148. package/lib/contact-card/contact-card.service.d.ts +0 -53
  149. package/lib/contact-card/contact-card2.gql.d.ts +0 -25
  150. package/lib/contact-card/contact-card2.service.d.ts +0 -64
  151. package/lib/encryption/encryption.service.d.ts +0 -42
  152. package/lib/file-upload/file-upload.service.d.ts +0 -15
  153. package/lib/file-upload/file-upload.types.d.ts +0 -5
  154. package/lib/idle/idle.service.d.ts +0 -47
  155. package/lib/idle/idle.types.d.ts +0 -10
  156. package/lib/item/item.gql.d.ts +0 -134
  157. package/lib/item/item.gql.private.d.ts +0 -35
  158. package/lib/item/item.service.d.ts +0 -201
  159. package/lib/item/item.types.d.ts +0 -95
  160. package/lib/key/key-factory.service.d.ts +0 -40
  161. package/lib/key/key-graph.service.d.ts +0 -41
  162. package/lib/key/key-meta.service.d.ts +0 -51
  163. package/lib/key/key.service.d.ts +0 -36
  164. package/lib/key/key.types.d.ts +0 -86
  165. package/lib/key-exchange/key-exchange.gql.d.ts +0 -141
  166. package/lib/key-exchange/key-exchange.service.d.ts +0 -179
  167. package/lib/lbop/lbop.service.d.ts +0 -99
  168. package/lib/life-ready.config.d.ts +0 -26
  169. package/lib/life-ready.module.d.ts +0 -5
  170. package/lib/lock/lock.gql.d.ts +0 -27
  171. package/lib/lock/lock.service.d.ts +0 -34
  172. package/lib/notification/notification.gql.d.ts +0 -37
  173. package/lib/notification/notification.service.d.ts +0 -64
  174. package/lib/password/password.gql.d.ts +0 -3
  175. package/lib/password/password.service.d.ts +0 -79
  176. package/lib/persist/persist.service.d.ts +0 -31
  177. package/lib/plan/plan.gql.d.ts +0 -69
  178. package/lib/plan/plan.service.d.ts +0 -111
  179. package/lib/plan/plan.types.d.ts +0 -16
  180. package/lib/profile/profile-details.service.d.ts +0 -20
  181. package/lib/profile/profile.gql.d.ts +0 -21
  182. package/lib/profile/profile.service.d.ts +0 -32
  183. package/lib/profile/profile.types.d.ts +0 -121
  184. package/lib/register/register.service.d.ts +0 -25
  185. package/lib/register/register.types.d.ts +0 -6
  186. package/lib/reminder/reminder.gql.d.ts +0 -23
  187. package/lib/reminder/reminder.service.d.ts +0 -33
  188. package/lib/reminder/reminder.types.d.ts +0 -17
  189. package/lib/scenario/scenario.constants.d.ts +0 -1
  190. package/lib/scenario/scenario.controller.d.ts +0 -10
  191. package/lib/scenario/scenario.gql.d.ts +0 -78
  192. package/lib/scenario/scenario.private.gql.d.ts +0 -16
  193. package/lib/scenario/scenario.service.d.ts +0 -655
  194. package/lib/scenario/scenario.types.d.ts +0 -64
  195. package/lib/server-config/server-config.gql.d.ts +0 -5
  196. package/lib/server-config/server-config.service.d.ts +0 -9
  197. package/lib/shared-contact-card/shared-contact-card.service.d.ts +0 -33
  198. package/lib/shared-contact-card/shared-contact-card2.gql.d.ts +0 -36
  199. package/lib/shared-contact-card/shared-contact-card2.service.d.ts +0 -45
  200. package/lib/slip39/slip39.service.d.ts +0 -42
  201. package/lib/time/time.service.d.ts +0 -26
  202. package/lib/tp-assembly/tp-assembly.d.ts +0 -177
  203. package/lib/tp-assembly/tp-assembly.private.gql.d.ts +0 -5
  204. package/lib/tp-assembly/tp-assembly.types.d.ts +0 -40
  205. package/lib/tp-password-reset/tp-password-reset-request.service.d.ts +0 -16
  206. package/lib/tp-password-reset/tp-password-reset-user.service.d.ts +0 -29
  207. package/lib/tp-password-reset/tp-password-reset.constants.d.ts +0 -3
  208. package/lib/tp-password-reset/tp-password-reset.controller.d.ts +0 -10
  209. package/lib/tp-password-reset/tp-password-reset.gql.d.ts +0 -63
  210. package/lib/tp-password-reset/tp-password-reset.private.gql.d.ts +0 -163
  211. package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +0 -59
  212. package/lib/tp-password-reset/tp-password-reset.service.d.ts +0 -112
  213. package/lib/tp-password-reset/tp-password-reset.types.d.ts +0 -40
  214. package/lib/trusted-party/trusted-party.gql.d.ts +0 -85
  215. package/lib/trusted-party/trusted-party.gql.private.d.ts +0 -40
  216. package/lib/trusted-party/trusted-party.service.d.ts +0 -192
  217. package/lib/trusted-party/trusted-party.types.d.ts +0 -31
  218. package/lib/two-factor/two-factor.service.d.ts +0 -15
  219. package/lib/user/user.gql.d.ts +0 -8
  220. package/lib/user/user.service.d.ts +0 -9
  221. package/lib/user/user.types.d.ts +0 -16
  222. package/lib/web-crypto/web-crypto.service.d.ts +0 -5
  223. package/lifeready-core.d.ts +0 -16
  224. package/lifeready-core.metadata.json +0 -1
  225. package/public-api.d.ts +0 -56
@@ -1,153 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import { Injectable } from '@angular/core';
4
- import { LrApolloService } from '../api/lr-apollo.service';
5
- // import { GetCategoryKeyIdQuery } from '../category/category.gql';
6
- import { EncryptionService } from '../encryption/encryption.service';
7
- import { gqlTyped } from '../_common/ast';
8
- import { KeyFactoryService } from './key-factory.service';
9
- import { KeyGraphService } from './key-graph.service';
10
- import { KeyService } from './key.service';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "../encryption/encryption.service";
13
- import * as i2 from "./key-graph.service";
14
- import * as i3 from "../api/lr-apollo.service";
15
- import * as i4 from "./key.service";
16
- import * as i5 from "./key-factory.service";
17
- export const DirectoryKeyQuery = gqlTyped `
18
- query DirectoryKeyQuery($id: LrRelayIdInput!) {
19
- directory(id: $id) {
20
- keyId
21
- }
22
- }
23
- `;
24
- export class WrappedContent {
25
- }
26
- export class WrappingKey {
27
- }
28
- export class KeyMetaService {
29
- constructor(encryptionService, keyGraph, lrApollo, keyService, keyFactory) {
30
- this.encryptionService = encryptionService;
31
- this.keyGraph = keyGraph;
32
- this.lrApollo = lrApollo;
33
- this.keyService = keyService;
34
- this.keyFactory = keyFactory;
35
- }
36
- decryptMeta(metaHaver) {
37
- return __awaiter(this, void 0, void 0, function* () {
38
- if (metaHaver.cipherMeta) {
39
- const key = yield this.keyGraph.getJwkKey(metaHaver.keyId);
40
- return (yield this.encryptionService.decrypt(key, JSON.parse(metaHaver.cipherMeta)));
41
- }
42
- return null;
43
- });
44
- }
45
- doubleWrapContent(secureContent, categoryIds, fileContent) {
46
- return __awaiter(this, void 0, void 0, function* () {
47
- const key = yield this.keyFactory.createKey();
48
- const wrappedContent = yield this.wrapContent(key.toJSON(true), categoryIds);
49
- return {
50
- rootKey: wrappedContent.rootKey,
51
- wrappedKeys: wrappedContent.wrappedKeys,
52
- doubleWrappedKey: wrappedContent.cipherMeta,
53
- cipherMeta: secureContent
54
- ? JSON.stringify(yield this.encryptionService.encrypt(key, secureContent))
55
- : null,
56
- cipherFileContent: fileContent
57
- ? JSON.stringify(yield this.encryptionService.encrypt(key, fileContent))
58
- : null,
59
- };
60
- });
61
- }
62
- reWrapContent(keyId, secureContent) {
63
- return __awaiter(this, void 0, void 0, function* () {
64
- const key = yield this.keyGraph.getJwkKey(keyId);
65
- const newKey = yield this.keyFactory.createKey();
66
- return {
67
- doubleWrappedKey: JSON.stringify(yield this.encryptionService.encrypt(key, newKey.toJSON(true))),
68
- cipherMeta: secureContent
69
- ? JSON.stringify(yield this.encryptionService.encrypt(newKey, secureContent))
70
- : null,
71
- };
72
- });
73
- }
74
- wrapContent(secureContent, categoryIds) {
75
- return __awaiter(this, void 0, void 0, function* () {
76
- const key = yield this.keyFactory.createKey();
77
- let wrappedKeys;
78
- let rootWrappingKey;
79
- if (categoryIds && categoryIds.length) {
80
- wrappedKeys = yield Promise.all(categoryIds.map((categoryId) => __awaiter(this, void 0, void 0, function* () {
81
- const parentKey = yield this.getDirectoryKeyId(categoryId);
82
- const wrappedKey = JSON.stringify(yield this.encryptionService.encrypt(parentKey.key, key.toJSON(true)));
83
- return {
84
- directoryId: categoryId,
85
- wrappingKeyId: parentKey.keyId,
86
- wrappedKey,
87
- };
88
- })));
89
- }
90
- else {
91
- // Adding to root directory
92
- const rootKey = this.keyService.currentRootKey;
93
- const wrappedKey = JSON.stringify(yield this.encryptionService.encrypt(rootKey.jwk, key.toJSON(true)));
94
- rootWrappingKey = {
95
- wrappingKeyId: rootKey.id,
96
- wrappedKey,
97
- };
98
- }
99
- return {
100
- key,
101
- rootKey: rootWrappingKey,
102
- wrappedKeys,
103
- cipherMeta: secureContent
104
- ? JSON.stringify(yield this.encryptionService.encrypt(key, secureContent))
105
- : null,
106
- };
107
- });
108
- }
109
- wrapContentWithKey(secureContent, keyId) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- const key = yield this.keyFactory.createKey();
112
- const wrappedKey = yield this.keyGraph.encryptToString(keyId, key.toJSON(true));
113
- return {
114
- key,
115
- rootKey: {
116
- wrappingKeyId: keyId,
117
- wrappedKey,
118
- },
119
- cipherMeta: secureContent
120
- ? JSON.stringify(yield this.encryptionService.encrypt(key, secureContent))
121
- : null,
122
- };
123
- });
124
- }
125
- getDirectoryKeyId(categoryId) {
126
- return __awaiter(this, void 0, void 0, function* () {
127
- const { directory } = yield this.lrApollo.query({
128
- query: DirectoryKeyQuery,
129
- variables: {
130
- id: categoryId,
131
- },
132
- });
133
- return {
134
- keyId: directory.keyId,
135
- key: yield this.keyGraph.getJwkKey(directory.keyId),
136
- };
137
- });
138
- }
139
- }
140
- 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" });
141
- KeyMetaService.decorators = [
142
- { type: Injectable, args: [{
143
- providedIn: 'root',
144
- },] }
145
- ];
146
- KeyMetaService.ctorParameters = () => [
147
- { type: EncryptionService },
148
- { type: KeyGraphService },
149
- { type: LrApolloService },
150
- { type: KeyService },
151
- { type: KeyFactoryService }
152
- ];
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LW1ldGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9rZXkva2V5LW1ldGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELG9FQUFvRTtBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFPM0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUF5Qjs7Ozs7O0NBTWpFLENBQUM7QUFPRixNQUFNLE9BQU8sY0FBYztDQUsxQjtBQUVELE1BQU0sT0FBTyxXQUFXO0NBSXZCO0FBS0QsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFDVSxpQkFBb0MsRUFDcEMsUUFBeUIsRUFDekIsUUFBeUIsRUFDekIsVUFBc0IsRUFDdEIsVUFBNkI7UUFKN0Isc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW1CO0lBQ3BDLENBQUM7SUFFRSxXQUFXLENBQUksU0FBd0I7O1lBQzNDLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRTtnQkFDeEIs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S0FBSztvQkFDcEIsVUFBVTtpQkFDWDtnQkFDRCxVQUFVLEVBQUUsYUFBYTtvQkFDdkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ1osTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FDekQ7b0JBQ0gsQ0FBQyxDQUFDLElBQUk7YUFDVCxDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRWEsaUJBQWlCLENBQzdCLFVBQWtCOztZQUVsQixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBTTtnQkFDbkQsS0FBSyxFQUFFLGlCQUFpQjtnQkFDeEIsU0FBUyxFQUFFO29CQUNULEVBQUUsRUFBRSxVQUFVO2lCQUNmO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTztnQkFDTCxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUs7Z0JBQ3RCLEdBQUcsRUFBRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7YUFDcEQsQ0FBQztRQUNKLENBQUM7S0FBQTs7OztZQTNKRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQXZDUSxpQkFBaUI7WUFHakIsZUFBZTtZQU5mLGVBQWU7WUFPZixVQUFVO1lBRlYsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBJRCB9IGZyb20gJy4uL2FwaS90eXBlcyc7XG4vLyBpbXBvcnQgeyBHZXRDYXRlZ29yeUtleUlkUXVlcnkgfSBmcm9tICcuLi9jYXRlZ29yeS9jYXRlZ29yeS5ncWwnO1xuaW1wb3J0IHsgRW5jcnlwdGlvblNlcnZpY2UgfSBmcm9tICcuLi9lbmNyeXB0aW9uL2VuY3J5cHRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBncWxUeXBlZCB9IGZyb20gJy4uL19jb21tb24vYXN0JztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIH0gZnJvbSAnLi9rZXktZmFjdG9yeS5zZXJ2aWNlJztcbmltcG9ydCB7IEtleUdyYXBoU2VydmljZSB9IGZyb20gJy4va2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5U2VydmljZSB9IGZyb20gJy4va2V5LnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERpcmVjdG9yeUtleVF1ZXJ5UmVzdWx0IHtcbiAgZGlyZWN0b3J5OiB7XG4gICAga2V5SWQ6IElEO1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IERpcmVjdG9yeUtleVF1ZXJ5ID0gZ3FsVHlwZWQ8RGlyZWN0b3J5S2V5UXVlcnlSZXN1bHQ+YFxucXVlcnkgRGlyZWN0b3J5S2V5UXVlcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgZGlyZWN0b3J5KGlkOiAkaWQpIHtcbiAgICBrZXlJZFxuICB9XG59XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEhhc0NpcGhlck1ldGEge1xuICBrZXlJZDogc3RyaW5nO1xuICBjaXBoZXJNZXRhOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBXcmFwcGVkQ29udGVudCB7XG4gIGtleTogSldLLktleTtcbiAgY2lwaGVyTWV0YTogc3RyaW5nO1xuICB3cmFwcGVkS2V5cz86IFdyYXBwaW5nS2V5W107XG4gIHJvb3RLZXk/OiBXcmFwcGluZ0tleTtcbn1cblxuZXhwb3J0IGNsYXNzIFdyYXBwaW5nS2V5IHtcbiAgZGlyZWN0b3J5SWQ/OiBzdHJpbmc7XG4gIHdyYXBwaW5nS2V5SWQ6IHN0cmluZztcbiAgd3JhcHBlZEtleTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgS2V5TWV0YVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGVuY3J5cHRpb25TZXJ2aWNlOiBFbmNyeXB0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsckFwb2xsbzogTHJBcG9sbG9TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBkZWNyeXB0TWV0YTxUPihtZXRhSGF2ZXI6IEhhc0NpcGhlck1ldGEpOiBQcm9taXNlPFQ+IHtcbiAgICBpZiAobWV0YUhhdmVyLmNpcGhlck1ldGEpIHtcbiAgICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KG1ldGFIYXZlci5rZXlJZCk7XG4gICAgICByZXR1cm4gKGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZGVjcnlwdChcbiAgICAgICAga2V5LFxuICAgICAgICBKU09OLnBhcnNlKG1ldGFIYXZlci5jaXBoZXJNZXRhKVxuICAgICAgKSkgYXMgYW55O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIGRvdWJsZVdyYXBDb250ZW50KFxuICAgIHNlY3VyZUNvbnRlbnQ6IGFueSxcbiAgICBjYXRlZ29yeUlkczogc3RyaW5nW10sXG4gICAgZmlsZUNvbnRlbnQ/OiBBcnJheUJ1ZmZlclxuICApIHtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG5cbiAgICBjb25zdCB3cmFwcGVkQ29udGVudCA9IGF3YWl0IHRoaXMud3JhcENvbnRlbnQoXG4gICAgICBrZXkudG9KU09OKHRydWUpLFxuICAgICAgY2F0ZWdvcnlJZHNcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJvb3RLZXk6IHdyYXBwZWRDb250ZW50LnJvb3RLZXksXG4gICAgICB3cmFwcGVkS2V5czogd3JhcHBlZENvbnRlbnQud3JhcHBlZEtleXMsXG4gICAgICBkb3VibGVXcmFwcGVkS2V5OiB3cmFwcGVkQ29udGVudC5jaXBoZXJNZXRhLFxuICAgICAgY2lwaGVyTWV0YTogc2VjdXJlQ29udGVudFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KGtleSwgc2VjdXJlQ29udGVudClcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbCxcbiAgICAgIGNpcGhlckZpbGVDb250ZW50OiBmaWxlQ29udGVudFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChrZXksIGZpbGVDb250ZW50KSlcbiAgICAgICAgOiBudWxsLFxuICAgIH07XG4gIH1cblxuICBhc3luYyByZVdyYXBDb250ZW50KGtleUlkOiBzdHJpbmcsIHNlY3VyZUNvbnRlbnQ6IGFueSkge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KGtleUlkKTtcbiAgICBjb25zdCBuZXdLZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZG91YmxlV3JhcHBlZEtleTogSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChrZXksIG5ld0tleS50b0pTT04odHJ1ZSkpXG4gICAgICApLFxuICAgICAgY2lwaGVyTWV0YTogc2VjdXJlQ29udGVudFxuICAgICAgICA/IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KG5ld0tleSwgc2VjdXJlQ29udGVudClcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgd3JhcENvbnRlbnQoXG4gICAgc2VjdXJlQ29udGVudDogYW55LFxuICAgIGNhdGVnb3J5SWRzPzogc3RyaW5nW11cbiAgKTogUHJvbWlzZTxXcmFwcGVkQ29udGVudD4ge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5RmFjdG9yeS5jcmVhdGVLZXkoKTtcblxuICAgIGxldCB3cmFwcGVkS2V5czogV3JhcHBpbmdLZXlbXTtcbiAgICBsZXQgcm9vdFdyYXBwaW5nS2V5OiBXcmFwcGluZ0tleTtcblxuICAgIGlmIChjYXRlZ29yeUlkcyAmJiBjYXRlZ29yeUlkcy5sZW5ndGgpIHtcbiAgICAgIHdyYXBwZWRLZXlzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGNhdGVnb3J5SWRzLm1hcChhc3luYyAoY2F0ZWdvcnlJZCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBhcmVudEtleSA9IGF3YWl0IHRoaXMuZ2V0RGlyZWN0b3J5S2V5SWQoY2F0ZWdvcnlJZCk7XG4gICAgICAgICAgY29uc3Qgd3JhcHBlZEtleSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5lbmNyeXB0KFxuICAgICAgICAgICAgICBwYXJlbnRLZXkua2V5LFxuICAgICAgICAgICAgICBrZXkudG9KU09OKHRydWUpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGlyZWN0b3J5SWQ6IGNhdGVnb3J5SWQsXG4gICAgICAgICAgICB3cmFwcGluZ0tleUlkOiBwYXJlbnRLZXkua2V5SWQsXG4gICAgICAgICAgICB3cmFwcGVkS2V5LFxuICAgICAgICAgIH07XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBZGRpbmcgdG8gcm9vdCBkaXJlY3RvcnlcbiAgICAgIGNvbnN0IHJvb3RLZXkgPSB0aGlzLmtleVNlcnZpY2UuY3VycmVudFJvb3RLZXk7XG4gICAgICBjb25zdCB3cmFwcGVkS2V5ID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChyb290S2V5Lmp3aywga2V5LnRvSlNPTih0cnVlKSlcbiAgICAgICk7XG4gICAgICByb290V3JhcHBpbmdLZXkgPSB7XG4gICAgICAgIHdyYXBwaW5nS2V5SWQ6IHJvb3RLZXkuaWQsXG4gICAgICAgIHdyYXBwZWRLZXksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBrZXksXG4gICAgICByb290S2V5OiByb290V3JhcHBpbmdLZXksXG4gICAgICB3cmFwcGVkS2V5cyxcbiAgICAgIGNpcGhlck1ldGE6IHNlY3VyZUNvbnRlbnRcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChrZXksIHNlY3VyZUNvbnRlbnQpXG4gICAgICAgICAgKVxuICAgICAgICA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIHdyYXBDb250ZW50V2l0aEtleShcbiAgICBzZWN1cmVDb250ZW50OiBhbnksXG4gICAga2V5SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPFdyYXBwZWRDb250ZW50PiB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlGYWN0b3J5LmNyZWF0ZUtleSgpO1xuXG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAga2V5SWQsXG4gICAgICBrZXkudG9KU09OKHRydWUpXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBrZXksXG4gICAgICByb290S2V5OiB7XG4gICAgICAgIHdyYXBwaW5nS2V5SWQ6IGtleUlkLFxuICAgICAgICB3cmFwcGVkS2V5LFxuICAgICAgfSxcbiAgICAgIGNpcGhlck1ldGE6IHNlY3VyZUNvbnRlbnRcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChrZXksIHNlY3VyZUNvbnRlbnQpXG4gICAgICAgICAgKVxuICAgICAgICA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0RGlyZWN0b3J5S2V5SWQoXG4gICAgY2F0ZWdvcnlJZDogc3RyaW5nXG4gICk6IFByb21pc2U8eyBrZXlJZDogc3RyaW5nOyBrZXk6IGFueSB9PiB7XG4gICAgY29uc3QgeyBkaXJlY3RvcnkgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogRGlyZWN0b3J5S2V5UXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWQ6IGNhdGVnb3J5SWQsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGtleUlkOiBkaXJlY3Rvcnkua2V5SWQsXG4gICAgICBrZXk6IGF3YWl0IHRoaXMua2V5R3JhcGguZ2V0SndrS2V5KGRpcmVjdG9yeS5rZXlJZCksXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,124 +0,0 @@
1
- import { __awaiter } from "tslib";
2
- import { Inject, Injectable } from '@angular/core';
3
- import { KC_CONFIG } from '../life-ready.config';
4
- import { PersistService } from '../persist/persist.service';
5
- import { KcNotFoundException } from '../_common/exceptions';
6
- import { KeyFactoryService as KFS } from './key-factory.service';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../life-ready.config";
9
- import * as i2 from "../persist/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
- setKeys(keys) {
40
- this.keys = keys;
41
- }
42
- get currentPassKey() {
43
- return this.keys.passKey;
44
- }
45
- get currentMasterKey() {
46
- return this.keys.masterKey;
47
- }
48
- get currentRootKey() {
49
- return this.keys.rootKey;
50
- }
51
- get currentPxk() {
52
- return this.keys.pxk;
53
- }
54
- get currentSigPxk() {
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 KcNotFoundException(`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 KcNotFoundException('Could not find masterKey in persisted storage');
103
- }
104
- if (storedKey.id !== masterKeyId) {
105
- throw new KcNotFoundException(`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.KC_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: [KC_CONFIG,] }] },
122
- { type: PersistService }
123
- ];
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIva2V5L2tleS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQVksU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVELE9BQU8sRUFBRSxpQkFBaUIsSUFBSSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7OztBQUdqRSxNQUFNLE9BQU8sUUFBUTtDQU1wQjtBQUtELE1BQU0sT0FBTyxVQUFVO0lBb0JyQixZQUM2QixNQUFnQixFQUNuQyxjQUE4QjtRQURYLFdBQU0sR0FBTixNQUFNLENBQVU7UUFDbkMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBckJ2QixxQkFBZ0IsR0FBRyxXQUFXLENBQUM7UUFLaEQsK0VBQStFO1FBQy9FLG1GQUFtRjtRQUNuRixxRkFBcUY7UUFDckYsK0VBQStFO1FBQy9FLGdEQUFnRDtRQUNoQyw0QkFBdUIsR0FBRyxNQUFNLENBQUM7UUFDakMsNEJBQXVCLEdBQUcsTUFBTSxDQUFDO1FBQ2pDLDRCQUF1QixHQUFHLE1BQU0sQ0FBQztRQUVqRCxxRkFBcUY7UUFDckUsZ0NBQTJCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBQzNELGdDQUEyQixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQztRQUMzRCxnQ0FBMkIsR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUM7UUFNekUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLElB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TUFBTSxJQUFJLG1CQUFtQixDQUMzQiwrQ0FBK0MsQ0FDaEQsQ0FBQztpQkFDSDtnQkFFRCxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFO29CQUNoQyxNQUFNLElBQUksbUJBQW1CLENBQzNCLGVBQWUsU0FBUyxDQUFDLEVBQUUsMERBQTBELFdBQVcsRUFBRSxDQUNuRyxDQUFDO2lCQUNIO2dCQUVELFNBQVMsQ0FBQyxHQUFHLEdBQUcsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFL0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7YUFDNUI7WUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDeEIsQ0FBQztLQUFBOzs7O1lBcElGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7OzRDQXNCSSxNQUFNLFNBQUMsU0FBUztZQXJDWixjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBLY0NvbmZpZywgS0NfQ09ORklHIH0gZnJvbSAnLi4vbGlmZS1yZWFkeS5jb25maWcnO1xuaW1wb3J0IHsgUGVyc2lzdFNlcnZpY2UgfSBmcm9tICcuLi9wZXJzaXN0L3BlcnNpc3Quc2VydmljZSc7XG5pbXBvcnQgeyBLY05vdEZvdW5kRXhjZXB0aW9uIH0gZnJvbSAnLi4vX2NvbW1vbi9leGNlcHRpb25zJztcbmltcG9ydCB7IEtleUZhY3RvcnlTZXJ2aWNlIGFzIEtGUyB9IGZyb20gJy4va2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXksIFBhc3NLZXkgfSBmcm9tICcuL2tleS50eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyS2V5cyB7XG4gIHBhc3NLZXk6IFBhc3NLZXk7XG4gIG1hc3RlcktleTogS2V5O1xuICByb290S2V5PzogS2V5O1xuICBweGs/OiBLZXk7XG4gIHNpZ1B4az86IEtleTtcbn1cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEtleVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IFNUT1JFX01BU1RFUl9LRVkgPSAnbWFzdGVyS2V5JztcbiAgLy8gdmFyaWFibGVzXG4gIHByaXZhdGUga2V5czogVXNlcktleXM7XG4gIHByaXZhdGUgbWFzdGVyS2V5OiBLZXk7XG5cbiAgLy8gQVo6IFRoaXMgY2FuJ3QgYmUgY2hhbmdlIGVhc2lseS4gSXQncyBiYXNpY2FsbHkgYSBQYXNzSyBvciBQYXNzSWRwIHJvdGF0aW9uLlxuICAvLyB0b2RvOiB3ZSBzaG91bGQgZXZlbnR1YWxseSBpbmNyZWFzZSB0aGlzIHBlcmlvZGljYWxseSB0byBtYXRjaCB3aXRoIE1vb3JlJ3MgbGF3LlxuICAvLyBUaGUgaXRlcmF0aW9ucyBmb3IgZWFjaCBrZXkgYXJlIGtlcHQgYnkgdGhlIHNlcnZlciBhcyB3ZWxsIGJ1dCB3ZSBhc3N1bWUgdGhlIHZhbHVlXG4gIC8vIGZyb20gdGhlIHNlcnZlciBpcyBub3QgdHJ1c3R3b3J0aHksIHNvIG5lZWQgdG8gaGF2ZSBtaW5pbXVtIHRocmVzaG9sZHMgaGVyZS5cbiAgLy8gSWYgY3JlYXRpbmcgbmV3IGtleXMsIHRoZXNlIG1pbmltdW0gYXJlIHVzZWQuXG4gIHB1YmxpYyByZWFkb25seSBNSU5fUEFTU19JRFBfUEJLREZfSVRFUiA9IDEwMDAwMDtcbiAgcHVibGljIHJlYWRvbmx5IE1JTl9QQVNTX0tFWV9QQktERl9JVEVSID0gMTAwMDAwO1xuICBwdWJsaWMgcmVhZG9ubHkgTUlOX0xCT1BfS0VZX1BCS0RGX0lURVIgPSAxMDAwMDA7XG5cbiAgLy8gVGhlc2UgYXJlIHVzZWQgYXMgdGhlIGRlZmF1bHQgdmFsdWVzLiBUaGV5IG11c3QgYmUgbGFyZ2VyIHRoYW4gdGhlIG1pbmltdW0gdmFsdWVzLlxuICBwdWJsaWMgcmVhZG9ubHkgREVGQVVMVF9QQVNTX0lEUF9QQktERl9JVEVSID0gdGhpcy5NSU5fUEFTU19JRFBfUEJLREZfSVRFUjtcbiAgcHVibGljIHJlYWRvbmx5IERFRkFVTFRfUEFTU19LRVlfUEJLREZfSVRFUiA9IHRoaXMuTUlOX1BBU1NfS0VZX1BCS0RGX0lURVI7XG4gIHB1YmxpYyByZWFkb25seSBERUZBVUxUX0xCT1BfS0VZX1BCS0RGX0lURVIgPSB0aGlzLk1JTl9MQk9QX0tFWV9QQktERl9JVEVSO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoS0NfQ09ORklHKSBwcml2YXRlIGNvbmZpZzogS2NDb25maWcsXG4gICAgcHJpdmF0ZSBwZXJzaXN0U2VydmljZTogUGVyc2lzdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5yZXNldEtleXMoKTtcbiAgfVxuXG4gIHJlc2V0S2V5cygpIHtcbiAgICB0aGlzLmtleXMgPSBudWxsO1xuICAgIHRoaXMubWFzdGVyS2V5ID0gbnVsbDtcbiAgfVxuXG4gIHB1cmdlS2V5cygpIHtcbiAgICB0aGlzLnJlc2V0S2V5cygpO1xuICAgIHRoaXMucGVyc2lzdFNlcnZpY2UuY2xlYXIoKTtcbiAgfVxuXG4gIHNldEtleXMoa2V5czogVXNlcktleXMpIHtcbiAgICB0aGlzLmtleXMgPSBrZXlzO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50UGFzc0tleSgpOiBLZXkge1xuICAgIHJldHVybiB0aGlzLmtleXMucGFzc0tleTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudE1hc3RlcktleSgpOiBLZXkge1xuICAgIHJldHVybiB0aGlzLmtleXMubWFzdGVyS2V5O1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50Um9vdEtleSgpOiBLZXkge1xuICAgIHJldHVybiB0aGlzLmtleXMucm9vdEtleTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VycmVudFB4aygpOiBLZXkge1xuICAgIHJldHVybiB0aGlzLmtleXMucHhrO1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50U2lnUHhrKCk6IEtleSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cy5zaWdQeGs7XG4gIH1cblxuICBwcml2YXRlIGV4cGlyZXNBZnRlcihzZWNvbmRzOiBudW1iZXIpOiBEYXRlIHtcbiAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSArIDEwMDAgKiBzZWNvbmRzKTtcbiAgfVxuXG4gIGFzeW5jIHBlcnNpc3RNYXN0ZXJLZXkoXG4gICAgbWFzdGVyS2V5OiBLZXksXG4gICAgZXhwaXJlc0FmdGVyU2Vjb25kczogbnVtYmVyXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0b3JlZEtleSA9IHtcbiAgICAgIGlkOiBtYXN0ZXJLZXkuaWQsXG4gICAgICBqd2s6IG1hc3RlcktleS5qd2sudG9KU09OKHRydWUpLFxuICAgIH07XG5cbiAgICB0aGlzLm1hc3RlcktleSA9IG1hc3RlcktleTtcblxuICAgIC8vIFNhdmUgaW4gYW4gZXhwaXJhYmxlIGNvb2tpZS5cbiAgICBhd2FpdCB0aGlzLnBlcnNpc3RTZXJ2aWNlLnNldCh7XG4gICAgICBuYW1lOiB0aGlzLlNUT1JFX01BU1RFUl9LRVksXG4gICAgICB2YWx1ZTogc3RvcmVkS2V5LFxuICAgICAgZXhwaXJ5OiB0aGlzLmV4cGlyZXNBZnRlcihleHBpcmVzQWZ0ZXJTZWNvbmRzKSxcbiAgICAgIHNlcnZlclNlc3Npb246ICF0aGlzLmNvbmZpZy5kaXNhYmxlU2Vzc2lvbkVuY3J5cHRpb25LZXksXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzZXRNYXN0ZXJLZXlFeHBpcmVzQWZ0ZXJTZWNvbmRzKHNlY29uZHM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHN0b3JlZEtleSA9IGF3YWl0IHRoaXMucGVyc2lzdFNlcnZpY2UuZ2V0KHRoaXMuU1RPUkVfTUFTVEVSX0tFWSk7XG4gICAgaWYgKHN0b3JlZEtleSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgS2NOb3RGb3VuZEV4Y2VwdGlvbihcbiAgICAgICAgYENhbiBub3QgZmluZCBtYXN0ZXJLZXkgaW4gcGVyc2lzdGVkIHN0b3JhZ2UgdXNpbmcgbmFtZTogJHt0aGlzLlNUT1JFX01BU1RFUl9LRVl9YFxuICAgICAgKTtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5wZXJzaXN0U2VydmljZS5zZXQoe1xuICAgICAgbmFtZTogdGhpcy5TVE9SRV9NQVNURVJfS0VZLFxuICAgICAgdmFsdWU6IHN0b3JlZEtleSxcbiAgICAgIGV4cGlyeTogdGhpcy5leHBpcmVzQWZ0ZXIoc2Vjb25kcyksXG4gICAgICBzZXJ2ZXJTZXNzaW9uOiAhdGhpcy5jb25maWcuZGlzYWJsZVNlc3Npb25FbmNyeXB0aW9uS2V5LFxuICAgIH0pO1xuICB9XG5cbiAgLy8gVGhlcmUncyBsaXR0bGUgYmVuZWZpdCBpbiB1c2luZyBXZWJDcnlwdG8ncyBub25lLWV4dHJhY3RhYmxlIGtleXMgYmVjYXVzZSBpZiB0aGVyZVxuICAvLyBpcyBhbiBYU1MgYXR0YWNrLCB0aGVuIHRoZSBhdHRhY2tlciBoYXMgY29udHJvbCBvdmVyIHRoZSBqcyB0aGF0IGRvd25sb2FkcyB0aGUga2V5cy4gVGhlXG4gIC8vIGF0dGFja2VyIGNhbiBtb2RpZnkgdGhlIGNvZGUgdG8gaW1wb3J0IHRoZSBrZXlzIGFzIGV4dHJhY3RhYmxlLiBTbyBub25lLWV4dHJhY3RhYmxlIGtleXNcbiAgLy8gYXJlIG9ubHkgdXNlZnVsIGlmIHRoZXkgYXJlIGFscmVhZHkgcGVyc2lzdGVkIGFuZCB0aGUgdXNlciBjYW5ub3QgZG93bmxvYWQgYW55IG1vcmUga2V5cyxcbiAgLy8gd2hpY2ggaXMgbm90IGZlYXNpYmxlLlxuICAvLyBTbyBzdG9yaW5nIHRoZSBQYXNzS2V5IGluIGxvY2Fsc3RvcmFnZSBmb3Igbm93LCBhdCBsZWFzdCB0aWxsIHdlIGtub3cgd2hhdCB0aGUgdXNhZ2VcbiAgLy8gcGF0dGVybiBpcywgaS5lLiBob3cgb2Z0ZW4gZG8gd2UgbmVlZCB0byB1c2UgdGhlIFJvb3RLLCBNYXRlckssIGFuZCBQYXNzSy5cbiAgYXN5bmMgbG9hZE1hc3RlcktleShtYXN0ZXJLZXlJZDogc3RyaW5nKTogUHJvbWlzZTxLZXk+IHtcbiAgICBpZiAoIXRoaXMubWFzdGVyS2V5KSB7XG4gICAgICBjb25zdCBzdG9yZWRLZXkgPSBhd2FpdCB0aGlzLnBlcnNpc3RTZXJ2aWNlLmdldCh0aGlzLlNUT1JFX01BU1RFUl9LRVkpO1xuXG4gICAgICBpZiAoIXN0b3JlZEtleSkge1xuICAgICAgICB0aHJvdyBuZXcgS2NOb3RGb3VuZEV4Y2VwdGlvbihcbiAgICAgICAgICAnQ291bGQgbm90IGZpbmQgbWFzdGVyS2V5IGluIHBlcnNpc3RlZCBzdG9yYWdlJ1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RvcmVkS2V5LmlkICE9PSBtYXN0ZXJLZXlJZCkge1xuICAgICAgICB0aHJvdyBuZXcgS2NOb3RGb3VuZEV4Y2VwdGlvbihcbiAgICAgICAgICBgbWFzdGVyS2V5SWQgJHtzdG9yZWRLZXkuaWR9IGluIHBlcnNpc3RlZCBzdG9yYWdlIGRvZXMgbm90IG1hdGNoIHRoZSBvbmUgcmVxdWVzdGVkICR7bWFzdGVyS2V5SWR9YFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBzdG9yZWRLZXkuandrID0gYXdhaXQgS0ZTLmFzS2V5KHN0b3JlZEtleS5qd2spO1xuXG4gICAgICB0aGlzLm1hc3RlcktleSA9IHN0b3JlZEtleTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5tYXN0ZXJLZXk7XG4gIH1cbn1cbiJdfQ==
@@ -1,16 +0,0 @@
1
- export var KeyGraphNodeType;
2
- (function (KeyGraphNodeType) {
3
- KeyGraphNodeType["Key"] = "key";
4
- KeyGraphNodeType["PassKey"] = "passKey";
5
- })(KeyGraphNodeType || (KeyGraphNodeType = {}));
6
- export var KeyGraphEdgeType;
7
- (function (KeyGraphEdgeType) {
8
- KeyGraphEdgeType["KeyLink"] = "keyLink";
9
- KeyGraphEdgeType["PassKeyLink"] = "passKeyLink";
10
- })(KeyGraphEdgeType || (KeyGraphEdgeType = {}));
11
- export var PayloadType;
12
- (function (PayloadType) {
13
- PayloadType["JSON"] = "JSON";
14
- PayloadType["UINT_8_ARRAY"] = "UINT_8_ARRAY";
15
- })(PayloadType || (PayloadType = {}));
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2tleS9rZXkudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0RBLE1BQU0sQ0FBTixJQUFZLGdCQUdYO0FBSEQsV0FBWSxnQkFBZ0I7SUFDMUIsK0JBQVcsQ0FBQTtJQUNYLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxnQkFBZ0IsS0FBaEIsZ0JBQWdCLFFBRzNCO0FBT0QsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQix1Q0FBbUIsQ0FBQTtJQUNuQiwrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBSFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUczQjtBQW1CRCxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLDRCQUFhLENBQUE7SUFDYiw0Q0FBNkIsQ0FBQTtBQUMvQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKV0sgfSBmcm9tICdub2RlLWpvc2UnO1xuaW1wb3J0IHsgSlNPTk9iamVjdCwgUGFzc0tleU5vZGUgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgSGFzRWRnZXMsIFNvbWVSZXF1aXJlZCB9IGZyb20gJy4uL19jb21tb24vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleSB7XG4gIGlkOiBzdHJpbmc7XG4gIHBiaz86IHN0cmluZztcbiAgandrPzogSldLLktleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXNzS2V5UGFyYW1zIHtcbiAga2lkOiBzdHJpbmc7XG4gIHNhbHQ6IHN0cmluZztcbiAgaXRlcmF0aW9uczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3NJZHBQYXJhbXMge1xuICBzYWx0OiBzdHJpbmc7XG4gIGl0ZXJhdGlvbnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYm9wS2V5UGFyYW1zIHtcbiAga2lkOiBzdHJpbmc7XG4gIHNhbHQ6IHN0cmluZztcbiAgaXRlcmF0aW9uczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBhc3NJZHBWZXJpZmllciB7XG4gIHdyYXBwZWRQcks6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuICBwYms6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExib3BLZXlWZXJpZmllciB7XG4gIHdyYXBwZWRLZXk6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xuICBrZXk6IFJlY29yZDxzdHJpbmcsIEpTT05PYmplY3Q+O1xufVxuXG5leHBvcnQgdHlwZSBQYXNzS2V5ID0gU29tZVJlcXVpcmVkPFBhc3NLZXlOb2RlLCAnaWQnPjtcblxuZXhwb3J0IGludGVyZmFjZSBLZXlMaW5rIHtcbiAga2V5SWQ6IHN0cmluZztcbiAgd3JhcHBpbmdLZXlJZDogc3RyaW5nO1xuICBuZXN0ZWRXcmFwcGluZ0tleUlkczogc3RyaW5nW107XG4gIHdyYXBwZWRLZXk6IHN0cmluZzsgLy8gSldFIGpzb24gc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFzc0tleUxpbmsge1xuICBrZXlJZDogc3RyaW5nO1xuICBwYXNzS2V5SWQ6IHN0cmluZztcbiAgd3JhcHBlZEtleTogc3RyaW5nOyAvLyBKV0UganNvbiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gS2V5R3JhcGhOb2RlVHlwZSB7XG4gIEtleSA9ICdrZXknLFxuICBQYXNzS2V5ID0gJ3Bhc3NLZXknLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUdyYXBoTm9kZSB7XG4gIHR5cGU6IEtleUdyYXBoTm9kZVR5cGU7XG4gIGRhdGE6IEtleSB8IFBhc3NLZXk7XG59XG5cbmV4cG9ydCBlbnVtIEtleUdyYXBoRWRnZVR5cGUge1xuICBLZXlMaW5rID0gJ2tleUxpbmsnLFxuICBQYXNzS2V5TGluayA9ICdwYXNzS2V5TGluaycsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5R3JhcGhFZGdlIHtcbiAgdHlwZTogS2V5R3JhcGhFZGdlVHlwZTtcbiAgZGF0YTogS2V5TGluayB8IFBhc3NLZXlMaW5rO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEtleUdyYXBoUmVzcG9uc2Uge1xuICBrZXlzPzogS2V5W107XG4gIGtleUxpbmtzPzogS2V5TGlua1tdO1xuICBwYXNzS2V5cz86IFBhc3NLZXlbXTtcbiAgcGFzc0tleUxpbmtzPzogUGFzc0tleUxpbmtbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIYXNLZXlHcmFwaCB7XG4gIC8vIFRoZSBuYW1lIG9mIHRoZSBrZXlHcmFwaCBmaWVsZCByZXR1cm5lZCBmcm9tIGJvdGggcXVlcmllcyBhbmQgbXV0YXRpb25zIGFyZSB0aGUgc2FtZVxuICBrZXlHcmFwaD86IEtleUdyYXBoUmVzcG9uc2U7XG59XG5cbmV4cG9ydCBlbnVtIFBheWxvYWRUeXBlIHtcbiAgSlNPTiA9ICdKU09OJyxcbiAgVUlOVF84X0FSUkFZID0gJ1VJTlRfOF9BUlJBWScsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVyaXZlS2V5UmVzdWx0IHtcbiAgandrOiBKV0suS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlcml2ZVBhc3NJZHBQYXJhbXMgZXh0ZW5kcyBQYXNzSWRwUGFyYW1zIHtcbiAgcGFzc3dvcmQ6IENyeXB0b0tleTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXJpdmVQYXNzS2V5UGFyYW1zIGV4dGVuZHMgUGFzc0tleVBhcmFtcyB7XG4gIHBhc3N3b3JkOiBDcnlwdG9LZXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVyaXZlTGJvcEtleVBhcmFtcyBleHRlbmRzIFBhc3NLZXlQYXJhbXMge1xuICBwYXNzd29yZDogQ3J5cHRvS2V5O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhhc0tleUdyYXBoRWRnZXM8VD4gZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XG4gIGxpc3Q6IEhhc0VkZ2VzPFQ+O1xufVxuIl19
@@ -1,174 +0,0 @@
1
- import { gqlTyped } from '../_common/ast';
2
- export const KeyExchangeFields = `
3
- id
4
- token
5
- state
6
- mode
7
- isInitiator
8
- initiator {
9
- id
10
- username
11
- config
12
- }
13
- responder {
14
- id
15
- username
16
- }
17
- created
18
- modified
19
- tokenExpiryTime
20
- isExpired
21
- initiatorRootKeyCipher
22
- initiatorActionRequired
23
- responderActionRequired
24
- responderEmailAddress
25
- otk {
26
- state
27
- otKeyParams
28
- otKeyCipher
29
- sharedKey {
30
- id
31
- }
32
- mkSharedKey {
33
- id
34
- }
35
- initiatorSigPxk {
36
- id
37
- }
38
- responderSigPxk {
39
- id
40
- }
41
- initiatorOneTimePbkCipher
42
- responderPbkCipher
43
- }
44
- `;
45
- export const UserSharedKeyFields = `
46
- userSigPrk {
47
- id
48
- }
49
- otherSigPbk {
50
- id
51
- }
52
- sharedKey {
53
- id
54
- }
55
- mkSharedKey {
56
- id
57
- }
58
- mkPxk {
59
- id
60
- pbk
61
- }
62
- mkReshareRequestCipher
63
- mkReshareResponseCipher
64
- mkReshareRequestSent
65
- mkReshareResponseSent
66
- `;
67
- export const KeyExchangesQuery2 = gqlTyped `
68
- query KeyExchangesQuery2($state: String) {
69
- keyExchanges(state: $state) {
70
- edges {
71
- node {
72
- ${KeyExchangeFields}
73
- }
74
- }
75
- }
76
- }
77
- `;
78
- export const KeyExchangeQuery2 = gqlTyped `
79
- query KeyExchangeQuery2($id: LrRelayIdInput!) {
80
- keyExchange(id: $id) {
81
- ${KeyExchangeFields}
82
- }
83
- }
84
- `;
85
- export const KeyExchangeTokenQuery2 = gqlTyped `
86
- query KeyExchangeTokenQuery2($id: LrRelayIdInput!, $token: String) {
87
- keyExchange(id: $id, token: $token) {
88
- ${KeyExchangeFields}
89
- }
90
- }
91
- `;
92
- export const CancelKeyExchangeMutation = gqlTyped `
93
- mutation CancelKeyExchangeMutation($input: CancelKeyExchangeInput!) {
94
- cancelKeyExchange(input: $input) {
95
- keyExchange {
96
- id
97
- }
98
- }
99
- }
100
- `;
101
- export const DeclineKeyExchangeMutation = gqlTyped `
102
- mutation DeclineKeyExchangeMutation($input: DeclineKeyExchangeInput!) {
103
- declineKeyExchange(input: $input) {
104
- keyExchange {
105
- id
106
- }
107
- }
108
- }
109
- `;
110
- export const InitiateKeyExchangeOtkMutation = gqlTyped `
111
- mutation InitiateKeyExchangeOtkMutation(
112
- $input: InitiateKeyExchangeOtkInput!
113
- ) {
114
- initiateKeyExchangeOtk(input: $input) {
115
- keyExchange {
116
- ${KeyExchangeFields}
117
- }
118
- }
119
- }
120
- `;
121
- export const RespondKeyExchangeOtkMutation = gqlTyped `
122
- mutation RespondKeyExchangeOtkMutation($input: RespondKeyExchangeOtkInput!) {
123
- respondKeyExchangeOtk(input: $input) {
124
- keyExchange {
125
- ${KeyExchangeFields}
126
- }
127
- userSharedKey {
128
- ${UserSharedKeyFields}
129
- }
130
- tp {
131
- id
132
- user {
133
- config
134
- }
135
- }
136
- }
137
- }
138
- `;
139
- export const CompleteKeyExchangeOtkMutation = gqlTyped `
140
- mutation CompleteKeyExchangeOtkMutation(
141
- $input: CompleteKeyExchangeOtkInput!
142
- ) {
143
- completeKeyExchangeOtk(input: $input) {
144
- keyExchange {
145
- ${KeyExchangeFields}
146
- }
147
- userSharedKey {
148
- ${UserSharedKeyFields}
149
- }
150
- tp {
151
- id
152
- user {
153
- config
154
- }
155
- }
156
- }
157
- }
158
- `;
159
- export const CurrentUserSharedKeyQuery2 = gqlTyped `
160
- query CurrentUserSharedKeyQuery2(
161
- $username: String
162
- $userId: LrRelayIdInput
163
- ) {
164
- currentUserSharedKey(
165
- username: $username
166
- userId: $userId
167
- ) {
168
- userSharedKey {
169
- ${UserSharedKeyFields}
170
- }
171
- }
172
- }
173
- `;
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWV4Y2hhbmdlLmdxbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9rZXktZXhjaGFuZ2Uva2V5LWV4Y2hhbmdlLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUEwRDFDLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0EwQ2hDLENBQUM7QUF3QkYsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCbEMsQ0FBQztBQUtGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBb0I7Ozs7O1VBS3BELGlCQUFpQjs7Ozs7Q0FLMUIsQ0FBQztBQUtGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBbUI7OztNQUd0RCxpQkFBaUI7OztDQUd0QixDQUFDO0FBT0YsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsUUFBUSxDQUF3Qjs7O01BR2hFLGlCQUFpQjs7O0NBR3RCLENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxRQUFRLENBQTJCOzs7Ozs7OztDQVEzRSxDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsUUFBUSxDQUE0Qjs7Ozs7Ozs7Q0FRN0UsQ0FBQztBQU9GLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLFFBQVEsQ0FBZ0M7Ozs7OztRQU05RSxpQkFBaUI7Ozs7Q0FJeEIsQ0FBQztBQWNGLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLFFBQVEsQ0FBK0I7Ozs7UUFJNUUsaUJBQWlCOzs7UUFHakIsbUJBQW1COzs7Ozs7Ozs7O0NBVTFCLENBQUM7QUFjRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxRQUFRLENBQWdDOzs7Ozs7UUFNOUUsaUJBQWlCOzs7UUFHakIsbUJBQW1COzs7Ozs7Ozs7O0NBVTFCLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQTRCOzs7Ozs7Ozs7O1FBVXRFLG1CQUFtQjs7OztDQUkxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSldLIH0gZnJvbSAnbm9kZS1qb3NlJztcbmltcG9ydCB7XG4gIENvbm5lY3Rpb24sXG4gIERhdGVUaW1lLFxuICBJRCxcbiAgSlNPTk9iamVjdCxcbiAgSlNPTlN0cmluZyxcbiAgTHJFbWFpbCxcbiAgT3RLZXlDaXBoZXJDbGVhckpzb24yLFxufSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5cbmV4cG9ydCB0eXBlIEtleUV4Y2hhbmdlU3RhdGUyID1cbiAgfCAnSU5fUFJPR1JFU1MnXG4gIHwgJ0NPTVBMRVRFRCdcbiAgfCAnREVDTElORUQnXG4gIHwgJ0NBTkNFTExFRCdcbiAgfCAnREVMRVRFRCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5RXhjaGFuZ2VGaWVsZHNSZXN1bHQge1xuICBpZDogSUQ7XG4gIHRva2VuOiBzdHJpbmc7XG4gIHN0YXRlOiBLZXlFeGNoYW5nZVN0YXRlMjtcbiAgbW9kZTogJ09USyc7XG4gIGlzSW5pdGlhdG9yOiBib29sZWFuO1xuICBpbml0aWF0b3I6IHtcbiAgICBpZDogSUQ7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBjb25maWc6IEpTT05TdHJpbmc7XG4gICAgY29uZmlnSnNvbjogSlNPTk9iamVjdDtcbiAgfTtcbiAgcmVzcG9uZGVyOiB7XG4gICAgaWQ6IElEO1xuICAgIHVzZXJuYW1lOiBzdHJpbmc7XG4gIH07XG4gIGNyZWF0ZWQ6IERhdGVUaW1lO1xuICBtb2RpZmllZDogRGF0ZVRpbWU7XG4gIHRva2VuRXhwaXJ5VGltZTogRGF0ZVRpbWU7XG4gIGlzRXhwaXJlZDogYm9vbGVhbjtcbiAgaW5pdGlhdG9yUm9vdEtleUNpcGhlcjogc3RyaW5nO1xuICBpbml0aWF0b3JSb290S2V5Q2lwaGVyQ2xlYXJKc29uOiBKU09OT2JqZWN0O1xuICBpbml0aWF0b3JBY3Rpb25SZXF1aXJlZDogYm9vbGVhbjtcbiAgcmVzcG9uZGVyQWN0aW9uUmVxdWlyZWQ6IGJvb2xlYW47XG4gIHJlc3BvbmRlckVtYWlsQWRkcmVzczogTHJFbWFpbDtcbiAgb3RrOiB7XG4gICAgc3RhdGU6ICdPVEtfSU5JVElBVEVEJyB8ICdPVEtfQUNDRVBURUQnIHwgJ09US19DT01QTEVURUQnO1xuICAgIG90S2V5UGFyYW1zOiBzdHJpbmc7XG4gICAgb3RLZXlDaXBoZXI6IHN0cmluZztcbiAgICBvdEtleT86IEpXSy5LZXk7XG4gICAgb3RLZXlDaXBoZXJDbGVhckpzb24/OiBPdEtleUNpcGhlckNsZWFySnNvbjI7XG4gICAgc2hhcmVkS2V5OiB7XG4gICAgICBpZDogSUQ7XG4gICAgfTtcbiAgICBta1NoYXJlZEtleToge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gICAgaW5pdGlhdG9yU2lnUHhrOiB7XG4gICAgICBpZDogSUQ7XG4gICAgfTtcbiAgICByZXNwb25kZXJTaWdQeGs6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICAgIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXI6IHN0cmluZztcbiAgICBpbml0aWF0b3JPbmVUaW1lUGJrQ2lwaGVyQ2xlYXJKc29uOiBKU09OT2JqZWN0O1xuICAgIHJlc3BvbmRlclBia0NpcGhlcjogc3RyaW5nO1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgS2V5RXhjaGFuZ2VGaWVsZHMgPSBgXG4gIGlkXG4gIHRva2VuXG4gIHN0YXRlXG4gIG1vZGVcbiAgaXNJbml0aWF0b3JcbiAgaW5pdGlhdG9yIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gICAgY29uZmlnXG4gIH1cbiAgcmVzcG9uZGVyIHtcbiAgICBpZFxuICAgIHVzZXJuYW1lXG4gIH1cbiAgY3JlYXRlZFxuICBtb2RpZmllZFxuICB0b2tlbkV4cGlyeVRpbWVcbiAgaXNFeHBpcmVkXG4gIGluaXRpYXRvclJvb3RLZXlDaXBoZXJcbiAgaW5pdGlhdG9yQWN0aW9uUmVxdWlyZWRcbiAgcmVzcG9uZGVyQWN0aW9uUmVxdWlyZWRcbiAgcmVzcG9uZGVyRW1haWxBZGRyZXNzXG4gIG90ayB7XG4gICAgc3RhdGVcbiAgICBvdEtleVBhcmFtc1xuICAgIG90S2V5Q2lwaGVyXG4gICAgc2hhcmVkS2V5IHtcbiAgICAgIGlkXG4gICAgfVxuICAgIG1rU2hhcmVkS2V5IHtcbiAgICAgIGlkXG4gICAgfVxuICAgIGluaXRpYXRvclNpZ1B4ayB7XG4gICAgICBpZFxuICAgIH1cbiAgICByZXNwb25kZXJTaWdQeGsge1xuICAgICAgaWRcbiAgICB9XG4gICAgaW5pdGlhdG9yT25lVGltZVBia0NpcGhlclxuICAgIHJlc3BvbmRlclBia0NpcGhlclxuICB9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJTaGFyZWRLZXlGaWVsZHNSZXN1bHQge1xuICB1c2VyU2lnUHJrOiB7XG4gICAgaWQ6IElEO1xuICB9O1xuICBvdGhlclNpZ1Biazoge1xuICAgIGlkOiBJRDtcbiAgfTtcbiAgc2hhcmVkS2V5OiB7XG4gICAgaWQ6IElEO1xuICB9O1xuICBta1NoYXJlZEtleToge1xuICAgIGlkOiBJRDtcbiAgfTtcbiAgbWtQeGs6IHtcbiAgICBpZDogSUQ7XG4gICAgcGJrOiBKU09OT2JqZWN0O1xuICB9O1xuICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyOiBzdHJpbmc7XG4gIG1rUmVzaGFyZVJlc3BvbnNlQ2lwaGVyOiBzdHJpbmc7XG4gIG1rUmVzaGFyZVJlcXVlc3RTZW50OiBib29sZWFuO1xuICBta1Jlc2hhcmVSZXNwb25zZVNlbnQ6IGJvb2xlYW47XG59XG5leHBvcnQgY29uc3QgVXNlclNoYXJlZEtleUZpZWxkcyA9IGBcbiAgdXNlclNpZ1ByayB7XG4gICAgaWRcbiAgfVxuICBvdGhlclNpZ1BiayB7XG4gICAgaWRcbiAgfVxuICBzaGFyZWRLZXkge1xuICAgIGlkXG4gIH1cbiAgbWtTaGFyZWRLZXkge1xuICAgIGlkXG4gIH1cbiAgbWtQeGsge1xuICAgIGlkXG4gICAgcGJrXG4gIH1cbiAgbWtSZXNoYXJlUmVxdWVzdENpcGhlclxuICBta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxuICBta1Jlc2hhcmVSZXF1ZXN0U2VudFxuICBta1Jlc2hhcmVSZXNwb25zZVNlbnRcbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5RXhjaGFuZ2VzUXVlcnkyIHtcbiAga2V5RXhjaGFuZ2VzOiBDb25uZWN0aW9uPEtleUV4Y2hhbmdlRmllbGRzUmVzdWx0Pjtcbn1cbmV4cG9ydCBjb25zdCBLZXlFeGNoYW5nZXNRdWVyeTIgPSBncWxUeXBlZDxLZXlFeGNoYW5nZXNRdWVyeTI+YFxucXVlcnkgS2V5RXhjaGFuZ2VzUXVlcnkyKCRzdGF0ZTogU3RyaW5nKSB7XG4gIGtleUV4Y2hhbmdlcyhzdGF0ZTogJHN0YXRlKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7S2V5RXhjaGFuZ2VGaWVsZHN9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEtleUV4Y2hhbmdlUXVlcnkyIHtcbiAga2V5RXhjaGFuZ2U6IEtleUV4Y2hhbmdlRmllbGRzUmVzdWx0O1xufVxuZXhwb3J0IGNvbnN0IEtleUV4Y2hhbmdlUXVlcnkyID0gZ3FsVHlwZWQ8S2V5RXhjaGFuZ2VRdWVyeTI+YFxucXVlcnkgS2V5RXhjaGFuZ2VRdWVyeTIoJGlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAga2V5RXhjaGFuZ2UoaWQ6ICRpZCkge1xuICAgICR7S2V5RXhjaGFuZ2VGaWVsZHN9XG4gIH1cbn1cbmA7XG5cbi8vIEtleSBncmFwaCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgYXV0aGVudGljYXRlZCB1c2Vycy4gVGhpcyBxdWVyeVxuLy8gaXMgZm9yIHVuYXV0aGVudGljYXRlZCB1c2Vycy5cbmV4cG9ydCBpbnRlcmZhY2UgS2V5RXhjaGFuZ2VUb2tlblF1ZXJ5MiB7XG4gIGtleUV4Y2hhbmdlOiBLZXlFeGNoYW5nZUZpZWxkc1Jlc3VsdDtcbn1cbmV4cG9ydCBjb25zdCBLZXlFeGNoYW5nZVRva2VuUXVlcnkyID0gZ3FsVHlwZWQ8S2V5RXhjaGFuZ2VUb2tlblF1ZXJ5Mj5gXG5xdWVyeSBLZXlFeGNoYW5nZVRva2VuUXVlcnkyKCRpZDogTHJSZWxheUlkSW5wdXQhLCAkdG9rZW46IFN0cmluZykge1xuICBrZXlFeGNoYW5nZShpZDogJGlkLCB0b2tlbjogJHRva2VuKSB7XG4gICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgfVxufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBDYW5jZWxLZXlFeGNoYW5nZU11dGF0aW9uIHtcbiAgY2FuY2VsS2V5RXhjaGFuZ2U6IHtcbiAgICBrZXlFeGNoYW5nZToge1xuICAgICAgaWQ6IElEO1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgQ2FuY2VsS2V5RXhjaGFuZ2VNdXRhdGlvbiA9IGdxbFR5cGVkPENhbmNlbEtleUV4Y2hhbmdlTXV0YXRpb24+YFxubXV0YXRpb24gQ2FuY2VsS2V5RXhjaGFuZ2VNdXRhdGlvbigkaW5wdXQ6IENhbmNlbEtleUV4Y2hhbmdlSW5wdXQhKSB7XG4gIGNhbmNlbEtleUV4Y2hhbmdlKGlucHV0OiAkaW5wdXQpIHtcbiAgICBrZXlFeGNoYW5nZSB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBEZWNsaW5lS2V5RXhjaGFuZ2VNdXRhdGlvbiB7XG4gIGRlY2xpbmVLZXlFeGNoYW5nZToge1xuICAgIGtleUV4Y2hhbmdlOiB7XG4gICAgICBpZDogSUQ7XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBEZWNsaW5lS2V5RXhjaGFuZ2VNdXRhdGlvbiA9IGdxbFR5cGVkPERlY2xpbmVLZXlFeGNoYW5nZU11dGF0aW9uPmBcbm11dGF0aW9uIERlY2xpbmVLZXlFeGNoYW5nZU11dGF0aW9uKCRpbnB1dDogRGVjbGluZUtleUV4Y2hhbmdlSW5wdXQhKSB7XG4gIGRlY2xpbmVLZXlFeGNoYW5nZShpbnB1dDogJGlucHV0KSB7XG4gICAga2V5RXhjaGFuZ2Uge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhdGVLZXlFeGNoYW5nZU90a011dGF0aW9uIHtcbiAgaW5pdGlhdGVLZXlFeGNoYW5nZU90azoge1xuICAgIGtleUV4Y2hhbmdlOiBLZXlFeGNoYW5nZUZpZWxkc1Jlc3VsdDtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBJbml0aWF0ZUtleUV4Y2hhbmdlT3RrTXV0YXRpb24gPSBncWxUeXBlZDxJbml0aWF0ZUtleUV4Y2hhbmdlT3RrTXV0YXRpb24+YFxubXV0YXRpb24gSW5pdGlhdGVLZXlFeGNoYW5nZU90a011dGF0aW9uKFxuICAkaW5wdXQ6IEluaXRpYXRlS2V5RXhjaGFuZ2VPdGtJbnB1dCFcbikge1xuICBpbml0aWF0ZUtleUV4Y2hhbmdlT3RrKGlucHV0OiAkaW5wdXQpIHtcbiAgICBrZXlFeGNoYW5nZSB7XG4gICAgICAke0tleUV4Y2hhbmdlRmllbGRzfVxuICAgIH1cbiAgfVxufVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25kS2V5RXhjaGFuZ2VPdGtNdXRhdGlvbiB7XG4gIHJlc3BvbmRLZXlFeGNoYW5nZU90azoge1xuICAgIGtleUV4Y2hhbmdlOiBLZXlFeGNoYW5nZUZpZWxkc1Jlc3VsdDtcbiAgICB1c2VyU2hhcmVkS2V5OiBVc2VyU2hhcmVkS2V5RmllbGRzUmVzdWx0O1xuICAgIHRwOiB7XG4gICAgICBpZDogSUQ7XG4gICAgICB1c2VyOiB7XG4gICAgICAgIGNvbmZpZzogdW5rbm93bjtcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbmV4cG9ydCBjb25zdCBSZXNwb25kS2V5RXhjaGFuZ2VPdGtNdXRhdGlvbiA9IGdxbFR5cGVkPFJlc3BvbmRLZXlFeGNoYW5nZU90a011dGF0aW9uPmBcbm11dGF0aW9uIFJlc3BvbmRLZXlFeGNoYW5nZU90a011dGF0aW9uKCRpbnB1dDogUmVzcG9uZEtleUV4Y2hhbmdlT3RrSW5wdXQhKSB7XG4gIHJlc3BvbmRLZXlFeGNoYW5nZU90ayhpbnB1dDogJGlucHV0KSB7XG4gICAga2V5RXhjaGFuZ2Uge1xuICAgICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgICB9XG4gICAgdXNlclNoYXJlZEtleSB7XG4gICAgICAke1VzZXJTaGFyZWRLZXlGaWVsZHN9XG4gICAgfVxuICAgIHRwIHtcbiAgICAgIGlkXG4gICAgICB1c2VyIHtcbiAgICAgICAgY29uZmlnXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBsZXRlS2V5RXhjaGFuZ2VPdGtNdXRhdGlvbiB7XG4gIGNvbXBsZXRlS2V5RXhjaGFuZ2VPdGs6IHtcbiAgICBrZXlFeGNoYW5nZTogS2V5RXhjaGFuZ2VGaWVsZHNSZXN1bHQ7XG4gICAgdXNlclNoYXJlZEtleTogVXNlclNoYXJlZEtleUZpZWxkc1Jlc3VsdDtcbiAgICB0cDoge1xuICAgICAgaWQ6IElEO1xuICAgICAgdXNlcjoge1xuICAgICAgICBjb25maWc6IHVua25vd247XG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG5leHBvcnQgY29uc3QgQ29tcGxldGVLZXlFeGNoYW5nZU90a011dGF0aW9uID0gZ3FsVHlwZWQ8Q29tcGxldGVLZXlFeGNoYW5nZU90a011dGF0aW9uPmBcbm11dGF0aW9uIENvbXBsZXRlS2V5RXhjaGFuZ2VPdGtNdXRhdGlvbihcbiAgJGlucHV0OiBDb21wbGV0ZUtleUV4Y2hhbmdlT3RrSW5wdXQhXG4pIHtcbiAgY29tcGxldGVLZXlFeGNoYW5nZU90ayhpbnB1dDogJGlucHV0KSB7XG4gICAga2V5RXhjaGFuZ2Uge1xuICAgICAgJHtLZXlFeGNoYW5nZUZpZWxkc31cbiAgICB9XG4gICAgdXNlclNoYXJlZEtleSB7XG4gICAgICAke1VzZXJTaGFyZWRLZXlGaWVsZHN9XG4gICAgfVxuICAgIHRwIHtcbiAgICAgIGlkXG4gICAgICB1c2VyIHtcbiAgICAgICAgY29uZmlnXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnkyIHtcbiAgY3VycmVudFVzZXJTaGFyZWRLZXk6IHtcbiAgICB1c2VyU2hhcmVkS2V5OiBVc2VyU2hhcmVkS2V5RmllbGRzUmVzdWx0O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnkyID0gZ3FsVHlwZWQ8Q3VycmVudFVzZXJTaGFyZWRLZXlRdWVyeTI+YFxucXVlcnkgQ3VycmVudFVzZXJTaGFyZWRLZXlRdWVyeTIoXG4gICR1c2VybmFtZTogU3RyaW5nXG4gICR1c2VySWQ6IExyUmVsYXlJZElucHV0XG4pIHtcbiAgY3VycmVudFVzZXJTaGFyZWRLZXkoXG4gICAgdXNlcm5hbWU6ICR1c2VybmFtZVxuICAgIHVzZXJJZDogJHVzZXJJZFxuICApIHtcbiAgICB1c2VyU2hhcmVkS2V5IHtcbiAgICAgICR7VXNlclNoYXJlZEtleUZpZWxkc31cbiAgICB9XG4gIH1cbn1cbmA7XG4iXX0=