@lifeready/core 1.0.1 → 1.0.3

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 (379) hide show
  1. package/bundles/lifeready-core.umd.js +15939 -0
  2. package/bundles/lifeready-core.umd.js.map +1 -0
  3. package/bundles/lifeready-core.umd.min.js +16 -0
  4. package/bundles/lifeready-core.umd.min.js.map +1 -0
  5. package/esm2015/lib/_common/ast.js +40 -0
  6. package/esm2015/lib/_common/deferred-promise.js +24 -0
  7. package/esm2015/lib/_common/exceptions.js +157 -0
  8. package/esm2015/lib/_common/queries.gql.js +190 -0
  9. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  10. package/esm2015/lib/_common/types.js +1 -0
  11. package/esm2015/lib/_common/utils.js +44 -0
  12. package/esm2015/lib/api/contact-card.gql.js +79 -0
  13. package/esm2015/lib/api/contact-card.service.js +154 -0
  14. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  15. package/esm2015/lib/api/contact-card2.service.js +103 -0
  16. package/esm2015/lib/api/file.service.js +74 -0
  17. package/esm2015/lib/api/item2.gql.js +110 -0
  18. package/esm2015/lib/api/item2.service.js +311 -0
  19. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  20. package/esm2015/lib/api/key-exchange.service.js +442 -0
  21. package/esm2015/lib/api/key-exchange.types.js +18 -0
  22. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  23. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  24. package/esm2015/lib/api/lock.gql.js +40 -0
  25. package/esm2015/lib/api/lock.service.js +64 -0
  26. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  27. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  28. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  29. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  30. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  32. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  33. package/esm2015/lib/api/message.service.js +138 -0
  34. package/esm2015/lib/api/persist.service.js +181 -0
  35. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  36. package/esm2015/lib/api/query-processor/index.js +3 -0
  37. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  38. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  39. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  40. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  41. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  42. package/esm2015/lib/api/time.service.js +146 -0
  43. package/esm2015/lib/api/types/graphql.types.js +7 -0
  44. package/esm2015/lib/api/types/index.js +3 -0
  45. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  46. package/esm2015/lib/auth/auth.config.js +57 -0
  47. package/esm2015/lib/auth/auth.gql.js +48 -0
  48. package/esm2015/lib/auth/auth.types.js +27 -0
  49. package/esm2015/lib/auth/idle.service.js +168 -0
  50. package/esm2015/lib/auth/idle.types.js +7 -0
  51. package/esm2015/lib/auth/lbop.service.js +355 -0
  52. package/esm2015/lib/auth/life-ready-auth.service.js +500 -0
  53. package/esm2015/lib/auth/password.service.js +320 -0
  54. package/esm2015/lib/auth/register.service.js +172 -0
  55. package/esm2015/lib/auth/two-factor.service.js +74 -0
  56. package/esm2015/lib/category/category-meta.service.js +99 -0
  57. package/esm2015/lib/category/category.gql.js +406 -0
  58. package/esm2015/lib/category/category.service.js +390 -0
  59. package/esm2015/lib/category/category.types.js +29 -0
  60. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  61. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  62. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  63. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  64. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  65. package/esm2015/lib/cryptography/key.service.js +124 -0
  66. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  67. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  68. package/esm2015/lib/life-ready.config.js +84 -0
  69. package/esm2015/lib/life-ready.module.js +74 -0
  70. package/esm2015/lib/plan/plan.gql.js +123 -0
  71. package/esm2015/lib/plan/plan.service.js +149 -0
  72. package/esm2015/lib/plan/plan.types.js +11 -0
  73. package/esm2015/lib/record/record-attachment.service.js +101 -0
  74. package/esm2015/lib/record/record.gql.js +179 -0
  75. package/esm2015/lib/record/record.service.js +206 -0
  76. package/esm2015/lib/record/record.types.js +15 -0
  77. package/esm2015/lib/record-type/record-type.service.js +75 -0
  78. package/esm2015/lib/record-type/record-type.types.js +28 -0
  79. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  82. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  85. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  88. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  89. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  90. package/esm2015/lib/scenario/scenario.service.js +611 -0
  91. package/esm2015/lib/scenario/scenario.types.js +64 -0
  92. package/esm2015/lib/search/search.gql.js +62 -0
  93. package/esm2015/lib/search/search.service.js +156 -0
  94. package/esm2015/lib/search/search.types.js +6 -0
  95. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +129 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +4 -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 +299 -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 +13314 -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/{src/lib/_common/types.ts → lib/_common/types.d.ts} +3 -6
  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/lr-graphql.service.d.ts +60 -0
  139. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  140. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  141. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  142. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  143. package/lib/api/message.service.d.ts +58 -0
  144. package/lib/api/persist.service.d.ts +31 -0
  145. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  146. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  147. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  148. package/lib/api/shared-contact-card.service.d.ts +33 -0
  149. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  150. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  151. package/lib/api/time.service.d.ts +16 -0
  152. package/lib/api/types/graphql.types.d.ts +29 -0
  153. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  154. package/lib/auth/auth.config.d.ts +5 -0
  155. package/lib/auth/auth.gql.d.ts +15 -0
  156. package/lib/auth/auth.types.d.ts +66 -0
  157. package/lib/auth/idle.service.d.ts +40 -0
  158. package/lib/auth/idle.types.d.ts +10 -0
  159. package/lib/auth/lbop.service.d.ts +91 -0
  160. package/lib/auth/life-ready-auth.service.d.ts +59 -0
  161. package/lib/auth/password.service.d.ts +78 -0
  162. package/lib/auth/register.service.d.ts +25 -0
  163. package/lib/auth/two-factor.service.d.ts +15 -0
  164. package/lib/category/category-meta.service.d.ts +23 -0
  165. package/lib/category/category.gql.d.ts +45 -0
  166. package/lib/category/category.service.d.ts +67 -0
  167. package/lib/category/category.types.d.ts +79 -0
  168. package/lib/cryptography/cryptography.types.d.ts +83 -0
  169. package/lib/cryptography/encryption.service.d.ts +41 -0
  170. package/lib/cryptography/key-factory.service.d.ts +38 -0
  171. package/lib/cryptography/key-graph.service.d.ts +33 -0
  172. package/lib/cryptography/key-meta.service.d.ts +44 -0
  173. package/lib/cryptography/key.service.d.ts +36 -0
  174. package/lib/cryptography/slip39.service.d.ts +43 -0
  175. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  176. package/lib/life-ready.config.d.ts +14 -0
  177. package/lib/life-ready.module.d.ts +5 -0
  178. package/lib/plan/plan.gql.d.ts +11 -0
  179. package/lib/plan/plan.service.d.ts +33 -0
  180. package/lib/plan/plan.types.d.ts +31 -0
  181. package/lib/record/record-attachment.service.d.ts +16 -0
  182. package/lib/record/record.gql.d.ts +14 -0
  183. package/lib/record/record.service.d.ts +25 -0
  184. package/lib/record/record.types.d.ts +57 -0
  185. package/lib/record-type/record-type.service.d.ts +11 -0
  186. package/lib/record-type/record-type.types.d.ts +50 -0
  187. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  188. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  189. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  190. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  191. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  192. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  193. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  194. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  195. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  196. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  197. package/lib/scenario/scenario.gql.d.ts +34 -0
  198. package/lib/scenario/scenario.service.d.ts +58 -0
  199. package/lib/scenario/scenario.types.d.ts +217 -0
  200. package/lib/search/search.gql.d.ts +1 -0
  201. package/lib/search/search.service.d.ts +25 -0
  202. package/lib/search/search.types.d.ts +20 -0
  203. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  204. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +35 -0
  205. package/lib/trusted-parties/tp-password-reset.constants.d.ts +3 -0
  206. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  207. package/lib/trusted-parties/tp-password-reset.service.d.ts +130 -0
  208. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  209. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  210. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  211. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  212. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  213. package/lib/users/profile-details.service.d.ts +21 -0
  214. package/lib/users/profile.gql.d.ts +11 -0
  215. package/lib/users/profile.service.d.ts +35 -0
  216. package/lib/users/profile.types.d.ts +96 -0
  217. package/lib/users/user.gql.d.ts +9 -0
  218. package/lib/users/user.service.d.ts +12 -0
  219. package/lib/users/user.types.d.ts +23 -0
  220. package/lifeready-core.d.ts +9 -0
  221. package/lifeready-core.metadata.json +1 -0
  222. package/package.json +29 -21
  223. package/{src/public-api.ts → public-api.d.ts} +0 -19
  224. package/karma.conf.js +0 -32
  225. package/ng-package.json +0 -26
  226. package/src/lib/_common/ast.ts +0 -75
  227. package/src/lib/_common/deferred-promise.ts +0 -35
  228. package/src/lib/_common/exceptions.ts +0 -189
  229. package/src/lib/_common/queries.gql.ts +0 -200
  230. package/src/lib/_common/run-outside-angular.ts +0 -125
  231. package/src/lib/_common/tests.ts +0 -82
  232. package/src/lib/_common/utils.ts +0 -57
  233. package/src/lib/api/api-mutation.spec.ts +0 -547
  234. package/src/lib/api/api-query.spec.ts +0 -40
  235. package/src/lib/api/contact-card.gql.ts +0 -85
  236. package/src/lib/api/contact-card.service.spec.ts +0 -249
  237. package/src/lib/api/contact-card.service.ts +0 -228
  238. package/src/lib/api/contact-card2.gql.ts +0 -93
  239. package/src/lib/api/contact-card2.service.spec.ts +0 -297
  240. package/src/lib/api/contact-card2.service.ts +0 -139
  241. package/src/lib/api/file.service.spec.ts +0 -14
  242. package/src/lib/api/file.service.ts +0 -81
  243. package/src/lib/api/item2.gql.ts +0 -211
  244. package/src/lib/api/item2.service.spec.ts +0 -1043
  245. package/src/lib/api/item2.service.ts +0 -481
  246. package/src/lib/api/key-exchange.gql.ts +0 -196
  247. package/src/lib/api/key-exchange.service.spec.ts +0 -470
  248. package/src/lib/api/key-exchange.service.ts +0 -731
  249. package/src/lib/api/key-exchange.types.ts +0 -235
  250. package/src/lib/api/key-exchange2.gql.ts +0 -310
  251. package/src/lib/api/key-exchange2.service.spec.ts +0 -892
  252. package/src/lib/api/key-exchange2.service.ts +0 -875
  253. package/src/lib/api/lock.gql.ts +0 -67
  254. package/src/lib/api/lock.service.spec.ts +0 -549
  255. package/src/lib/api/lock.service.ts +0 -57
  256. package/src/lib/api/lr-apollo.service.spec.ts +0 -27
  257. package/src/lib/api/lr-apollo.service.ts +0 -43
  258. package/src/lib/api/lr-graphql/lr-graphql.service.ts +0 -313
  259. package/src/lib/api/lr-graphql/lr-merged-mutation.ts +0 -377
  260. package/src/lib/api/lr-graphql/lr-mutation-base.ts +0 -67
  261. package/src/lib/api/lr-graphql/lr-mutation.ts +0 -74
  262. package/src/lib/api/lr-graphql/lr.service.ts +0 -28
  263. package/src/lib/api/message.service.spec.ts +0 -20
  264. package/src/lib/api/message.service.ts +0 -210
  265. package/src/lib/api/persist.service.spec.ts +0 -209
  266. package/src/lib/api/persist.service.ts +0 -220
  267. package/src/lib/api/query-processor/common-processors.service.ts +0 -148
  268. package/src/lib/api/query-processor/query-processor.service.ts +0 -240
  269. package/src/lib/api/query-processor/tp-password-reset-processor.service.ts +0 -177
  270. package/src/lib/api/shared-contact-card.service.ts +0 -156
  271. package/src/lib/api/shared-contact-card2.gql.ts +0 -76
  272. package/src/lib/api/shared-contact-card2.service.ts +0 -154
  273. package/src/lib/api/time.service.spec.ts +0 -48
  274. package/src/lib/api/time.service.ts +0 -155
  275. package/src/lib/api/types/graphql.types.ts +0 -48
  276. package/src/lib/api/types/lr-graphql.types.ts +0 -467
  277. package/src/lib/auth/auth.config.ts +0 -83
  278. package/src/lib/auth/auth.gql.ts +0 -62
  279. package/src/lib/auth/auth.types.ts +0 -79
  280. package/src/lib/auth/idle.service.spec.ts +0 -119
  281. package/src/lib/auth/idle.service.ts +0 -208
  282. package/src/lib/auth/idle.types.ts +0 -11
  283. package/src/lib/auth/lbop.service.spec.ts +0 -56
  284. package/src/lib/auth/lbop.service.ts +0 -539
  285. package/src/lib/auth/life-ready-auth.service.spec.ts +0 -70
  286. package/src/lib/auth/life-ready-auth.service.ts +0 -454
  287. package/src/lib/auth/password.service.spec.ts +0 -51
  288. package/src/lib/auth/password.service.ts +0 -438
  289. package/src/lib/auth/register.service.spec.ts +0 -31
  290. package/src/lib/auth/register.service.ts +0 -181
  291. package/src/lib/auth/two-factor.service.spec.ts +0 -21
  292. package/src/lib/auth/two-factor.service.ts +0 -69
  293. package/src/lib/category/category-meta.service.spec.ts +0 -28
  294. package/src/lib/category/category-meta.service.ts +0 -125
  295. package/src/lib/category/category.gql.ts +0 -449
  296. package/src/lib/category/category.service.spec.ts +0 -26
  297. package/src/lib/category/category.service.ts +0 -498
  298. package/src/lib/category/category.types.ts +0 -89
  299. package/src/lib/cryptography/cryptography.types.ts +0 -108
  300. package/src/lib/cryptography/encryption.service.spec.ts +0 -125
  301. package/src/lib/cryptography/encryption.service.ts +0 -243
  302. package/src/lib/cryptography/key-factory.service.spec.ts +0 -15
  303. package/src/lib/cryptography/key-factory.service.ts +0 -303
  304. package/src/lib/cryptography/key-graph.service.spec.ts +0 -16
  305. package/src/lib/cryptography/key-graph.service.ts +0 -354
  306. package/src/lib/cryptography/key-meta.service.spec.ts +0 -40
  307. package/src/lib/cryptography/key-meta.service.ts +0 -254
  308. package/src/lib/cryptography/key.service.spec.ts +0 -16
  309. package/src/lib/cryptography/key.service.ts +0 -154
  310. package/src/lib/cryptography/slip39.service.spec.ts +0 -44
  311. package/src/lib/cryptography/slip39.service.ts +0 -204
  312. package/src/lib/cryptography/web-crypto.service.ts +0 -22
  313. package/src/lib/life-ready.config.ts +0 -127
  314. package/src/lib/life-ready.module.ts +0 -81
  315. package/src/lib/plan/plan.gql.ts +0 -133
  316. package/src/lib/plan/plan.service.spec.ts +0 -294
  317. package/src/lib/plan/plan.service.ts +0 -198
  318. package/src/lib/plan/plan.types.ts +0 -37
  319. package/src/lib/record/record-attachment.service.spec.ts +0 -31
  320. package/src/lib/record/record-attachment.service.ts +0 -101
  321. package/src/lib/record/record.gql.ts +0 -192
  322. package/src/lib/record/record.service.spec.ts +0 -598
  323. package/src/lib/record/record.service.ts +0 -236
  324. package/src/lib/record/record.types.ts +0 -86
  325. package/src/lib/record-type/record-type.service.spec.ts +0 -16
  326. package/src/lib/record-type/record-type.service.ts +0 -71
  327. package/src/lib/record-type/record-type.types.ts +0 -58
  328. package/src/lib/scenario/approvals/scenario-approval.gql.ts +0 -112
  329. package/src/lib/scenario/approvals/scenario-approval.types.ts +0 -85
  330. package/src/lib/scenario/approvals/scenario-approver.service.spec.ts +0 -16
  331. package/src/lib/scenario/approvals/scenario-approver.service.ts +0 -422
  332. package/src/lib/scenario/claimants/scenario-claimant.gql.ts +0 -56
  333. package/src/lib/scenario/claimants/scenario-claimant.service.spec.ts +0 -16
  334. package/src/lib/scenario/claimants/scenario-claimant.service.ts +0 -100
  335. package/src/lib/scenario/claimants/scenario-claimant.types.ts +0 -21
  336. package/src/lib/scenario/receivers/scenario-receiver.gql.ts +0 -157
  337. package/src/lib/scenario/receivers/scenario-receiver.service.spec.ts +0 -16
  338. package/src/lib/scenario/receivers/scenario-receiver.service.ts +0 -278
  339. package/src/lib/scenario/receivers/scenario-receiver.types.ts +0 -66
  340. package/src/lib/scenario/scenario-setup.service.spec.ts +0 -22
  341. package/src/lib/scenario/scenario-setup.service.ts +0 -369
  342. package/src/lib/scenario/scenario.gql.ts +0 -404
  343. package/src/lib/scenario/scenario.service.spec.ts +0 -1586
  344. package/src/lib/scenario/scenario.service.ts +0 -811
  345. package/src/lib/scenario/scenario.types.ts +0 -258
  346. package/src/lib/search/search.gql.ts +0 -62
  347. package/src/lib/search/search.service.spec.ts +0 -57
  348. package/src/lib/search/search.service.ts +0 -174
  349. package/src/lib/search/search.types.ts +0 -24
  350. package/src/lib/trusted-parties/tp-password-reset-request.service.ts +0 -140
  351. package/src/lib/trusted-parties/tp-password-reset-user.service.ts +0 -359
  352. package/src/lib/trusted-parties/tp-password-reset.gql.ts +0 -453
  353. package/src/lib/trusted-parties/tp-password-reset.service.spec.ts +0 -602
  354. package/src/lib/trusted-parties/tp-password-reset.service.ts +0 -482
  355. package/src/lib/trusted-parties/trusted-party.gql.ts +0 -159
  356. package/src/lib/trusted-parties/trusted-party.service.spec.ts +0 -1008
  357. package/src/lib/trusted-parties/trusted-party.service.ts +0 -394
  358. package/src/lib/trusted-parties/trusted-party.types.ts +0 -119
  359. package/src/lib/trusted-parties/trusted-party2.gql.ts +0 -165
  360. package/src/lib/trusted-parties/trusted-party2.service.spec.ts +0 -1782
  361. package/src/lib/trusted-parties/trusted-party2.service.ts +0 -272
  362. package/src/lib/users/profile-details.service.spec.ts +0 -45
  363. package/src/lib/users/profile-details.service.ts +0 -278
  364. package/src/lib/users/profile.gql.ts +0 -108
  365. package/src/lib/users/profile.service.spec.ts +0 -97
  366. package/src/lib/users/profile.service.ts +0 -224
  367. package/src/lib/users/profile.types.ts +0 -101
  368. package/src/lib/users/user.gql.ts +0 -69
  369. package/src/lib/users/user.service.spec.ts +0 -161
  370. package/src/lib/users/user.service.ts +0 -72
  371. package/src/lib/users/user.types.ts +0 -27
  372. package/src/test.ts +0 -21
  373. package/tsconfig.lib.json +0 -21
  374. package/tsconfig.lib.prod.json +0 -6
  375. package/tsconfig.spec.json +0 -10
  376. package/tslint.json +0 -17
  377. /package/{src/lib/api/lr-graphql/index.ts → lib/api/lr-graphql/index.d.ts} +0 -0
  378. /package/{src/lib/api/query-processor/index.ts → lib/api/query-processor/index.d.ts} +0 -0
  379. /package/{src/lib/api/types/index.ts → lib/api/types/index.d.ts} +0 -0
