@nmshd/crypto 2.2.0-alpha.7 → 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.
- package/LICENSE +660 -4
- package/README.md +4 -4
- package/dist/CryptoDerivation.js +0 -6
- package/dist/CryptoDerivation.js.map +1 -1
- package/dist/CryptoErrorCode.d.ts +1 -13
- package/dist/CryptoErrorCode.js +0 -12
- package/dist/CryptoErrorCode.js.map +1 -1
- package/dist/CryptoSerializable.d.ts +1 -5
- package/dist/CryptoSerializable.js +1 -10
- package/dist/CryptoSerializable.js.map +1 -1
- package/dist/CryptoValidation.js +0 -18
- package/dist/CryptoValidation.js.map +1 -1
- package/dist/buildInformation.js +5 -5
- package/dist/encryption/CryptoEncryption.d.ts +1 -4
- package/dist/encryption/CryptoEncryption.js +0 -15
- package/dist/encryption/CryptoEncryption.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/random/CryptoRandom.d.ts +0 -1
- package/dist/random/CryptoRandom.js +0 -4
- package/dist/random/CryptoRandom.js.map +1 -1
- package/dist/relationship/CryptoRelationshipSecrets.js +10 -14
- package/dist/relationship/CryptoRelationshipSecrets.js.map +1 -1
- package/dist/signature/CryptoSignatureAlgorithm.d.ts +1 -2
- package/dist/signature/CryptoSignatures.js +0 -2
- package/dist/signature/CryptoSignatures.js.map +1 -1
- package/package.json +17 -22
- package/dist/crypto-layer/CryptoDerivationHandle.d.ts +0 -40
- package/dist/crypto-layer/CryptoDerivationHandle.js +0 -76
- package/dist/crypto-layer/CryptoDerivationHandle.js.map +0 -1
- package/dist/crypto-layer/CryptoLayerConfig.d.ts +0 -60
- package/dist/crypto-layer/CryptoLayerConfig.js +0 -87
- package/dist/crypto-layer/CryptoLayerConfig.js.map +0 -1
- package/dist/crypto-layer/CryptoLayerProviders.d.ts +0 -15
- package/dist/crypto-layer/CryptoLayerProviders.js +0 -233
- package/dist/crypto-layer/CryptoLayerProviders.js.map +0 -1
- package/dist/crypto-layer/CryptoLayerUtils.d.ts +0 -14
- package/dist/crypto-layer/CryptoLayerUtils.js +0 -108
- package/dist/crypto-layer/CryptoLayerUtils.js.map +0 -1
- package/dist/crypto-layer/encryption/BaseDerivedKeyHandle.d.ts +0 -15
- package/dist/crypto-layer/encryption/BaseDerivedKeyHandle.js +0 -26
- package/dist/crypto-layer/encryption/BaseDerivedKeyHandle.js.map +0 -1
- package/dist/crypto-layer/encryption/BaseKeyHandle.d.ts +0 -29
- package/dist/crypto-layer/encryption/BaseKeyHandle.js +0 -82
- package/dist/crypto-layer/encryption/BaseKeyHandle.js.map +0 -1
- package/dist/crypto-layer/encryption/CryptoEncryptionHandle.d.ts +0 -32
- package/dist/crypto-layer/encryption/CryptoEncryptionHandle.js +0 -196
- package/dist/crypto-layer/encryption/CryptoEncryptionHandle.js.map +0 -1
- package/dist/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.d.ts +0 -5
- package/dist/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.js +0 -24
- package/dist/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.js.map +0 -1
- package/dist/crypto-layer/encryption/DeviceBoundKeyHandle.d.ts +0 -18
- package/dist/crypto-layer/encryption/DeviceBoundKeyHandle.js +0 -51
- package/dist/crypto-layer/encryption/DeviceBoundKeyHandle.js.map +0 -1
- package/dist/crypto-layer/encryption/PortableDerivedKeyHandle.d.ts +0 -4
- package/dist/crypto-layer/encryption/PortableDerivedKeyHandle.js +0 -23
- package/dist/crypto-layer/encryption/PortableDerivedKeyHandle.js.map +0 -1
- package/dist/crypto-layer/encryption/PortableKeyHandle.d.ts +0 -18
- package/dist/crypto-layer/encryption/PortableKeyHandle.js +0 -51
- package/dist/crypto-layer/encryption/PortableKeyHandle.js.map +0 -1
- package/dist/crypto-layer/index.d.ts +0 -13
- package/dist/crypto-layer/index.js +0 -30
- package/dist/crypto-layer/index.js.map +0 -1
- package/dist/crypto-layer/signature/CryptoSignaturesHandle.d.ts +0 -8
- package/dist/crypto-layer/signature/CryptoSignaturesHandle.js +0 -31
- package/dist/crypto-layer/signature/CryptoSignaturesHandle.js.map +0 -1
- package/dist/crypto-layer/signature/DeviceBoundKeyPairHandle.d.ts +0 -19
- package/dist/crypto-layer/signature/DeviceBoundKeyPairHandle.js +0 -61
- package/dist/crypto-layer/signature/DeviceBoundKeyPairHandle.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nmshd/crypto",
|
|
3
|
-
"description": "The
|
|
3
|
+
"description": "The enmeshed crypto library.",
|
|
4
4
|
"homepage": "https://enmeshed.eu",
|
|
5
5
|
"repository": "github:nmshd/ts-crypto",
|
|
6
|
-
"license": "
|
|
7
|
-
"author": "j&s-soft
|
|
6
|
+
"license": "AGPL-3.0-or-later",
|
|
7
|
+
"author": "j&s-soft AG",
|
|
8
8
|
"main": "dist/index.js",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
10
|
"files": [
|
|
@@ -25,42 +25,37 @@
|
|
|
25
25
|
"test": "npm run test:node && npm run test:web",
|
|
26
26
|
"test:local": "npm run test",
|
|
27
27
|
"test:ci": "npm run test",
|
|
28
|
-
"test:node": "mocha -r ts-node/register -r tsconfig-paths/register -r test/fixtures.ts ./test/index.
|
|
28
|
+
"test:node": "mocha -r ts-node/register -r tsconfig-paths/register -r test/fixtures.ts ./test/index.ts --project ./test/tsconfig.json --exit",
|
|
29
29
|
"test:local:node": "npm run test:node",
|
|
30
30
|
"test:web": "browsertest-runner",
|
|
31
31
|
"test:web:debug": "browsertest-runner --debug"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"
|
|
35
|
-
"libsodium-wrappers-sumo": "0.7.15",
|
|
36
|
-
"uuid": "^11.1.0"
|
|
34
|
+
"libsodium-wrappers-sumo": "0.7.15"
|
|
37
35
|
},
|
|
38
36
|
"devDependencies": {
|
|
39
|
-
"@js-soft/eslint-config-ts": "^
|
|
40
|
-
"@js-soft/license-check": "^1.0.
|
|
41
|
-
"@js-soft/ts-serval": "^2.0.
|
|
42
|
-
"@nmshd/rs-crypto-node": "^0.14.0",
|
|
37
|
+
"@js-soft/eslint-config-ts": "^2.0.4",
|
|
38
|
+
"@js-soft/license-check": "^1.0.10",
|
|
39
|
+
"@js-soft/ts-serval": "^2.0.14",
|
|
43
40
|
"@types/chai": "^5.2.2",
|
|
44
41
|
"@types/libsodium-wrappers-sumo": "^0.7.8",
|
|
45
42
|
"@types/mocha": "^10.0.10",
|
|
46
|
-
"@types/node": "^
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
"chai": "^5.2.0",
|
|
51
|
-
"eslint": "^8.57.1",
|
|
43
|
+
"@types/node": "^24.7.2",
|
|
44
|
+
"bt-runner": "^4.0.9",
|
|
45
|
+
"chai": "^6.2.0",
|
|
46
|
+
"eslint": "^9.37.0",
|
|
52
47
|
"madge": "^8.0.0",
|
|
53
|
-
"mocha": "^11.4
|
|
54
|
-
"prettier": "^3.
|
|
48
|
+
"mocha": "^11.7.4",
|
|
49
|
+
"prettier": "^3.6.2",
|
|
55
50
|
"ts-node": "^10.9.2",
|
|
56
51
|
"tsconfig-paths": "^4.2.0",
|
|
57
|
-
"typescript": "^5.
|
|
58
|
-
"webpack": "^5.
|
|
52
|
+
"typescript": "^5.9.3",
|
|
53
|
+
"webpack": "^5.102.1",
|
|
59
54
|
"webpack-cli": "^6.0.1"
|
|
60
55
|
},
|
|
61
56
|
"publishConfig": {
|
|
62
57
|
"access": "public",
|
|
63
58
|
"provenance": true
|
|
64
59
|
},
|
|
65
|
-
"version": "
|
|
60
|
+
"version": "3.0.0"
|
|
66
61
|
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ICoreBuffer } from "../CoreBuffer";
|
|
2
|
-
import { CryptoDerivationAlgorithm } from "../CryptoDerivation";
|
|
3
|
-
import { CryptoEncryptionAlgorithm } from "../encryption/CryptoEncryption";
|
|
4
|
-
import { CryptoHashAlgorithm } from "../hash/CryptoHash";
|
|
5
|
-
import { CryptoLayerProviderIdentifier } from "./CryptoLayerConfig";
|
|
6
|
-
import { DeviceBoundDerivedKeyHandle } from "./encryption/DeviceBoundDerivedKeyHandle";
|
|
7
|
-
import { DeviceBoundKeyHandle } from "./encryption/DeviceBoundKeyHandle";
|
|
8
|
-
import { PortableDerivedKeyHandle } from "./encryption/PortableDerivedKeyHandle";
|
|
9
|
-
import { PortableKeyHandle } from "./encryption/PortableKeyHandle";
|
|
10
|
-
export interface DeriveKeyHandleFromPasswordParameters {
|
|
11
|
-
providerIdent: CryptoLayerProviderIdentifier;
|
|
12
|
-
password: ICoreBuffer;
|
|
13
|
-
salt: ICoreBuffer;
|
|
14
|
-
resultingKeyEncryptionAlgorithm: CryptoEncryptionAlgorithm;
|
|
15
|
-
resultingKeyHashAlgorithm: CryptoHashAlgorithm;
|
|
16
|
-
derivationAlgorithm: CryptoDerivationAlgorithm;
|
|
17
|
-
derivationIterations: number;
|
|
18
|
-
derivationMemoryLimit: number;
|
|
19
|
-
derivationParallelism: number;
|
|
20
|
-
}
|
|
21
|
-
export declare class CryptoDerivationHandle {
|
|
22
|
-
private static deriveKeyHandleFromPassword;
|
|
23
|
-
/**
|
|
24
|
-
* Derive an ephemeral {@link DeviceBoundDerivedKeyHandle} from a password.
|
|
25
|
-
*/
|
|
26
|
-
static deriveDeviceBoundKeyHandleFromPassword(parameters: DeriveKeyHandleFromPasswordParameters): Promise<DeviceBoundDerivedKeyHandle>;
|
|
27
|
-
/**
|
|
28
|
-
* Derive an ephemeral {@link PortableDerivedKeyHandle} from a password.
|
|
29
|
-
*/
|
|
30
|
-
static derivePortableKeyHandleFromPassword(parameters: DeriveKeyHandleFromPasswordParameters): Promise<PortableDerivedKeyHandle>;
|
|
31
|
-
private static deriveKeyFromBaseKeyHandle;
|
|
32
|
-
/**
|
|
33
|
-
* Derive an ephemeral {@link DeviceBoundDerivedKeyHandle} from a {@link DeviceBoundKeyHandle} with the same algorithms.
|
|
34
|
-
*/
|
|
35
|
-
static deriveDeviceBoundKeyHandle(baseKey: DeviceBoundKeyHandle, keyId: number, context: string): Promise<DeviceBoundDerivedKeyHandle>;
|
|
36
|
-
/**
|
|
37
|
-
* Derive an ephemeral {@link PortableDerivedKeyHandle} from a {@link PortableKeyHandle} with the same algorithms.
|
|
38
|
-
*/
|
|
39
|
-
static derivePortableKeyHandle(baseKey: PortableKeyHandle, keyId: number, context: string): Promise<PortableDerivedKeyHandle>;
|
|
40
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CryptoDerivationHandle = void 0;
|
|
4
|
-
const CoreBuffer_1 = require("../CoreBuffer");
|
|
5
|
-
const CryptoError_1 = require("../CryptoError");
|
|
6
|
-
const CryptoErrorCode_1 = require("../CryptoErrorCode");
|
|
7
|
-
const CryptoValidation_1 = require("../CryptoValidation");
|
|
8
|
-
const CryptoLayerProviders_1 = require("./CryptoLayerProviders");
|
|
9
|
-
const CryptoLayerUtils_1 = require("./CryptoLayerUtils");
|
|
10
|
-
const CryptoEncryptionHandle_1 = require("./encryption/CryptoEncryptionHandle");
|
|
11
|
-
const DeviceBoundDerivedKeyHandle_1 = require("./encryption/DeviceBoundDerivedKeyHandle");
|
|
12
|
-
const PortableDerivedKeyHandle_1 = require("./encryption/PortableDerivedKeyHandle");
|
|
13
|
-
class CryptoDerivationHandle {
|
|
14
|
-
static async deriveKeyHandleFromPassword(constructor, derivationParameters, keySpecOfResultingKey) {
|
|
15
|
-
CryptoValidation_1.CryptoValidation.checkBuffer(new CoreBuffer_1.CoreBuffer(derivationParameters.salt), 8, 64, "salt", true);
|
|
16
|
-
const provider = (0, CryptoLayerProviders_1.getProvider)(derivationParameters.providerIdent);
|
|
17
|
-
const kdfParameters = CryptoLayerUtils_1.CryptoLayerUtils.kdfFromCryptoDerivation(derivationParameters.derivationAlgorithm, derivationParameters.derivationIterations, derivationParameters.derivationMemoryLimit, derivationParameters.derivationParallelism);
|
|
18
|
-
let keyHandle;
|
|
19
|
-
try {
|
|
20
|
-
keyHandle = await provider.deriveKeyFromPassword(derivationParameters.password.toUtf8(), derivationParameters.salt.buffer, keySpecOfResultingKey, kdfParameters);
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalKeyDerivation, `Provider ${await provider.providerName()} failed to derive key from password.`, undefined, e, CryptoDerivationHandle.deriveKeyHandleFromPassword);
|
|
24
|
-
}
|
|
25
|
-
return await CryptoEncryptionHandle_1.CryptoEncryptionHandle._keyHandleFromProviderAndCalKeyHandle(constructor, provider, keyHandle);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Derive an ephemeral {@link DeviceBoundDerivedKeyHandle} from a password.
|
|
29
|
-
*/
|
|
30
|
-
static async deriveDeviceBoundKeyHandleFromPassword(parameters) {
|
|
31
|
-
const keySpec = {
|
|
32
|
-
cipher: CryptoLayerUtils_1.CryptoLayerUtils.cipherFromCryptoEncryptionAlgorithm(parameters.resultingKeyEncryptionAlgorithm),
|
|
33
|
-
signing_hash: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashFromCryptoHashAlgorithm(parameters.resultingKeyHashAlgorithm),
|
|
34
|
-
ephemeral: true,
|
|
35
|
-
non_exportable: true
|
|
36
|
-
};
|
|
37
|
-
return await CryptoDerivationHandle.deriveKeyHandleFromPassword(DeviceBoundDerivedKeyHandle_1.DeviceBoundDerivedKeyHandle, parameters, keySpec);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Derive an ephemeral {@link PortableDerivedKeyHandle} from a password.
|
|
41
|
-
*/
|
|
42
|
-
static async derivePortableKeyHandleFromPassword(parameters) {
|
|
43
|
-
const keySpec = {
|
|
44
|
-
cipher: CryptoLayerUtils_1.CryptoLayerUtils.cipherFromCryptoEncryptionAlgorithm(parameters.resultingKeyEncryptionAlgorithm),
|
|
45
|
-
signing_hash: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashFromCryptoHashAlgorithm(parameters.resultingKeyHashAlgorithm),
|
|
46
|
-
ephemeral: true,
|
|
47
|
-
non_exportable: false
|
|
48
|
-
};
|
|
49
|
-
return await CryptoDerivationHandle.deriveKeyHandleFromPassword(PortableDerivedKeyHandle_1.PortableDerivedKeyHandle, parameters, keySpec);
|
|
50
|
-
}
|
|
51
|
-
static async deriveKeyFromBaseKeyHandle(constructor, baseKey, keyId, context) {
|
|
52
|
-
const bytes = CoreBuffer_1.CoreBuffer.fromUtf8(`id:${keyId};ctx:${context}`);
|
|
53
|
-
let keyHandle;
|
|
54
|
-
try {
|
|
55
|
-
keyHandle = await baseKey.keyHandle.deriveKey(bytes.buffer);
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalKeyDerivation, `Failed to derive key from base key.`, undefined, e, CryptoDerivationHandle.deriveKeyFromBaseKeyHandle);
|
|
59
|
-
}
|
|
60
|
-
return await CryptoEncryptionHandle_1.CryptoEncryptionHandle._keyHandleFromProviderAndCalKeyHandle(constructor, baseKey.provider, keyHandle);
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Derive an ephemeral {@link DeviceBoundDerivedKeyHandle} from a {@link DeviceBoundKeyHandle} with the same algorithms.
|
|
64
|
-
*/
|
|
65
|
-
static async deriveDeviceBoundKeyHandle(baseKey, keyId, context) {
|
|
66
|
-
return await CryptoDerivationHandle.deriveKeyFromBaseKeyHandle(DeviceBoundDerivedKeyHandle_1.DeviceBoundDerivedKeyHandle, baseKey, keyId, context);
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Derive an ephemeral {@link PortableDerivedKeyHandle} from a {@link PortableKeyHandle} with the same algorithms.
|
|
70
|
-
*/
|
|
71
|
-
static async derivePortableKeyHandle(baseKey, keyId, context) {
|
|
72
|
-
return await CryptoDerivationHandle.deriveKeyFromBaseKeyHandle(PortableDerivedKeyHandle_1.PortableDerivedKeyHandle, baseKey, keyId, context);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.CryptoDerivationHandle = CryptoDerivationHandle;
|
|
76
|
-
//# sourceMappingURL=CryptoDerivationHandle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoDerivationHandle.js","sourceRoot":"","sources":["../../src/crypto-layer/CryptoDerivationHandle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +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
|
-
export declare class ProviderInitConfigKeyHandle extends CryptoSerializable {
|
|
15
|
-
type: KeyHandleType;
|
|
16
|
-
keyId: string;
|
|
17
|
-
providerName: string;
|
|
18
|
-
static from(value: IProviderInitConfigKeyHandle): ProviderInitConfigKeyHandle;
|
|
19
|
-
static encode(handle: DeviceBoundKeyHandle | DeviceBoundKeyPairHandle): ProviderInitConfigKeyHandle;
|
|
20
|
-
load(): Promise<KeyHandle | KeyPairHandle>;
|
|
21
|
-
}
|
|
22
|
-
interface IProviderInitConfig {
|
|
23
|
-
providerName: string;
|
|
24
|
-
masterEncryptionKeyHandle?: ProviderInitConfigKeyHandle;
|
|
25
|
-
masterSignatureKeyHandle?: ProviderInitConfigKeyHandle;
|
|
26
|
-
dependentProvider?: ProviderInitConfig;
|
|
27
|
-
}
|
|
28
|
-
export declare class ProviderInitConfig extends CryptoSerializable {
|
|
29
|
-
providerName: string;
|
|
30
|
-
masterEncryptionKeyHandle?: ProviderInitConfigKeyHandle;
|
|
31
|
-
masterSignatureKeyHandle?: ProviderInitConfigKeyHandle;
|
|
32
|
-
dependentProvider?: ProviderInitConfig;
|
|
33
|
-
static from(value: IProviderInitConfig): ProviderInitConfig;
|
|
34
|
-
}
|
|
35
|
-
export type StorageConfig = Extract<AdditionalConfig, {
|
|
36
|
-
KVStoreConfig: any;
|
|
37
|
-
} | {
|
|
38
|
-
FileStoreConfig: any;
|
|
39
|
-
}>;
|
|
40
|
-
export type CryptoLayerProviderIdentifier = {
|
|
41
|
-
providerName: string;
|
|
42
|
-
} | {
|
|
43
|
-
securityLevel: SecurityLevel;
|
|
44
|
-
};
|
|
45
|
-
export type StorageSecuritySpec = {
|
|
46
|
-
type: "asymmetric";
|
|
47
|
-
asymmetricKeyAlgorithm: CryptoSignatureAlgorithm;
|
|
48
|
-
encryptionAlgorithm: CryptoEncryptionAlgorithm | undefined;
|
|
49
|
-
hashingAlgorithm: CryptoHashAlgorithm;
|
|
50
|
-
} | {
|
|
51
|
-
type: "symmetric";
|
|
52
|
-
encryptionAlgorithm: CryptoEncryptionAlgorithm;
|
|
53
|
-
hashingAlgorithm: CryptoHashAlgorithm;
|
|
54
|
-
};
|
|
55
|
-
export interface StorageSecurityConfig {
|
|
56
|
-
name: string;
|
|
57
|
-
signature: StorageSecuritySpec;
|
|
58
|
-
encryption: StorageSecuritySpec;
|
|
59
|
-
}
|
|
60
|
-
export {};
|
|
@@ -1,87 +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
|
-
let ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle_1 = class ProviderInitConfigKeyHandle extends CryptoSerializable_1.CryptoSerializable {
|
|
19
|
-
static from(value) {
|
|
20
|
-
return ProviderInitConfigKeyHandle_1.fromAny(value);
|
|
21
|
-
}
|
|
22
|
-
static encode(handle) {
|
|
23
|
-
return ProviderInitConfigKeyHandle_1.from({
|
|
24
|
-
type: handle instanceof DeviceBoundKeyHandle_1.DeviceBoundKeyHandle ? "symmetric" : "asymmetric",
|
|
25
|
-
keyId: handle.id,
|
|
26
|
-
providerName: handle.providerName
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
async load() {
|
|
30
|
-
const provider = (0, CryptoLayerProviders_1.getProvider)({ providerName: this.providerName });
|
|
31
|
-
switch (this.type) {
|
|
32
|
-
case "asymmetric":
|
|
33
|
-
return await provider.loadKeyPair(this.keyId);
|
|
34
|
-
case "symmetric":
|
|
35
|
-
return await provider.loadKey(this.keyId);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
exports.ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle;
|
|
40
|
-
__decorate([
|
|
41
|
-
(0, ts_serval_1.validate)(),
|
|
42
|
-
(0, ts_serval_1.serialize)(),
|
|
43
|
-
__metadata("design:type", String)
|
|
44
|
-
], ProviderInitConfigKeyHandle.prototype, "type", void 0);
|
|
45
|
-
__decorate([
|
|
46
|
-
(0, ts_serval_1.validate)(),
|
|
47
|
-
(0, ts_serval_1.serialize)(),
|
|
48
|
-
__metadata("design:type", String)
|
|
49
|
-
], ProviderInitConfigKeyHandle.prototype, "keyId", void 0);
|
|
50
|
-
__decorate([
|
|
51
|
-
(0, ts_serval_1.validate)(),
|
|
52
|
-
(0, ts_serval_1.serialize)(),
|
|
53
|
-
__metadata("design:type", String)
|
|
54
|
-
], ProviderInitConfigKeyHandle.prototype, "providerName", void 0);
|
|
55
|
-
exports.ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle = ProviderInitConfigKeyHandle_1 = __decorate([
|
|
56
|
-
(0, ts_serval_1.type)("ProviderInitConfigKeyHandle")
|
|
57
|
-
], ProviderInitConfigKeyHandle);
|
|
58
|
-
let ProviderInitConfig = ProviderInitConfig_1 = class ProviderInitConfig extends CryptoSerializable_1.CryptoSerializable {
|
|
59
|
-
static from(value) {
|
|
60
|
-
return ProviderInitConfig_1.fromAny(value);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
exports.ProviderInitConfig = ProviderInitConfig;
|
|
64
|
-
__decorate([
|
|
65
|
-
(0, ts_serval_1.validate)(),
|
|
66
|
-
(0, ts_serval_1.serialize)(),
|
|
67
|
-
__metadata("design:type", String)
|
|
68
|
-
], ProviderInitConfig.prototype, "providerName", void 0);
|
|
69
|
-
__decorate([
|
|
70
|
-
(0, ts_serval_1.validate)({ nullable: true }),
|
|
71
|
-
(0, ts_serval_1.serialize)(),
|
|
72
|
-
__metadata("design:type", ProviderInitConfigKeyHandle)
|
|
73
|
-
], ProviderInitConfig.prototype, "masterEncryptionKeyHandle", void 0);
|
|
74
|
-
__decorate([
|
|
75
|
-
(0, ts_serval_1.validate)({ nullable: true }),
|
|
76
|
-
(0, ts_serval_1.serialize)(),
|
|
77
|
-
__metadata("design:type", ProviderInitConfigKeyHandle)
|
|
78
|
-
], ProviderInitConfig.prototype, "masterSignatureKeyHandle", void 0);
|
|
79
|
-
__decorate([
|
|
80
|
-
(0, ts_serval_1.validate)({ nullable: true }),
|
|
81
|
-
(0, ts_serval_1.serialize)(),
|
|
82
|
-
__metadata("design:type", ProviderInitConfig)
|
|
83
|
-
], ProviderInitConfig.prototype, "dependentProvider", void 0);
|
|
84
|
-
exports.ProviderInitConfig = ProviderInitConfig = ProviderInitConfig_1 = __decorate([
|
|
85
|
-
(0, ts_serval_1.type)("ProviderInitConfig")
|
|
86
|
-
], ProviderInitConfig);
|
|
87
|
-
//# 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;AAYlE,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,MAAM,CAAC,MAAuD;QACxE,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,IAAI;QACb,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;AAnCY,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,CAmCvC;AAUM,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;8BACe,kBAAkB;6DAAC;6BAfrC,kBAAkB;IAD9B,IAAA,gBAAI,EAAC,oBAAoB,CAAC;GACd,kBAAkB,CAoB9B"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Provider, ProviderFactoryFunctions, SecurityLevel } from "@nmshd/rs-crypto-types";
|
|
2
|
-
import { CryptoLayerProviderIdentifier, ProviderInitConfig, StorageConfig, StorageSecurityConfig } from "./CryptoLayerConfig";
|
|
3
|
-
export declare function loadProviderFromConfig(providerConfig: ProviderInitConfig, storageConfig: StorageConfig, factoryFunctions: ProviderFactoryFunctions): Promise<void>;
|
|
4
|
-
export declare function initializeNewProviders(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 initCryptoLayerProviders} function,
|
|
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;
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadProviderFromConfig = loadProviderFromConfig;
|
|
4
|
-
exports.initializeNewProviders = initializeNewProviders;
|
|
5
|
-
exports.getProvider = getProvider;
|
|
6
|
-
exports.hasProviderForSecurityLevel = hasProviderForSecurityLevel;
|
|
7
|
-
exports.providersInitialized = providersInitialized;
|
|
8
|
-
exports.clearProviders = clearProviders;
|
|
9
|
-
const CryptoError_1 = require("../CryptoError");
|
|
10
|
-
const CryptoErrorCode_1 = require("../CryptoErrorCode");
|
|
11
|
-
const CryptoLayerConfig_1 = require("./CryptoLayerConfig");
|
|
12
|
-
const CryptoEncryptionHandle_1 = require("./encryption/CryptoEncryptionHandle");
|
|
13
|
-
const CryptoSignaturesHandle_1 = require("./signature/CryptoSignaturesHandle");
|
|
14
|
-
const SOFTWARE_PROVIDER_NAME = "SoftwareProvider";
|
|
15
|
-
const ANDROID_PROVIDER_NAME = "ANDROID_PROVIDER";
|
|
16
|
-
const ANDROID_HARDWARE_PROVIDER_NAME = "ANDROID_PROVIDER_SECURE_ELEMENT";
|
|
17
|
-
const APPLE_SECURE_ENCLAVE_PROVIDER_NAME = "APPLE_SECURE_ENCLAVE";
|
|
18
|
-
// const WINDOWS_PROVIDER_NAME = "";
|
|
19
|
-
// const LINUX_PROVIDER_NAME = "Linux_Provider";
|
|
20
|
-
const DEFAULT_STORAGE_SECURITY_CONFIG = [
|
|
21
|
-
{
|
|
22
|
-
name: ANDROID_HARDWARE_PROVIDER_NAME,
|
|
23
|
-
signature: {
|
|
24
|
-
type: "asymmetric",
|
|
25
|
-
asymmetricKeyAlgorithm: 4 /* CryptoSignatureAlgorithm.RSA_2048 */,
|
|
26
|
-
encryptionAlgorithm: undefined,
|
|
27
|
-
hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
|
|
28
|
-
},
|
|
29
|
-
encryption: {
|
|
30
|
-
type: "symmetric",
|
|
31
|
-
encryptionAlgorithm: 5 /* CryptoEncryptionAlgorithm.AES256_CBC */,
|
|
32
|
-
hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: ANDROID_PROVIDER_NAME,
|
|
37
|
-
signature: {
|
|
38
|
-
type: "asymmetric",
|
|
39
|
-
asymmetricKeyAlgorithm: 4 /* CryptoSignatureAlgorithm.RSA_2048 */,
|
|
40
|
-
encryptionAlgorithm: undefined,
|
|
41
|
-
hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
|
|
42
|
-
},
|
|
43
|
-
encryption: {
|
|
44
|
-
type: "symmetric",
|
|
45
|
-
encryptionAlgorithm: 5 /* CryptoEncryptionAlgorithm.AES256_CBC */,
|
|
46
|
-
hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
|
|
47
|
-
}
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: APPLE_SECURE_ENCLAVE_PROVIDER_NAME,
|
|
51
|
-
signature: {
|
|
52
|
-
type: "asymmetric",
|
|
53
|
-
asymmetricKeyAlgorithm: 1 /* CryptoSignatureAlgorithm.ECDSA_P256 */,
|
|
54
|
-
encryptionAlgorithm: undefined,
|
|
55
|
-
hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
|
|
56
|
-
},
|
|
57
|
-
encryption: {
|
|
58
|
-
type: "asymmetric",
|
|
59
|
-
asymmetricKeyAlgorithm: 1 /* CryptoSignatureAlgorithm.ECDSA_P256 */,
|
|
60
|
-
encryptionAlgorithm: 2 /* CryptoEncryptionAlgorithm.AES256_GCM */,
|
|
61
|
-
hashingAlgorithm: 1 /* CryptoHashAlgorithm.SHA256 */
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
];
|
|
65
|
-
const PROVIDERS = new Map();
|
|
66
|
-
const PROVIDERS_BY_NAME = new Map();
|
|
67
|
-
async function updateProvidersByNameMap() {
|
|
68
|
-
PROVIDERS_BY_NAME.clear();
|
|
69
|
-
for (const provider of PROVIDERS.values()) {
|
|
70
|
-
const name = await provider.providerName();
|
|
71
|
-
if (PROVIDERS_BY_NAME.has(name)) {
|
|
72
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalProvidersAlreadyInitialized, `Provider '${name}' has already been initialized. Due to scope issues with storage scope this provider cannot be initialized again.`).setContext(updateProvidersByNameMap);
|
|
73
|
-
}
|
|
74
|
-
PROVIDERS_BY_NAME.set(name, provider);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
async function loadProviderFromName(providerName, providerImplConfig, factoryFunctions) {
|
|
78
|
-
const provider = await factoryFunctions.createProviderFromName(providerName, providerImplConfig);
|
|
79
|
-
if (provider === undefined) {
|
|
80
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalLoadingProvider, `Failed initializing provider: '${providerName}'`).setContext(loadProviderFromName);
|
|
81
|
-
}
|
|
82
|
-
const capabilities = await provider.getCapabilities();
|
|
83
|
-
if (capabilities === undefined) {
|
|
84
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalLoadingProvider, `Failed getting capabilities of provider: '${providerName}'`).setContext(loadProviderFromName);
|
|
85
|
-
}
|
|
86
|
-
const securityLevel = capabilities.min_security_level;
|
|
87
|
-
if (PROVIDERS.has(securityLevel)) {
|
|
88
|
-
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(loadProviderFromName);
|
|
89
|
-
}
|
|
90
|
-
PROVIDERS.set(securityLevel, provider);
|
|
91
|
-
}
|
|
92
|
-
async function additionalConfigFromProviderToBeInitializedConfig(providerConfig) {
|
|
93
|
-
const additionalConfig = [];
|
|
94
|
-
if (providerConfig.masterEncryptionKeyHandle) {
|
|
95
|
-
const handle = await providerConfig.masterEncryptionKeyHandle.load();
|
|
96
|
-
if (providerConfig.masterEncryptionKeyHandle.type === "symmetric") {
|
|
97
|
-
additionalConfig.push({
|
|
98
|
-
StorageConfigSymmetricEncryption: handle
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
additionalConfig.push({
|
|
103
|
-
StorageConfigAsymmetricEncryption: handle
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
if (providerConfig.masterSignatureKeyHandle) {
|
|
108
|
-
const handle = await providerConfig.masterSignatureKeyHandle.load();
|
|
109
|
-
if (providerConfig.masterSignatureKeyHandle.type === "symmetric") {
|
|
110
|
-
additionalConfig.push({
|
|
111
|
-
StorageConfigHMAC: handle
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
additionalConfig.push({
|
|
116
|
-
StorageConfigDSA: handle
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return additionalConfig;
|
|
121
|
-
}
|
|
122
|
-
async function loadProviderFromConfig(providerConfig, storageConfig, factoryFunctions) {
|
|
123
|
-
if (providerConfig.dependentProvider !== undefined) {
|
|
124
|
-
await loadProviderFromConfig(providerConfig.dependentProvider, storageConfig, factoryFunctions);
|
|
125
|
-
}
|
|
126
|
-
const implConfig = {
|
|
127
|
-
additional_config: [storageConfig]
|
|
128
|
-
};
|
|
129
|
-
implConfig.additional_config.push(...(await additionalConfigFromProviderToBeInitializedConfig(providerConfig)));
|
|
130
|
-
await loadProviderFromName(providerConfig.providerName, implConfig, factoryFunctions);
|
|
131
|
-
await updateProvidersByNameMap();
|
|
132
|
-
}
|
|
133
|
-
async function initializeNewFallbackSoftwareProvider(softwareProviderName, storageConfig, factoryFunctions) {
|
|
134
|
-
const providerToBeInitializedConfig = CryptoLayerConfig_1.ProviderInitConfig.from({
|
|
135
|
-
providerName: softwareProviderName
|
|
136
|
-
});
|
|
137
|
-
await loadProviderFromConfig(providerToBeInitializedConfig, storageConfig, factoryFunctions);
|
|
138
|
-
return providerToBeInitializedConfig;
|
|
139
|
-
}
|
|
140
|
-
async function keyHandleFromStorageSecuritySpec(spec) {
|
|
141
|
-
if (spec.type === "symmetric") {
|
|
142
|
-
return await CryptoEncryptionHandle_1.CryptoEncryptionHandle.generateDeviceBoundKeyHandle({ securityLevel: "Hardware" }, spec.encryptionAlgorithm, spec.hashingAlgorithm);
|
|
143
|
-
}
|
|
144
|
-
return await CryptoSignaturesHandle_1.CryptoSignaturesHandle.generateDeviceBoundKeyPairHandle({ securityLevel: "Hardware" }, spec.asymmetricKeyAlgorithm, spec.encryptionAlgorithm, spec.hashingAlgorithm);
|
|
145
|
-
}
|
|
146
|
-
async function initializeNewHybridProvider(hwProviderName, storageConfig, storageSecurityConfig, factoryFunctions) {
|
|
147
|
-
const hwProviderToBeInitialized = CryptoLayerConfig_1.ProviderInitConfig.from({
|
|
148
|
-
providerName: hwProviderName
|
|
149
|
-
});
|
|
150
|
-
await loadProviderFromConfig(hwProviderToBeInitialized, storageConfig, factoryFunctions);
|
|
151
|
-
const [encryptionKeyHandle, signatureKeyHandle] = await Promise.all([
|
|
152
|
-
keyHandleFromStorageSecuritySpec(storageSecurityConfig.encryption),
|
|
153
|
-
keyHandleFromStorageSecuritySpec(storageSecurityConfig.signature)
|
|
154
|
-
]);
|
|
155
|
-
const swProviderToBeInitialized = CryptoLayerConfig_1.ProviderInitConfig.from({
|
|
156
|
-
providerName: SOFTWARE_PROVIDER_NAME,
|
|
157
|
-
masterSignatureKeyHandle: CryptoLayerConfig_1.ProviderInitConfigKeyHandle.encode(signatureKeyHandle),
|
|
158
|
-
masterEncryptionKeyHandle: CryptoLayerConfig_1.ProviderInitConfigKeyHandle.encode(encryptionKeyHandle)
|
|
159
|
-
});
|
|
160
|
-
await loadProviderFromConfig(swProviderToBeInitialized, storageConfig, factoryFunctions);
|
|
161
|
-
swProviderToBeInitialized.dependentProvider = hwProviderToBeInitialized;
|
|
162
|
-
return swProviderToBeInitialized;
|
|
163
|
-
}
|
|
164
|
-
function storageSecurityForProviderName(providerName, storageSecurityConfig) {
|
|
165
|
-
var _a;
|
|
166
|
-
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));
|
|
167
|
-
}
|
|
168
|
-
async function initializeNewProviders(storageConfig, factoryFunctions, storageSecurityConfig) {
|
|
169
|
-
const basicProviderImplConfig = {
|
|
170
|
-
additional_config: [storageConfig]
|
|
171
|
-
};
|
|
172
|
-
const providerNamesAndCaps = await factoryFunctions.getProviderCapabilities(basicProviderImplConfig);
|
|
173
|
-
const hardwareProviderNamesAndCaps = providerNamesAndCaps
|
|
174
|
-
.filter(([, cap]) => cap.min_security_level === "Hardware")
|
|
175
|
-
.filter(([name]) => storageSecurityForProviderName(name, storageSecurityConfig));
|
|
176
|
-
const softwareProviderNamesAndCaps = providerNamesAndCaps.filter(([, cap]) => cap.min_security_level === "Software");
|
|
177
|
-
if (hardwareProviderNamesAndCaps.length === 0) {
|
|
178
|
-
if (softwareProviderNamesAndCaps.length === 0) {
|
|
179
|
-
return undefined;
|
|
180
|
-
}
|
|
181
|
-
const nonFallbackSoftwareProviders = softwareProviderNamesAndCaps.filter(([name]) => name !== SOFTWARE_PROVIDER_NAME);
|
|
182
|
-
if (nonFallbackSoftwareProviders.length !== 0) {
|
|
183
|
-
return await initializeNewFallbackSoftwareProvider(nonFallbackSoftwareProviders[0][0], storageConfig, factoryFunctions);
|
|
184
|
-
}
|
|
185
|
-
return await initializeNewFallbackSoftwareProvider(SOFTWARE_PROVIDER_NAME, storageConfig, factoryFunctions);
|
|
186
|
-
}
|
|
187
|
-
const hwProviderName = hardwareProviderNamesAndCaps[0][0];
|
|
188
|
-
const hwStorageSecurityConfig = storageSecurityForProviderName(hwProviderName, storageSecurityConfig);
|
|
189
|
-
if (hwStorageSecurityConfig === undefined) {
|
|
190
|
-
return undefined;
|
|
191
|
-
}
|
|
192
|
-
return await initializeNewHybridProvider(hwProviderName, storageConfig, hwStorageSecurityConfig, factoryFunctions);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Returns an initialized provider with the given provider identifier if possible,
|
|
196
|
-
* otherwise throws {@link CryptoError} with {@link CryptoErrorCode.CalThisProviderNotInitialized}.
|
|
197
|
-
*
|
|
198
|
-
* Providers need to be initialized via the {@link initCryptoLayerProviders} function,
|
|
199
|
-
* else throws {@link CryptoError} with {@link CryptoErrorCode.CalProvidersNotInitialized}.
|
|
200
|
-
*/
|
|
201
|
-
function getProvider(identifier) {
|
|
202
|
-
if (PROVIDERS.size === 0) {
|
|
203
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalProvidersNotInitialized, "Failed to get providers as providers are not initialized.").setContext(getProvider);
|
|
204
|
-
}
|
|
205
|
-
let provider;
|
|
206
|
-
if ("securityLevel" in identifier) {
|
|
207
|
-
provider = PROVIDERS.get(identifier.securityLevel);
|
|
208
|
-
}
|
|
209
|
-
if ("providerName" in identifier) {
|
|
210
|
-
provider = PROVIDERS_BY_NAME.get(identifier.providerName);
|
|
211
|
-
}
|
|
212
|
-
if (provider === undefined) {
|
|
213
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalThisProviderNotInitialized, `Failed finding provider with identifier ${JSON.stringify(identifier)}`).setContext(getProvider);
|
|
214
|
-
}
|
|
215
|
-
return provider;
|
|
216
|
-
}
|
|
217
|
-
function hasProviderForSecurityLevel(securityLevel) {
|
|
218
|
-
if (PROVIDERS.size === 0) {
|
|
219
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalProvidersNotInitialized, "Failed to get providers as providers are not initialized.").setContext(hasProviderForSecurityLevel);
|
|
220
|
-
}
|
|
221
|
-
return PROVIDERS.has(securityLevel);
|
|
222
|
-
}
|
|
223
|
-
function providersInitialized() {
|
|
224
|
-
if (PROVIDERS.size !== PROVIDERS_BY_NAME.size) {
|
|
225
|
-
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);
|
|
226
|
-
}
|
|
227
|
-
return PROVIDERS.size !== 0;
|
|
228
|
-
}
|
|
229
|
-
function clearProviders() {
|
|
230
|
-
PROVIDERS.clear();
|
|
231
|
-
PROVIDERS_BY_NAME.clear();
|
|
232
|
-
}
|
|
233
|
-
//# 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,14 +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 cryptoHashAlgorithmFromCryptoHash(cryptoHash: CryptoHash): CryptoHashAlgorithm;
|
|
9
|
-
static cryptoHashFromCryptoHashAlgorithm(algorithm: CryptoHashAlgorithm): CryptoHash;
|
|
10
|
-
static cipherFromCryptoEncryptionAlgorithm(alg: CryptoEncryptionAlgorithm): Cipher;
|
|
11
|
-
static cryptoEncryptionAlgorithmFromCipher(cipher: Cipher): CryptoEncryptionAlgorithm;
|
|
12
|
-
static argon2OptionsFromIterationsMemLimitAndParallelism(iterations: number, memlimit: number, parallelism: number): Argon2Options;
|
|
13
|
-
static kdfFromCryptoDerivation(derivationAlgorithm: CryptoDerivationAlgorithm, iterations: number, memlimit: number, parallelism: number): KDF;
|
|
14
|
-
}
|