@nmshd/crypto 2.2.0-alpha.8 → 3.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 (65) hide show
  1. package/LICENSE +660 -4
  2. package/README.md +4 -4
  3. package/dist/CryptoErrorCode.d.ts +1 -13
  4. package/dist/CryptoErrorCode.js +0 -12
  5. package/dist/CryptoErrorCode.js.map +1 -1
  6. package/dist/CryptoSerializable.d.ts +1 -5
  7. package/dist/CryptoSerializable.js +1 -10
  8. package/dist/CryptoSerializable.js.map +1 -1
  9. package/dist/CryptoValidation.js +0 -2
  10. package/dist/CryptoValidation.js.map +1 -1
  11. package/dist/buildInformation.js +5 -5
  12. package/dist/index.d.ts +0 -1
  13. package/dist/index.js +0 -1
  14. package/dist/index.js.map +1 -1
  15. package/dist/random/CryptoRandom.d.ts +0 -1
  16. package/dist/random/CryptoRandom.js +0 -4
  17. package/dist/random/CryptoRandom.js.map +1 -1
  18. package/dist/relationship/CryptoRelationshipSecrets.js +10 -14
  19. package/dist/relationship/CryptoRelationshipSecrets.js.map +1 -1
  20. package/dist/signature/CryptoSignatureAlgorithm.d.ts +1 -2
  21. package/dist/signature/CryptoSignatures.js +0 -2
  22. package/dist/signature/CryptoSignatures.js.map +1 -1
  23. package/package.json +16 -24
  24. package/dist/crypto-layer/CryptoDerivationHandle.d.ts +0 -40
  25. package/dist/crypto-layer/CryptoDerivationHandle.js +0 -76
  26. package/dist/crypto-layer/CryptoDerivationHandle.js.map +0 -1
  27. package/dist/crypto-layer/CryptoLayerConfig.d.ts +0 -82
  28. package/dist/crypto-layer/CryptoLayerConfig.js +0 -93
  29. package/dist/crypto-layer/CryptoLayerConfig.js.map +0 -1
  30. package/dist/crypto-layer/CryptoLayerProviders.d.ts +0 -17
  31. package/dist/crypto-layer/CryptoLayerProviders.js +0 -261
  32. package/dist/crypto-layer/CryptoLayerProviders.js.map +0 -1
  33. package/dist/crypto-layer/CryptoLayerUtils.d.ts +0 -15
  34. package/dist/crypto-layer/CryptoLayerUtils.js +0 -116
  35. package/dist/crypto-layer/CryptoLayerUtils.js.map +0 -1
  36. package/dist/crypto-layer/encryption/BaseDerivedKeyHandle.d.ts +0 -15
  37. package/dist/crypto-layer/encryption/BaseDerivedKeyHandle.js +0 -26
  38. package/dist/crypto-layer/encryption/BaseDerivedKeyHandle.js.map +0 -1
  39. package/dist/crypto-layer/encryption/BaseKeyHandle.d.ts +0 -29
  40. package/dist/crypto-layer/encryption/BaseKeyHandle.js +0 -82
  41. package/dist/crypto-layer/encryption/BaseKeyHandle.js.map +0 -1
  42. package/dist/crypto-layer/encryption/CryptoEncryptionHandle.d.ts +0 -32
  43. package/dist/crypto-layer/encryption/CryptoEncryptionHandle.js +0 -191
  44. package/dist/crypto-layer/encryption/CryptoEncryptionHandle.js.map +0 -1
  45. package/dist/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.d.ts +0 -5
  46. package/dist/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.js +0 -24
  47. package/dist/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.js.map +0 -1
  48. package/dist/crypto-layer/encryption/DeviceBoundKeyHandle.d.ts +0 -18
  49. package/dist/crypto-layer/encryption/DeviceBoundKeyHandle.js +0 -51
  50. package/dist/crypto-layer/encryption/DeviceBoundKeyHandle.js.map +0 -1
  51. package/dist/crypto-layer/encryption/PortableDerivedKeyHandle.d.ts +0 -4
  52. package/dist/crypto-layer/encryption/PortableDerivedKeyHandle.js +0 -23
  53. package/dist/crypto-layer/encryption/PortableDerivedKeyHandle.js.map +0 -1
  54. package/dist/crypto-layer/encryption/PortableKeyHandle.d.ts +0 -18
  55. package/dist/crypto-layer/encryption/PortableKeyHandle.js +0 -51
  56. package/dist/crypto-layer/encryption/PortableKeyHandle.js.map +0 -1
  57. package/dist/crypto-layer/index.d.ts +0 -13
  58. package/dist/crypto-layer/index.js +0 -30
  59. package/dist/crypto-layer/index.js.map +0 -1
  60. package/dist/crypto-layer/signature/CryptoSignaturesHandle.d.ts +0 -8
  61. package/dist/crypto-layer/signature/CryptoSignaturesHandle.js +0 -31
  62. package/dist/crypto-layer/signature/CryptoSignaturesHandle.js.map +0 -1
  63. package/dist/crypto-layer/signature/DeviceBoundKeyPairHandle.d.ts +0 -19
  64. package/dist/crypto-layer/signature/DeviceBoundKeyPairHandle.js +0 -61
  65. package/dist/crypto-layer/signature/DeviceBoundKeyPairHandle.js.map +0 -1