@@ -1,125 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { EncryptionService } from './encryption.service';
3
- import {
4
- lrConfigureTestingModule,
5
- lrExpectAsyncThrow,
6
- lrit,
7
- } from '../_common/tests';
8
- import { util, JWK } from 'node-jose';
9
- import { KeyFactoryService as KFS } from './key-factory.service';
10
-
11
- describe('EncryptionService', () => {
12
- let encService: EncryptionService;
13
- let keyFactory: KFS;
14
-
15
- beforeEach(() => {
16
- lrConfigureTestingModule();
17
- encService = TestBed.inject(EncryptionService);
18
- keyFactory = TestBed.inject(KFS);
19
- });
20
-
21
- it('should be created', () => {
22
- expect(encService).toBeTruthy();
23
- });
24
-
25
- lrit('should verify public key signature', async () => {
26
- const data = {
27
- test: 123,
28
- nested: {
29
- str: 'xyz试用',
30
- },
31
- };
32
-
33
- const key = await keyFactory.createPkcSignKey();
34
-
35
- const signed = await encService.sign(key, data);
36
-
37
- // Wrong key
38
- const wrongKey = await KFS.asKey({
39
- ...(await keyFactory.createPkcSignKey()).toJSON(true),
40
- kid: key.kid,
41
- });
42
- (
43
- await lrExpectAsyncThrow(encService.verify(wrongKey, signed))
44
- ).toBeTruthy();
45
-
46
- // Wrong content
47
- const wrongContent = {
48
- ...signed,
49
- payload: util.base64url.encode(
50
- util.asBuffer(JSON.stringify({ test: 456 }), 'utf8')
51
- ),
52
- };
53
- (
54
- await lrExpectAsyncThrow(encService.verify(key, wrongContent))
55
- ).toBeTruthy();
56
- });
57
-
58
- lrit('should include protected timestamp header in signature', async () => {
59
- const data = 'test';
60
- const key = await keyFactory.createPkcSignKey();
61
- const signed = (await encService.sign(key, data)) as any;
62
- console.log('signed', signed);
63
-
64
- const verified = await encService.verify(key, signed, {
65
- returnOnlyPayload: false,
66
- });
67
-
68
- console.log(verified);
69
-
70
- expect(verified.payload).toEqual(data);
71
- expect(verified.protected.includes('timestamp')).toBeTrue();
72
- expect(verified.header.timestamp).toBeTruthy();
73
-
74
- // Modify the protected timestamp field and it should fail because timestamp is in the protected header.
75
- const protect = JSON.parse(
76
- new TextDecoder().decode(
77
- util.base64url.decode(signed.signatures[0].protected) as any
78
- )
79
- );
80
- protect.timestamp = protect.timestamp + 1;
81
- console.log('protect', protect);
82
-
83
- signed.signatures[0].protected = util.base64url.encode(
84
- JSON.stringify(protect)
85
- );
86
-
87
- console.log('after modification', signed);
88
-
89
- (await lrExpectAsyncThrow(encService.verify(key, signed))).toBeTruthy();
90
- });
91
-
92
- lrit('should include protected timestamp header in encryption', async () => {
93
- const data = 'test';
94
- const key = await keyFactory.createKey();
95
- const encrypted = await encService.encrypt(key, data);
96
- console.log('encrypted', encrypted);
97
-
98
- let decrypted: any = await encService.decrypt(key, encrypted, {
99
- returnOnlyPayload: false,
100
- });
101
- expect(decrypted.payload).toEqual(data);
102
-
103
- // Test that we correctly understand the format of the header before modifying it.
104
- const protect = JSON.parse(
105
- new TextDecoder().decode(
106
- util.base64url.decode(encrypted.protected) as any
107
- )
108
- );
109
- console.log('protect', protect);
110
- encrypted.protected = util.base64url.encode(JSON.stringify(protect));
111
-
112
- decrypted = await encService.decrypt(key, encrypted, {
113
- returnOnlyPayload: false,
114
- });
115
- expect(decrypted.payload).toEqual(data);
116
-
117
- // Modify the protected timestamp field and it should fail because timestamp is in the protected header.
118
- protect.timestamp = protect.timestamp + 1;
119
- encrypted.protected = util.base64url.encode(JSON.stringify(protect));
120
-
121
- console.log('after modification', encrypted);
122
-
123
- (await lrExpectAsyncThrow(encService.decrypt(key, encrypted))).toBeTruthy();
124
- });
125
- });
@@ -1,243 +0,0 @@
1
- import {
2
- LrException,
3
- LrErrorCode,
4
- LrBadArgumentException,
5
- } from './../_common/exceptions';
6
- import { ComponentFactoryResolver, Injectable } from '@angular/core';
7
- import { JWE, JWK, JWS, util } from 'node-jose';
8
- import { Key, PayloadType } from './cryptography.types';
9
- import { TimeService } from '../api/time.service';
10
-
11
- export enum JoseSerialization {
12
- JSON = 'JSON',
13
- COMPACT = 'COMPACT',
14
- }
15
-
16
- export interface VerifyOptions {
17
- payloadType?: PayloadType;
18
- returnOnlyPayload?: boolean; // If true, return only the decoded payload.
19
- }
20
-
21
- export interface DecryptOptions {
22
- payloadType?: PayloadType;
23
- returnOnlyPayload?: boolean; // If true, return only the decoded payload.
24
- serializations?: JoseSerialization[];
25
- }
26
-
27
- export const VERIFY_OPTIONS_DEFAULT: VerifyOptions = {
28
- payloadType: 'json',
29
- returnOnlyPayload: true,
30
- };
31
-
32
- export const DECRYPT_OPTIONS_DEFAULT: DecryptOptions = {
33
- payloadType: 'json',
34
- returnOnlyPayload: true,
35
- serializations: [JoseSerialization.JSON],
36
- };
37
-
38
- export function isSymmetricKey(key: JWK.Key) {
39
- // TODO: make sure this covers all cases.
40
- return key.kty === 'oct';
41
- }
42
-
43
- export function asJwk(key: JWK.Key | Key | any): JWK.Key | null {
44
- // TODO: make sure this covers all cases.
45
- // Excluded:
46
- // key.use - only for public keys, Ref: https://tools.ietf.org/html/rfc7517#section-4.2
47
-
48
- if (key.id && key.jwk) {
49
- return key.jwk;
50
- } else if (key.keystore && key.length && key.kty && key.kid && key.alg) {
51
- return key;
52
- } else {
53
- return null;
54
- }
55
- }
56
-
57
- @Injectable({
58
- providedIn: 'root',
59
- })
60
- export class EncryptionService {
61
- constructor(private timeService: TimeService) {}
62
-
63
- async decrypt(
64
- key: JWK.Key | Key, // string is assumed to be key.id, will unwrap key.
65
- jwe: object | string, // string will be JSON.parsed
66
- options?: DecryptOptions
67
- ): Promise<JWE.DecryptResult | any> {
68
- const opt = {
69
- algorithms: ['dir', 'A*GCM', 'RSA-OAEP-*'],
70
- };
71
-
72
- options = {
73
- ...DECRYPT_OPTIONS_DEFAULT,
74
- ...options,
75
- };
76
-
77
- if ((key as Key).jwk) {
78
- key = (key as Key).jwk;
79
- }
80
-
81
- if (typeof jwe === 'string') {
82
- if (options.serializations.includes(JoseSerialization.JSON)) {
83
- try {
84
- jwe = JSON.parse(jwe);
85
- } catch (error) {
86
- if (options.serializations.includes(JoseSerialization.COMPACT)) {
87
- console.log(
88
- 'Not a JSON-formatted JWE, it maybe compact serialisation format.'
89
- );
90
- } else {
91
- throw error;
92
- }
93
- }
94
- }
95
- }
96
-
97
- // {result} is a Object with:
98
- // * header: the combined 'protected' and 'unprotected' header members
99
- // * protected: an array of the member names from the "protected" member
100
- // * key: Key used to decrypt
101
- // * payload: Buffer of the decrypted content
102
- // * plaintext: Buffer of the decrypted content (alternate), just a reference to payload
103
- const res = await JWE.createDecrypt(key as JWK.Key, opt).decrypt(
104
- jwe as any
105
- );
106
-
107
- res.payload = this.decodePayload(options.payloadType, res.payload);
108
-
109
- if (options.returnOnlyPayload) {
110
- return res.payload;
111
- } else {
112
- return res;
113
- }
114
- }
115
-
116
- // TODO rename this to encrypt() and use as the most common usecase
117
- async encryptToString(
118
- key: JWK.Key,
119
- content: ArrayBuffer | string | object
120
- ): Promise<string> {
121
- return JSON.stringify(await this.encrypt(key, content));
122
- }
123
-
124
- // TODO rename this to encryptToJSON() and use this when required.
125
- async encrypt(
126
- key: JWK.Key,
127
- content: ArrayBuffer | string | object
128
- ): Promise<any> {
129
- if (!content) {
130
- throw new Error('Encrypting empty content.');
131
- }
132
-
133
- if (!(content instanceof ArrayBuffer)) {
134
- content = new TextEncoder().encode(JSON.stringify(content));
135
- }
136
-
137
- return JWE.createEncrypt(
138
- {
139
- contentAlg: 'A256GCM',
140
- fields: {
141
- timestamp: await this.timeService.serverNow(),
142
- },
143
- } as any,
144
- key
145
- )
146
- .update(content)
147
- .final() as any;
148
- }
149
-
150
- // <AZ> Unlike signContent, the serialised "content" variable is contained inside
151
- // the result. So ordering of fields within "content" is not an issue.
152
- async sign(key: JWK.Key, content: Buffer | string | object): Promise<any> {
153
- const signer = JWS.createSign(
154
- {
155
- fields: {
156
- timestamp: await this.timeService.serverNow(),
157
- },
158
- },
159
- key
160
- );
161
-
162
- if (content instanceof Buffer) {
163
- signer.update(content);
164
- } else {
165
- signer.update(JSON.stringify(content), 'utf8');
166
- }
167
-
168
- return signer.final();
169
- }
170
-
171
- async signToString(
172
- key: JWK.Key,
173
- content: Buffer | string | object
174
- ): Promise<string> {
175
- return JSON.stringify(await this.sign(key, content));
176
- }
177
-
178
- async verify(
179
- key: JWK.Key,
180
- jws: object,
181
- options?: VerifyOptions
182
- ): Promise<any> {
183
- const opt = {
184
- algorithms: ['RS*'],
185
- };
186
-
187
- options = {
188
- ...VERIFY_OPTIONS_DEFAULT,
189
- ...options,
190
- };
191
-
192
- try {
193
- const res = await JWS.createVerify(key, opt).verify(jws as any);
194
-
195
- res.payload = this.decodePayload(options.payloadType, res.payload);
196
-
197
- if (options.returnOnlyPayload) {
198
- return res.payload;
199
- } else {
200
- return res;
201
- }
202
- } catch (error) {
203
- throw new LrException({
204
- code: LrErrorCode.BadSignature,
205
- message: `Bad signature: ${error}`,
206
- });
207
- }
208
- }
209
-
210
- async encryptThenSign(
211
- {
212
- key,
213
- sigPrk,
214
- }: {
215
- key: JWK.Key;
216
- sigPrk: JWK.Key;
217
- },
218
- content: ArrayBuffer | string | object
219
- ): Promise<{ cipher: string; sig: string }> {
220
- const cipher = JSON.stringify(await this.encrypt(key, content));
221
- const sig = await this.sign(sigPrk, cipher);
222
- delete sig.payload;
223
-
224
- return {
225
- cipher,
226
- sig: JSON.stringify(sig),
227
- };
228
- }
229
-
230
- private decodePayload(
231
- payloadType: PayloadType,
232
- payload: ArrayBuffer
233
- ): ArrayBuffer | any {
234
- switch (payloadType) {
235
- case 'json':
236
- return JSON.parse(new TextDecoder().decode(payload));
237
- case 'ArrayBuffer':
238
- return payload;
239
- default:
240
- throw new LrBadArgumentException(`Unknown payloadType: ${payloadType}`);
241
- }
242
- }
243
- }
@@ -1,15 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { KeyFactoryService } from './key-factory.service';
3
-
4
- describe('KeyFactoryService', () => {
5
- let service: KeyFactoryService;
6
-
7
- beforeEach(() => {
8
- TestBed.configureTestingModule({});
9
- service = TestBed.inject(KeyFactoryService);
10
- });
11
-
12
- it('should be created', () => {
13
- expect(service).toBeTruthy();
14
- });
15
- });
@@ -1,303 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { JWK } from 'node-jose';
3
- import {
4
- LbopKeyParams,
5
- PassIdpParams,
6
- PassKeyParams,
7
- DeriveKeyResult,
8
- DerivePassIdpParams,
9
- DerivePassKeyParams,
10
- DeriveLbopKeyParams,
11
- } from './cryptography.types';
12
- import { WebCryptoService } from './web-crypto.service';
13
- import {
14
- LrBadArgumentException,
15
- LrSuspiciousException,
16
- } from '../_common/exceptions';
17
-
18
- export async function sha256(message) {
19
- // encode as UTF-8
20
- const msgBuffer = new TextEncoder().encode(message);
21
-
22
- // hash the message
23
- const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
24
-
25
- // convert ArrayBuffer to Array
26
- const hashArray = Array.from(new Uint8Array(hashBuffer));
27
-
28
- // convert bytes to hex string
29
- const hashHex = hashArray
30
- .map((b) => ('00' + b.toString(16)).slice(-2))
31
- .join('');
32
- return hashHex;
33
- }
34
-
35
- @Injectable({
36
- providedIn: 'root',
37
- })
38
- export class KeyFactoryService {
39
- constructor(private webCryptoService: WebCryptoService) {
40
- this.crypto = this.webCryptoService.crypto;
41
- }
42
- private readonly crypto;
43
- // Global keys store. Otherwise, each call to asKey creates a new keyStore.
44
- // <AZ> Did not seem to improve speed.
45
- // public static keyStore = JWK.createKeyStore();
46
-
47
- // AZ: This can't be change easily. It's basically a PassK or PassIdp rotation.
48
- // todo: we should eventually increase this periodically to match with Moore's law.
49
- // The iterations for each key are kept by the server as well but we assume the value
50
- // from the server is not trustworthy, so need to have minimum thresholds here.
51
- // If creating new keys, these minimum are used.
52
- public readonly MIN_PASS_IDP_PBKDF_ITER = 100000;
53
- public readonly MIN_PASS_KEY_PBKDF_ITER = 100000;
54
- public readonly MIN_LBOP_KEY_PBKDF_ITER = 100000;
55
-
56
- // These are used as the default values. They must be larger than the minimum values.
57
- public readonly DEFAULT_PASS_IDP_PBKDF_ITER = this.MIN_PASS_IDP_PBKDF_ITER;
58
- public readonly DEFAULT_PASS_KEY_PBKDF_ITER = this.MIN_PASS_KEY_PBKDF_ITER;
59
- public readonly DEFAULT_LBOP_KEY_PBKDF_ITER = this.MIN_LBOP_KEY_PBKDF_ITER;
60
-
61
- static asKey(
62
- key: string | Buffer | object | JWK.RawKey,
63
- form?:
64
- | 'json'
65
- | 'private'
66
- | 'pkcs8'
67
- | 'public'
68
- | 'spki'
69
- | 'pkix'
70
- | 'x509'
71
- | 'pem',
72
- extras?: Record<string, unknown>
73
- ): Promise<JWK.Key> {
74
- // <AZ> Using a single global key store did not seem to improve speed.
75
- // return KeyFactoryService.keyStore.add(key, form, extras);
76
- return JWK.asKey(key, form, extras);
77
- }
78
-
79
- randomString(digits: number): string {
80
- if (digits <= 0) {
81
- throw new LrBadArgumentException('digits <= 0');
82
- }
83
- const validChars =
84
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
85
- let array = new Uint32Array(digits);
86
- this.crypto.getRandomValues(array);
87
- array = array.map((x) => validChars.charCodeAt(x % validChars.length));
88
- return String.fromCharCode.apply(null, array);
89
- }
90
-
91
- randomDigitsNoZeros(digits: number): string {
92
- return this.randomChoices([1, 2, 3, 4, 5, 6, 7, 8, 9], digits).join('');
93
- }
94
-
95
- randomChoices<T>(array: T[], chooseN: number): T[] {
96
- if (array.length <= 1) {
97
- throw new LrBadArgumentException('array.length <= 0');
98
- }
99
- if (chooseN <= 0) {
100
- throw new LrBadArgumentException('chooseN <= 0');
101
- }
102
- const values = new Uint32Array(chooseN);
103
- this.crypto.getRandomValues(values);
104
- const ret: T[] = [];
105
- values.forEach((v) => ret.push(array[v % array.length]));
106
- return ret;
107
- }
108
-
109
- createSalt(): string {
110
- return this.randomString(16);
111
- }
112
-
113
- async createKey(): Promise<JWK.Key> {
114
- const key = await this.crypto.subtle.generateKey(
115
- {
116
- name: 'AES-GCM',
117
- length: 256, // can be 128, 192, or 256
118
- },
119
- true, // whether the key is extractable (i.e. can be used in exportKey)
120
- ['encrypt', 'decrypt'] // must be ["encrypt", "decrypt"] or ["wrapKey", "unwrapKey"]
121
- );
122
-
123
- const jwk = await this.crypto.subtle.exportKey('jwk', key);
124
-
125
- // Removing the fields not needed by node-jose
126
- delete jwk.ext;
127
- delete jwk.key_ops;
128
-
129
- return KeyFactoryService.asKey(jwk);
130
- }
131
-
132
- async createSignKey(): Promise<JWK.Key> {
133
- const key = await this.crypto.subtle.generateKey(
134
- {
135
- name: 'HMAC',
136
- hash: { name: 'SHA-512' },
137
- },
138
- true,
139
- ['sign', 'verify']
140
- );
141
-
142
- const jwk = await this.crypto.subtle.exportKey('jwk', key);
143
-
144
- // Removing the fields not needed by node-jose
145
- delete jwk.key_ops;
146
- delete jwk.ext;
147
-
148
- return KeyFactoryService.asKey(jwk);
149
- }
150
-
151
- async createPkcKey(): Promise<JWK.Key> {
152
- // node-jose is not using Forge properly. It should be calling the async version of
153
- // pki.rsa.generateKeyPair() with a callback. Instead it calls the sync version. Webcrypto
154
- // does not support sync version, so it uses the javascript implementation, which is way too slow.
155
- // So we generate using webcrypto and import the key.
156
- // Unfortunately Elliptical Curve is not supported by Webcrypto. So we have to settle for RSA.
157
- const key = await this.crypto.subtle.generateKey(
158
- {
159
- name: 'RSA-OAEP',
160
- modulusLength: 2048, // can be 1024, 2048, 3072, 4096 ... 16384
161
- // As per suggestion: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams
162
- publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
163
- hash: { name: 'SHA-256' }, // can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512"
164
- },
165
- true, // whether the key is extractable (i.e. can be used in exportKey)
166
- ['encrypt', 'decrypt'] // must be ["encrypt", "decrypt"] or ["wrapKey", "unwrapKey"]
167
- );
168
-
169
- const jwk = await this.crypto.subtle.exportKey('jwk', key.privateKey);
170
- // Removing the fields not needed by node-jose
171
- delete jwk.key_ops;
172
- delete jwk.ext;
173
-
174
- return KeyFactoryService.asKey(jwk);
175
- }
176
-
177
- async createPkcSignKey(): Promise<JWK.Key> {
178
- const key = await this.crypto.subtle.generateKey(
179
- {
180
- name: 'RSASSA-PKCS1-v1_5',
181
- modulusLength: 2048, // can be 1024, 2048, or 4096
182
- // As per suggestion: https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams
183
- publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
184
- hash: { name: 'SHA-256' }, // can be "SHA-1", "SHA-256", "SHA-384", or "SHA-512"
185
- },
186
- true, // whether the key is extractable (i.e. can be used in exportKey)
187
- ['sign', 'verify'] // can be any combination of "sign" and "verify"
188
- );
189
-
190
- const jwk = await this.crypto.subtle.exportKey('jwk', key.privateKey);
191
-
192
- // Removing the fields not needed by node-jose
193
- delete jwk.key_ops;
194
- delete jwk.ext;
195
-
196
- return KeyFactoryService.asKey(jwk);
197
- }
198
-
199
- async deriveKey({
200
- password,
201
- salt,
202
- iterations,
203
- kid,
204
- }: {
205
- password: string;
206
- salt: string;
207
- iterations: number;
208
- kid?: string;
209
- }): Promise<DeriveKeyResult> {
210
- const enc = new TextEncoder();
211
- const rawKey = await this.crypto.subtle.importKey(
212
- 'raw',
213
- enc.encode(password),
214
- 'PBKDF2',
215
- false,
216
- ['deriveBits', 'deriveKey']
217
- );
218
-
219
- const passKey = await crypto.subtle.deriveKey(
220
- {
221
- name: 'PBKDF2',
222
- salt: new TextEncoder().encode(salt),
223
- iterations,
224
- hash: 'SHA-256',
225
- },
226
- rawKey,
227
- { name: 'AES-GCM', length: 256 },
228
- true,
229
- ['encrypt', 'decrypt']
230
- );
231
-
232
- const passKeyJson: any = await crypto.subtle.exportKey('jwk', passKey);
233
- if (kid) {
234
- passKeyJson.kid = kid;
235
- }
236
-
237
- const jwk = await KeyFactoryService.asKey(passKeyJson);
238
-
239
- return { jwk };
240
- }
241
-
242
- async derivePassIdp(params: DerivePassIdpParams): Promise<DeriveKeyResult> {
243
- if (params.iterations < this.MIN_PASS_IDP_PBKDF_ITER) {
244
- throw new LrSuspiciousException(
245
- `The number of PassIdp key derivation iterations sent from the server (${params.iterations}) is lower than the minimum (${this.MIN_PASS_IDP_PBKDF_ITER})`
246
- );
247
- }
248
- return this.deriveKey(params);
249
- }
250
-
251
- async derivePassKey(params: DerivePassKeyParams): Promise<DeriveKeyResult> {
252
- if (params.iterations < this.MIN_PASS_KEY_PBKDF_ITER) {
253
- throw new LrSuspiciousException(
254
- `The number of PassKey key derivation iterations sent from the server(${params.iterations}) is lower than the minimum(${this.MIN_PASS_KEY_PBKDF_ITER})`
255
- );
256
- }
257
- return this.deriveKey(params);
258
- }
259
-
260
- async deriveLbopKey(params: DeriveLbopKeyParams): Promise<DeriveKeyResult> {
261
- if (params.iterations < this.MIN_LBOP_KEY_PBKDF_ITER) {
262
- throw new LrSuspiciousException(
263
- `The number of LbopKey key derivation iterations sent from the server(${params.iterations}) is lower than the minimum(${this.MIN_LBOP_KEY_PBKDF_ITER})`
264
- );
265
- }
266
- return this.deriveKey(params);
267
- }
268
-
269
- async createKid(): Promise<string> {
270
- // todo: AZ: node-jose source uses node's default UUID() function for kid, so just change to use that.
271
- // for now, we are just creating a new key to use it's kid.
272
- // The kid is a part of the JWK system. LR backend maintains the key hierarchy separately with it's own
273
- // key id. But we just use it here as a double check.
274
- return (await this.createKey()).kid;
275
- }
276
-
277
- async createPassIdpParams(): Promise<PassIdpParams> {
278
- return {
279
- salt: this.createSalt(),
280
- iterations: this.DEFAULT_PASS_IDP_PBKDF_ITER,
281
- };
282
- }
283
-
284
- async createPassKeyParams(): Promise<PassKeyParams> {
285
- return {
286
- salt: this.createSalt(),
287
- kid: await this.createKid(),
288
- iterations: this.DEFAULT_PASS_KEY_PBKDF_ITER,
289
- };
290
- }
291
-
292
- async createLbopKeyParams(): Promise<LbopKeyParams> {
293
- return {
294
- salt: this.createSalt(),
295
- // todo: AZ: node-jose source uses node's default UUID() function for kid, so just change to use that.
296
- // for now, we are just creating a new key to use it's kid.
297
- // The kid is a part of the JWK system. LR backend maintains the key hierarchy separately with it's own
298
- // key id. But we just use it here as a double check.
299
- kid: await this.createKid(),
300
- iterations: this.DEFAULT_PASS_KEY_PBKDF_ITER,
301
- };
302
- }
303
- }
@@ -1,16 +0,0 @@
1
- import { TestBed } from '@angular/core/testing';
2
- import { lrConfigureTestingModule } from '../_common/tests';
3
- import { KeyGraphService } from './key-graph.service';
4
-
5
- describe('KeyGraph', () => {
6
- let service: KeyGraphService;
7
-
8
- beforeEach(() => {
9
- lrConfigureTestingModule();
10
- service = TestBed.inject(KeyGraphService);
11
- });
12
-
13
- it('should be created', () => {
14
- expect(service).toBeTruthy();
15
- });
16
- });