@lifeready/core 0.6.0-beta.1

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/README.md +62 -0
  2. package/bundles/lifeready-core.umd.js +15939 -0
  3. package/bundles/lifeready-core.umd.js.map +1 -0
  4. package/bundles/lifeready-core.umd.min.js +2 -0
  5. package/bundles/lifeready-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/_common/ast.js +40 -0
  7. package/esm2015/lib/_common/deferred-promise.js +24 -0
  8. package/esm2015/lib/_common/exceptions.js +157 -0
  9. package/esm2015/lib/_common/queries.gql.js +190 -0
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  11. package/esm2015/lib/_common/types.js +1 -0
  12. package/esm2015/lib/_common/utils.js +44 -0
  13. package/esm2015/lib/api/contact-card.gql.js +79 -0
  14. package/esm2015/lib/api/contact-card.service.js +154 -0
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  16. package/esm2015/lib/api/contact-card2.service.js +103 -0
  17. package/esm2015/lib/api/file.service.js +74 -0
  18. package/esm2015/lib/api/item2.gql.js +110 -0
  19. package/esm2015/lib/api/item2.service.js +311 -0
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  21. package/esm2015/lib/api/key-exchange.service.js +442 -0
  22. package/esm2015/lib/api/key-exchange.types.js +18 -0
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  25. package/esm2015/lib/api/lock.gql.js +40 -0
  26. package/esm2015/lib/api/lock.service.js +64 -0
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  34. package/esm2015/lib/api/message.service.js +138 -0
  35. package/esm2015/lib/api/persist.service.js +181 -0
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  37. package/esm2015/lib/api/query-processor/index.js +3 -0
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  43. package/esm2015/lib/api/time.service.js +146 -0
  44. package/esm2015/lib/api/types/graphql.types.js +7 -0
  45. package/esm2015/lib/api/types/index.js +3 -0
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  47. package/esm2015/lib/auth/auth.config.js +57 -0
  48. package/esm2015/lib/auth/auth.gql.js +48 -0
  49. package/esm2015/lib/auth/auth.types.js +27 -0
  50. package/esm2015/lib/auth/idle.service.js +168 -0
  51. package/esm2015/lib/auth/idle.types.js +7 -0
  52. package/esm2015/lib/auth/lbop.service.js +355 -0
  53. package/esm2015/lib/auth/life-ready-auth.service.js +333 -0
  54. package/esm2015/lib/auth/password.service.js +320 -0
  55. package/esm2015/lib/auth/register.service.js +172 -0
  56. package/esm2015/lib/auth/two-factor.service.js +74 -0
  57. package/esm2015/lib/category/category-meta.service.js +99 -0
  58. package/esm2015/lib/category/category.gql.js +406 -0
  59. package/esm2015/lib/category/category.service.js +390 -0
  60. package/esm2015/lib/category/category.types.js +29 -0
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  66. package/esm2015/lib/cryptography/key.service.js +124 -0
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  69. package/esm2015/lib/life-ready.config.js +84 -0
  70. package/esm2015/lib/life-ready.module.js +74 -0
  71. package/esm2015/lib/plan/plan.gql.js +123 -0
  72. package/esm2015/lib/plan/plan.service.js +149 -0
  73. package/esm2015/lib/plan/plan.types.js +11 -0
  74. package/esm2015/lib/record/record-attachment.service.js +101 -0
  75. package/esm2015/lib/record/record.gql.js +179 -0
  76. package/esm2015/lib/record/record.service.js +206 -0
  77. package/esm2015/lib/record/record.types.js +15 -0
  78. package/esm2015/lib/record-type/record-type.service.js +75 -0
  79. package/esm2015/lib/record-type/record-type.types.js +28 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  91. package/esm2015/lib/scenario/scenario.service.js +611 -0
  92. package/esm2015/lib/scenario/scenario.types.js +64 -0
  93. package/esm2015/lib/search/search.gql.js +62 -0
  94. package/esm2015/lib/search/search.service.js +156 -0
  95. package/esm2015/lib/search/search.types.js +6 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +266 -0
  98. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
  99. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +300 -0
  100. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
  101. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
  102. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
  103. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
  104. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
  105. package/esm2015/lib/users/profile-details.service.js +214 -0
  106. package/esm2015/lib/users/profile.gql.js +97 -0
  107. package/esm2015/lib/users/profile.service.js +169 -0
  108. package/esm2015/lib/users/profile.types.js +34 -0
  109. package/esm2015/lib/users/user.gql.js +60 -0
  110. package/esm2015/lib/users/user.service.js +79 -0
  111. package/esm2015/lib/users/user.types.js +5 -0
  112. package/esm2015/lifeready-core.js +10 -0
  113. package/esm2015/public-api.js +81 -0
  114. package/fesm2015/lifeready-core.js +13290 -0
  115. package/fesm2015/lifeready-core.js.map +1 -0
  116. package/lib/_common/ast.d.ts +11 -0
  117. package/lib/_common/deferred-promise.d.ts +12 -0
  118. package/lib/_common/exceptions.d.ts +109 -0
  119. package/lib/_common/queries.gql.d.ts +10 -0
  120. package/lib/_common/run-outside-angular.d.ts +14 -0
  121. package/lib/_common/types.d.ts +10 -0
  122. package/lib/_common/utils.d.ts +3 -0
  123. package/lib/api/contact-card.gql.d.ts +7 -0
  124. package/lib/api/contact-card.service.d.ts +52 -0
  125. package/lib/api/contact-card2.gql.d.ts +34 -0
  126. package/lib/api/contact-card2.service.d.ts +49 -0
  127. package/lib/api/file.service.d.ts +18 -0
  128. package/lib/api/item2.gql.d.ts +96 -0
  129. package/lib/api/item2.service.d.ts +177 -0
  130. package/lib/api/key-exchange.gql.d.ts +9 -0
  131. package/lib/api/key-exchange.service.d.ts +39 -0
  132. package/lib/api/key-exchange.types.d.ts +196 -0
  133. package/lib/api/key-exchange2.gql.d.ts +125 -0
  134. package/lib/api/key-exchange2.service.d.ts +187 -0
  135. package/lib/api/lock.gql.d.ts +27 -0
  136. package/lib/api/lock.service.d.ts +25 -0
  137. package/lib/api/lr-apollo.service.d.ts +15 -0
  138. package/lib/api/lr-graphql/index.d.ts +5 -0
  139. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
  140. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  141. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  142. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  143. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  144. package/lib/api/message.service.d.ts +58 -0
  145. package/lib/api/persist.service.d.ts +31 -0
  146. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  147. package/lib/api/query-processor/index.d.ts +2 -0
  148. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  149. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  150. package/lib/api/shared-contact-card.service.d.ts +33 -0
  151. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  152. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  153. package/lib/api/time.service.d.ts +16 -0
  154. package/lib/api/types/graphql.types.d.ts +29 -0
  155. package/lib/api/types/index.d.ts +2 -0
  156. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  157. package/lib/auth/auth.config.d.ts +5 -0
  158. package/lib/auth/auth.gql.d.ts +15 -0
  159. package/lib/auth/auth.types.d.ts +66 -0
  160. package/lib/auth/idle.service.d.ts +40 -0
  161. package/lib/auth/idle.types.d.ts +10 -0
  162. package/lib/auth/lbop.service.d.ts +91 -0
  163. package/lib/auth/life-ready-auth.service.d.ts +46 -0
  164. package/lib/auth/password.service.d.ts +78 -0
  165. package/lib/auth/register.service.d.ts +25 -0
  166. package/lib/auth/two-factor.service.d.ts +15 -0
  167. package/lib/category/category-meta.service.d.ts +23 -0
  168. package/lib/category/category.gql.d.ts +45 -0
  169. package/lib/category/category.service.d.ts +67 -0
  170. package/lib/category/category.types.d.ts +79 -0
  171. package/lib/cryptography/cryptography.types.d.ts +83 -0
  172. package/lib/cryptography/encryption.service.d.ts +41 -0
  173. package/lib/cryptography/key-factory.service.d.ts +38 -0
  174. package/lib/cryptography/key-graph.service.d.ts +33 -0
  175. package/lib/cryptography/key-meta.service.d.ts +44 -0
  176. package/lib/cryptography/key.service.d.ts +36 -0
  177. package/lib/cryptography/slip39.service.d.ts +43 -0
  178. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  179. package/lib/life-ready.config.d.ts +14 -0
  180. package/lib/life-ready.module.d.ts +5 -0
  181. package/lib/plan/plan.gql.d.ts +11 -0
  182. package/lib/plan/plan.service.d.ts +33 -0
  183. package/lib/plan/plan.types.d.ts +31 -0
  184. package/lib/record/record-attachment.service.d.ts +16 -0
  185. package/lib/record/record.gql.d.ts +14 -0
  186. package/lib/record/record.service.d.ts +25 -0
  187. package/lib/record/record.types.d.ts +57 -0
  188. package/lib/record-type/record-type.service.d.ts +11 -0
  189. package/lib/record-type/record-type.types.d.ts +50 -0
  190. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  191. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  192. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  193. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  194. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  195. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  196. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  197. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  198. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  199. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  200. package/lib/scenario/scenario.gql.d.ts +34 -0
  201. package/lib/scenario/scenario.service.d.ts +58 -0
  202. package/lib/scenario/scenario.types.d.ts +217 -0
  203. package/lib/search/search.gql.d.ts +1 -0
  204. package/lib/search/search.service.d.ts +25 -0
  205. package/lib/search/search.types.d.ts +20 -0
  206. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  207. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +41 -0
  208. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  209. package/lib/trusted-parties/tp-password-reset.service.d.ts +131 -0
  210. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  211. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  212. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  213. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  214. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  215. package/lib/users/profile-details.service.d.ts +21 -0
  216. package/lib/users/profile.gql.d.ts +11 -0
  217. package/lib/users/profile.service.d.ts +35 -0
  218. package/lib/users/profile.types.d.ts +96 -0
  219. package/lib/users/user.gql.d.ts +9 -0
  220. package/lib/users/user.service.d.ts +12 -0
  221. package/lib/users/user.types.d.ts +23 -0
  222. package/lifeready-core.d.ts +9 -0
  223. package/lifeready-core.metadata.json +1 -0
  224. package/package.json +29 -0
  225. package/public-api.d.ts +77 -0