@@ -1,82 +0,0 @@
1
- import { AdditionalConfig, KeyHandle, KeyPairHandle, SecurityLevel } from "@nmshd/rs-crypto-types";
2
- import { CryptoSerializable } from "../CryptoSerializable";
3
- import { CryptoEncryptionAlgorithm } from "../encryption/CryptoEncryption";
4
- import { CryptoHashAlgorithm } from "../hash/CryptoHash";
5
- import { CryptoSignatureAlgorithm } from "../signature/CryptoSignatureAlgorithm";
6
- import { DeviceBoundKeyHandle } from "./encryption/DeviceBoundKeyHandle";
7
- import { DeviceBoundKeyPairHandle } from "./signature/DeviceBoundKeyPairHandle";
8
- type KeyHandleType = "symmetric" | "asymmetric";
9
- interface IProviderInitConfigKeyHandle {
10
- type: KeyHandleType;
11
- keyId: string;
12
- providerName: string;
13
- }
14
- /**
15
- * Configuration for loading a key handle from a provider without loading on deserialization.
16
- */
17
- export declare class ProviderInitConfigKeyHandle extends CryptoSerializable {
18
- type: KeyHandleType;
19
- keyId: string;
20
- providerName: string;
21
- static from(value: IProviderInitConfigKeyHandle): ProviderInitConfigKeyHandle;
22
- static fromDeviceBoundHandle(handle: DeviceBoundKeyHandle | DeviceBoundKeyPairHandle): ProviderInitConfigKeyHandle;
23
- loadKeyHandle(): Promise<KeyHandle | KeyPairHandle>;
24
- }
25
- interface IProviderInitConfig {
26
- providerName: string;
27
- masterEncryptionKeyHandle?: ProviderInitConfigKeyHandle;
28
- masterSignatureKeyHandle?: ProviderInitConfigKeyHandle;
29
- requiredProvider?: ProviderInitConfig;
30
- }
31
- /**
32
- * Recursive configuration used to load providers and their dependencies.
33
- */
34
- export declare class ProviderInitConfig extends CryptoSerializable {
35
- providerName: string;
36
- masterEncryptionKeyHandle?: ProviderInitConfigKeyHandle;
37
- masterSignatureKeyHandle?: ProviderInitConfigKeyHandle;
38
- requiredProvider?: ProviderInitConfig;
39
- static from(value: IProviderInitConfig): ProviderInitConfig;
40
- }
41
- export type StorageConfig = Extract<AdditionalConfig, {
42
- KVStoreConfig: any;
43
- } | {
44
- FileStoreConfig: any;
45
- }>;
46
- export type CryptoLayerProviderIdentifier = {
47
- providerName: string;
48
- } | {
49
- securityLevel: SecurityLevel;
50
- };
51
- export type StorageSecuritySpec = {
52
- type: "asymmetric";
53
- asymmetricKeyAlgorithm: CryptoSignatureAlgorithm;
54
- encryptionAlgorithm: CryptoEncryptionAlgorithm | undefined;
55
- hashingAlgorithm: CryptoHashAlgorithm;
56
- } | {
57
- type: "symmetric";
58
- encryptionAlgorithm: CryptoEncryptionAlgorithm;
59
- hashingAlgorithm: CryptoHashAlgorithm;
60
- };
61
- export interface StorageSecurityConfig {
62
- name: string;
63
- signature: StorageSecuritySpec;
64
- encryption: StorageSecuritySpec;
65
- }
66
- export type KeyMetadata = {
67
- id: string;
68
- type: "symmetric";
69
- encryptionAlgorithm: CryptoEncryptionAlgorithm;
70
- hashAlgorithm: CryptoHashAlgorithm;
71
- deviceBound: boolean;
72
- ephemeral: boolean;
73
- } | {
74
- id: string;
75
- type: "asymmetric";
76
- asymmetricKeyAlgorithm: CryptoSignatureAlgorithm;
77
- encryptionAlgorithm?: CryptoEncryptionAlgorithm;
78
- hashAlgorithm: CryptoHashAlgorithm;
79
- deviceBound: boolean;
80
- ephemeral: boolean;
81
- };
82
- export {};
@@ -1,93 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var ProviderInitConfigKeyHandle_1, ProviderInitConfig_1;
12
- Object.defineProperty(exports, "__esModule", { value: true });
13
- exports.ProviderInitConfig = exports.ProviderInitConfigKeyHandle = void 0;
14
- const ts_serval_1 = require("@js-soft/ts-serval");
15
- const CryptoSerializable_1 = require("../CryptoSerializable");
16
- const CryptoLayerProviders_1 = require("./CryptoLayerProviders");
17
- const DeviceBoundKeyHandle_1 = require("./encryption/DeviceBoundKeyHandle");
18
- /**
19
- * Configuration for loading a key handle from a provider without loading on deserialization.
20
- */
21
- let ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle_1 = class ProviderInitConfigKeyHandle extends CryptoSerializable_1.CryptoSerializable {
22
- static from(value) {
23
- return ProviderInitConfigKeyHandle_1.fromAny(value);
24
- }
25
- static fromDeviceBoundHandle(handle) {
26
- return ProviderInitConfigKeyHandle_1.from({
27
- type: handle instanceof DeviceBoundKeyHandle_1.DeviceBoundKeyHandle ? "symmetric" : "asymmetric",
28
- keyId: handle.id,
29
- providerName: handle.providerName
30
- });
31
- }
32
- async loadKeyHandle() {
33
- const provider = (0, CryptoLayerProviders_1.getProvider)({ providerName: this.providerName });
34
- switch (this.type) {
35
- case "asymmetric":
36
- return await provider.loadKeyPair(this.keyId);
37
- case "symmetric":
38
- return await provider.loadKey(this.keyId);
39
- }
40
- }
41
- };
42
- exports.ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle;
43
- __decorate([
44
- (0, ts_serval_1.validate)(),
45
- (0, ts_serval_1.serialize)(),
46
- __metadata("design:type", String)
47
- ], ProviderInitConfigKeyHandle.prototype, "type", void 0);
48
- __decorate([
49
- (0, ts_serval_1.validate)(),
50
- (0, ts_serval_1.serialize)(),
51
- __metadata("design:type", String)
52
- ], ProviderInitConfigKeyHandle.prototype, "keyId", void 0);
53
- __decorate([
54
- (0, ts_serval_1.validate)(),
55
- (0, ts_serval_1.serialize)(),
56
- __metadata("design:type", String)
57
- ], ProviderInitConfigKeyHandle.prototype, "providerName", void 0);
58
- exports.ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle_1 = __decorate([
59
- (0, ts_serval_1.type)("ProviderInitConfigKeyHandle")
60
- ], ProviderInitConfigKeyHandle);
61
- /**
62
- * Recursive configuration used to load providers and their dependencies.
63
- */
64
- let ProviderInitConfig = ProviderInitConfig_1 = class ProviderInitConfig extends CryptoSerializable_1.CryptoSerializable {
65
- static from(value) {
66
- return ProviderInitConfig_1.fromAny(value);
67
- }
68
- };
69
- exports.ProviderInitConfig = ProviderInitConfig;
70
- __decorate([
71
- (0, ts_serval_1.validate)(),
72
- (0, ts_serval_1.serialize)(),
73
- __metadata("design:type", String)
74
- ], ProviderInitConfig.prototype, "providerName", void 0);
75
- __decorate([
76
- (0, ts_serval_1.validate)({ nullable: true }),
77
- (0, ts_serval_1.serialize)(),
78
- __metadata("design:type", ProviderInitConfigKeyHandle)
79
- ], ProviderInitConfig.prototype, "masterEncryptionKeyHandle", void 0);
80
- __decorate([
81
- (0, ts_serval_1.validate)({ nullable: true }),
82
- (0, ts_serval_1.serialize)(),
83
- __metadata("design:type", ProviderInitConfigKeyHandle)
84
- ], ProviderInitConfig.prototype, "masterSignatureKeyHandle", void 0);
85
- __decorate([
86
- (0, ts_serval_1.validate)({ nullable: true }),
87
- (0, ts_serval_1.serialize)(),
88
- __metadata("design:type", ProviderInitConfig)
89
- ], ProviderInitConfig.prototype, "requiredProvider", void 0);
90
- exports.ProviderInitConfig = ProviderInitConfig = ProviderInitConfig_1 = __decorate([
91
- (0, ts_serval_1.type)("ProviderInitConfig")
92
- ], ProviderInitConfig);
93
- //# sourceMappingURL=CryptoLayerConfig.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoLayerConfig.js","sourceRoot":"","sources":["../../src/crypto-layer/CryptoLayerConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA+D;AAE/D,8DAA2D;AAI3D,iEAAqD;AACrD,4EAAyE;AAWzE;;GAEG;AAEI,IAAM,2BAA2B,mCAAjC,MAAM,2BAA4B,SAAQ,uCAAkB;IAaxD,MAAM,CAAC,IAAI,CAAC,KAAmC;QAClD,OAAO,6BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAEM,MAAM,CAAC,qBAAqB,CAC/B,MAAuD;QAEvD,OAAO,6BAA2B,CAAC,IAAI,CAAC;YACpC,IAAI,EAAE,MAAM,YAAY,2CAAoB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;YACzE,KAAK,EAAE,MAAM,CAAC,EAAE;YAChB,YAAY,EAAE,MAAM,CAAC,YAAY;SACpC,CAAC,CAAC;IACP,CAAC;IAEM,KAAK,CAAC,aAAa;QACtB,MAAM,QAAQ,GAAG,IAAA,kCAAW,EAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAElE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,YAAY;gBACb,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClD,KAAK,WAAW;gBACZ,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;CACJ,CAAA;AArCY,kEAA2B;AAG7B;IAFN,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;yDACe;AAIpB;IAFN,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;0DACS;AAId;IAFN,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;iEACgB;sCAXnB,2BAA2B;IADvC,IAAA,gBAAI,EAAC,6BAA6B,CAAC;GACvB,2BAA2B,CAqCvC;AASD;;GAEG;AAEI,IAAM,kBAAkB,0BAAxB,MAAM,kBAAmB,SAAQ,uCAAkB;IAiB/C,MAAM,CAAC,IAAI,CAAC,KAA0B;QACzC,OAAO,oBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACJ,CAAA;AApBY,gDAAkB;AAGpB;IAFN,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;wDACgB;AAIrB;IAFN,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAA,qBAAS,GAAE;8BACuB,2BAA2B;qEAAC;AAIxD;IAFN,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAA,qBAAS,GAAE;8BACsB,2BAA2B;oEAAC;AAIvD;IAFN,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,IAAA,qBAAS,GAAE;8BACc,kBAAkB;4DAAC;6BAfpC,kBAAkB;IAD9B,IAAA,gBAAI,EAAC,oBAAoB,CAAC;GACd,kBAAkB,CAoB9B"}
@@ -1,17 +0,0 @@
1
- import { Provider, ProviderFactoryFunctions, SecurityLevel } from "@nmshd/rs-crypto-types";
2
- import { CryptoLayerProviderIdentifier, KeyMetadata, ProviderInitConfig, StorageConfig, StorageSecurityConfig } from "./CryptoLayerConfig";
3
- export declare function initializeProviders(providerConfig: ProviderInitConfig, storageConfig: StorageConfig, factoryFunctions: ProviderFactoryFunctions): Promise<void>;
4
- export declare function newInitializedProviders(storageConfig: StorageConfig, factoryFunctions: ProviderFactoryFunctions, storageSecurityConfig?: StorageSecurityConfig[]): Promise<ProviderInitConfig | undefined>;
5
- /**
6
- * Returns an initialized provider with the given provider identifier if possible,
7
- * otherwise throws {@link CryptoError} with {@link CryptoErrorCode.CalThisProviderNotInitialized}.
8
- *
9
- * Providers need to be initialized via the {@link newInitializedProviders} or {@link initializeProviders} functions,
10
- * else throws {@link CryptoError} with {@link CryptoErrorCode.CalProvidersNotInitialized}.
11
- */
12
- export declare function getProvider(identifier: CryptoLayerProviderIdentifier): Provider;
13
- export declare function hasProviderForSecurityLevel(securityLevel: SecurityLevel): boolean;
14
- export declare function providersInitialized(): boolean;
15
- export declare function clearProviders(): void;
16
- export declare function keyCountOfProvider(providerIdent: CryptoLayerProviderIdentifier): Promise<number>;
17
- export declare function keysOfProvider(providerIdent: CryptoLayerProviderIdentifier): Promise<KeyMetadata[]>;
@@ -1,261 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.initializeProviders = initializeProviders;
4
- exports.newInitializedProviders = newInitializedProviders;
5
- exports.getProvider = getProvider;
6
- exports.hasProviderForSecurityLevel = hasProviderForSecurityLevel;
7
- exports.providersInitialized = providersInitialized;
8
- exports.clearProviders = clearProviders;
9
- exports.keyCountOfProvider = keyCountOfProvider;
10
- exports.keysOfProvider = keysOfProvider;
11
- const CryptoError_1 = require("../CryptoError");
12
- const CryptoErrorCode_1 = require("../CryptoErrorCode");
13
- const CryptoLayerConfig_1 = require("./CryptoLayerConfig");
14
- const CryptoLayerUtils_1 = require("./CryptoLayerUtils");
15
- const CryptoEncryptionHandle_1 = require("./encryption/CryptoEncryptionHandle");
16
- const CryptoSignaturesHandle_1 = require("./signature/CryptoSignaturesHandle");
17
- const SOFTWARE_PROVIDER_NAME = "SoftwareProvider";
18
- const ANDROID_PROVIDER_NAME = "ANDROID_PROVIDER";
19
- const ANDROID_HARDWARE_PROVIDER_NAME = "ANDROID_PROVIDER_SECURE_ELEMENT";
20
- const APPLE_SECURE_ENCLAVE_PROVIDER_NAME = "APPLE_SECURE_ENCLAVE";
21
- // const WINDOWS_PROVIDER_NAME = "";
22
- // const LINUX_PROVIDER_NAME = "Linux_Provider";
23
- const DEFAULT_STORAGE_SECURITY_CONFIG = [
24
- {
25
- name: ANDROID_HARDWARE_PROVIDER_NAME,
26
- signature: {
27
- type: "asymmetric",
28
- asymmetricKeyAlgorithm: 4 /* CryptoSignatureAlgorithm.RSA_2048 */,
29
- encryptionAlgorithm: undefined,
30
- hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
31
- },
32
- encryption: {
33
- type: "symmetric",
34
- encryptionAlgorithm: 2 /* CryptoEncryptionAlgorithm.AES256_GCM */,
35
- hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
36
- }
37
- },
38
- {
39
- name: ANDROID_PROVIDER_NAME,
40
- signature: {
41
- type: "asymmetric",
42
- asymmetricKeyAlgorithm: 4 /* CryptoSignatureAlgorithm.RSA_2048 */,
43
- encryptionAlgorithm: undefined,
44
- hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
45
- },
46
- encryption: {
47
- type: "symmetric",
48
- encryptionAlgorithm: 2 /* CryptoEncryptionAlgorithm.AES256_GCM */,
49
- hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
50
- }
51
- },
52
- {
53
- name: APPLE_SECURE_ENCLAVE_PROVIDER_NAME,
54
- signature: {
55
- type: "asymmetric",
56
- asymmetricKeyAlgorithm: 1 /* CryptoSignatureAlgorithm.ECDSA_P256 */,
57
- encryptionAlgorithm: undefined,
58
- hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
59
- },
60
- encryption: {
61
- type: "asymmetric",
62
- asymmetricKeyAlgorithm: 1 /* CryptoSignatureAlgorithm.ECDSA_P256 */,
63
- encryptionAlgorithm: 2 /* CryptoEncryptionAlgorithm.AES256_GCM */,
64
- hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
65
- }
66
- }
67
- ];
68
- const PROVIDERS = new Map();
69
- const PROVIDERS_BY_NAME = new Map();
70
- async function insertProviderIntoProviderMaps(provider) {
71
- const [capabilities, name] = await Promise.all([provider.getCapabilities(), provider.providerName()]);
72
- if (capabilities === undefined) {
73
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalLoadingProvider, `Failed getting capabilities of provider: '${name}'`).setContext(insertProviderIntoProviderMaps);
74
- }
75
- const securityLevel = capabilities.min_security_level;
76
- if (PROVIDERS.has(securityLevel)) {
77
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalProvidersAlreadyInitialized, `Only one provider of a security level can be initialized at a time. Provider for security level '${securityLevel}' has already been loaded.`).setContext(insertProviderIntoProviderMaps);
78
- }
79
- PROVIDERS.set(securityLevel, provider);
80
- PROVIDERS_BY_NAME.set(name, provider);
81
- }
82
- async function loadProviderFromName(providerName, providerImplConfig, factoryFunctions) {
83
- const provider = await factoryFunctions.createProviderFromName(providerName, providerImplConfig);
84
- if (provider === undefined) {
85
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalLoadingProvider, `Failed initializing provider: '${providerName}'`).setContext(loadProviderFromName);
86
- }
87
- return provider;
88
- }
89
- async function additionalConfigFromProviderToBeInitializedConfig(providerConfig) {
90
- const additionalConfig = [];
91
- if (providerConfig.masterEncryptionKeyHandle) {
92
- const handle = await providerConfig.masterEncryptionKeyHandle.loadKeyHandle();
93
- if (providerConfig.masterEncryptionKeyHandle.type === "symmetric") {
94
- additionalConfig.push({
95
- StorageConfigSymmetricEncryption: handle
96
- });
97
- }
98
- else {
99
- additionalConfig.push({
100
- StorageConfigAsymmetricEncryption: handle
101
- });
102
- }
103
- }
104
- if (providerConfig.masterSignatureKeyHandle) {
105
- const handle = await providerConfig.masterSignatureKeyHandle.loadKeyHandle();
106
- if (providerConfig.masterSignatureKeyHandle.type === "symmetric") {
107
- additionalConfig.push({
108
- StorageConfigHMAC: handle
109
- });
110
- }
111
- else {
112
- additionalConfig.push({
113
- StorageConfigDSA: handle
114
- });
115
- }
116
- }
117
- return additionalConfig;
118
- }
119
- async function initializeProviders(providerConfig, storageConfig, factoryFunctions) {
120
- if (providerConfig.requiredProvider !== undefined) {
121
- await initializeProviders(providerConfig.requiredProvider, storageConfig, factoryFunctions);
122
- }
123
- const implConfig = {
124
- additional_config: [storageConfig]
125
- };
126
- implConfig.additional_config.push(...(await additionalConfigFromProviderToBeInitializedConfig(providerConfig)));
127
- const provider = await loadProviderFromName(providerConfig.providerName, implConfig, factoryFunctions);
128
- await insertProviderIntoProviderMaps(provider);
129
- }
130
- async function newFallbackSoftwareProvider(softwareProviderName, storageConfig, factoryFunctions) {
131
- const providerToBeInitializedConfig = CryptoLayerConfig_1.ProviderInitConfig.from({
132
- providerName: softwareProviderName
133
- });
134
- await initializeProviders(providerToBeInitializedConfig, storageConfig, factoryFunctions);
135
- return providerToBeInitializedConfig;
136
- }
137
- async function keyHandleFromStorageSecuritySpec(spec) {
138
- if (spec.type === "symmetric") {
139
- return await CryptoEncryptionHandle_1.CryptoEncryptionHandle.generateDeviceBoundKeyHandle({ securityLevel: "Hardware" }, spec.encryptionAlgorithm, spec.hashingAlgorithm);
140
- }
141
- return await CryptoSignaturesHandle_1.CryptoSignaturesHandle.generateDeviceBoundKeyPairHandle({ securityLevel: "Hardware" }, spec.asymmetricKeyAlgorithm, spec.encryptionAlgorithm, spec.hashingAlgorithm);
142
- }
143
- async function newHybridProvider(hwProviderName, storageConfig, storageSecurityConfig, factoryFunctions) {
144
- const hwProviderToBeInitialized = CryptoLayerConfig_1.ProviderInitConfig.from({
145
- providerName: hwProviderName
146
- });
147
- await initializeProviders(hwProviderToBeInitialized, storageConfig, factoryFunctions);
148
- const [encryptionKeyHandle, signatureKeyHandle] = await Promise.all([
149
- keyHandleFromStorageSecuritySpec(storageSecurityConfig.encryption),
150
- keyHandleFromStorageSecuritySpec(storageSecurityConfig.signature)
151
- ]);
152
- const swProviderToBeInitialized = CryptoLayerConfig_1.ProviderInitConfig.from({
153
- providerName: SOFTWARE_PROVIDER_NAME,
154
- masterSignatureKeyHandle: CryptoLayerConfig_1.ProviderInitConfigKeyHandle.fromDeviceBoundHandle(signatureKeyHandle),
155
- masterEncryptionKeyHandle: CryptoLayerConfig_1.ProviderInitConfigKeyHandle.fromDeviceBoundHandle(encryptionKeyHandle)
156
- });
157
- await initializeProviders(swProviderToBeInitialized, storageConfig, factoryFunctions);
158
- swProviderToBeInitialized.requiredProvider = hwProviderToBeInitialized;
159
- return swProviderToBeInitialized;
160
- }
161
- async function newInitializedProviders(storageConfig, factoryFunctions, storageSecurityConfig) {
162
- const getStorageSecurityConfig = (providerName) => {
163
- var _a;
164
- return (_a = storageSecurityConfig === null || storageSecurityConfig === void 0 ? void 0 : storageSecurityConfig.find((config) => config.name === providerName)) !== null && _a !== void 0 ? _a : DEFAULT_STORAGE_SECURITY_CONFIG.find((config) => config.name === providerName);
165
- };
166
- const basicProviderImplConfig = {
167
- additional_config: [storageConfig]
168
- };
169
- const providerNamesAndCaps = await factoryFunctions.getProviderCapabilities(basicProviderImplConfig);
170
- const hardwareProviderNamesAndCaps = providerNamesAndCaps
171
- .filter(([, cap]) => cap.min_security_level === "Hardware")
172
- .filter(([name]) => getStorageSecurityConfig(name));
173
- const softwareProviderNamesAndCaps = providerNamesAndCaps.filter(([, cap]) => cap.min_security_level === "Software");
174
- if (hardwareProviderNamesAndCaps.length === 0) {
175
- if (softwareProviderNamesAndCaps.length === 0) {
176
- return undefined;
177
- }
178
- const nonFallbackSoftwareProviders = softwareProviderNamesAndCaps.filter(([name]) => name !== SOFTWARE_PROVIDER_NAME);
179
- if (nonFallbackSoftwareProviders.length !== 0) {
180
- return await newFallbackSoftwareProvider(nonFallbackSoftwareProviders[0][0], storageConfig, factoryFunctions);
181
- }
182
- return await newFallbackSoftwareProvider(SOFTWARE_PROVIDER_NAME, storageConfig, factoryFunctions);
183
- }
184
- const hwProviderName = hardwareProviderNamesAndCaps[0][0];
185
- const hwStorageSecurityConfig = getStorageSecurityConfig(hwProviderName);
186
- if (hwStorageSecurityConfig === undefined) {
187
- return undefined;
188
- }
189
- return await newHybridProvider(hwProviderName, storageConfig, hwStorageSecurityConfig, factoryFunctions);
190
- }
191
- /**
192
- * Returns an initialized provider with the given provider identifier if possible,
193
- * otherwise throws {@link CryptoError} with {@link CryptoErrorCode.CalThisProviderNotInitialized}.
194
- *
195
- * Providers need to be initialized via the {@link newInitializedProviders} or {@link initializeProviders} functions,
196
- * else throws {@link CryptoError} with {@link CryptoErrorCode.CalProvidersNotInitialized}.
197
- */
198
- function getProvider(identifier) {
199
- if (PROVIDERS.size === 0) {
200
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalProvidersNotInitialized, "Failed to get providers as providers are not initialized.").setContext(getProvider);
201
- }
202
- let provider;
203
- if ("securityLevel" in identifier) {
204
- provider = PROVIDERS.get(identifier.securityLevel);
205
- }
206
- if ("providerName" in identifier) {
207
- provider = PROVIDERS_BY_NAME.get(identifier.providerName);
208
- }
209
- if (provider === undefined) {
210
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalThisProviderNotInitialized, `Failed finding provider with identifier ${JSON.stringify(identifier)}`).setContext(getProvider);
211
- }
212
- return provider;
213
- }
214
- function hasProviderForSecurityLevel(securityLevel) {
215
- if (PROVIDERS.size === 0) {
216
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalProvidersNotInitialized, "Failed to get providers as providers are not initialized.").setContext(hasProviderForSecurityLevel);
217
- }
218
- return PROVIDERS.has(securityLevel);
219
- }
220
- function providersInitialized() {
221
- if (PROVIDERS.size !== PROVIDERS_BY_NAME.size) {
222
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalLoadingProvider, `The maps providers by name and providers by security level are out of sync. (${PROVIDERS_BY_NAME.size} != ${PROVIDERS.size})`).setContext(providersInitialized);
223
- }
224
- return PROVIDERS.size !== 0;
225
- }
226
- function clearProviders() {
227
- PROVIDERS.clear();
228
- PROVIDERS_BY_NAME.clear();
229
- }
230
- async function keyCountOfProvider(providerIdent) {
231
- const provider = getProvider(providerIdent);
232
- return (await provider.getAllKeys()).length;
233
- }
234
- async function keysOfProvider(providerIdent) {
235
- const provider = getProvider(providerIdent);
236
- const keys = await provider.getAllKeys();
237
- return keys.map(([id, spec]) => {
238
- if ("KeySpec" in spec) {
239
- return {
240
- id: id,
241
- type: "symmetric",
242
- encryptionAlgorithm: CryptoLayerUtils_1.CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher(spec.KeySpec.cipher),
243
- hashAlgorithm: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash(spec.KeySpec.signing_hash),
244
- deviceBound: spec.KeySpec.non_exportable,
245
- ephemeral: spec.KeySpec.ephemeral
246
- };
247
- }
248
- return {
249
- id: id,
250
- type: "asymmetric",
251
- encryptionAlgorithm: spec.KeyPairSpec.cipher
252
- ? CryptoLayerUtils_1.CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher(spec.KeyPairSpec.cipher)
253
- : undefined,
254
- asymmetricKeyAlgorithm: CryptoLayerUtils_1.CryptoLayerUtils.cryptoSignatureAlgorithmFromAsymmetricKeySpec(spec.KeyPairSpec.asym_spec),
255
- hashAlgorithm: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash(spec.KeyPairSpec.signing_hash),
256
- deviceBound: spec.KeyPairSpec.non_exportable,
257
- ephemeral: spec.KeyPairSpec.ephemeral
258
- };
259
- });
260
- }
261
- //# sourceMappingURL=CryptoLayerProviders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoLayerProviders.js","sourceRoot":"","sources":["../../src/crypto-layer/CryptoLayerProviders.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { Argon2Options, AsymmetricKeySpec, Cipher, CryptoHash, KDF } from "@nmshd/rs-crypto-types";
2
- import { CryptoDerivationAlgorithm, CryptoEncryptionAlgorithm } from "..";
3
- import { CryptoExchangeAlgorithm } from "../exchange/CryptoExchange";
4
- import { CryptoHashAlgorithm } from "../hash/CryptoHash";
5
- import { CryptoSignatureAlgorithm } from "../signature/CryptoSignatureAlgorithm";
6
- export declare class CryptoLayerUtils {
7
- static asymSpecFromCryptoExchangeOrSignatureAlgorithm(algorithm: CryptoExchangeAlgorithm | CryptoSignatureAlgorithm): AsymmetricKeySpec;
8
- static cryptoSignatureAlgorithmFromAsymmetricKeySpec(spec: AsymmetricKeySpec): CryptoSignatureAlgorithm;
9
- static cryptoHashAlgorithmFromCryptoHash(cryptoHash: CryptoHash): CryptoHashAlgorithm;
10
- static cryptoHashFromCryptoHashAlgorithm(algorithm: CryptoHashAlgorithm): CryptoHash;
11
- static cipherFromCryptoEncryptionAlgorithm(alg: CryptoEncryptionAlgorithm): Cipher;
12
- static cryptoEncryptionAlgorithmFromCipher(cipher: Cipher): CryptoEncryptionAlgorithm;
13
- static argon2OptionsFromIterationsMemLimitAndParallelism(iterations: number, memlimit: number, parallelism: number): Argon2Options;
14
- static kdfFromCryptoDerivation(derivationAlgorithm: CryptoDerivationAlgorithm, iterations: number, memlimit: number, parallelism: number): KDF;
15
- }
@@ -1,116 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CryptoLayerUtils = void 0;
4
- const CryptoError_1 = require("../CryptoError");
5
- const CryptoErrorCode_1 = require("../CryptoErrorCode");
6
- class CryptoLayerUtils {
7
- static asymSpecFromCryptoExchangeOrSignatureAlgorithm(algorithm) {
8
- switch (algorithm) {
9
- case 1 /* CryptoExchangeAlgorithm.ECDH_P256 */:
10
- return "P256";
11
- case 2 /* CryptoExchangeAlgorithm.ECDH_P521 */:
12
- return "P521";
13
- case 3 /* CryptoExchangeAlgorithm.ECDH_X25519 */:
14
- return "Curve25519";
15
- case 1 /* CryptoSignatureAlgorithm.ECDSA_P256 */:
16
- return "P256";
17
- case 2 /* CryptoSignatureAlgorithm.ECDSA_P521 */:
18
- return "P521";
19
- case 3 /* CryptoSignatureAlgorithm.ECDSA_ED25519 */:
20
- return "Curve25519";
21
- case 4 /* CryptoSignatureAlgorithm.RSA_2048 */:
22
- return "RSA2048";
23
- }
24
- }
25
- static cryptoSignatureAlgorithmFromAsymmetricKeySpec(spec) {
26
- // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
27
- switch (spec) {
28
- case "P256":
29
- return 1 /* CryptoSignatureAlgorithm.ECDSA_P256 */;
30
- case "P521":
31
- return 2 /* CryptoSignatureAlgorithm.ECDSA_P521 */;
32
- case "Curve25519":
33
- return 3 /* CryptoSignatureAlgorithm.ECDSA_ED25519 */;
34
- case "RSA2048":
35
- return 4 /* CryptoSignatureAlgorithm.RSA_2048 */;
36
- default:
37
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalUnsupportedAlgorithm, `Asymmetric key algorithm ${spec} is not supported by ts crypto.`).setContext(CryptoLayerUtils.cryptoSignatureAlgorithmFromAsymmetricKeySpec);
38
- }
39
- }
40
- static cryptoHashAlgorithmFromCryptoHash(cryptoHash) {
41
- // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
42
- switch (cryptoHash) {
43
- case "Sha2_256":
44
- return 1 /* CryptoHashAlgorithm.SHA256 */;
45
- case "Sha2_512":
46
- return 2 /* CryptoHashAlgorithm.SHA512 */;
47
- case "Blake2b":
48
- return 3 /* CryptoHashAlgorithm.BLAKE2B */;
49
- default:
50
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalUnsupportedAlgorithm, `Hash function ${cryptoHash} is not supported by ts crypto.`).setContext(CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash);
51
- }
52
- }
53
- static cryptoHashFromCryptoHashAlgorithm(algorithm) {
54
- switch (algorithm) {
55
- case 1 /* CryptoHashAlgorithm.SHA256 */:
56
- return "Sha2_256";
57
- case 2 /* CryptoHashAlgorithm.SHA512 */:
58
- return "Sha2_512";
59
- case 3 /* CryptoHashAlgorithm.BLAKE2B */:
60
- return "Blake2b";
61
- }
62
- }
63
- static cipherFromCryptoEncryptionAlgorithm(alg) {
64
- switch (alg) {
65
- case 1 /* CryptoEncryptionAlgorithm.AES128_GCM */:
66
- return "AesGcm128";
67
- case 2 /* CryptoEncryptionAlgorithm.AES256_GCM */:
68
- return "AesGcm256";
69
- case 3 /* CryptoEncryptionAlgorithm.XCHACHA20_POLY1305 */:
70
- return "XChaCha20Poly1305";
71
- }
72
- }
73
- static cryptoEncryptionAlgorithmFromCipher(cipher) {
74
- switch (cipher) {
75
- case "AesGcm128":
76
- return 1 /* CryptoEncryptionAlgorithm.AES128_GCM */;
77
- case "AesGcm256":
78
- return 2 /* CryptoEncryptionAlgorithm.AES256_GCM */;
79
- case "AesCbc128":
80
- case "AesCbc256":
81
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalUnsupportedAlgorithm, "ts-crypto does not support aes cbc").setContext(CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher);
82
- case "XChaCha20Poly1305":
83
- return 3 /* CryptoEncryptionAlgorithm.XCHACHA20_POLY1305 */;
84
- case "ChaCha20Poly1305":
85
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalUnsupportedAlgorithm, "ts-crypto does not support ChaCha20").setContext(CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher);
86
- }
87
- }
88
- static argon2OptionsFromIterationsMemLimitAndParallelism(iterations, memlimit, parallelism) {
89
- const kibiByteBase = 2 ^ 10;
90
- if (memlimit % kibiByteBase !== 0) {
91
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.WrongParameters, "rust-crypto uses kibibytes for Argon2. The `memlimit` parameter (in bytes) is not a multiple of `2^10` and thus not convertible without loss.").setContext(CryptoLayerUtils.argon2OptionsFromIterationsMemLimitAndParallelism);
92
- }
93
- const memory = memlimit / kibiByteBase;
94
- const options = {
95
- memory: memory,
96
- iterations: iterations,
97
- parallelism: parallelism
98
- };
99
- return options;
100
- }
101
- static kdfFromCryptoDerivation(derivationAlgorithm, iterations, memlimit, parallelism) {
102
- const options = CryptoLayerUtils.argon2OptionsFromIterationsMemLimitAndParallelism(iterations, memlimit, parallelism);
103
- switch (derivationAlgorithm) {
104
- case "argon2id" /* CryptoDerivationAlgorithm.ARGON2ID */:
105
- // eslint-disable-next-line @typescript-eslint/naming-convention
106
- return { Argon2id: options };
107
- case "argon2i" /* CryptoDerivationAlgorithm.ARGON2I */:
108
- // eslint-disable-next-line @typescript-eslint/naming-convention
109
- return { Argon2i: options };
110
- default:
111
- throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.WrongParameters, `Crypto derivation algorithm '${derivationAlgorithm}' not supported.`).setContext(CryptoLayerUtils.kdfFromCryptoDerivation);
112
- }
113
- }
114
- }
115
- exports.CryptoLayerUtils = CryptoLayerUtils;
116
- //# sourceMappingURL=CryptoLayerUtils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CryptoLayerUtils.js","sourceRoot":"","sources":["../../src/crypto-layer/CryptoLayerUtils.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { KeyHandle, Provider } from "@nmshd/rs-crypto-types";
2
- import { CryptoEncryptionAlgorithm } from "../../encryption/CryptoEncryption";
3
- import { CryptoHashAlgorithm } from "../../hash/CryptoHash";
4
- /**
5
- * Variant of {@link BaseKeyHandle} without serialization and deserialization.
6
- */
7
- export declare abstract class BaseDerivedKeyHandle {
8
- id: string;
9
- providerName: string;
10
- provider: Provider;
11
- keyHandle: KeyHandle;
12
- encryptionAndHashAlgorithm(): Promise<[CryptoEncryptionAlgorithm, CryptoHashAlgorithm]>;
13
- encryptionAlgorithm(): Promise<CryptoEncryptionAlgorithm>;
14
- hashAlgorithm(): Promise<CryptoHashAlgorithm>;
15
- }