@sudoplatform/sudo-common 7.1.2 → 8.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/configurationManager/defaultConfigurationManager.js +122 -0
- package/cjs/configurationManager/defaultConfigurationManager.js.map +1 -0
- package/cjs/errors/error.js +442 -0
- package/cjs/errors/error.js.map +1 -0
- package/cjs/index.js +13 -0
- package/cjs/index.js.map +1 -0
- package/cjs/logging/bunyanLogger.js +36 -0
- package/cjs/logging/bunyanLogger.js.map +1 -0
- package/cjs/logging/logger.js +77 -0
- package/cjs/logging/logger.js.map +1 -0
- package/cjs/sudoKeyArchive/index.js +8 -0
- package/cjs/sudoKeyArchive/index.js.map +1 -0
- package/cjs/sudoKeyArchive/keyArchive.js +84 -0
- package/cjs/sudoKeyArchive/keyArchive.js.map +1 -0
- package/cjs/sudoKeyArchive/keyInfo.js +17 -0
- package/cjs/sudoKeyArchive/keyInfo.js.map +1 -0
- package/cjs/sudoKeyArchive/keyType.js +39 -0
- package/cjs/sudoKeyArchive/keyType.js.map +1 -0
- package/cjs/sudoKeyArchive/sudoKeyArchive.js +373 -0
- package/cjs/sudoKeyArchive/sudoKeyArchive.js.map +1 -0
- package/cjs/sudoKeyManager/index.js +8 -0
- package/cjs/sudoKeyManager/index.js.map +1 -0
- package/cjs/sudoKeyManager/keyData.js +46 -0
- package/cjs/sudoKeyManager/keyData.js.map +1 -0
- package/cjs/sudoKeyManager/publicKey.js +9 -0
- package/cjs/sudoKeyManager/publicKey.js.map +1 -0
- package/cjs/sudoKeyManager/sudoCryptoProvider.js +12 -0
- package/cjs/sudoKeyManager/sudoCryptoProvider.js.map +1 -0
- package/cjs/sudoKeyManager/sudoKeyManager.js +140 -0
- package/cjs/sudoKeyManager/sudoKeyManager.js.map +1 -0
- package/cjs/types/types.js +45 -0
- package/cjs/types/types.js.map +1 -0
- package/cjs/utils/base64.js +71 -0
- package/cjs/utils/base64.js.map +1 -0
- package/cjs/utils/buffer.js +37 -0
- package/cjs/utils/buffer.js.map +1 -0
- package/cjs/utils/stream.js +70 -0
- package/cjs/utils/stream.js.map +1 -0
- package/lib/configurationManager/defaultConfigurationManager.js +106 -158
- package/lib/configurationManager/defaultConfigurationManager.js.map +1 -0
- package/lib/errors/error.js +226 -438
- package/lib/errors/error.js.map +1 -0
- package/lib/index.js +10 -109
- package/lib/index.js.map +1 -0
- package/lib/logging/bunyanLogger.js +29 -41
- package/lib/logging/bunyanLogger.js.map +1 -0
- package/lib/logging/logger.js +66 -92
- package/lib/logging/logger.js.map +1 -0
- package/lib/sudoKeyArchive/index.js +5 -57
- package/lib/sudoKeyArchive/index.js.map +1 -0
- package/lib/sudoKeyArchive/keyArchive.js +69 -96
- package/lib/sudoKeyArchive/keyArchive.js.map +1 -0
- package/lib/sudoKeyArchive/keyInfo.js +11 -49
- package/lib/sudoKeyArchive/keyInfo.js.map +1 -0
- package/lib/sudoKeyArchive/keyType.js +27 -37
- package/lib/sudoKeyArchive/keyType.js.map +1 -0
- package/lib/sudoKeyArchive/sudoKeyArchive.js +351 -444
- package/lib/sudoKeyArchive/sudoKeyArchive.js.map +1 -0
- package/lib/sudoKeyManager/index.js +5 -57
- package/lib/sudoKeyManager/index.js.map +1 -0
- package/lib/sudoKeyManager/keyData.js +38 -33
- package/lib/sudoKeyManager/keyData.js.map +1 -0
- package/lib/sudoKeyManager/publicKey.js +5 -12
- package/lib/sudoKeyManager/publicKey.js.map +1 -0
- package/lib/sudoKeyManager/sudoCryptoProvider.js +8 -26
- package/lib/sudoKeyManager/sudoCryptoProvider.js.map +1 -0
- package/lib/sudoKeyManager/sudoKeyManager.js +135 -173
- package/lib/sudoKeyManager/sudoKeyManager.js.map +1 -0
- package/lib/types/types.js +27 -33
- package/lib/types/types.js.map +1 -0
- package/lib/utils/base64.js +63 -93
- package/lib/utils/base64.js.map +1 -0
- package/lib/utils/buffer.js +28 -46
- package/lib/utils/buffer.js.map +1 -0
- package/lib/utils/stream.js +63 -0
- package/lib/utils/stream.js.map +1 -0
- package/package.json +44 -28
- package/{lib → types}/configurationManager/defaultConfigurationManager.d.ts +0 -0
- package/{lib → types}/errors/error.d.ts +0 -0
- package/{lib → types}/index.d.ts +1 -0
- package/{lib → types}/logging/bunyanLogger.d.ts +0 -0
- package/{lib → types}/logging/logger.d.ts +0 -0
- package/{lib → types}/sudoKeyArchive/index.d.ts +0 -0
- package/{lib → types}/sudoKeyArchive/keyArchive.d.ts +8 -8
- package/{lib → types}/sudoKeyArchive/keyInfo.d.ts +0 -0
- package/{lib → types}/sudoKeyArchive/keyType.d.ts +0 -0
- package/{lib → types}/sudoKeyArchive/sudoKeyArchive.d.ts +0 -0
- package/{lib → types}/sudoKeyManager/index.d.ts +0 -0
- package/{lib → types}/sudoKeyManager/keyData.d.ts +0 -0
- package/{lib → types}/sudoKeyManager/publicKey.d.ts +0 -0
- package/{lib → types}/sudoKeyManager/sudoCryptoProvider.d.ts +0 -0
- package/{lib → types}/sudoKeyManager/sudoKeyManager.d.ts +0 -0
- package/{lib → types}/types/types.d.ts +0 -0
- package/{lib → types}/utils/base64.d.ts +0 -0
- package/{lib → types}/utils/buffer.d.ts +0 -0
- package/types/utils/stream.d.ts +6 -0
- package/.babelrc +0 -10
- package/.eslintrc.js +0 -91
- package/.gitignore +0 -14
- package/.gitlab-ci.yml +0 -101
- package/.npmignore +0 -1
- package/.prettierignore +0 -3
- package/.prettierrc.js +0 -7
- package/.publisher.json +0 -7
- package/.vscode/settings.json +0 -5
- package/.yarn/releases/yarn-1.22.19.cjs +0 -147529
- package/.yarnrc +0 -5
- package/dependencies-report.json +0 -640
- package/docs/.nojekyll +0 -1
- package/docs/assets/highlight.css +0 -57
- package/docs/assets/main.js +0 -54
- package/docs/assets/search.js +0 -1
- package/docs/assets/style.css +0 -1224
- package/docs/assets/widgets.png +0 -0
- package/docs/assets/widgets@2x.png +0 -0
- package/docs/classes/AccountLockedError.html +0 -163
- package/docs/classes/AuthenticationError.html +0 -169
- package/docs/classes/Base64.html +0 -245
- package/docs/classes/Buffer.html +0 -158
- package/docs/classes/ConfigurationNotSetError.html +0 -164
- package/docs/classes/ConfigurationSetNotFoundError.html +0 -168
- package/docs/classes/DecodeError.html +0 -168
- package/docs/classes/DefaultConfigurationManager.html +0 -213
- package/docs/classes/DefaultLogger.html +0 -291
- package/docs/classes/DefaultSudoKeyArchive.html +0 -363
- package/docs/classes/DefaultSudoKeyManager.html +0 -814
- package/docs/classes/FatalError.html +0 -169
- package/docs/classes/IllegalArgumentError.html +0 -168
- package/docs/classes/IllegalStateError.html +0 -169
- package/docs/classes/InsufficientEntitlementsError.html +0 -164
- package/docs/classes/InvalidOwnershipProofError.html +0 -163
- package/docs/classes/InvalidTokenError.html +0 -163
- package/docs/classes/KeyArchiveDecodingError.html +0 -168
- package/docs/classes/KeyArchiveIncorrectPasswordError.html +0 -168
- package/docs/classes/KeyArchiveMissingError.html +0 -168
- package/docs/classes/KeyArchiveNoPasswordRequiredError.html +0 -168
- package/docs/classes/KeyArchivePasswordRequiredError.html +0 -168
- package/docs/classes/KeyArchiveTypeError.html +0 -168
- package/docs/classes/KeyArchiveUnknownKeyTypeError.html +0 -168
- package/docs/classes/KeyArchiveVersionError.html +0 -168
- package/docs/classes/KeyNotFoundError.html +0 -168
- package/docs/classes/KeyStoreNotExportableError.html +0 -168
- package/docs/classes/LimitExceededError.html +0 -164
- package/docs/classes/NoEntitlementsError.html +0 -163
- package/docs/classes/NotAuthorizedError.html +0 -169
- package/docs/classes/NotRegisteredError.html +0 -168
- package/docs/classes/NotSignedInError.html +0 -164
- package/docs/classes/OperationNotImplementedError.html +0 -168
- package/docs/classes/RegisterError.html +0 -169
- package/docs/classes/RequestFailedError.html +0 -189
- package/docs/classes/ServiceError.html +0 -170
- package/docs/classes/SignOutError.html +0 -168
- package/docs/classes/SudoCryptoProviderDefaults.html +0 -106
- package/docs/classes/UnknownGraphQLError.html +0 -169
- package/docs/classes/UnrecognizedAlgorithmError.html +0 -168
- package/docs/classes/UserNotConfirmedError.html +0 -164
- package/docs/classes/VersionMismatchError.html +0 -166
- package/docs/enums/CachePolicy.html +0 -72
- package/docs/enums/EncryptionAlgorithm.html +0 -80
- package/docs/enums/KeyArchiveKeyType.html +0 -86
- package/docs/enums/KeyDataKeyFormat.html +0 -92
- package/docs/enums/KeyDataKeyType.html +0 -85
- package/docs/enums/ListOperationResultStatus.html +0 -85
- package/docs/enums/PublicKeyFormat.html +0 -68
- package/docs/functions/isAppSyncNetworkError.html +0 -147
- package/docs/functions/isInsecureKeyArchive.html +0 -147
- package/docs/functions/isSecureKeyArchive.html +0 -147
- package/docs/functions/isUnrecognizedKeyArchive.html +0 -147
- package/docs/functions/keyArchiveInfoFromKeyData.html +0 -147
- package/docs/functions/keyArchiveKeyTypeFromKeyDataKeyType.html +0 -147
- package/docs/functions/mapGraphQLToClientError.html +0 -154
- package/docs/functions/mapNetworkErrorToClientError.html +0 -154
- package/docs/index.html +0 -146
- package/docs/interfaces/AsymmetricEncryptionOptions.html +0 -68
- package/docs/interfaces/BooleanFilter.html +0 -75
- package/docs/interfaces/ConfigurationManager.html +0 -200
- package/docs/interfaces/KeyData.html +0 -106
- package/docs/interfaces/ListOperationFailureResult.html +0 -76
- package/docs/interfaces/ListOperationPartialResult.html +0 -102
- package/docs/interfaces/ListOperationSuccessResult.html +0 -90
- package/docs/interfaces/ListOutput.html +0 -80
- package/docs/interfaces/Logger.html +0 -251
- package/docs/interfaces/Owner.html +0 -72
- package/docs/interfaces/PublicKey.html +0 -72
- package/docs/interfaces/ServiceCompatibilityInfo.html +0 -110
- package/docs/interfaces/StringFilter.html +0 -82
- package/docs/interfaces/SudoCryptoProvider.html +0 -865
- package/docs/interfaces/SudoKeyArchive.html +0 -257
- package/docs/interfaces/SudoKeyManager.html +0 -848
- package/docs/interfaces/SymmetricEncryptionOptions.html +0 -75
- package/docs/interfaces/ValidationResult.html +0 -83
- package/docs/modules.html +0 -248
- package/docs/types/AppSyncError.html +0 -138
- package/docs/types/AppSyncNetworkError.html +0 -138
- package/docs/types/InsecureKeyArchive.html +0 -138
- package/docs/types/KeyArchive.html +0 -138
- package/docs/types/KeyArchiveKeyInfo.html +0 -154
- package/docs/types/KeyArchiveKeyInfoDecoded.html +0 -138
- package/docs/types/ListOperationResult.html +0 -148
- package/docs/types/SecureKeyArchive.html +0 -138
- package/docs/types/Subset.html +0 -144
- package/docs/types/UnrecognizedKeyArchive.html +0 -138
- package/docs/variables/CURRENT_ARCHIVE_VERSION.html +0 -138
- package/docs/variables/InsecureKeyArchiveCodec.html +0 -138
- package/docs/variables/InsecureKeyArchiveType.html +0 -138
- package/docs/variables/KeyArchiveCodec.html +0 -138
- package/docs/variables/KeyArchiveKeyInfoArrayCodec.html +0 -138
- package/docs/variables/KeyArchiveKeyInfoCodec.html +0 -138
- package/docs/variables/KeyArchiveKeyTypeCodec.html +0 -138
- package/docs/variables/SecureKeyArchiveCodec.html +0 -138
- package/docs/variables/SecureKeyArchiveType.html +0 -138
- package/docs/variables/UnrecognizedKeyArchiveCodec.html +0 -138
- package/github/.babelrc +0 -10
- package/github/.eslintrc.js +0 -91
- package/github/.gitignore +0 -14
- package/github/.gitlab-ci.yml +0 -101
- package/github/.npmignore +0 -1
- package/github/.prettierignore +0 -3
- package/github/.prettierrc.js +0 -7
- package/github/.publisher.json +0 -7
- package/github/.vscode/settings.json +0 -5
- package/github/.yarn/releases/yarn-1.22.19.cjs +0 -147529
- package/github/.yarnrc +0 -5
- package/github/CHANGELOG.md +0 -51
- package/github/README.md +0 -8
- package/github/bin/outdated-with-suppression.sh +0 -203
- package/github/bin/suppress-audit.sh +0 -15
- package/github/bin/suppress-outdated.sh +0 -60
- package/github/bin/yarn-audit-with-suppression.sh +0 -19
- package/github/docs/.nojekyll +0 -1
- package/github/docs/assets/highlight.css +0 -57
- package/github/docs/assets/main.js +0 -54
- package/github/docs/assets/search.js +0 -1
- package/github/docs/assets/style.css +0 -1224
- package/github/docs/assets/widgets.png +0 -0
- package/github/docs/assets/widgets@2x.png +0 -0
- package/github/docs/classes/AccountLockedError.html +0 -163
- package/github/docs/classes/AuthenticationError.html +0 -169
- package/github/docs/classes/Base64.html +0 -245
- package/github/docs/classes/Buffer.html +0 -158
- package/github/docs/classes/ConfigurationNotSetError.html +0 -164
- package/github/docs/classes/ConfigurationSetNotFoundError.html +0 -168
- package/github/docs/classes/DecodeError.html +0 -168
- package/github/docs/classes/DefaultConfigurationManager.html +0 -213
- package/github/docs/classes/DefaultLogger.html +0 -291
- package/github/docs/classes/DefaultSudoKeyArchive.html +0 -363
- package/github/docs/classes/DefaultSudoKeyManager.html +0 -814
- package/github/docs/classes/FatalError.html +0 -169
- package/github/docs/classes/IllegalArgumentError.html +0 -168
- package/github/docs/classes/IllegalStateError.html +0 -169
- package/github/docs/classes/InsufficientEntitlementsError.html +0 -164
- package/github/docs/classes/InvalidOwnershipProofError.html +0 -163
- package/github/docs/classes/InvalidTokenError.html +0 -163
- package/github/docs/classes/KeyArchiveDecodingError.html +0 -168
- package/github/docs/classes/KeyArchiveIncorrectPasswordError.html +0 -168
- package/github/docs/classes/KeyArchiveMissingError.html +0 -168
- package/github/docs/classes/KeyArchiveNoPasswordRequiredError.html +0 -168
- package/github/docs/classes/KeyArchivePasswordRequiredError.html +0 -168
- package/github/docs/classes/KeyArchiveTypeError.html +0 -168
- package/github/docs/classes/KeyArchiveUnknownKeyTypeError.html +0 -168
- package/github/docs/classes/KeyArchiveVersionError.html +0 -168
- package/github/docs/classes/KeyNotFoundError.html +0 -168
- package/github/docs/classes/KeyStoreNotExportableError.html +0 -168
- package/github/docs/classes/LimitExceededError.html +0 -164
- package/github/docs/classes/NoEntitlementsError.html +0 -163
- package/github/docs/classes/NotAuthorizedError.html +0 -169
- package/github/docs/classes/NotRegisteredError.html +0 -168
- package/github/docs/classes/NotSignedInError.html +0 -164
- package/github/docs/classes/OperationNotImplementedError.html +0 -168
- package/github/docs/classes/RegisterError.html +0 -169
- package/github/docs/classes/RequestFailedError.html +0 -189
- package/github/docs/classes/ServiceError.html +0 -170
- package/github/docs/classes/SignOutError.html +0 -168
- package/github/docs/classes/SudoCryptoProviderDefaults.html +0 -106
- package/github/docs/classes/UnknownGraphQLError.html +0 -169
- package/github/docs/classes/UnrecognizedAlgorithmError.html +0 -168
- package/github/docs/classes/UserNotConfirmedError.html +0 -164
- package/github/docs/classes/VersionMismatchError.html +0 -166
- package/github/docs/enums/CachePolicy.html +0 -72
- package/github/docs/enums/EncryptionAlgorithm.html +0 -80
- package/github/docs/enums/KeyArchiveKeyType.html +0 -86
- package/github/docs/enums/KeyDataKeyFormat.html +0 -92
- package/github/docs/enums/KeyDataKeyType.html +0 -85
- package/github/docs/enums/ListOperationResultStatus.html +0 -85
- package/github/docs/enums/PublicKeyFormat.html +0 -68
- package/github/docs/functions/isAppSyncNetworkError.html +0 -147
- package/github/docs/functions/isInsecureKeyArchive.html +0 -147
- package/github/docs/functions/isSecureKeyArchive.html +0 -147
- package/github/docs/functions/isUnrecognizedKeyArchive.html +0 -147
- package/github/docs/functions/keyArchiveInfoFromKeyData.html +0 -147
- package/github/docs/functions/keyArchiveKeyTypeFromKeyDataKeyType.html +0 -147
- package/github/docs/functions/mapGraphQLToClientError.html +0 -154
- package/github/docs/functions/mapNetworkErrorToClientError.html +0 -154
- package/github/docs/index.html +0 -146
- package/github/docs/interfaces/AsymmetricEncryptionOptions.html +0 -68
- package/github/docs/interfaces/BooleanFilter.html +0 -75
- package/github/docs/interfaces/ConfigurationManager.html +0 -200
- package/github/docs/interfaces/KeyData.html +0 -106
- package/github/docs/interfaces/ListOperationFailureResult.html +0 -76
- package/github/docs/interfaces/ListOperationPartialResult.html +0 -102
- package/github/docs/interfaces/ListOperationSuccessResult.html +0 -90
- package/github/docs/interfaces/ListOutput.html +0 -80
- package/github/docs/interfaces/Logger.html +0 -251
- package/github/docs/interfaces/Owner.html +0 -72
- package/github/docs/interfaces/PublicKey.html +0 -72
- package/github/docs/interfaces/ServiceCompatibilityInfo.html +0 -110
- package/github/docs/interfaces/StringFilter.html +0 -82
- package/github/docs/interfaces/SudoCryptoProvider.html +0 -865
- package/github/docs/interfaces/SudoKeyArchive.html +0 -257
- package/github/docs/interfaces/SudoKeyManager.html +0 -848
- package/github/docs/interfaces/SymmetricEncryptionOptions.html +0 -75
- package/github/docs/interfaces/ValidationResult.html +0 -83
- package/github/docs/modules.html +0 -248
- package/github/docs/types/AppSyncError.html +0 -138
- package/github/docs/types/AppSyncNetworkError.html +0 -138
- package/github/docs/types/InsecureKeyArchive.html +0 -138
- package/github/docs/types/KeyArchive.html +0 -138
- package/github/docs/types/KeyArchiveKeyInfo.html +0 -154
- package/github/docs/types/KeyArchiveKeyInfoDecoded.html +0 -138
- package/github/docs/types/ListOperationResult.html +0 -148
- package/github/docs/types/SecureKeyArchive.html +0 -138
- package/github/docs/types/Subset.html +0 -144
- package/github/docs/types/UnrecognizedKeyArchive.html +0 -138
- package/github/docs/variables/CURRENT_ARCHIVE_VERSION.html +0 -138
- package/github/docs/variables/InsecureKeyArchiveCodec.html +0 -138
- package/github/docs/variables/InsecureKeyArchiveType.html +0 -138
- package/github/docs/variables/KeyArchiveCodec.html +0 -138
- package/github/docs/variables/KeyArchiveKeyInfoArrayCodec.html +0 -138
- package/github/docs/variables/KeyArchiveKeyInfoCodec.html +0 -138
- package/github/docs/variables/KeyArchiveKeyTypeCodec.html +0 -138
- package/github/docs/variables/SecureKeyArchiveCodec.html +0 -138
- package/github/docs/variables/SecureKeyArchiveType.html +0 -138
- package/github/docs/variables/UnrecognizedKeyArchiveCodec.html +0 -138
- package/github/jest.config.json +0 -14
- package/github/package.json +0 -91
- package/github/src/configurationManager/defaultConfigurationManager.ts +0 -281
- package/github/src/errors/error.ts +0 -469
- package/github/src/index.ts +0 -8
- package/github/src/logging/bunyanLogger.ts +0 -47
- package/github/src/logging/logger.ts +0 -164
- package/github/src/sudoKeyArchive/index.ts +0 -4
- package/github/src/sudoKeyArchive/keyArchive.ts +0 -120
- package/github/src/sudoKeyArchive/keyInfo.ts +0 -47
- package/github/src/sudoKeyArchive/keyType.ts +0 -50
- package/github/src/sudoKeyArchive/sudoKeyArchive.ts +0 -591
- package/github/src/sudoKeyManager/index.ts +0 -4
- package/github/src/sudoKeyManager/keyData.ts +0 -60
- package/github/src/sudoKeyManager/publicKey.ts +0 -9
- package/github/src/sudoKeyManager/sudoCryptoProvider.ts +0 -416
- package/github/src/sudoKeyManager/sudoKeyManager.ts +0 -609
- package/github/src/types/types.ts +0 -129
- package/github/src/utils/base64.ts +0 -75
- package/github/src/utils/buffer.ts +0 -39
- package/github/test/integration/defaultConfigurationManager.spec.ts +0 -85
- package/github/test/matchers.ts +0 -122
- package/github/test/unit/configurationManager/defaultConfigurationManager.spec.ts +0 -506
- package/github/test/unit/errors/error.spec.ts +0 -115
- package/github/test/unit/keyType.spec.ts +0 -54
- package/github/test/unit/logging/logger.spec.ts +0 -182
- package/github/test/unit/sudoKeyArchive.spec.ts +0 -1609
- package/github/test/unit/sudoKeyManager.spec.ts +0 -1045
- package/github/test/unit/utils/base64.spec.ts +0 -45
- package/github/test/unit/utils/buffer.spec.ts +0 -45
- package/github/test/unit/utils/listOperationResult.spec.ts +0 -84
- package/github/tsconfig.json +0 -20
- package/github/tsconfig.test.json +0 -7
- package/github/yarn.lock +0 -5922
- package/jest.config.json +0 -14
- package/src/configurationManager/defaultConfigurationManager.ts +0 -281
- package/src/errors/error.ts +0 -469
- package/src/index.ts +0 -8
- package/src/logging/bunyanLogger.ts +0 -47
- package/src/logging/logger.ts +0 -164
- package/src/sudoKeyArchive/index.ts +0 -4
- package/src/sudoKeyArchive/keyArchive.ts +0 -120
- package/src/sudoKeyArchive/keyInfo.ts +0 -47
- package/src/sudoKeyArchive/keyType.ts +0 -50
- package/src/sudoKeyArchive/sudoKeyArchive.ts +0 -591
- package/src/sudoKeyManager/index.ts +0 -4
- package/src/sudoKeyManager/keyData.ts +0 -60
- package/src/sudoKeyManager/publicKey.ts +0 -9
- package/src/sudoKeyManager/sudoCryptoProvider.ts +0 -416
- package/src/sudoKeyManager/sudoKeyManager.ts +0 -609
- package/src/types/types.ts +0 -129
- package/src/utils/base64.ts +0 -75
- package/src/utils/buffer.ts +0 -39
- package/test/integration/defaultConfigurationManager.spec.ts +0 -85
- package/test/matchers.ts +0 -122
- package/test/unit/configurationManager/defaultConfigurationManager.spec.ts +0 -506
- package/test/unit/errors/error.spec.ts +0 -115
- package/test/unit/keyType.spec.ts +0 -54
- package/test/unit/logging/logger.spec.ts +0 -182
- package/test/unit/sudoKeyArchive.spec.ts +0 -1609
- package/test/unit/sudoKeyManager.spec.ts +0 -1045
- package/test/unit/utils/base64.spec.ts +0 -45
- package/test/unit/utils/buffer.spec.ts +0 -45
- package/test/unit/utils/listOperationResult.spec.ts +0 -84
- package/tsconfig.json +0 -20
- package/tsconfig.test.json +0 -7
- 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,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,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,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,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,373 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.keyArchiveKeyTypeFromKeyDataKeyType = exports.keyArchiveInfoFromKeyData = exports.DefaultSudoKeyArchive = void 0;
|
|
4
|
+
const fflate_1 = require("fflate");
|
|
5
|
+
const Either_1 = require("fp-ts/lib/Either");
|
|
6
|
+
const error_1 = require("../errors/error");
|
|
7
|
+
const sudoKeyManager_1 = require("../sudoKeyManager");
|
|
8
|
+
const sudoCryptoProvider_1 = require("../sudoKeyManager/sudoCryptoProvider");
|
|
9
|
+
const base64_1 = require("../utils/base64");
|
|
10
|
+
const buffer_1 = require("../utils/buffer");
|
|
11
|
+
const keyArchive_1 = require("./keyArchive");
|
|
12
|
+
const keyInfo_1 = require("./keyInfo");
|
|
13
|
+
const keyType_1 = require("./keyType");
|
|
14
|
+
class DefaultSudoKeyArchive {
|
|
15
|
+
/**
|
|
16
|
+
* Construct SudoKeyArchive
|
|
17
|
+
*
|
|
18
|
+
*
|
|
19
|
+
* @param keyManagers
|
|
20
|
+
* Key manager or array of key managers to either restore archive in to
|
|
21
|
+
* or construct archive from
|
|
22
|
+
*
|
|
23
|
+
* @param archiveData
|
|
24
|
+
* Array buffer of binary archive data to restore.
|
|
25
|
+
*
|
|
26
|
+
* @param excludedKeys
|
|
27
|
+
* Set of key names to exclude from archive or restore operation.
|
|
28
|
+
* Default: None
|
|
29
|
+
*
|
|
30
|
+
* @param excludedKeyTypes
|
|
31
|
+
* Set of key types to exclude from archive or restore operation.
|
|
32
|
+
* Default: {@link KeyArchiveKeyType.PublicKey}
|
|
33
|
+
*
|
|
34
|
+
* @param metaInfo
|
|
35
|
+
* Meta information to include with the key archive
|
|
36
|
+
*
|
|
37
|
+
* @throws {@link IllegalArgumentError}
|
|
38
|
+
* If no key managers are provided
|
|
39
|
+
*
|
|
40
|
+
* @throws {@link IllegalArgumentError}
|
|
41
|
+
* If multiple key managers are provided with the same namespace
|
|
42
|
+
*
|
|
43
|
+
* @throws {@link KeyArchiveDecodingError}
|
|
44
|
+
* If archiveData is provided and its binary data cannot be decoded
|
|
45
|
+
*
|
|
46
|
+
* @throws {@link KeyArchiveTypeError}
|
|
47
|
+
* If archiveData is provided and decodes to an unsupported archive
|
|
48
|
+
* type.
|
|
49
|
+
*
|
|
50
|
+
* @throws {@link KeyArchiveVersionError}
|
|
51
|
+
* If archiveData is provided and decodes to an unsupported archive
|
|
52
|
+
* version.
|
|
53
|
+
*/
|
|
54
|
+
constructor(keyManagers, options) {
|
|
55
|
+
this.keyManagers = {};
|
|
56
|
+
this.excludedKeys = new Set();
|
|
57
|
+
this.excludedKeyTypes = new Set();
|
|
58
|
+
this.metaInfo = new Map();
|
|
59
|
+
this.keys = new Map();
|
|
60
|
+
if (Array.isArray(keyManagers)) {
|
|
61
|
+
if (keyManagers.length === 0) {
|
|
62
|
+
throw new error_1.IllegalArgumentError('Must provide at least one key manager');
|
|
63
|
+
}
|
|
64
|
+
keyManagers.forEach((keyManager) => {
|
|
65
|
+
if (this.keyManagers[keyManager.namespace]) {
|
|
66
|
+
throw new error_1.IllegalArgumentError(`Multiple key managers provided with namespace ${keyManager.namespace}`);
|
|
67
|
+
}
|
|
68
|
+
this.keyManagers[keyManager.namespace] = keyManager;
|
|
69
|
+
});
|
|
70
|
+
this.defaultKeyManager = keyManagers[0];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
this.keyManagers[keyManagers.namespace] = keyManagers;
|
|
74
|
+
this.defaultKeyManager = keyManagers;
|
|
75
|
+
}
|
|
76
|
+
if (options?.archiveData) {
|
|
77
|
+
this.keyArchive = this.loadArchive(options.archiveData);
|
|
78
|
+
}
|
|
79
|
+
// We take copies of the input parameters so we own the data
|
|
80
|
+
if (options?.excludedKeys) {
|
|
81
|
+
options?.excludedKeys.forEach((excludedKey) => this.excludedKeys.add(excludedKey));
|
|
82
|
+
}
|
|
83
|
+
if (options?.excludedKeyTypes) {
|
|
84
|
+
options?.excludedKeyTypes.forEach((excludedKeyType) => this.excludedKeyTypes.add(excludedKeyType));
|
|
85
|
+
}
|
|
86
|
+
if (options?.metaInfo?.size) {
|
|
87
|
+
for (const [key, value] of options?.metaInfo?.entries()) {
|
|
88
|
+
this.metaInfo.set(key, value);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Reads the binary data and converts it to JSON and then deserialises it
|
|
94
|
+
* into a KeyArchive
|
|
95
|
+
*/
|
|
96
|
+
loadArchive(archiveData) {
|
|
97
|
+
let unzipped;
|
|
98
|
+
try {
|
|
99
|
+
unzipped = (0, fflate_1.gunzipSync)(new Uint8Array(archiveData));
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
103
|
+
}
|
|
104
|
+
let keyArchive;
|
|
105
|
+
try {
|
|
106
|
+
const decoded = keyArchive_1.KeyArchiveCodec.decode(JSON.parse(buffer_1.Buffer.toString(unzipped)));
|
|
107
|
+
if ((0, Either_1.isLeft)(decoded)) {
|
|
108
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
109
|
+
}
|
|
110
|
+
keyArchive = decoded.right;
|
|
111
|
+
}
|
|
112
|
+
catch (err) {
|
|
113
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
114
|
+
}
|
|
115
|
+
if ((0, keyArchive_1.isUnrecognizedKeyArchive)(keyArchive)) {
|
|
116
|
+
if (keyArchive.Type &&
|
|
117
|
+
keyArchive.Type !== keyArchive_1.SecureKeyArchiveType &&
|
|
118
|
+
keyArchive.Type !== keyArchive_1.InsecureKeyArchiveType) {
|
|
119
|
+
throw new error_1.KeyArchiveTypeError(keyArchive.Type);
|
|
120
|
+
}
|
|
121
|
+
// Only support DefaultSudoKeyArchive.CURRENT_ARCHIVE_VERSION for now.
|
|
122
|
+
if (keyArchive.Version !== undefined &&
|
|
123
|
+
keyArchive.Version !== DefaultSudoKeyArchive.CURRENT_ARCHIVE_VERSION) {
|
|
124
|
+
throw new error_1.KeyArchiveVersionError(keyArchive.Version);
|
|
125
|
+
}
|
|
126
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
127
|
+
}
|
|
128
|
+
return keyArchive;
|
|
129
|
+
}
|
|
130
|
+
async loadKeys() {
|
|
131
|
+
for (const keyManager of Object.values(this.keyManagers)) {
|
|
132
|
+
await keyManager.exportKeys().then((exported) => {
|
|
133
|
+
exported.forEach((data) => {
|
|
134
|
+
const keyArchiveInfoDecoded = keyArchiveInfoFromKeyData(data);
|
|
135
|
+
if (!this.excludedKeyTypes.has(keyArchiveInfoDecoded.Type) &&
|
|
136
|
+
!this.excludedKeys.has(data.name)) {
|
|
137
|
+
this.keys.set(`${keyArchiveInfoDecoded.NameSpace}:${keyArchiveInfoDecoded.Type}:${keyArchiveInfoDecoded.Name}`, keyArchiveInfoDecoded);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async saveKeys() {
|
|
144
|
+
for (const info of this.keys.values()) {
|
|
145
|
+
const keyManager = this.keyManagers[info.NameSpace];
|
|
146
|
+
if (!keyManager)
|
|
147
|
+
continue;
|
|
148
|
+
if (this.excludedKeyTypes.has(info.Type))
|
|
149
|
+
continue;
|
|
150
|
+
if (this.excludedKeys.has(info.Name))
|
|
151
|
+
continue;
|
|
152
|
+
const keyData = info.Decoded;
|
|
153
|
+
switch (info.Type) {
|
|
154
|
+
case keyType_1.KeyArchiveKeyType.Password:
|
|
155
|
+
await keyManager.addPassword(keyData, info.Name);
|
|
156
|
+
break;
|
|
157
|
+
case keyType_1.KeyArchiveKeyType.PrivateKey:
|
|
158
|
+
await keyManager.addPrivateKey(keyData, info.Name);
|
|
159
|
+
break;
|
|
160
|
+
case keyType_1.KeyArchiveKeyType.PublicKey:
|
|
161
|
+
await keyManager.addPublicKey(keyData, info.Name);
|
|
162
|
+
break;
|
|
163
|
+
case keyType_1.KeyArchiveKeyType.SymmetricKey:
|
|
164
|
+
await keyManager.addSymmetricKey(keyData, info.Name);
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
throw new error_1.KeyArchiveUnknownKeyTypeError(`Key archive key type ${info.Type} is not recognized`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async archive(password) {
|
|
172
|
+
const keys = [];
|
|
173
|
+
for (const key of this.keys.values()) {
|
|
174
|
+
keys.push({
|
|
175
|
+
NameSpace: key.NameSpace,
|
|
176
|
+
Name: key.Name,
|
|
177
|
+
Data: key.Data,
|
|
178
|
+
Type: key.Type,
|
|
179
|
+
Synchronizable: key.Synchronizable,
|
|
180
|
+
Exportable: key.Exportable,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
let keyArchive;
|
|
184
|
+
if (!password) {
|
|
185
|
+
const insecureKeyArchive = {
|
|
186
|
+
Type: 'Insecure',
|
|
187
|
+
MetaInfo: {},
|
|
188
|
+
Version: DefaultSudoKeyArchive.CURRENT_ARCHIVE_VERSION,
|
|
189
|
+
Keys: keys,
|
|
190
|
+
};
|
|
191
|
+
keyArchive = insecureKeyArchive;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
const salt = await this.defaultKeyManager.generateRandomData(sudoCryptoProvider_1.SudoCryptoProviderDefaults.pbkdfSaltSize);
|
|
195
|
+
const b64Salt = base64_1.Base64.encode(salt);
|
|
196
|
+
const key = await this.defaultKeyManager.generateSymmetricKeyFromPassword(password, salt, {
|
|
197
|
+
rounds: sudoCryptoProvider_1.SudoCryptoProviderDefaults.pbkdfRounds,
|
|
198
|
+
});
|
|
199
|
+
const serializedKeys = JSON.stringify(keys);
|
|
200
|
+
const compressedSerializedKeys = (0, fflate_1.gzipSync)(buffer_1.Buffer.fromString(serializedKeys), {
|
|
201
|
+
level: 9,
|
|
202
|
+
});
|
|
203
|
+
// Don't strictly need a randomly generated IV here but no harm either
|
|
204
|
+
const iv = await this.defaultKeyManager.generateRandomData(sudoCryptoProvider_1.SudoCryptoProviderDefaults.aesIVSize);
|
|
205
|
+
const encryptedKeys = await this.defaultKeyManager.encryptWithSymmetricKey(key, compressedSerializedKeys, { iv });
|
|
206
|
+
const secureKeyArchive = {
|
|
207
|
+
Type: 'Secure',
|
|
208
|
+
Version: DefaultSudoKeyArchive.CURRENT_ARCHIVE_VERSION,
|
|
209
|
+
MetaInfo: {},
|
|
210
|
+
Salt: b64Salt,
|
|
211
|
+
Rounds: sudoCryptoProvider_1.SudoCryptoProviderDefaults.pbkdfRounds,
|
|
212
|
+
Keys: base64_1.Base64.encode(encryptedKeys),
|
|
213
|
+
IV: base64_1.Base64.encode(iv),
|
|
214
|
+
};
|
|
215
|
+
keyArchive = secureKeyArchive;
|
|
216
|
+
}
|
|
217
|
+
for (const [key, value] of this.metaInfo.entries()) {
|
|
218
|
+
keyArchive.MetaInfo[key] = value;
|
|
219
|
+
}
|
|
220
|
+
const archiveString = JSON.stringify(keyArchive);
|
|
221
|
+
// While this double Gzips the SecureKeyArchive, it allows us to roughly
|
|
222
|
+
// recover the space consumed by Base64 encoding the cipher text. Otherwise
|
|
223
|
+
// we would end up having a fully binary data structure for the archive.
|
|
224
|
+
// If the time to compute becomes prohibitive we can look at a binary, non-JSON
|
|
225
|
+
// base format for the archive.
|
|
226
|
+
const archiveGzipped = (0, fflate_1.gzipSync)(buffer_1.Buffer.fromString(archiveString), {
|
|
227
|
+
level: 9,
|
|
228
|
+
});
|
|
229
|
+
return Promise.resolve(archiveGzipped);
|
|
230
|
+
}
|
|
231
|
+
async unarchive(password) {
|
|
232
|
+
if (!this.keyArchive) {
|
|
233
|
+
throw new error_1.KeyArchiveMissingError();
|
|
234
|
+
}
|
|
235
|
+
let keys;
|
|
236
|
+
if ((0, keyArchive_1.isSecureKeyArchive)(this.keyArchive)) {
|
|
237
|
+
if (!password) {
|
|
238
|
+
throw new error_1.KeyArchivePasswordRequiredError();
|
|
239
|
+
}
|
|
240
|
+
let iv;
|
|
241
|
+
let encryptedKeys;
|
|
242
|
+
let key;
|
|
243
|
+
try {
|
|
244
|
+
const salt = base64_1.Base64.decode(this.keyArchive.Salt);
|
|
245
|
+
iv = base64_1.Base64.decode(this.keyArchive.IV);
|
|
246
|
+
encryptedKeys = base64_1.Base64.decode(this.keyArchive.Keys);
|
|
247
|
+
key = await this.defaultKeyManager.generateSymmetricKeyFromPassword(password, salt, { rounds: this.keyArchive.Rounds });
|
|
248
|
+
}
|
|
249
|
+
catch (err) {
|
|
250
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
251
|
+
}
|
|
252
|
+
let compressedSerializedKeys;
|
|
253
|
+
try {
|
|
254
|
+
compressedSerializedKeys =
|
|
255
|
+
await this.defaultKeyManager.decryptWithSymmetricKey(key, encryptedKeys, { iv });
|
|
256
|
+
}
|
|
257
|
+
catch (err) {
|
|
258
|
+
throw new error_1.KeyArchiveIncorrectPasswordError();
|
|
259
|
+
}
|
|
260
|
+
try {
|
|
261
|
+
const serializedKeys = (0, fflate_1.gunzipSync)(new Uint8Array(compressedSerializedKeys));
|
|
262
|
+
const decoded = keyInfo_1.KeyArchiveKeyInfoArrayCodec.decode(JSON.parse(buffer_1.Buffer.toString(serializedKeys)));
|
|
263
|
+
if ((0, Either_1.isLeft)(decoded)) {
|
|
264
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
265
|
+
}
|
|
266
|
+
keys = decoded.right;
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
throw new error_1.KeyArchiveDecodingError();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
if (password) {
|
|
274
|
+
throw new error_1.KeyArchiveNoPasswordRequiredError();
|
|
275
|
+
}
|
|
276
|
+
keys = this.keyArchive.Keys;
|
|
277
|
+
}
|
|
278
|
+
keys.forEach((key) => {
|
|
279
|
+
const keyKey = `${key.NameSpace}:${key.Type}:${key.Name}`;
|
|
280
|
+
let decoded;
|
|
281
|
+
try {
|
|
282
|
+
decoded = base64_1.Base64.decode(key.Data);
|
|
283
|
+
}
|
|
284
|
+
catch (err) {
|
|
285
|
+
throw new error_1.KeyArchiveDecodingError(`Unable to decode key ${keyKey}`);
|
|
286
|
+
}
|
|
287
|
+
this.keys.set(keyKey, { ...key, Decoded: decoded });
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
reset() {
|
|
291
|
+
this.keys.clear();
|
|
292
|
+
}
|
|
293
|
+
containsKey(namespace, name, type) {
|
|
294
|
+
return this.keys.has(`${namespace}:${type}:${name}`);
|
|
295
|
+
}
|
|
296
|
+
getKeyData(namespace, name, type) {
|
|
297
|
+
const keyInfo = this.keys.get(`${namespace}:${type}:${name}`);
|
|
298
|
+
if (!keyInfo) {
|
|
299
|
+
throw new error_1.KeyNotFoundError();
|
|
300
|
+
}
|
|
301
|
+
return keyInfo.Decoded;
|
|
302
|
+
}
|
|
303
|
+
getExcludedKeys() {
|
|
304
|
+
return this.excludedKeys;
|
|
305
|
+
}
|
|
306
|
+
getExcludedKeyTypes() {
|
|
307
|
+
return this.excludedKeyTypes;
|
|
308
|
+
}
|
|
309
|
+
getMetaInfo() {
|
|
310
|
+
return this.metaInfo;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
exports.DefaultSudoKeyArchive = DefaultSudoKeyArchive;
|
|
314
|
+
/**
|
|
315
|
+
* Version 2 format is not gzipped is what's currently generated
|
|
316
|
+
* by iOS and Android. We may want to add support for importing
|
|
317
|
+
* such archives.
|
|
318
|
+
*/
|
|
319
|
+
DefaultSudoKeyArchive.PREGZIP_ARCHIVE_VERSION = 2;
|
|
320
|
+
/**
|
|
321
|
+
* Version 3 format permits both secure and insecure key archives.
|
|
322
|
+
*
|
|
323
|
+
* Insecure key archives are used where the archive will be stored
|
|
324
|
+
* in an otherwise known secure way e.g. via secure-vault-service
|
|
325
|
+
* where the encryption of the archive would then be handled by
|
|
326
|
+
* clients of that service.
|
|
327
|
+
*
|
|
328
|
+
* Secure key archives are password protected (via PBKDF2) a la version
|
|
329
|
+
* 2 format.
|
|
330
|
+
*
|
|
331
|
+
* Insecure format detail is:
|
|
332
|
+
*
|
|
333
|
+
* gzip(JSON.stringify(InsecureKeyArchive))
|
|
334
|
+
*
|
|
335
|
+
* Secure format detail is:
|
|
336
|
+
*
|
|
337
|
+
* gzip(JSON.stringify(SecureKeyArchive))
|
|
338
|
+
*
|
|
339
|
+
* where Keys property of SecureKeyArchive is:
|
|
340
|
+
*
|
|
341
|
+
* base64(encrypt(gzip(JSON.stringify(array of keys))))
|
|
342
|
+
*
|
|
343
|
+
* Where encrypt operation is 256-bit AES CBC-mode with IV SecureKeyArchive.IV
|
|
344
|
+
* and key generated by SecureKeyArchive.Rounds of PBKDF2 on the password
|
|
345
|
+
* salted with SecureKeyArchive.Salt.
|
|
346
|
+
*/
|
|
347
|
+
DefaultSudoKeyArchive.CURRENT_ARCHIVE_VERSION = keyArchive_1.CURRENT_ARCHIVE_VERSION;
|
|
348
|
+
function keyArchiveInfoFromKeyData(keyData) {
|
|
349
|
+
return {
|
|
350
|
+
NameSpace: keyData.namespace,
|
|
351
|
+
Name: keyData.name,
|
|
352
|
+
Type: keyArchiveKeyTypeFromKeyDataKeyType(keyData.type),
|
|
353
|
+
Data: base64_1.Base64.encode(keyData.data),
|
|
354
|
+
Decoded: keyData.data,
|
|
355
|
+
Synchronizable: false,
|
|
356
|
+
Exportable: true,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
exports.keyArchiveInfoFromKeyData = keyArchiveInfoFromKeyData;
|
|
360
|
+
function keyArchiveKeyTypeFromKeyDataKeyType(keyDataKeyType) {
|
|
361
|
+
switch (keyDataKeyType) {
|
|
362
|
+
case sudoKeyManager_1.KeyDataKeyType.Password:
|
|
363
|
+
return keyType_1.KeyArchiveKeyType.Password;
|
|
364
|
+
case sudoKeyManager_1.KeyDataKeyType.RSAPrivateKey:
|
|
365
|
+
return keyType_1.KeyArchiveKeyType.PrivateKey;
|
|
366
|
+
case sudoKeyManager_1.KeyDataKeyType.RSAPublicKey:
|
|
367
|
+
return keyType_1.KeyArchiveKeyType.PublicKey;
|
|
368
|
+
case sudoKeyManager_1.KeyDataKeyType.SymmetricKey:
|
|
369
|
+
return keyType_1.KeyArchiveKeyType.SymmetricKey;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.keyArchiveKeyTypeFromKeyDataKeyType = keyArchiveKeyTypeFromKeyDataKeyType;
|
|
373
|
+
//# sourceMappingURL=sudoKeyArchive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sudoKeyArchive.js","sourceRoot":"","sources":["../../src/sudoKeyArchive/sudoKeyArchive.ts"],"names":[],"mappings":"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"}
|
|
@@ -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("./keyData"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./publicKey"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./sudoCryptoProvider"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./sudoKeyManager"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sudoKeyManager/index.ts"],"names":[],"mappings":";;;AAAA,oDAAyB;AACzB,sDAA2B;AAC3B,+DAAoC;AACpC,2DAAgC"}
|