@sudoplatform/sudo-common 7.0.2 → 8.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 (404) hide show
  1. package/cjs/configurationManager/defaultConfigurationManager.d.ts +123 -0
  2. package/cjs/configurationManager/defaultConfigurationManager.js +122 -0
  3. package/cjs/configurationManager/defaultConfigurationManager.js.map +1 -0
  4. package/cjs/errors/error.d.ts +263 -0
  5. package/cjs/errors/error.js +442 -0
  6. package/cjs/errors/error.js.map +1 -0
  7. package/cjs/index.d.ts +9 -0
  8. package/cjs/index.js +13 -0
  9. package/cjs/index.js.map +1 -0
  10. package/cjs/logging/bunyanLogger.d.ts +8 -0
  11. package/cjs/logging/bunyanLogger.js +36 -0
  12. package/cjs/logging/bunyanLogger.js.map +1 -0
  13. package/cjs/logging/logger.d.ts +87 -0
  14. package/cjs/logging/logger.js +77 -0
  15. package/cjs/logging/logger.js.map +1 -0
  16. package/cjs/sudoKeyArchive/index.d.ts +4 -0
  17. package/cjs/sudoKeyArchive/index.js +8 -0
  18. package/cjs/sudoKeyArchive/index.js.map +1 -0
  19. package/cjs/sudoKeyArchive/keyArchive.d.ts +137 -0
  20. package/cjs/sudoKeyArchive/keyArchive.js +84 -0
  21. package/cjs/sudoKeyArchive/keyArchive.js.map +1 -0
  22. package/cjs/sudoKeyArchive/keyInfo.d.ts +41 -0
  23. package/cjs/sudoKeyArchive/keyInfo.js +17 -0
  24. package/cjs/sudoKeyArchive/keyInfo.js.map +1 -0
  25. package/cjs/sudoKeyArchive/keyType.d.ts +13 -0
  26. package/cjs/sudoKeyArchive/keyType.js +39 -0
  27. package/cjs/sudoKeyArchive/keyType.js.map +1 -0
  28. package/cjs/sudoKeyArchive/sudoKeyArchive.d.ts +190 -0
  29. package/cjs/sudoKeyArchive/sudoKeyArchive.js +373 -0
  30. package/cjs/sudoKeyArchive/sudoKeyArchive.js.map +1 -0
  31. package/cjs/sudoKeyManager/index.d.ts +4 -0
  32. package/cjs/sudoKeyManager/index.js +8 -0
  33. package/cjs/sudoKeyManager/index.js.map +1 -0
  34. package/cjs/sudoKeyManager/keyData.d.ts +56 -0
  35. package/cjs/sudoKeyManager/keyData.js +46 -0
  36. package/cjs/sudoKeyManager/keyData.js.map +1 -0
  37. package/cjs/sudoKeyManager/publicKey.d.ts +8 -0
  38. package/cjs/sudoKeyManager/publicKey.js +9 -0
  39. package/cjs/sudoKeyManager/publicKey.js.map +1 -0
  40. package/cjs/sudoKeyManager/sudoCryptoProvider.d.ts +324 -0
  41. package/cjs/sudoKeyManager/sudoCryptoProvider.js +12 -0
  42. package/cjs/sudoKeyManager/sudoCryptoProvider.js.map +1 -0
  43. package/cjs/sudoKeyManager/sudoKeyManager.d.ts +344 -0
  44. package/cjs/sudoKeyManager/sudoKeyManager.js +140 -0
  45. package/cjs/sudoKeyManager/sudoKeyManager.js.map +1 -0
  46. package/cjs/types/types.d.ts +115 -0
  47. package/cjs/types/types.js +45 -0
  48. package/cjs/types/types.js.map +1 -0
  49. package/cjs/utils/base64.d.ts +44 -0
  50. package/cjs/utils/base64.js +71 -0
  51. package/cjs/utils/base64.js.map +1 -0
  52. package/cjs/utils/buffer.d.ts +13 -0
  53. package/cjs/utils/buffer.js +37 -0
  54. package/cjs/utils/buffer.js.map +1 -0
  55. package/cjs/utils/stream.d.ts +6 -0
  56. package/cjs/utils/stream.js +70 -0
  57. package/cjs/utils/stream.js.map +1 -0
  58. package/lib/configurationManager/defaultConfigurationManager.js +106 -158
  59. package/lib/configurationManager/defaultConfigurationManager.js.map +1 -0
  60. package/lib/errors/error.js +226 -438
  61. package/lib/errors/error.js.map +1 -0
  62. package/lib/index.d.ts +1 -0
  63. package/lib/index.js +10 -109
  64. package/lib/index.js.map +1 -0
  65. package/lib/logging/bunyanLogger.js +29 -41
  66. package/lib/logging/bunyanLogger.js.map +1 -0
  67. package/lib/logging/logger.js +66 -92
  68. package/lib/logging/logger.js.map +1 -0
  69. package/lib/sudoKeyArchive/index.js +5 -57
  70. package/lib/sudoKeyArchive/index.js.map +1 -0
  71. package/lib/sudoKeyArchive/keyArchive.d.ts +8 -8
  72. package/lib/sudoKeyArchive/keyArchive.js +69 -96
  73. package/lib/sudoKeyArchive/keyArchive.js.map +1 -0
  74. package/lib/sudoKeyArchive/keyInfo.js +11 -49
  75. package/lib/sudoKeyArchive/keyInfo.js.map +1 -0
  76. package/lib/sudoKeyArchive/keyType.js +27 -37
  77. package/lib/sudoKeyArchive/keyType.js.map +1 -0
  78. package/lib/sudoKeyArchive/sudoKeyArchive.js +351 -444
  79. package/lib/sudoKeyArchive/sudoKeyArchive.js.map +1 -0
  80. package/lib/sudoKeyManager/index.js +5 -57
  81. package/lib/sudoKeyManager/index.js.map +1 -0
  82. package/lib/sudoKeyManager/keyData.js +38 -33
  83. package/lib/sudoKeyManager/keyData.js.map +1 -0
  84. package/lib/sudoKeyManager/publicKey.js +5 -12
  85. package/lib/sudoKeyManager/publicKey.js.map +1 -0
  86. package/lib/sudoKeyManager/sudoCryptoProvider.js +8 -26
  87. package/lib/sudoKeyManager/sudoCryptoProvider.js.map +1 -0
  88. package/lib/sudoKeyManager/sudoKeyManager.js +135 -173
  89. package/lib/sudoKeyManager/sudoKeyManager.js.map +1 -0
  90. package/lib/types/types.js +27 -33
  91. package/lib/types/types.js.map +1 -0
  92. package/lib/utils/base64.d.ts +35 -0
  93. package/lib/utils/base64.js +63 -28
  94. package/lib/utils/base64.js.map +1 -0
  95. package/lib/utils/buffer.js +28 -46
  96. package/lib/utils/buffer.js.map +1 -0
  97. package/lib/utils/stream.d.ts +6 -0
  98. package/lib/utils/stream.js +63 -0
  99. package/lib/utils/stream.js.map +1 -0
  100. package/package.json +36 -29
  101. package/.babelrc +0 -10
  102. package/.eslintrc.js +0 -91
  103. package/.gitignore +0 -14
  104. package/.gitlab-ci.yml +0 -101
  105. package/.npmignore +0 -1
  106. package/.prettierignore +0 -3
  107. package/.prettierrc.js +0 -7
  108. package/.publisher.json +0 -7
  109. package/.vscode/settings.json +0 -5
  110. package/.yarn/releases/yarn-1.22.19.cjs +0 -147529
  111. package/.yarnrc +0 -5
  112. package/dependencies-report.json +0 -640
  113. package/docs/.nojekyll +0 -1
  114. package/docs/assets/highlight.css +0 -57
  115. package/docs/assets/main.js +0 -54
  116. package/docs/assets/search.js +0 -1
  117. package/docs/assets/style.css +0 -1224
  118. package/docs/assets/widgets.png +0 -0
  119. package/docs/assets/widgets@2x.png +0 -0
  120. package/docs/classes/AccountLockedError.html +0 -163
  121. package/docs/classes/AuthenticationError.html +0 -169
  122. package/docs/classes/Base64.html +0 -134
  123. package/docs/classes/Buffer.html +0 -158
  124. package/docs/classes/ConfigurationNotSetError.html +0 -164
  125. package/docs/classes/ConfigurationSetNotFoundError.html +0 -168
  126. package/docs/classes/DecodeError.html +0 -168
  127. package/docs/classes/DefaultConfigurationManager.html +0 -213
  128. package/docs/classes/DefaultLogger.html +0 -291
  129. package/docs/classes/DefaultSudoKeyArchive.html +0 -363
  130. package/docs/classes/DefaultSudoKeyManager.html +0 -814
  131. package/docs/classes/FatalError.html +0 -169
  132. package/docs/classes/IllegalArgumentError.html +0 -168
  133. package/docs/classes/IllegalStateError.html +0 -169
  134. package/docs/classes/InsufficientEntitlementsError.html +0 -164
  135. package/docs/classes/InvalidOwnershipProofError.html +0 -163
  136. package/docs/classes/InvalidTokenError.html +0 -163
  137. package/docs/classes/KeyArchiveDecodingError.html +0 -168
  138. package/docs/classes/KeyArchiveIncorrectPasswordError.html +0 -168
  139. package/docs/classes/KeyArchiveMissingError.html +0 -168
  140. package/docs/classes/KeyArchiveNoPasswordRequiredError.html +0 -168
  141. package/docs/classes/KeyArchivePasswordRequiredError.html +0 -168
  142. package/docs/classes/KeyArchiveTypeError.html +0 -168
  143. package/docs/classes/KeyArchiveUnknownKeyTypeError.html +0 -168
  144. package/docs/classes/KeyArchiveVersionError.html +0 -168
  145. package/docs/classes/KeyNotFoundError.html +0 -168
  146. package/docs/classes/KeyStoreNotExportableError.html +0 -168
  147. package/docs/classes/LimitExceededError.html +0 -164
  148. package/docs/classes/NoEntitlementsError.html +0 -163
  149. package/docs/classes/NotAuthorizedError.html +0 -169
  150. package/docs/classes/NotRegisteredError.html +0 -168
  151. package/docs/classes/NotSignedInError.html +0 -164
  152. package/docs/classes/OperationNotImplementedError.html +0 -168
  153. package/docs/classes/RegisterError.html +0 -169
  154. package/docs/classes/RequestFailedError.html +0 -189
  155. package/docs/classes/ServiceError.html +0 -170
  156. package/docs/classes/SignOutError.html +0 -168
  157. package/docs/classes/SudoCryptoProviderDefaults.html +0 -106
  158. package/docs/classes/UnknownGraphQLError.html +0 -169
  159. package/docs/classes/UnrecognizedAlgorithmError.html +0 -168
  160. package/docs/classes/UserNotConfirmedError.html +0 -164
  161. package/docs/classes/VersionMismatchError.html +0 -166
  162. package/docs/enums/CachePolicy.html +0 -72
  163. package/docs/enums/EncryptionAlgorithm.html +0 -80
  164. package/docs/enums/KeyArchiveKeyType.html +0 -86
  165. package/docs/enums/KeyDataKeyFormat.html +0 -92
  166. package/docs/enums/KeyDataKeyType.html +0 -85
  167. package/docs/enums/ListOperationResultStatus.html +0 -85
  168. package/docs/enums/PublicKeyFormat.html +0 -68
  169. package/docs/functions/isAppSyncNetworkError.html +0 -147
  170. package/docs/functions/isInsecureKeyArchive.html +0 -147
  171. package/docs/functions/isSecureKeyArchive.html +0 -147
  172. package/docs/functions/isUnrecognizedKeyArchive.html +0 -147
  173. package/docs/functions/keyArchiveInfoFromKeyData.html +0 -147
  174. package/docs/functions/keyArchiveKeyTypeFromKeyDataKeyType.html +0 -147
  175. package/docs/functions/mapGraphQLToClientError.html +0 -154
  176. package/docs/functions/mapNetworkErrorToClientError.html +0 -154
  177. package/docs/index.html +0 -146
  178. package/docs/interfaces/AsymmetricEncryptionOptions.html +0 -68
  179. package/docs/interfaces/BooleanFilter.html +0 -75
  180. package/docs/interfaces/ConfigurationManager.html +0 -200
  181. package/docs/interfaces/KeyData.html +0 -106
  182. package/docs/interfaces/ListOperationFailureResult.html +0 -76
  183. package/docs/interfaces/ListOperationPartialResult.html +0 -102
  184. package/docs/interfaces/ListOperationSuccessResult.html +0 -90
  185. package/docs/interfaces/ListOutput.html +0 -80
  186. package/docs/interfaces/Logger.html +0 -251
  187. package/docs/interfaces/Owner.html +0 -72
  188. package/docs/interfaces/PublicKey.html +0 -72
  189. package/docs/interfaces/ServiceCompatibilityInfo.html +0 -110
  190. package/docs/interfaces/StringFilter.html +0 -82
  191. package/docs/interfaces/SudoCryptoProvider.html +0 -865
  192. package/docs/interfaces/SudoKeyArchive.html +0 -257
  193. package/docs/interfaces/SudoKeyManager.html +0 -848
  194. package/docs/interfaces/SymmetricEncryptionOptions.html +0 -75
  195. package/docs/interfaces/ValidationResult.html +0 -83
  196. package/docs/modules.html +0 -248
  197. package/docs/types/AppSyncError.html +0 -138
  198. package/docs/types/AppSyncNetworkError.html +0 -138
  199. package/docs/types/InsecureKeyArchive.html +0 -138
  200. package/docs/types/KeyArchive.html +0 -138
  201. package/docs/types/KeyArchiveKeyInfo.html +0 -154
  202. package/docs/types/KeyArchiveKeyInfoDecoded.html +0 -138
  203. package/docs/types/ListOperationResult.html +0 -148
  204. package/docs/types/SecureKeyArchive.html +0 -138
  205. package/docs/types/Subset.html +0 -144
  206. package/docs/types/UnrecognizedKeyArchive.html +0 -138
  207. package/docs/variables/CURRENT_ARCHIVE_VERSION.html +0 -138
  208. package/docs/variables/InsecureKeyArchiveCodec.html +0 -138
  209. package/docs/variables/InsecureKeyArchiveType.html +0 -138
  210. package/docs/variables/KeyArchiveCodec.html +0 -138
  211. package/docs/variables/KeyArchiveKeyInfoArrayCodec.html +0 -138
  212. package/docs/variables/KeyArchiveKeyInfoCodec.html +0 -138
  213. package/docs/variables/KeyArchiveKeyTypeCodec.html +0 -138
  214. package/docs/variables/SecureKeyArchiveCodec.html +0 -138
  215. package/docs/variables/SecureKeyArchiveType.html +0 -138
  216. package/docs/variables/UnrecognizedKeyArchiveCodec.html +0 -138
  217. package/github/.babelrc +0 -10
  218. package/github/.eslintrc.js +0 -91
  219. package/github/.gitignore +0 -14
  220. package/github/.gitlab-ci.yml +0 -101
  221. package/github/.npmignore +0 -1
  222. package/github/.prettierignore +0 -3
  223. package/github/.prettierrc.js +0 -7
  224. package/github/.publisher.json +0 -7
  225. package/github/.vscode/settings.json +0 -5
  226. package/github/.yarn/releases/yarn-1.22.19.cjs +0 -147529
  227. package/github/.yarnrc +0 -5
  228. package/github/CHANGELOG.md +0 -51
  229. package/github/README.md +0 -8
  230. package/github/bin/outdated-with-suppression.sh +0 -203
  231. package/github/bin/suppress-audit.sh +0 -15
  232. package/github/bin/suppress-outdated.sh +0 -60
  233. package/github/bin/yarn-audit-with-suppression.sh +0 -19
  234. package/github/docs/.nojekyll +0 -1
  235. package/github/docs/assets/highlight.css +0 -57
  236. package/github/docs/assets/main.js +0 -54
  237. package/github/docs/assets/search.js +0 -1
  238. package/github/docs/assets/style.css +0 -1224
  239. package/github/docs/assets/widgets.png +0 -0
  240. package/github/docs/assets/widgets@2x.png +0 -0
  241. package/github/docs/classes/AccountLockedError.html +0 -163
  242. package/github/docs/classes/AuthenticationError.html +0 -169
  243. package/github/docs/classes/Base64.html +0 -134
  244. package/github/docs/classes/Buffer.html +0 -158
  245. package/github/docs/classes/ConfigurationNotSetError.html +0 -164
  246. package/github/docs/classes/ConfigurationSetNotFoundError.html +0 -168
  247. package/github/docs/classes/DecodeError.html +0 -168
  248. package/github/docs/classes/DefaultConfigurationManager.html +0 -213
  249. package/github/docs/classes/DefaultLogger.html +0 -291
  250. package/github/docs/classes/DefaultSudoKeyArchive.html +0 -363
  251. package/github/docs/classes/DefaultSudoKeyManager.html +0 -814
  252. package/github/docs/classes/FatalError.html +0 -169
  253. package/github/docs/classes/IllegalArgumentError.html +0 -168
  254. package/github/docs/classes/IllegalStateError.html +0 -169
  255. package/github/docs/classes/InsufficientEntitlementsError.html +0 -164
  256. package/github/docs/classes/InvalidOwnershipProofError.html +0 -163
  257. package/github/docs/classes/InvalidTokenError.html +0 -163
  258. package/github/docs/classes/KeyArchiveDecodingError.html +0 -168
  259. package/github/docs/classes/KeyArchiveIncorrectPasswordError.html +0 -168
  260. package/github/docs/classes/KeyArchiveMissingError.html +0 -168
  261. package/github/docs/classes/KeyArchiveNoPasswordRequiredError.html +0 -168
  262. package/github/docs/classes/KeyArchivePasswordRequiredError.html +0 -168
  263. package/github/docs/classes/KeyArchiveTypeError.html +0 -168
  264. package/github/docs/classes/KeyArchiveUnknownKeyTypeError.html +0 -168
  265. package/github/docs/classes/KeyArchiveVersionError.html +0 -168
  266. package/github/docs/classes/KeyNotFoundError.html +0 -168
  267. package/github/docs/classes/KeyStoreNotExportableError.html +0 -168
  268. package/github/docs/classes/LimitExceededError.html +0 -164
  269. package/github/docs/classes/NoEntitlementsError.html +0 -163
  270. package/github/docs/classes/NotAuthorizedError.html +0 -169
  271. package/github/docs/classes/NotRegisteredError.html +0 -168
  272. package/github/docs/classes/NotSignedInError.html +0 -164
  273. package/github/docs/classes/OperationNotImplementedError.html +0 -168
  274. package/github/docs/classes/RegisterError.html +0 -169
  275. package/github/docs/classes/RequestFailedError.html +0 -189
  276. package/github/docs/classes/ServiceError.html +0 -170
  277. package/github/docs/classes/SignOutError.html +0 -168
  278. package/github/docs/classes/SudoCryptoProviderDefaults.html +0 -106
  279. package/github/docs/classes/UnknownGraphQLError.html +0 -169
  280. package/github/docs/classes/UnrecognizedAlgorithmError.html +0 -168
  281. package/github/docs/classes/UserNotConfirmedError.html +0 -164
  282. package/github/docs/classes/VersionMismatchError.html +0 -166
  283. package/github/docs/enums/CachePolicy.html +0 -72
  284. package/github/docs/enums/EncryptionAlgorithm.html +0 -80
  285. package/github/docs/enums/KeyArchiveKeyType.html +0 -86
  286. package/github/docs/enums/KeyDataKeyFormat.html +0 -92
  287. package/github/docs/enums/KeyDataKeyType.html +0 -85
  288. package/github/docs/enums/ListOperationResultStatus.html +0 -85
  289. package/github/docs/enums/PublicKeyFormat.html +0 -68
  290. package/github/docs/functions/isAppSyncNetworkError.html +0 -147
  291. package/github/docs/functions/isInsecureKeyArchive.html +0 -147
  292. package/github/docs/functions/isSecureKeyArchive.html +0 -147
  293. package/github/docs/functions/isUnrecognizedKeyArchive.html +0 -147
  294. package/github/docs/functions/keyArchiveInfoFromKeyData.html +0 -147
  295. package/github/docs/functions/keyArchiveKeyTypeFromKeyDataKeyType.html +0 -147
  296. package/github/docs/functions/mapGraphQLToClientError.html +0 -154
  297. package/github/docs/functions/mapNetworkErrorToClientError.html +0 -154
  298. package/github/docs/index.html +0 -146
  299. package/github/docs/interfaces/AsymmetricEncryptionOptions.html +0 -68
  300. package/github/docs/interfaces/BooleanFilter.html +0 -75
  301. package/github/docs/interfaces/ConfigurationManager.html +0 -200
  302. package/github/docs/interfaces/KeyData.html +0 -106
  303. package/github/docs/interfaces/ListOperationFailureResult.html +0 -76
  304. package/github/docs/interfaces/ListOperationPartialResult.html +0 -102
  305. package/github/docs/interfaces/ListOperationSuccessResult.html +0 -90
  306. package/github/docs/interfaces/ListOutput.html +0 -80
  307. package/github/docs/interfaces/Logger.html +0 -251
  308. package/github/docs/interfaces/Owner.html +0 -72
  309. package/github/docs/interfaces/PublicKey.html +0 -72
  310. package/github/docs/interfaces/ServiceCompatibilityInfo.html +0 -110
  311. package/github/docs/interfaces/StringFilter.html +0 -82
  312. package/github/docs/interfaces/SudoCryptoProvider.html +0 -865
  313. package/github/docs/interfaces/SudoKeyArchive.html +0 -257
  314. package/github/docs/interfaces/SudoKeyManager.html +0 -848
  315. package/github/docs/interfaces/SymmetricEncryptionOptions.html +0 -75
  316. package/github/docs/interfaces/ValidationResult.html +0 -83
  317. package/github/docs/modules.html +0 -248
  318. package/github/docs/types/AppSyncError.html +0 -138
  319. package/github/docs/types/AppSyncNetworkError.html +0 -138
  320. package/github/docs/types/InsecureKeyArchive.html +0 -138
  321. package/github/docs/types/KeyArchive.html +0 -138
  322. package/github/docs/types/KeyArchiveKeyInfo.html +0 -154
  323. package/github/docs/types/KeyArchiveKeyInfoDecoded.html +0 -138
  324. package/github/docs/types/ListOperationResult.html +0 -148
  325. package/github/docs/types/SecureKeyArchive.html +0 -138
  326. package/github/docs/types/Subset.html +0 -144
  327. package/github/docs/types/UnrecognizedKeyArchive.html +0 -138
  328. package/github/docs/variables/CURRENT_ARCHIVE_VERSION.html +0 -138
  329. package/github/docs/variables/InsecureKeyArchiveCodec.html +0 -138
  330. package/github/docs/variables/InsecureKeyArchiveType.html +0 -138
  331. package/github/docs/variables/KeyArchiveCodec.html +0 -138
  332. package/github/docs/variables/KeyArchiveKeyInfoArrayCodec.html +0 -138
  333. package/github/docs/variables/KeyArchiveKeyInfoCodec.html +0 -138
  334. package/github/docs/variables/KeyArchiveKeyTypeCodec.html +0 -138
  335. package/github/docs/variables/SecureKeyArchiveCodec.html +0 -138
  336. package/github/docs/variables/SecureKeyArchiveType.html +0 -138
  337. package/github/docs/variables/UnrecognizedKeyArchiveCodec.html +0 -138
  338. package/github/jest.config.json +0 -14
  339. package/github/package.json +0 -91
  340. package/github/src/configurationManager/defaultConfigurationManager.ts +0 -281
  341. package/github/src/errors/error.ts +0 -469
  342. package/github/src/index.ts +0 -8
  343. package/github/src/logging/bunyanLogger.ts +0 -47
  344. package/github/src/logging/logger.ts +0 -164
  345. package/github/src/sudoKeyArchive/index.ts +0 -4
  346. package/github/src/sudoKeyArchive/keyArchive.ts +0 -120
  347. package/github/src/sudoKeyArchive/keyInfo.ts +0 -47
  348. package/github/src/sudoKeyArchive/keyType.ts +0 -50
  349. package/github/src/sudoKeyArchive/sudoKeyArchive.ts +0 -591
  350. package/github/src/sudoKeyManager/index.ts +0 -4
  351. package/github/src/sudoKeyManager/keyData.ts +0 -60
  352. package/github/src/sudoKeyManager/publicKey.ts +0 -9
  353. package/github/src/sudoKeyManager/sudoCryptoProvider.ts +0 -416
  354. package/github/src/sudoKeyManager/sudoKeyManager.ts +0 -609
  355. package/github/src/types/types.ts +0 -129
  356. package/github/src/utils/base64.ts +0 -21
  357. package/github/src/utils/buffer.ts +0 -39
  358. package/github/test/integration/defaultConfigurationManager.spec.ts +0 -85
  359. package/github/test/matchers.ts +0 -122
  360. package/github/test/unit/configurationManager/defaultConfigurationManager.spec.ts +0 -506
  361. package/github/test/unit/errors/error.spec.ts +0 -115
  362. package/github/test/unit/keyType.spec.ts +0 -54
  363. package/github/test/unit/logging/logger.spec.ts +0 -182
  364. package/github/test/unit/sudoKeyArchive.spec.ts +0 -1609
  365. package/github/test/unit/sudoKeyManager.spec.ts +0 -1045
  366. package/github/test/unit/utils/base64.spec.ts +0 -30
  367. package/github/test/unit/utils/buffer.spec.ts +0 -45
  368. package/github/test/unit/utils/listOperationResult.spec.ts +0 -84
  369. package/github/tsconfig.json +0 -20
  370. package/github/tsconfig.test.json +0 -7
  371. package/github/yarn.lock +0 -5922
  372. package/jest.config.json +0 -14
  373. package/src/configurationManager/defaultConfigurationManager.ts +0 -281
  374. package/src/errors/error.ts +0 -469
  375. package/src/index.ts +0 -8
  376. package/src/logging/bunyanLogger.ts +0 -47
  377. package/src/logging/logger.ts +0 -164
  378. package/src/sudoKeyArchive/index.ts +0 -4
  379. package/src/sudoKeyArchive/keyArchive.ts +0 -120
  380. package/src/sudoKeyArchive/keyInfo.ts +0 -47
  381. package/src/sudoKeyArchive/keyType.ts +0 -50
  382. package/src/sudoKeyArchive/sudoKeyArchive.ts +0 -591
  383. package/src/sudoKeyManager/index.ts +0 -4
  384. package/src/sudoKeyManager/keyData.ts +0 -60
  385. package/src/sudoKeyManager/publicKey.ts +0 -9
  386. package/src/sudoKeyManager/sudoCryptoProvider.ts +0 -416
  387. package/src/sudoKeyManager/sudoKeyManager.ts +0 -609
  388. package/src/types/types.ts +0 -129
  389. package/src/utils/base64.ts +0 -21
  390. package/src/utils/buffer.ts +0 -39
  391. package/test/integration/defaultConfigurationManager.spec.ts +0 -85
  392. package/test/matchers.ts +0 -122
  393. package/test/unit/configurationManager/defaultConfigurationManager.spec.ts +0 -506
  394. package/test/unit/errors/error.spec.ts +0 -115
  395. package/test/unit/keyType.spec.ts +0 -54
  396. package/test/unit/logging/logger.spec.ts +0 -182
  397. package/test/unit/sudoKeyArchive.spec.ts +0 -1609
  398. package/test/unit/sudoKeyManager.spec.ts +0 -1045
  399. package/test/unit/utils/base64.spec.ts +0 -30
  400. package/test/unit/utils/buffer.spec.ts +0 -45
  401. package/test/unit/utils/listOperationResult.spec.ts +0 -84
  402. package/tsconfig.json +0 -20
  403. package/tsconfig.test.json +0 -7
  404. package/yarn.lock +0 -5922
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefaultLogger = void 0;
4
+ const bunyanLogger_1 = require("./bunyanLogger");
5
+ class DefaultLogger {
6
+ /**
7
+ * The default logger implementation which wraps browser-bunyan
8
+ *
9
+ * @param identifier the name of the module
10
+ * @param logLevel the log level for the module
11
+ */
12
+ constructor(identifier, logLevel) {
13
+ this.logger = (0, bunyanLogger_1.createBunyanLogger)(identifier, logLevel);
14
+ }
15
+ trace(message, fields) {
16
+ if (message === undefined)
17
+ return this.logger.trace();
18
+ if (fields) {
19
+ this.logger.trace({ obj: fields }, message);
20
+ }
21
+ else {
22
+ this.logger.trace(message);
23
+ }
24
+ }
25
+ debug(message, fields) {
26
+ if (message === undefined)
27
+ return this.logger.debug();
28
+ if (fields) {
29
+ this.logger.debug({ obj: fields }, message);
30
+ }
31
+ else {
32
+ this.logger.debug(message);
33
+ }
34
+ }
35
+ info(message, fields) {
36
+ if (message === undefined)
37
+ return this.logger.info();
38
+ if (fields) {
39
+ this.logger.info({ obj: fields }, message);
40
+ }
41
+ else {
42
+ this.logger.info(message);
43
+ }
44
+ }
45
+ warn(message, fields) {
46
+ if (message === undefined)
47
+ return this.logger.warn();
48
+ if (fields) {
49
+ this.logger.warn({ obj: fields }, message);
50
+ }
51
+ else {
52
+ this.logger.warn(message);
53
+ }
54
+ }
55
+ error(message, fields) {
56
+ if (message === undefined)
57
+ return this.logger.error();
58
+ if (fields) {
59
+ this.logger.error({ obj: fields }, message);
60
+ }
61
+ else {
62
+ this.logger.error(message);
63
+ }
64
+ }
65
+ fatal(message, fields) {
66
+ if (message === undefined)
67
+ return this.logger.fatal();
68
+ if (fields) {
69
+ this.logger.fatal({ obj: fields }, message);
70
+ }
71
+ else {
72
+ this.logger.fatal(message);
73
+ }
74
+ }
75
+ }
76
+ exports.DefaultLogger = DefaultLogger;
77
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":";;;AAAA,iDAAiE;AA+EjE,MAAa,aAAa;IAGxB;;;;;OAKG;IACH,YAAY,UAAmB,EAAE,QAAiB;QAChD,IAAI,CAAC,MAAM,GAAG,IAAA,iCAAkB,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IACxD,CAAC;IAID,KAAK,CAAC,OAAgB,EAAE,MAAgC;QACtD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAErD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;SAC5C;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SAC3B;IACH,CAAC;IAID,KAAK,CAAC,OAAgB,EAAE,MAAgC;QACtD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAErD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;SAC5C;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SAC3B;IACH,CAAC;IAID,IAAI,CAAC,OAAgB,EAAE,MAAgC;QACrD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAEpD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;SAC3C;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1B;IACH,CAAC;IAID,IAAI,CAAC,OAAgB,EAAE,MAAgC;QACrD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAEpD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;SAC3C;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SAC1B;IACH,CAAC;IAID,KAAK,CAAC,OAAgB,EAAE,MAAgC;QACtD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAErD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;SAC5C;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SAC3B;IACH,CAAC;IAID,KAAK,CAAC,OAAgB,EAAE,MAAgC;QACtD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QAErD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;SAC5C;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;SAC3B;IACH,CAAC;CACF;AApFD,sCAoFC"}
@@ -0,0 +1,4 @@
1
+ export * from './keyArchive';
2
+ export * from './keyInfo';
3
+ export * from './keyType';
4
+ export * from './sudoKeyArchive';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./keyArchive"), exports);
5
+ tslib_1.__exportStar(require("./keyInfo"), exports);
6
+ tslib_1.__exportStar(require("./keyType"), exports);
7
+ tslib_1.__exportStar(require("./sudoKeyArchive"), exports);
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sudoKeyArchive/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,oDAAyB;AACzB,oDAAyB;AACzB,2DAAgC"}
@@ -0,0 +1,137 @@
1
+ import * as t from 'io-ts';
2
+ export declare const CURRENT_ARCHIVE_VERSION = 3;
3
+ export declare const InsecureKeyArchiveType = "Insecure";
4
+ export declare const InsecureKeyArchiveCodec: t.TypeC<{
5
+ /**
6
+ * Discriminant for InsecureKeyArchive type.
7
+ */
8
+ Type: t.LiteralC<"Insecure">;
9
+ /**
10
+ * Array of exported keys in clear text.
11
+ */
12
+ Keys: t.ArrayC<t.TypeC<{
13
+ Name: t.StringC;
14
+ Type: t.Type<import("./keyType").KeyArchiveKeyType, string, unknown>;
15
+ Data: t.StringC;
16
+ Synchronizable: t.BooleanC;
17
+ Exportable: t.BooleanC;
18
+ NameSpace: t.StringC;
19
+ }>>;
20
+ /**
21
+ * Version this archive format.
22
+ */
23
+ Version: t.LiteralC<3>;
24
+ /**
25
+ * Metainfo user is able to associate with the archive.
26
+ */
27
+ MetaInfo: t.RecordC<t.StringC, t.StringC>;
28
+ }>;
29
+ export declare type InsecureKeyArchive = t.TypeOf<typeof InsecureKeyArchiveCodec>;
30
+ export declare const SecureKeyArchiveType = "Secure";
31
+ export declare const UnrecognizedKeyArchiveCodec: t.PartialC<{
32
+ Version: t.NumberC;
33
+ Type: t.StringC;
34
+ }>;
35
+ export declare type UnrecognizedKeyArchive = t.TypeOf<typeof UnrecognizedKeyArchiveCodec>;
36
+ export declare const SecureKeyArchiveCodec: t.TypeC<{
37
+ /**
38
+ * Discriminant for SecureKeyArchive type.
39
+ */
40
+ Type: t.LiteralC<"Secure">;
41
+ /**
42
+ * Format is:
43
+ *
44
+ * base64(gzip(encrypt(stringify(array of KeyArchiveKeyInfo)))
45
+ *
46
+ * Encrypt is 256-bit AES-CBC using symmetric key derived from
47
+ * password and IV specified by IV property.
48
+ */
49
+ Keys: t.StringC;
50
+ /**
51
+ * Rounds of PBKDF2 applied to password to derive symmetric key.
52
+ */
53
+ Rounds: t.NumberC;
54
+ /**
55
+ * Salt passed to PBKDF2 to derive symmetric key.
56
+ */
57
+ Salt: t.StringC;
58
+ /**
59
+ * IV used for AES encryption of keys.
60
+ */
61
+ IV: t.StringC;
62
+ /**
63
+ * Version this archive format.
64
+ */
65
+ Version: t.LiteralC<3>;
66
+ /**
67
+ * Metainfo user is able to associate with the archive.
68
+ */
69
+ MetaInfo: t.RecordC<t.StringC, t.StringC>;
70
+ }>;
71
+ export declare type SecureKeyArchive = t.TypeOf<typeof SecureKeyArchiveCodec>;
72
+ export declare const KeyArchiveCodec: t.UnionC<[t.TypeC<{
73
+ /**
74
+ * Discriminant for SecureKeyArchive type.
75
+ */
76
+ Type: t.LiteralC<"Secure">;
77
+ /**
78
+ * Format is:
79
+ *
80
+ * base64(gzip(encrypt(stringify(array of KeyArchiveKeyInfo)))
81
+ *
82
+ * Encrypt is 256-bit AES-CBC using symmetric key derived from
83
+ * password and IV specified by IV property.
84
+ */
85
+ Keys: t.StringC;
86
+ /**
87
+ * Rounds of PBKDF2 applied to password to derive symmetric key.
88
+ */
89
+ Rounds: t.NumberC;
90
+ /**
91
+ * Salt passed to PBKDF2 to derive symmetric key.
92
+ */
93
+ Salt: t.StringC;
94
+ /**
95
+ * IV used for AES encryption of keys.
96
+ */
97
+ IV: t.StringC;
98
+ /**
99
+ * Version this archive format.
100
+ */
101
+ Version: t.LiteralC<3>;
102
+ /**
103
+ * Metainfo user is able to associate with the archive.
104
+ */
105
+ MetaInfo: t.RecordC<t.StringC, t.StringC>;
106
+ }>, t.TypeC<{
107
+ /**
108
+ * Discriminant for InsecureKeyArchive type.
109
+ */
110
+ Type: t.LiteralC<"Insecure">;
111
+ /**
112
+ * Array of exported keys in clear text.
113
+ */
114
+ Keys: t.ArrayC<t.TypeC<{
115
+ Name: t.StringC;
116
+ Type: t.Type<import("./keyType").KeyArchiveKeyType, string, unknown>;
117
+ Data: t.StringC;
118
+ Synchronizable: t.BooleanC;
119
+ Exportable: t.BooleanC;
120
+ NameSpace: t.StringC;
121
+ }>>;
122
+ /**
123
+ * Version this archive format.
124
+ */
125
+ Version: t.LiteralC<3>;
126
+ /**
127
+ * Metainfo user is able to associate with the archive.
128
+ */
129
+ MetaInfo: t.RecordC<t.StringC, t.StringC>;
130
+ }>, t.PartialC<{
131
+ Version: t.NumberC;
132
+ Type: t.StringC;
133
+ }>]>;
134
+ export declare type KeyArchive = t.TypeOf<typeof KeyArchiveCodec>;
135
+ export declare function isSecureKeyArchive(keyArchive: KeyArchive): keyArchive is SecureKeyArchive;
136
+ export declare function isInsecureKeyArchive(keyArchive: KeyArchive): keyArchive is InsecureKeyArchive;
137
+ export declare function isUnrecognizedKeyArchive(keyArchive: KeyArchive): keyArchive is UnrecognizedKeyArchive;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnrecognizedKeyArchive = exports.isInsecureKeyArchive = exports.isSecureKeyArchive = exports.KeyArchiveCodec = exports.SecureKeyArchiveCodec = exports.UnrecognizedKeyArchiveCodec = exports.SecureKeyArchiveType = exports.InsecureKeyArchiveCodec = exports.InsecureKeyArchiveType = exports.CURRENT_ARCHIVE_VERSION = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const t = tslib_1.__importStar(require("io-ts"));
6
+ const keyInfo_1 = require("./keyInfo");
7
+ exports.CURRENT_ARCHIVE_VERSION = 3;
8
+ const CommonKeyArchiveRequiredProps = {
9
+ /**
10
+ * Version this archive format.
11
+ */
12
+ Version: t.literal(exports.CURRENT_ARCHIVE_VERSION),
13
+ /**
14
+ * Metainfo user is able to associate with the archive.
15
+ */
16
+ MetaInfo: t.record(t.string, t.string),
17
+ };
18
+ exports.InsecureKeyArchiveType = 'Insecure';
19
+ const InsecureKeyArchiveRequiredProps = {
20
+ ...CommonKeyArchiveRequiredProps,
21
+ /**
22
+ * Discriminant for InsecureKeyArchive type.
23
+ */
24
+ Type: t.literal(exports.InsecureKeyArchiveType),
25
+ /**
26
+ * Array of exported keys in clear text.
27
+ */
28
+ Keys: t.array(keyInfo_1.KeyArchiveKeyInfoCodec),
29
+ };
30
+ exports.InsecureKeyArchiveCodec = t.type(InsecureKeyArchiveRequiredProps, 'InsecureKeyArchive');
31
+ exports.SecureKeyArchiveType = 'Secure';
32
+ const SecureKeyArchiveRequiredProps = {
33
+ ...CommonKeyArchiveRequiredProps,
34
+ /**
35
+ * Discriminant for SecureKeyArchive type.
36
+ */
37
+ Type: t.literal(exports.SecureKeyArchiveType),
38
+ /**
39
+ * Format is:
40
+ *
41
+ * base64(gzip(encrypt(stringify(array of KeyArchiveKeyInfo)))
42
+ *
43
+ * Encrypt is 256-bit AES-CBC using symmetric key derived from
44
+ * password and IV specified by IV property.
45
+ */
46
+ Keys: t.string,
47
+ /**
48
+ * Rounds of PBKDF2 applied to password to derive symmetric key.
49
+ */
50
+ Rounds: t.number,
51
+ /**
52
+ * Salt passed to PBKDF2 to derive symmetric key.
53
+ */
54
+ Salt: t.string,
55
+ /**
56
+ * IV used for AES encryption of keys.
57
+ */
58
+ IV: t.string,
59
+ };
60
+ const UnrecognizedKeyArchiveProps = {
61
+ Version: t.number,
62
+ Type: t.string,
63
+ };
64
+ exports.UnrecognizedKeyArchiveCodec = t.partial(UnrecognizedKeyArchiveProps);
65
+ exports.SecureKeyArchiveCodec = t.type(SecureKeyArchiveRequiredProps, 'SecureKeyArchive');
66
+ exports.KeyArchiveCodec = t.union([
67
+ exports.SecureKeyArchiveCodec,
68
+ exports.InsecureKeyArchiveCodec,
69
+ // Leave UnrecognizedKeyArchiveCodec last so it's tried last
70
+ exports.UnrecognizedKeyArchiveCodec,
71
+ ], 'KeyArchive');
72
+ function isSecureKeyArchive(keyArchive) {
73
+ return keyArchive.Type === exports.SecureKeyArchiveType;
74
+ }
75
+ exports.isSecureKeyArchive = isSecureKeyArchive;
76
+ function isInsecureKeyArchive(keyArchive) {
77
+ return keyArchive.Type === exports.InsecureKeyArchiveType;
78
+ }
79
+ exports.isInsecureKeyArchive = isInsecureKeyArchive;
80
+ function isUnrecognizedKeyArchive(keyArchive) {
81
+ return !isSecureKeyArchive(keyArchive) && !isInsecureKeyArchive(keyArchive);
82
+ }
83
+ exports.isUnrecognizedKeyArchive = isUnrecognizedKeyArchive;
84
+ //# sourceMappingURL=keyArchive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyArchive.js","sourceRoot":"","sources":["../../src/sudoKeyArchive/keyArchive.ts"],"names":[],"mappings":";;;;AAAA,iDAA0B;AAC1B,uCAAkD;AAErC,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAExC,MAAM,6BAA6B,GAAG;IACpC;;OAEG;IACH,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,+BAAuB,CAAC;IAE3C;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;CACvC,CAAA;AAEY,QAAA,sBAAsB,GAAG,UAAU,CAAA;AAEhD,MAAM,+BAA+B,GAAG;IACtC,GAAG,6BAA6B;IAChC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,8BAAsB,CAAC;IAEvC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,gCAAsB,CAAC;CACtC,CAAA;AAEY,QAAA,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAC3C,+BAA+B,EAC/B,oBAAoB,CACrB,CAAA;AAIY,QAAA,oBAAoB,GAAG,QAAQ,CAAA;AAE5C,MAAM,6BAA6B,GAAG;IACpC,GAAG,6BAA6B;IAChC;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,4BAAoB,CAAC;IAErC;;;;;;;OAOG;IACH,IAAI,EAAE,CAAC,CAAC,MAAM;IAEd;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM;IAEhB;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC,MAAM;IAEd;;OAEG;IACH,EAAE,EAAE,CAAC,CAAC,MAAM;CACb,CAAA;AAED,MAAM,2BAA2B,GAAG;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM;IACjB,IAAI,EAAE,CAAC,CAAC,MAAM;CACf,CAAA;AAEY,QAAA,2BAA2B,GAAG,CAAC,CAAC,OAAO,CAClD,2BAA2B,CAC5B,CAAA;AAKY,QAAA,qBAAqB,GAAG,CAAC,CAAC,IAAI,CACzC,6BAA6B,EAC7B,kBAAkB,CACnB,CAAA;AAGY,QAAA,eAAe,GAAG,CAAC,CAAC,KAAK,CACpC;IACE,6BAAqB;IACrB,+BAAuB;IAEvB,4DAA4D;IAC5D,mCAA2B;CAC5B,EACD,YAAY,CACb,CAAA;AAID,SAAgB,kBAAkB,CAChC,UAAsB;IAEtB,OAAO,UAAU,CAAC,IAAI,KAAK,4BAAoB,CAAA;AACjD,CAAC;AAJD,gDAIC;AAED,SAAgB,oBAAoB,CAClC,UAAsB;IAEtB,OAAO,UAAU,CAAC,IAAI,KAAK,8BAAsB,CAAA;AACnD,CAAC;AAJD,oDAIC;AAED,SAAgB,wBAAwB,CACtC,UAAsB;IAEtB,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAA;AAC7E,CAAC;AAJD,4DAIC"}
@@ -0,0 +1,41 @@
1
+ import * as t from 'io-ts';
2
+ export declare const KeyArchiveKeyInfoCodec: t.TypeC<{
3
+ Name: t.StringC;
4
+ Type: t.Type<import("./keyType").KeyArchiveKeyType, string, unknown>;
5
+ Data: t.StringC;
6
+ Synchronizable: t.BooleanC;
7
+ Exportable: t.BooleanC;
8
+ NameSpace: t.StringC;
9
+ }>;
10
+ export declare const KeyArchiveKeyInfoArrayCodec: t.ArrayC<t.TypeC<{
11
+ Name: t.StringC;
12
+ Type: t.Type<import("./keyType").KeyArchiveKeyType, string, unknown>;
13
+ Data: t.StringC;
14
+ Synchronizable: t.BooleanC;
15
+ Exportable: t.BooleanC;
16
+ NameSpace: t.StringC;
17
+ }>>;
18
+ /**
19
+ * Record of key in a key archive
20
+ *
21
+ * @property NameSpace
22
+ * NameSpace to which the key belongs.
23
+ *
24
+ * @property Name
25
+ * Name of the key within the namespace
26
+ *
27
+ * @property Type
28
+ * Type of the key (also implies key format)
29
+ *
30
+ * @property Data
31
+ * Base64 encoded key data
32
+ *
33
+ * @property Synchronizable
34
+ * Whether key should be synced out of band of archiving.
35
+ * For future use - always false for now.
36
+ *
37
+ * @property Exportable
38
+ * Whether restored key should be exportable. Always true on archive.
39
+ * For future use on unarchive.
40
+ */
41
+ export declare type KeyArchiveKeyInfo = t.TypeOf<typeof KeyArchiveKeyInfoCodec>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyArchiveKeyInfoArrayCodec = exports.KeyArchiveKeyInfoCodec = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const t = tslib_1.__importStar(require("io-ts"));
6
+ const keyType_1 = require("./keyType");
7
+ const KeyArchiveKeyInfoRequiredProps = {
8
+ Name: t.string,
9
+ Type: keyType_1.KeyArchiveKeyTypeCodec,
10
+ Data: t.string,
11
+ Synchronizable: t.boolean,
12
+ Exportable: t.boolean,
13
+ NameSpace: t.string,
14
+ };
15
+ exports.KeyArchiveKeyInfoCodec = t.type(KeyArchiveKeyInfoRequiredProps, 'KeyArchiveKeyInfo');
16
+ exports.KeyArchiveKeyInfoArrayCodec = t.array(exports.KeyArchiveKeyInfoCodec, 'KeyArchiveKeyInfoArray');
17
+ //# sourceMappingURL=keyInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyInfo.js","sourceRoot":"","sources":["../../src/sudoKeyArchive/keyInfo.ts"],"names":[],"mappings":";;;;AAAA,iDAA0B;AAE1B,uCAAkD;AAElD,MAAM,8BAA8B,GAAG;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,IAAI,EAAE,gCAAsB;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM;IACd,cAAc,EAAE,CAAC,CAAC,OAAO;IACzB,UAAU,EAAE,CAAC,CAAC,OAAO;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM;CACpB,CAAA;AAEY,QAAA,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAC1C,8BAA8B,EAC9B,mBAAmB,CACpB,CAAA;AAEY,QAAA,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAChD,8BAAsB,EACtB,wBAAwB,CACzB,CAAA"}
@@ -0,0 +1,13 @@
1
+ import * as t from 'io-ts';
2
+ /**
3
+ * Key types supported in key archives
4
+ *
5
+ * These form part of the interoperable secure key archive format.
6
+ */
7
+ export declare enum KeyArchiveKeyType {
8
+ Password = "password",
9
+ PrivateKey = "privateKey",
10
+ PublicKey = "publicKey",
11
+ SymmetricKey = "symmetricKey"
12
+ }
13
+ export declare const KeyArchiveKeyTypeCodec: t.Type<KeyArchiveKeyType, string, unknown>;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyArchiveKeyTypeCodec = exports.KeyArchiveKeyType = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const t = tslib_1.__importStar(require("io-ts"));
6
+ /**
7
+ * Key types supported in key archives
8
+ *
9
+ * These form part of the interoperable secure key archive format.
10
+ */
11
+ var KeyArchiveKeyType;
12
+ (function (KeyArchiveKeyType) {
13
+ // Byte array of secret data - to be stored and retrievable using *Password
14
+ // methods on key managers
15
+ KeyArchiveKeyType["Password"] = "password";
16
+ // PKCS8 PrivateKey encoded RSA private key
17
+ KeyArchiveKeyType["PrivateKey"] = "privateKey";
18
+ // SPKI encoded RSA public key
19
+ KeyArchiveKeyType["PublicKey"] = "publicKey";
20
+ // Byte array of AES symmetric key
21
+ KeyArchiveKeyType["SymmetricKey"] = "symmetricKey";
22
+ })(KeyArchiveKeyType = exports.KeyArchiveKeyType || (exports.KeyArchiveKeyType = {}));
23
+ // Android is tolerating the following case insensitive alias key type
24
+ // names so we will do the same
25
+ const keyArchiveKeyTypeAlternatives = {
26
+ password: KeyArchiveKeyType.Password,
27
+ privatekey: KeyArchiveKeyType.PrivateKey,
28
+ private_key: KeyArchiveKeyType.PrivateKey,
29
+ publickey: KeyArchiveKeyType.PublicKey,
30
+ public_key: KeyArchiveKeyType.PublicKey,
31
+ symmetrickey: KeyArchiveKeyType.SymmetricKey,
32
+ symmetric_key: KeyArchiveKeyType.SymmetricKey,
33
+ };
34
+ const failureMessage = `Key type is not one of: ${Object.keys(keyArchiveKeyTypeAlternatives).join(',')}`; // eslint-disable-line tree-shaking/no-side-effects-in-initialization
35
+ const isKeyArchiveKeyType = (u) => t.string.is(u) && keyArchiveKeyTypeAlternatives[u.toLowerCase()] !== undefined;
36
+ exports.KeyArchiveKeyTypeCodec = new t.Type('KeyArchiveKeyType', isKeyArchiveKeyType, (u, c) => isKeyArchiveKeyType(u)
37
+ ? t.success(keyArchiveKeyTypeAlternatives[u.toLowerCase()])
38
+ : t.failure(u, c, failureMessage), t.identity);
39
+ //# sourceMappingURL=keyType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyType.js","sourceRoot":"","sources":["../../src/sudoKeyArchive/keyType.ts"],"names":[],"mappings":";;;;AAAA,iDAA0B;AAE1B;;;;GAIG;AACH,IAAY,iBAaX;AAbD,WAAY,iBAAiB;IAC3B,2EAA2E;IAC3E,0BAA0B;IAC1B,0CAAqB,CAAA;IAErB,2CAA2C;IAC3C,8CAAyB,CAAA;IAEzB,8BAA8B;IAC9B,4CAAuB,CAAA;IAEvB,kCAAkC;IAClC,kDAA6B,CAAA;AAC/B,CAAC,EAbW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAa5B;AAED,sEAAsE;AACtE,+BAA+B;AAC/B,MAAM,6BAA6B,GAAsC;IACvE,QAAQ,EAAE,iBAAiB,CAAC,QAAQ;IACpC,UAAU,EAAE,iBAAiB,CAAC,UAAU;IACxC,WAAW,EAAE,iBAAiB,CAAC,UAAU;IACzC,SAAS,EAAE,iBAAiB,CAAC,SAAS;IACtC,UAAU,EAAE,iBAAiB,CAAC,SAAS;IACvC,YAAY,EAAE,iBAAiB,CAAC,YAAY;IAC5C,aAAa,EAAE,iBAAiB,CAAC,YAAY;CAC9C,CAAA;AAED,MAAM,cAAc,GAAG,2BAA2B,MAAM,CAAC,IAAI,CAC3D,6BAA6B,CAC9B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA,CAAC,qEAAqE;AAEnF,MAAM,mBAAmB,GAAG,CAAC,CAAU,EAA0B,EAAE,CACjE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,SAAS,CAAA;AAEnE,QAAA,sBAAsB,GAAG,IAAI,CAAC,CAAC,IAAI,CAC9C,mBAAmB,EACnB,mBAAmB,EACnB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,mBAAmB,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC,EACrC,CAAC,CAAC,QAAQ,CACX,CAAA"}
@@ -0,0 +1,190 @@
1
+ import { KeyData, KeyDataKeyType } from '../sudoKeyManager';
2
+ import { SudoKeyManager } from '../sudoKeyManager/sudoKeyManager';
3
+ import { KeyArchiveKeyInfo } from './keyInfo';
4
+ import { KeyArchiveKeyType } from './keyType';
5
+ export interface SudoKeyArchive {
6
+ /**
7
+ * Loads keys from the secure store into the archive.
8
+ */
9
+ loadKeys(): Promise<void>;
10
+ /**
11
+ * Saves the keys in this archive to the secure store.
12
+ */
13
+ saveKeys(): Promise<void>;
14
+ /**
15
+ * Archives and encrypts the keys loaded into this archive.
16
+ *
17
+ * @param password
18
+ * The password to use to encrypt the archive. Or undefined if no password.
19
+ * Choice to have no password must be explicit.
20
+ *
21
+ * @returns Binary archive data.
22
+ */
23
+ archive(password: ArrayBuffer | undefined): Promise<ArrayBuffer>;
24
+ /**
25
+ * Decrypts and unarchives the keys in this archive.
26
+ *
27
+ * @param password
28
+ * The password to use to decrypt the archive if its a secure archive
29
+ * otherwise must be undefined.
30
+ *
31
+ * @throws {@link KeyArchiveDecodingError}
32
+ * If the archive is unable to be decoding according to the
33
+ * required structure.
34
+ *
35
+ * @throws {@link KeyArchiveIncorrectPasswordError}
36
+ * If the archive is a secure archive and the password is unable to be
37
+ * used to decrypt the encrypted keys.
38
+ *
39
+ * @throws {@link KeyArchivePasswordRequiredError}
40
+ * If the archive is a secure archive but no password is provided.
41
+ *
42
+ * @throws {@link KeyArchiveNoPasswordRequiredError}
43
+ * If the archive is an insecure archive but a password is provided.
44
+ */
45
+ unarchive(password: ArrayBuffer | undefined): Promise<void>;
46
+ /**
47
+ * Resets the archive by clearing loaded keys and archive data.
48
+ */
49
+ reset(): void;
50
+ /**
51
+ * Determines whether or not the archive contains the key with the
52
+ * specified name and type. The archive must be unarchived before the
53
+ * key can be searched.
54
+ *
55
+ * @param namespace the namespace of the key
56
+ * @param name the key name.
57
+ * @param type the key type.
58
+ *
59
+ * @return true if the specified key exists in the archive.
60
+ */
61
+ containsKey(namespace: string, name: string, type: KeyArchiveKeyType): boolean;
62
+ /**
63
+ * Retrieves the specified key data from the archive. The archive must
64
+ * be unarchived before the key data can be retrieved.
65
+ *
66
+ * @param namespace the namespace of the key
67
+ * @param name the key name
68
+ * @param type the key type
69
+ *
70
+ * @return a byte array containing the specified key data or null if it was not found.
71
+ *
72
+ * @throws {@link KeyNotFoundError}
73
+ * If key is not present in the archive.
74
+ */
75
+ getKeyData(namespace: string, name: string, type: KeyArchiveKeyType): ArrayBuffer;
76
+ /** @return the key types to exclude from the archive in an unmodifiable set. */
77
+ getExcludedKeyTypes(): ReadonlySet<KeyArchiveKeyType>;
78
+ /** @return the key names to exclude from the archive in an unmodifiable set. */
79
+ getExcludedKeys(): ReadonlySet<string>;
80
+ /** @return the meta-information associated with this archive in an unmodifiable map. */
81
+ getMetaInfo(): ReadonlyMap<string, string>;
82
+ }
83
+ export declare type KeyArchiveKeyInfoDecoded = KeyArchiveKeyInfo & {
84
+ Decoded: ArrayBuffer;
85
+ };
86
+ export declare class DefaultSudoKeyArchive implements SudoKeyArchive {
87
+ /**
88
+ * Version 2 format is not gzipped is what's currently generated
89
+ * by iOS and Android. We may want to add support for importing
90
+ * such archives.
91
+ */
92
+ static readonly PREGZIP_ARCHIVE_VERSION = 2;
93
+ /**
94
+ * Version 3 format permits both secure and insecure key archives.
95
+ *
96
+ * Insecure key archives are used where the archive will be stored
97
+ * in an otherwise known secure way e.g. via secure-vault-service
98
+ * where the encryption of the archive would then be handled by
99
+ * clients of that service.
100
+ *
101
+ * Secure key archives are password protected (via PBKDF2) a la version
102
+ * 2 format.
103
+ *
104
+ * Insecure format detail is:
105
+ *
106
+ * gzip(JSON.stringify(InsecureKeyArchive))
107
+ *
108
+ * Secure format detail is:
109
+ *
110
+ * gzip(JSON.stringify(SecureKeyArchive))
111
+ *
112
+ * where Keys property of SecureKeyArchive is:
113
+ *
114
+ * base64(encrypt(gzip(JSON.stringify(array of keys))))
115
+ *
116
+ * Where encrypt operation is 256-bit AES CBC-mode with IV SecureKeyArchive.IV
117
+ * and key generated by SecureKeyArchive.Rounds of PBKDF2 on the password
118
+ * salted with SecureKeyArchive.Salt.
119
+ */
120
+ static readonly CURRENT_ARCHIVE_VERSION = 3;
121
+ private readonly defaultKeyManager;
122
+ private readonly keyManagers;
123
+ private keyArchive;
124
+ private readonly excludedKeys;
125
+ private readonly excludedKeyTypes;
126
+ private readonly metaInfo;
127
+ private readonly keys;
128
+ /**
129
+ * Construct SudoKeyArchive
130
+ *
131
+ *
132
+ * @param keyManagers
133
+ * Key manager or array of key managers to either restore archive in to
134
+ * or construct archive from
135
+ *
136
+ * @param archiveData
137
+ * Array buffer of binary archive data to restore.
138
+ *
139
+ * @param excludedKeys
140
+ * Set of key names to exclude from archive or restore operation.
141
+ * Default: None
142
+ *
143
+ * @param excludedKeyTypes
144
+ * Set of key types to exclude from archive or restore operation.
145
+ * Default: {@link KeyArchiveKeyType.PublicKey}
146
+ *
147
+ * @param metaInfo
148
+ * Meta information to include with the key archive
149
+ *
150
+ * @throws {@link IllegalArgumentError}
151
+ * If no key managers are provided
152
+ *
153
+ * @throws {@link IllegalArgumentError}
154
+ * If multiple key managers are provided with the same namespace
155
+ *
156
+ * @throws {@link KeyArchiveDecodingError}
157
+ * If archiveData is provided and its binary data cannot be decoded
158
+ *
159
+ * @throws {@link KeyArchiveTypeError}
160
+ * If archiveData is provided and decodes to an unsupported archive
161
+ * type.
162
+ *
163
+ * @throws {@link KeyArchiveVersionError}
164
+ * If archiveData is provided and decodes to an unsupported archive
165
+ * version.
166
+ */
167
+ constructor(keyManagers: SudoKeyManager | SudoKeyManager[], options?: {
168
+ archiveData?: ArrayBuffer;
169
+ excludedKeys?: ReadonlySet<string>;
170
+ excludedKeyTypes?: ReadonlySet<KeyArchiveKeyType>;
171
+ metaInfo?: ReadonlyMap<string, string>;
172
+ });
173
+ /**
174
+ * Reads the binary data and converts it to JSON and then deserialises it
175
+ * into a KeyArchive
176
+ */
177
+ private loadArchive;
178
+ loadKeys(): Promise<void>;
179
+ saveKeys(): Promise<void>;
180
+ archive(password: ArrayBuffer | undefined): Promise<ArrayBuffer>;
181
+ unarchive(password: ArrayBuffer | undefined): Promise<void>;
182
+ reset(): void;
183
+ containsKey(namespace: string, name: string, type: KeyArchiveKeyType): boolean;
184
+ getKeyData(namespace: string, name: string, type: KeyArchiveKeyType): ArrayBuffer;
185
+ getExcludedKeys(): ReadonlySet<string>;
186
+ getExcludedKeyTypes(): ReadonlySet<KeyArchiveKeyType>;
187
+ getMetaInfo(): ReadonlyMap<string, string>;
188
+ }
189
+ export declare function keyArchiveInfoFromKeyData(keyData: KeyData): KeyArchiveKeyInfoDecoded;
190
+ export declare function keyArchiveKeyTypeFromKeyDataKeyType(keyDataKeyType: KeyDataKeyType): KeyArchiveKeyType;