@@ -0,0 +1,78 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
3
+ import { JWK } from 'node-jose';
4
+ import { ProfileService } from '../users/profile.service';
5
+ import { EncryptionService } from '../cryptography/encryption.service';
6
+ import { KeyGraphService } from '../cryptography/key-graph.service';
7
+ import { LifeReadyConfig } from '../life-ready.config';
8
+ import { LrApolloService } from './../api/lr-apollo.service';
9
+ import { PassKeyBundle } from './auth.types';
10
+ import { WebCryptoService } from '../cryptography/web-crypto.service';
11
+ import { Duration } from 'moment';
12
+ import { IdleService } from '../auth/idle.service';
13
+ import { KeyFactoryService as KFS } from '../cryptography/key-factory.service';
14
+ export interface PasswordChangeConfig {
15
+ maxAuthAgeSeconds: number;
16
+ authTime: string | Date;
17
+ serverTime: string | Date;
18
+ }
19
+ export declare class PasswordCheck {
20
+ length?: number;
21
+ timeToCrack?: Duration;
22
+ passwordExposed?: number;
23
+ }
24
+ export declare class PasswordService {
25
+ private config;
26
+ private http;
27
+ private apollo;
28
+ private auth;
29
+ private profileService;
30
+ private keyFactory;
31
+ private encryptionService;
32
+ private keyGraph;
33
+ private webCryptoService;
34
+ private idleService;
35
+ private readonly CLIENT_NONCE_LENGTH;
36
+ constructor(config: LifeReadyConfig, http: HttpClient, apollo: LrApolloService, auth: AuthClass, profileService: ProfileService, keyFactory: KFS, encryptionService: EncryptionService, keyGraph: KeyGraphService, webCryptoService: WebCryptoService, idleService: IdleService);
37
+ checkPassword(password: string): Promise<PasswordCheck>;
38
+ getExposureCount(password: string): Promise<number>;
39
+ getPassIdpString(passIdp: JWK.Key): any;
40
+ createPassKeyBundle(password: string): Promise<PassKeyBundle>;
41
+ /**
42
+ * We need to allow for interruption of the process at any point. Each API call can be considered
43
+ * atomic and either succeeds or fails.
44
+ *
45
+ * The LR server APIs use semaphore tokens for locking critical operations, so concurrent calls will
46
+ * fail.
47
+ *
48
+ * We assume the worst case for IdP API calls. So we use the semaphore token from LR to prevent
49
+ * concurrent calls to IdP APIs, but we have to assume that the IdP API calls will either succeed or
50
+ * fail within a reasonable amount of time.
51
+ *
52
+ * Each location where the server state changes can be a potential point of interruption.
53
+ * Potential points of interruption are marked with: --Potential Failure Point--
54
+ *
55
+ * Places for timeout:
56
+ * - Login age too old at call to: verifyPassword()
57
+ * - Login age too old at call to: changePasswordMutation()
58
+ * - Semaphore token expires at call to: changePasswordComplete()
59
+ *
60
+ * Tests:
61
+ * - Potential Failure Point 1: should be able to restart the process, user remains signed in.
62
+ * - Potential Failure Point 2: should enter recovery flow
63
+ * - Potential Failure Point 3: should enter recovery flow
64
+ * - Potential Failure Point 4: should enter recovery flow
65
+ *
66
+ */
67
+ isLoginRequired(): Promise<boolean>;
68
+ changePassword(password: string, newPassword: string): Promise<void>;
69
+ changePasswordComplete(accessToken: string, useNewPassword: boolean, token?: string): Promise<any>;
70
+ private getVerifierPrK;
71
+ private verifyPassword;
72
+ private changePasswordMutation;
73
+ getChangePasswordConfig(): Promise<PasswordChangeConfig>;
74
+ passwordStrength(password: any): {
75
+ years: number;
76
+ bits: number;
77
+ };
78
+ }
@@ -0,0 +1,25 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
3
+ import { EncryptionService } from '../cryptography/encryption.service';
4
+ import { KeyFactoryService } from '../cryptography/key-factory.service';
5
+ import { LifeReadyConfig } from '../life-ready.config';
6
+ import { PasswordService } from './password.service';
7
+ import { RegisterResult } from './auth.types';
8
+ export declare class RegisterService {
9
+ private config;
10
+ private auth;
11
+ private http;
12
+ private keyFactory;
13
+ private encryptionService;
14
+ private passwordService;
15
+ constructor(config: LifeReadyConfig, auth: AuthClass, http: HttpClient, keyFactory: KeyFactoryService, encryptionService: EncryptionService, passwordService: PasswordService);
16
+ /**
17
+ * Request a verification code to be sent out to an email.
18
+ * @return Info needed to be submitted along with the verification code
19
+ */
20
+ verifyEmail(email: string): Promise<string>;
21
+ verifyPhone(phoneNumber: string): Promise<string>;
22
+ confirmVerificationCode(verificationId: string, verificationCode: string): Promise<string>;
23
+ register(email: string, password: string, verificationId: string, verificationToken: string, verificationType?: 'email' | 'phone'): Promise<RegisterResult>;
24
+ hibpBreachedAccounts(account: string): Promise<any>;
25
+ }
@@ -0,0 +1,15 @@
1
+ import { AuthClass } from '@aws-amplify/auth/lib-esm/Auth';
2
+ export declare class TwoFactorService {
3
+ private auth;
4
+ constructor(auth: AuthClass);
5
+ getPreferredMFA(): Promise<string>;
6
+ setPreferredMFA(method: 'TOTP' | 'SMS' | 'NOMFA'): Promise<void>;
7
+ setPhoneNumber(phone: any): Promise<void>;
8
+ getSMSCode(): Promise<void>;
9
+ verifySMSCode(verificationCode: string): Promise<void>;
10
+ getSoftwareToken(): Promise<{
11
+ code: string;
12
+ codeUri: string;
13
+ }>;
14
+ verifySoftwareToken(totpCode: string): Promise<void>;
15
+ }
@@ -0,0 +1,23 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { CategoryService } from './category.service';
3
+ import { AccessLevel, CurrentCategory, DefaultCategory } from './category.types';
4
+ export declare class LoadedCategoryTree {
5
+ categories: CurrentCategory[];
6
+ missingCategories: string[][];
7
+ }
8
+ export declare class CategoryMetaService {
9
+ private http;
10
+ private categoryService;
11
+ private categories;
12
+ constructor(http: HttpClient, categoryService: CategoryService);
13
+ getCoreCategories(): Promise<DefaultCategory[]>;
14
+ loadCategories(categoryTrees: string[][], selectedCategoryId?: string, trustedPartyId?: string): Promise<LoadedCategoryTree>;
15
+ loadCategoriesForRole(categories: {
16
+ category: string[];
17
+ accessLevel: AccessLevel;
18
+ }[]): Promise<{
19
+ category: CurrentCategory;
20
+ accessLevel: AccessLevel;
21
+ }[]>;
22
+ private loadCategory;
23
+ }
@@ -0,0 +1,45 @@
1
+ import { HasKeyGraph } from './../cryptography/cryptography.types';
2
+ import { HasEdges } from '../_common/types';
3
+ export declare const DEFAULT_BREADCRUMB_DEPTH = 5;
4
+ export declare const DEFAULT_DESCENDANTS_DEPTH = 5;
5
+ export declare enum DirectoryType {
6
+ Vault = "vault",
7
+ Category = "category",
8
+ Record = "record"
9
+ }
10
+ export declare const DefaultVaultFilter: string;
11
+ export declare const CategoryFilter: string;
12
+ export declare const RecordFilter: string;
13
+ export declare const AccessFields = "\naccessRoles {\n role\n method\n inheritedFrom {\n id\n }\n trustedParty {\n id\n }\n isIssuer\n}";
14
+ export declare const CategoryFields: string;
15
+ export declare const VaultFields = "\n id\n keyId\n plainMeta\n cipherMeta\n";
16
+ export declare const GetRootDirectoryIdsQuery: import("graphql").DocumentNode;
17
+ export declare const GetCategoriesQuery: import("graphql").DocumentNode;
18
+ export declare const GetVaultsQuery: import("graphql").DocumentNode;
19
+ export interface GetTrustedPartyCategoriesQueryType extends HasKeyGraph {
20
+ tp: {
21
+ sharedItems: {
22
+ list: HasEdges<any>;
23
+ records: HasEdges<any>;
24
+ };
25
+ };
26
+ }
27
+ export declare const GetTrustedPartyCategoriesQuery: import("graphql").DocumentNode;
28
+ export interface GetMySharedCategoriesQueryType extends HasKeyGraph {
29
+ tp: {
30
+ myItems: {
31
+ list: HasEdges<any>;
32
+ records: HasEdges<any>;
33
+ };
34
+ };
35
+ }
36
+ export declare const GetMySharedCategoriesQuery: import("graphql").DocumentNode;
37
+ export declare const parentCategoriesField: (depth?: number) => any;
38
+ export declare const GetCategoryQuery: (depth?: number) => import("graphql").DocumentNode;
39
+ export declare const GetCategoryKeyIdQuery: import("graphql").DocumentNode;
40
+ export declare const CreateCategoryMutation: import("graphql").DocumentNode;
41
+ export declare const CreateVaultMutation: import("graphql").DocumentNode;
42
+ export declare const UpdateCategoryMutation: import("graphql").DocumentNode;
43
+ export declare const DeleteCategoryMutation: import("graphql").DocumentNode;
44
+ export declare const ArchiveDirectoryMutation: import("graphql").DocumentNode;
45
+ export declare const UnarchiveDirectoryMutation: import("graphql").DocumentNode;
@@ -0,0 +1,67 @@
1
+ import { LrApolloService } from '../api/lr-apollo.service';
2
+ import { KeyMetaService } from '../cryptography/key-meta.service';
3
+ import { Category, NewCategory, UpdatedCategory, VaultCategory, VaultRecord, Vault } from './category.types';
4
+ import { KeyGraphService } from '../cryptography/key-graph.service';
5
+ export declare class CategoryService {
6
+ private lrApollo;
7
+ private keyMetaService;
8
+ private keyGraph;
9
+ constructor(lrApollo: LrApolloService, keyMetaService: KeyMetaService, keyGraph: KeyGraphService);
10
+ getRootDirectoryIds(input?: {
11
+ archived: boolean;
12
+ }): Promise<string[]>;
13
+ getDefaultVault(): Promise<Vault>;
14
+ getCategories(input?: {
15
+ archived: boolean;
16
+ }): Promise<Category[]>;
17
+ getTrustedPartyCategories(trustedPartyId: string): Promise<{
18
+ categories: Category[];
19
+ records?: VaultRecord[];
20
+ }>;
21
+ getMySharedCategories(trustedPartyId: string): Promise<{
22
+ categories: Category[];
23
+ records?: VaultRecord[];
24
+ }>;
25
+ getCategory(categoryId: string): Promise<VaultCategory>;
26
+ private mapVaults;
27
+ private mapCategories;
28
+ private mapRecords;
29
+ createDefaultVault(): Promise<string>;
30
+ createCategory(newCategory: NewCategory): Promise<string>;
31
+ updateCategory(categoryId: string, keyId: string, updatedCategory: UpdatedCategory): Promise<void>;
32
+ setCategoryVisibility(categoryId: string, hide: boolean): Promise<void>;
33
+ deleteCategory(categoryId: string): Promise<void>;
34
+ archiveCategory(categoryId: string, recursive: boolean): Promise<void>;
35
+ unarchiveCategory(categoryId: string, recursive: boolean): Promise<void>;
36
+ archiveDirectory(directoryId: string, recursive: boolean): Promise<void>;
37
+ unarchiveDirectory(directoryId: string, recursive: boolean): Promise<void>;
38
+ mapVault(node: {
39
+ id: any;
40
+ keyId: any;
41
+ plainMeta: any;
42
+ cipherMeta: any;
43
+ }): Promise<Vault>;
44
+ mapParentCategories(category: {
45
+ parentCategories: any;
46
+ }): Promise<Category[]>;
47
+ mapCategory(node: {
48
+ id: any;
49
+ keyId: any;
50
+ plainMeta: any;
51
+ cipherMeta: any;
52
+ descendantDirectories: any;
53
+ accessRoles: any[];
54
+ archived: any;
55
+ }): Promise<Category>;
56
+ mapRecord(node: {
57
+ id: any;
58
+ keyId: any;
59
+ plainMeta: any;
60
+ cipherMeta: any;
61
+ created: any;
62
+ modified: any;
63
+ content: any;
64
+ accessRoles: any[];
65
+ archived: any;
66
+ }): Promise<VaultRecord>;
67
+ }
@@ -0,0 +1,79 @@
1
+ export declare enum AccessLevel {
2
+ Owner = "OWNER",
3
+ Admin = "ADMIN",
4
+ Writer = "WRITER",
5
+ Reader = "READER",
6
+ Deny = "DENY"
7
+ }
8
+ export declare class SharedAccess {
9
+ trustedPartyId: string;
10
+ accessLevel: AccessLevel;
11
+ isInherited: boolean;
12
+ inheritedFrom?: string;
13
+ }
14
+ export declare class DefaultCategory {
15
+ code: string;
16
+ name: string;
17
+ allowRecords: boolean;
18
+ allowCustomCategories: boolean;
19
+ archived: boolean;
20
+ subCategories?: DefaultCategory[];
21
+ }
22
+ export declare class VaultRecordType {
23
+ id: string;
24
+ name: string;
25
+ }
26
+ export declare class VaultRecord {
27
+ id: string;
28
+ keyId: string;
29
+ name: string;
30
+ recordType: VaultRecordType;
31
+ createdOn: string | Date;
32
+ lastModified: string | Date;
33
+ isArchived: boolean;
34
+ myAccessLevel: AccessLevel;
35
+ sharedAccess: SharedAccess[];
36
+ }
37
+ export declare class Category {
38
+ id: string;
39
+ keyId: string;
40
+ code?: string;
41
+ name: string;
42
+ isHidden: boolean;
43
+ isCustom: boolean;
44
+ isEmpty: boolean;
45
+ isArchived: boolean;
46
+ allRecordsCount: number;
47
+ allowRecords: boolean;
48
+ allowCustomCategories: boolean;
49
+ myAccessLevel: AccessLevel;
50
+ sharedAccess: SharedAccess[];
51
+ }
52
+ export declare class CurrentCategory extends Category {
53
+ parents: Category[];
54
+ }
55
+ export declare class VaultCategory {
56
+ category?: CurrentCategory;
57
+ subCategories?: Category[];
58
+ records?: VaultRecord[];
59
+ }
60
+ export declare class NewCategory {
61
+ name: string;
62
+ code?: string;
63
+ isCustom: boolean;
64
+ allowRecords: boolean;
65
+ allowCustomCategories: boolean;
66
+ categoryIds?: string[];
67
+ }
68
+ export declare class UpdatedCategory {
69
+ name: string;
70
+ code?: string;
71
+ isCustom: boolean;
72
+ allowRecords: boolean;
73
+ allowCustomCategories: boolean;
74
+ }
75
+ export declare class Vault {
76
+ id: string;
77
+ keyId: string;
78
+ name?: string;
79
+ }
@@ -0,0 +1,83 @@
1
+ import { JWK } from 'node-jose';
2
+ export interface Key {
3
+ id: string;
4
+ pbk?: string;
5
+ jwk?: JWK.Key;
6
+ }
7
+ export interface PassKeyParams {
8
+ kid: string;
9
+ salt: string;
10
+ iterations: number;
11
+ }
12
+ export interface PassIdpParams {
13
+ salt: string;
14
+ iterations: number;
15
+ }
16
+ export interface LbopKeyParams {
17
+ kid: string;
18
+ salt: string;
19
+ iterations: number;
20
+ }
21
+ export interface PassIdpVerifier {
22
+ wrappedPrK: object;
23
+ pbk: object;
24
+ }
25
+ export interface LbopKeyVerifier {
26
+ wrappedKey: object;
27
+ key: object;
28
+ }
29
+ export interface PassKey {
30
+ id: string;
31
+ passKeyParams?: PassKeyParams;
32
+ passIdpParams?: PassIdpParams;
33
+ wrappedPassIdpVerifierPrk?: object;
34
+ created?: string;
35
+ }
36
+ export interface KeyLink {
37
+ keyId: string;
38
+ wrappingKeyId: string;
39
+ wrappedKey: string;
40
+ }
41
+ export interface PassKeyLink {
42
+ keyId: string;
43
+ passKeyId: string;
44
+ wrappedKey: string;
45
+ }
46
+ export declare enum NodeType {
47
+ Key = "key",
48
+ PassKey = "passKey"
49
+ }
50
+ export interface Node {
51
+ type: NodeType;
52
+ data: Key | PassKey;
53
+ }
54
+ export declare enum EdgeType {
55
+ KeyLink = "keyLink",
56
+ PassKeyLink = "passKeyLink"
57
+ }
58
+ export interface Edge {
59
+ type: EdgeType;
60
+ data: KeyLink | PassKeyLink;
61
+ }
62
+ export interface KeyGraphResponse {
63
+ keys?: Key[];
64
+ keyLinks?: KeyLink[];
65
+ passKeys?: PassKey[];
66
+ passKeyLinks?: PassKeyLink[];
67
+ }
68
+ export interface HasKeyGraph {
69
+ keyGraph?: KeyGraphResponse;
70
+ }
71
+ export declare type PayloadType = 'json' | 'ArrayBuffer';
72
+ export interface DeriveKeyResult {
73
+ jwk: JWK.Key;
74
+ }
75
+ export interface DerivePassIdpParams extends PassIdpParams {
76
+ password: string;
77
+ }
78
+ export interface DerivePassKeyParams extends PassKeyParams {
79
+ password: string;
80
+ }
81
+ export interface DeriveLbopKeyParams extends PassKeyParams {
82
+ password: string;
83
+ }
@@ -0,0 +1,41 @@
1
+ /// <reference types="node" />
2
+ import { JWE, JWK } from 'node-jose';
3
+ import { Key, PayloadType } from './cryptography.types';
4
+ import { TimeService } from '../api/time.service';
5
+ export declare enum JoseSerialization {
6
+ JSON = "JSON",
7
+ COMPACT = "COMPACT"
8
+ }
9
+ export interface VerifyOptions {
10
+ payloadType?: PayloadType;
11
+ returnOnlyPayload?: boolean;
12
+ }
13
+ export interface DecryptOptions {
14
+ payloadType?: PayloadType;
15
+ returnOnlyPayload?: boolean;
16
+ serializations?: JoseSerialization[];
17
+ }
18
+ export declare const VERIFY_OPTIONS_DEFAULT: VerifyOptions;
19
+ export declare const DECRYPT_OPTIONS_DEFAULT: DecryptOptions;
20
+ export declare function isSymmetricKey(key: JWK.Key): boolean;
21
+ export declare function asJwk(key: JWK.Key | Key | any): JWK.Key | null;
22
+ export declare class EncryptionService {
23
+ private timeService;
24
+ constructor(timeService: TimeService);
25
+ decrypt(key: JWK.Key | Key, // string is assumed to be key.id, will unwrap key.
26
+ jwe: object | string, // string will be JSON.parsed
27
+ options?: DecryptOptions): Promise<JWE.DecryptResult | any>;
28
+ encryptToString(key: JWK.Key, content: ArrayBuffer | string | object): Promise<string>;
29
+ encrypt(key: JWK.Key, content: ArrayBuffer | string | object): Promise<any>;
30
+ sign(key: JWK.Key, content: Buffer | string | object): Promise<any>;
31
+ signToString(key: JWK.Key, content: Buffer | string | object): Promise<string>;
32
+ verify(key: JWK.Key, jws: object, options?: VerifyOptions): Promise<any>;
33
+ encryptThenSign({ key, sigPrk, }: {
34
+ key: JWK.Key;
35
+ sigPrk: JWK.Key;
36
+ }, content: ArrayBuffer | string | object): Promise<{
37
+ cipher: string;
38
+ sig: string;
39
+ }>;
40
+ private decodePayload;
41
+ }
@@ -0,0 +1,38 @@
1
+ /// <reference types="node" />
2
+ import { JWK } from 'node-jose';
3
+ import { LbopKeyParams, PassIdpParams, PassKeyParams, DeriveKeyResult, DerivePassIdpParams, DerivePassKeyParams, DeriveLbopKeyParams } from './cryptography.types';
4
+ import { WebCryptoService } from './web-crypto.service';
5
+ export declare function sha256(message: any): Promise<string>;
6
+ export declare class KeyFactoryService {
7
+ private webCryptoService;
8
+ constructor(webCryptoService: WebCryptoService);
9
+ private readonly crypto;
10
+ readonly MIN_PASS_IDP_PBKDF_ITER = 100000;
11
+ readonly MIN_PASS_KEY_PBKDF_ITER = 100000;
12
+ readonly MIN_LBOP_KEY_PBKDF_ITER = 100000;
13
+ readonly DEFAULT_PASS_IDP_PBKDF_ITER = 100000;
14
+ readonly DEFAULT_PASS_KEY_PBKDF_ITER = 100000;
15
+ readonly DEFAULT_LBOP_KEY_PBKDF_ITER = 100000;
16
+ static asKey(key: string | Buffer | object | JWK.RawKey, form?: 'json' | 'private' | 'pkcs8' | 'public' | 'spki' | 'pkix' | 'x509' | 'pem', extras?: Record<string, unknown>): Promise<JWK.Key>;
17
+ randomString(digits: number): string;
18
+ randomDigitsNoZeros(digits: number): string;
19
+ randomChoices<T>(array: T[], chooseN: number): T[];
20
+ createSalt(): string;
21
+ createKey(): Promise<JWK.Key>;
22
+ createSignKey(): Promise<JWK.Key>;
23
+ createPkcKey(): Promise<JWK.Key>;
24
+ createPkcSignKey(): Promise<JWK.Key>;
25
+ deriveKey({ password, salt, iterations, kid, }: {
26
+ password: string;
27
+ salt: string;
28
+ iterations: number;
29
+ kid?: string;
30
+ }): Promise<DeriveKeyResult>;
31
+ derivePassIdp(params: DerivePassIdpParams): Promise<DeriveKeyResult>;
32
+ derivePassKey(params: DerivePassKeyParams): Promise<DeriveKeyResult>;
33
+ deriveLbopKey(params: DeriveLbopKeyParams): Promise<DeriveKeyResult>;
34
+ createKid(): Promise<string>;
35
+ createPassIdpParams(): Promise<PassIdpParams>;
36
+ createPassKeyParams(): Promise<PassKeyParams>;
37
+ createLbopKeyParams(): Promise<LbopKeyParams>;
38
+ }
@@ -0,0 +1,33 @@
1
+ import { JWK } from 'node-jose';
2
+ import { CurrentUserKey } from '../users/profile.types';
3
+ import { Edge, Key, KeyGraphResponse, PassKey } from './cryptography.types';
4
+ import { DecryptOptions, EncryptionService } from './encryption.service';
5
+ import { KeyService } from './key.service';
6
+ export interface GraphKey extends Key {
7
+ task?: Promise<any>;
8
+ }
9
+ export declare class KeyGraphService {
10
+ private encryptionService;
11
+ private keyService;
12
+ private graph;
13
+ constructor(encryptionService: EncryptionService, keyService: KeyService);
14
+ purgeKeys(): void;
15
+ populateKeys(userKey: CurrentUserKey): Promise<void>;
16
+ hasKey(keyId: string): boolean;
17
+ private getNode;
18
+ key(id: any): GraphKey;
19
+ passKey(id: any): PassKey;
20
+ addKeys(src: KeyGraphResponse): void;
21
+ tracePath(distances: any, keyId: string): Edge[];
22
+ getPath(knownKeyId: string, keyId: string): Edge[];
23
+ getJwkKey(keyOrId: string | Key, getKeyIdCallback?: () => Promise<string> | string): Promise<JWK.Key>;
24
+ getKey(keyOrId: string | Key, getKeyIdCallback?: () => Promise<string> | string): Promise<Key>;
25
+ private _unwrapLink;
26
+ private _unwrap;
27
+ unwrapWithPassKey(passKeyId: string, passKey: JWK.Key, keyId: string): Promise<Key>;
28
+ unwrapKey(masterKeyId: string, keyId: string): Promise<Key>;
29
+ decryptFromString<T>(keyOrId: string | Key, cipherData: string, options?: DecryptOptions): Promise<T>;
30
+ decryptFile(keyId: string, file: any): Promise<any>;
31
+ encryptToString(key: string | Key | JWK.Key, content: any): Promise<string>;
32
+ wrapKey<T>(wrappingKey: string | Key | JWK.Key, key: JWK.Key): Promise<string>;
33
+ }
@@ -0,0 +1,44 @@
1
+ import { JWK } from 'node-jose';
2
+ import { LrApolloService } from '../api/lr-apollo.service';
3
+ import { EncryptionService } from './encryption.service';
4
+ import { KeyFactoryService } from './key-factory.service';
5
+ import { KeyGraphService } from './key-graph.service';
6
+ import { KeyService } from './key.service';
7
+ export interface HasCipherMeta {
8
+ keyId: string;
9
+ cipherMeta: string;
10
+ }
11
+ export declare class WrappedContent {
12
+ key: JWK.Key;
13
+ cipherMeta: string;
14
+ wrappedKeys?: WrappingKey[];
15
+ rootKey?: WrappingKey;
16
+ }
17
+ export declare class WrappingKey {
18
+ directoryId?: string;
19
+ wrappingKeyId: string;
20
+ wrappedKey: string;
21
+ }
22
+ export declare class KeyMetaService {
23
+ private encryptionService;
24
+ private keyGraph;
25
+ private lrApollo;
26
+ private keyService;
27
+ private keyFactory;
28
+ constructor(encryptionService: EncryptionService, keyGraph: KeyGraphService, lrApollo: LrApolloService, keyService: KeyService, keyFactory: KeyFactoryService);
29
+ decryptMeta<T>(metaHaver: HasCipherMeta): Promise<T>;
30
+ doubleWrapContent(secureContent: any, categoryIds: string[], fileContent?: ArrayBuffer): Promise<{
31
+ rootKey: WrappingKey;
32
+ wrappedKeys: WrappingKey[];
33
+ doubleWrappedKey: string;
34
+ cipherMeta: string;
35
+ cipherFileContent: string;
36
+ }>;
37
+ reWrapContent(keyId: string, secureContent: any): Promise<{
38
+ doubleWrappedKey: string;
39
+ cipherMeta: string;
40
+ }>;
41
+ wrapContent(secureContent: any, categoryIds?: string[]): Promise<WrappedContent>;
42
+ wrapContentWithKey(secureContent: any, keyId: string): Promise<WrappedContent>;
43
+ private getCategoryKeyId;
44
+ }
@@ -0,0 +1,36 @@
1
+ import { Key, PassKey } from './cryptography.types';
2
+ import { PersistService } from '../api/persist.service';
3
+ import { LifeReadyConfig } from '../life-ready.config';
4
+ export declare class UserKeys {
5
+ passKey: PassKey;
6
+ masterKey: Key;
7
+ rootKey?: Key;
8
+ pxk?: Key;
9
+ sigPxk?: Key;
10
+ }
11
+ export declare class KeyService {
12
+ private config;
13
+ private persistService;
14
+ private readonly STORE_MASTER_KEY;
15
+ private keys;
16
+ private masterKey;
17
+ readonly MIN_PASS_IDP_PBKDF_ITER = 100000;
18
+ readonly MIN_PASS_KEY_PBKDF_ITER = 100000;
19
+ readonly MIN_LBOP_KEY_PBKDF_ITER = 100000;
20
+ readonly DEFAULT_PASS_IDP_PBKDF_ITER = 100000;
21
+ readonly DEFAULT_PASS_KEY_PBKDF_ITER = 100000;
22
+ readonly DEFAULT_LBOP_KEY_PBKDF_ITER = 100000;
23
+ constructor(config: LifeReadyConfig, persistService: PersistService);
24
+ resetKeys(): void;
25
+ purgeKeys(): void;
26
+ populateKeys(keys: UserKeys): void;
27
+ getCurrentPassKey(): Key;
28
+ getCurrentMasterKey(): Key;
29
+ getCurrentRootKey(): Key;
30
+ getCurrentPxk(): Key;
31
+ getCurrentSigPxk(): Key;
32
+ private expiresAfter;
33
+ persistMasterKey(masterKey: Key, expiresAfterSeconds: number): Promise<void>;
34
+ setMasterKeyExpiresAfterSeconds(seconds: number): Promise<void>;
35
+ loadMasterKey(masterKeyId: string): Promise<Key>;
36
+ }
@@ -0,0 +1,43 @@
1
+ export declare class SecretShare {
2
+ assembly: number;
3
+ subAssembly: number;
4
+ mnemonics: string;
5
+ constructor(assembly?: number, subAssembly?: number, mnemonics?: string);
6
+ }
7
+ export declare class SubAssembly {
8
+ index: number;
9
+ threshold: number;
10
+ size: number;
11
+ constructor(index: number, threshold?: number, size?: number);
12
+ shares: SecretShare[];
13
+ clearShares(): void;
14
+ addShare(share: SecretShare): void;
15
+ }
16
+ export declare class Assembly {
17
+ threshold: number;
18
+ constructor(threshold?: number);
19
+ subAssemblies: SubAssembly[];
20
+ size(): number;
21
+ clearSubAssemblies(): void;
22
+ addSubAssembly(subAssembly: SubAssembly): void;
23
+ }
24
+ export declare class SubQuorum {
25
+ subAssemblyIndex: number;
26
+ shares: string[];
27
+ constructor(subAssemblyIndex: number);
28
+ clearShares(): void;
29
+ addShare(share: string): void;
30
+ }
31
+ export declare class Quorum {
32
+ subQuora: SubQuorum[];
33
+ constructor();
34
+ clearSubQuora(): void;
35
+ addSubQuorum(subQuorum: SubQuorum): void;
36
+ serialiseShares(): any[];
37
+ }
38
+ export declare class Slip39Service {
39
+ constructor();
40
+ generateShares(secret: any, passphrase: string, assembly: Assembly): Promise<void>;
41
+ private minimalSet;
42
+ recoverSecret(shares: string[], passphrase: string): Promise<string>;
43
+ }
@@ -0,0 +1,5 @@
1
+ export declare class WebCryptoService {
2
+ crypto: Crypto;
3
+ toHex(buffer: ArrayBuffer): string;
4
+ stringDigest(algorithm: string, message: string): Promise<string>;
5
+ }