@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
|
@@ -1,108 +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 cryptoHashAlgorithmFromCryptoHash(cryptoHash) {
|
|
26
|
-
// eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
|
|
27
|
-
switch (cryptoHash) {
|
|
28
|
-
case "Sha2_256":
|
|
29
|
-
return 1 /* CryptoHashAlgorithm.SHA256 */;
|
|
30
|
-
case "Sha2_512":
|
|
31
|
-
return 2 /* CryptoHashAlgorithm.SHA512 */;
|
|
32
|
-
case "Blake2b":
|
|
33
|
-
return 3 /* CryptoHashAlgorithm.BLAKE2B */;
|
|
34
|
-
default:
|
|
35
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalUnsupportedAlgorithm, `Hash function ${cryptoHash} is not supported by ts crypto.`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
static cryptoHashFromCryptoHashAlgorithm(algorithm) {
|
|
39
|
-
switch (algorithm) {
|
|
40
|
-
case 1 /* CryptoHashAlgorithm.SHA256 */:
|
|
41
|
-
return "Sha2_256";
|
|
42
|
-
case 2 /* CryptoHashAlgorithm.SHA512 */:
|
|
43
|
-
return "Sha2_512";
|
|
44
|
-
case 3 /* CryptoHashAlgorithm.BLAKE2B */:
|
|
45
|
-
return "Blake2b";
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
static cipherFromCryptoEncryptionAlgorithm(alg) {
|
|
49
|
-
switch (alg) {
|
|
50
|
-
case 1 /* CryptoEncryptionAlgorithm.AES128_GCM */:
|
|
51
|
-
return "AesGcm128";
|
|
52
|
-
case 2 /* CryptoEncryptionAlgorithm.AES256_GCM */:
|
|
53
|
-
return "AesGcm256";
|
|
54
|
-
case 3 /* CryptoEncryptionAlgorithm.XCHACHA20_POLY1305 */:
|
|
55
|
-
return "XChaCha20Poly1305";
|
|
56
|
-
case 4 /* CryptoEncryptionAlgorithm.AES128_CBC */:
|
|
57
|
-
return "AesCbc128";
|
|
58
|
-
case 5 /* CryptoEncryptionAlgorithm.AES256_CBC */:
|
|
59
|
-
return "AesCbc256";
|
|
60
|
-
case 6 /* CryptoEncryptionAlgorithm.CHACHA20_POLY1305 */:
|
|
61
|
-
return "ChaCha20Poly1305";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
static cryptoEncryptionAlgorithmFromCipher(cipher) {
|
|
65
|
-
switch (cipher) {
|
|
66
|
-
case "AesGcm128":
|
|
67
|
-
return 1 /* CryptoEncryptionAlgorithm.AES128_GCM */;
|
|
68
|
-
case "AesGcm256":
|
|
69
|
-
return 2 /* CryptoEncryptionAlgorithm.AES256_GCM */;
|
|
70
|
-
case "AesCbc128":
|
|
71
|
-
return 4 /* CryptoEncryptionAlgorithm.AES128_CBC */;
|
|
72
|
-
case "AesCbc256":
|
|
73
|
-
return 5 /* CryptoEncryptionAlgorithm.AES256_CBC */;
|
|
74
|
-
case "XChaCha20Poly1305":
|
|
75
|
-
return 3 /* CryptoEncryptionAlgorithm.XCHACHA20_POLY1305 */;
|
|
76
|
-
case "ChaCha20Poly1305":
|
|
77
|
-
return 6 /* CryptoEncryptionAlgorithm.CHACHA20_POLY1305 */;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
static argon2OptionsFromIterationsMemLimitAndParallelism(iterations, memlimit, parallelism) {
|
|
81
|
-
const kibiByteBase = 2 ^ 10;
|
|
82
|
-
if (memlimit % kibiByteBase !== 0) {
|
|
83
|
-
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);
|
|
84
|
-
}
|
|
85
|
-
const memory = memlimit / kibiByteBase;
|
|
86
|
-
const options = {
|
|
87
|
-
memory: memory,
|
|
88
|
-
iterations: iterations,
|
|
89
|
-
parallelism: parallelism
|
|
90
|
-
};
|
|
91
|
-
return options;
|
|
92
|
-
}
|
|
93
|
-
static kdfFromCryptoDerivation(derivationAlgorithm, iterations, memlimit, parallelism) {
|
|
94
|
-
const options = CryptoLayerUtils.argon2OptionsFromIterationsMemLimitAndParallelism(iterations, memlimit, parallelism);
|
|
95
|
-
switch (derivationAlgorithm) {
|
|
96
|
-
case "argon2id" /* CryptoDerivationAlgorithm.ARGON2ID */:
|
|
97
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
98
|
-
return { Argon2id: options };
|
|
99
|
-
case "argon2i" /* CryptoDerivationAlgorithm.ARGON2I */:
|
|
100
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
101
|
-
return { Argon2i: options };
|
|
102
|
-
default:
|
|
103
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.WrongParameters, `Crypto derivation algorithm '${derivationAlgorithm}' not supported.`).setContext(CryptoLayerUtils.kdfFromCryptoDerivation);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
exports.CryptoLayerUtils = CryptoLayerUtils;
|
|
108
|
-
//# 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
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BaseDerivedKeyHandle = void 0;
|
|
4
|
-
const CryptoLayerUtils_1 = require("../CryptoLayerUtils");
|
|
5
|
-
/**
|
|
6
|
-
* Variant of {@link BaseKeyHandle} without serialization and deserialization.
|
|
7
|
-
*/
|
|
8
|
-
class BaseDerivedKeyHandle {
|
|
9
|
-
async encryptionAndHashAlgorithm() {
|
|
10
|
-
const spec = await this.keyHandle.spec();
|
|
11
|
-
return [
|
|
12
|
-
CryptoLayerUtils_1.CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher(spec.cipher),
|
|
13
|
-
CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash(spec.signing_hash)
|
|
14
|
-
];
|
|
15
|
-
}
|
|
16
|
-
async encryptionAlgorithm() {
|
|
17
|
-
const spec = await this.keyHandle.spec();
|
|
18
|
-
return CryptoLayerUtils_1.CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher(spec.cipher);
|
|
19
|
-
}
|
|
20
|
-
async hashAlgorithm() {
|
|
21
|
-
const spec = await this.keyHandle.spec();
|
|
22
|
-
return CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash(spec.signing_hash);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.BaseDerivedKeyHandle = BaseDerivedKeyHandle;
|
|
26
|
-
//# sourceMappingURL=BaseDerivedKeyHandle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDerivedKeyHandle.js","sourceRoot":"","sources":["../../../src/crypto-layer/encryption/BaseDerivedKeyHandle.ts"],"names":[],"mappings":";;;AAGA,0DAAuD;AAEvD;;GAEG;AACH,MAAsB,oBAAoB;IAO/B,KAAK,CAAC,0BAA0B;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO;YACH,mCAAgB,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC;YACjE,mCAAgB,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,CAAC;SACxE,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,mCAAgB,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,aAAa;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,mCAAgB,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjF,CAAC;CACJ;AAxBD,oDAwBC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { ISerializable, ISerialized, SerializableAsync } from "@js-soft/ts-serval";
|
|
2
|
-
import { KeyHandle, Provider } from "@nmshd/rs-crypto-types";
|
|
3
|
-
import { CryptoSerializableAsync } from "../../CryptoSerializable";
|
|
4
|
-
import { CryptoEncryptionAlgorithm } from "../../encryption/CryptoEncryption";
|
|
5
|
-
import { CryptoHashAlgorithm } from "../../hash/CryptoHash";
|
|
6
|
-
export interface IBaseKeyHandleSerialized extends ISerialized {
|
|
7
|
-
kid: string;
|
|
8
|
-
pnm: string;
|
|
9
|
-
}
|
|
10
|
-
export interface IBaseKeyHandle extends ISerializable {
|
|
11
|
-
id: string;
|
|
12
|
-
providerName: string;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Represents a handle to a secret key used for symmetric encryption/decryption within the crypto layer.
|
|
16
|
-
* This handle encapsulates a reference to the key material, managed by the underlying crypto provider,
|
|
17
|
-
* without exposing the raw key material directly.
|
|
18
|
-
*/
|
|
19
|
-
export declare abstract class BaseKeyHandle extends CryptoSerializableAsync implements IBaseKeyHandle {
|
|
20
|
-
id: string;
|
|
21
|
-
providerName: string;
|
|
22
|
-
provider: Provider;
|
|
23
|
-
keyHandle: KeyHandle;
|
|
24
|
-
encryptionAndHashAlgorithm(): Promise<[CryptoEncryptionAlgorithm, CryptoHashAlgorithm]>;
|
|
25
|
-
encryptionAlgorithm(): Promise<CryptoEncryptionAlgorithm>;
|
|
26
|
-
hashAlgorithm(): Promise<CryptoHashAlgorithm>;
|
|
27
|
-
protected static preFrom(value: any): any;
|
|
28
|
-
static postFrom<T extends SerializableAsync>(value: T): Promise<T>;
|
|
29
|
-
}
|
|
@@ -1,82 +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 BaseKeyHandle_1;
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.BaseKeyHandle = void 0;
|
|
14
|
-
const ts_serval_1 = require("@js-soft/ts-serval");
|
|
15
|
-
const CryptoError_1 = require("../../CryptoError");
|
|
16
|
-
const CryptoErrorCode_1 = require("../../CryptoErrorCode");
|
|
17
|
-
const CryptoSerializable_1 = require("../../CryptoSerializable");
|
|
18
|
-
const CryptoLayerProviders_1 = require("../CryptoLayerProviders");
|
|
19
|
-
const CryptoLayerUtils_1 = require("../CryptoLayerUtils");
|
|
20
|
-
/**
|
|
21
|
-
* Represents a handle to a secret key used for symmetric encryption/decryption within the crypto layer.
|
|
22
|
-
* This handle encapsulates a reference to the key material, managed by the underlying crypto provider,
|
|
23
|
-
* without exposing the raw key material directly.
|
|
24
|
-
*/
|
|
25
|
-
let BaseKeyHandle = BaseKeyHandle_1 = class BaseKeyHandle extends CryptoSerializable_1.CryptoSerializableAsync {
|
|
26
|
-
async encryptionAndHashAlgorithm() {
|
|
27
|
-
const spec = await this.keyHandle.spec();
|
|
28
|
-
return [
|
|
29
|
-
CryptoLayerUtils_1.CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher(spec.cipher),
|
|
30
|
-
CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash(spec.signing_hash)
|
|
31
|
-
];
|
|
32
|
-
}
|
|
33
|
-
async encryptionAlgorithm() {
|
|
34
|
-
const spec = await this.keyHandle.spec();
|
|
35
|
-
return CryptoLayerUtils_1.CryptoLayerUtils.cryptoEncryptionAlgorithmFromCipher(spec.cipher);
|
|
36
|
-
}
|
|
37
|
-
async hashAlgorithm() {
|
|
38
|
-
const spec = await this.keyHandle.spec();
|
|
39
|
-
return CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashAlgorithmFromCryptoHash(spec.signing_hash);
|
|
40
|
-
}
|
|
41
|
-
static preFrom(value) {
|
|
42
|
-
if (value.kid) {
|
|
43
|
-
value = {
|
|
44
|
-
id: value.kid,
|
|
45
|
-
providerName: value.pnm,
|
|
46
|
-
spec: value.spc
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return value;
|
|
50
|
-
}
|
|
51
|
-
static async postFrom(value) {
|
|
52
|
-
if (!(value instanceof this)) {
|
|
53
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.DeserializeValidation, "Expected 'BaseKeyHandle' in postFrom.");
|
|
54
|
-
}
|
|
55
|
-
const provider = (0, CryptoLayerProviders_1.getProvider)({ providerName: value.providerName });
|
|
56
|
-
let keyHandle;
|
|
57
|
-
try {
|
|
58
|
-
keyHandle = await provider.loadKey(value.id);
|
|
59
|
-
}
|
|
60
|
-
catch (e) {
|
|
61
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalLoadKey, "Failed to load key during deserialization.", undefined, e, BaseKeyHandle_1.postFrom);
|
|
62
|
-
}
|
|
63
|
-
value.keyHandle = keyHandle;
|
|
64
|
-
value.provider = provider;
|
|
65
|
-
return value;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
exports.BaseKeyHandle = BaseKeyHandle;
|
|
69
|
-
__decorate([
|
|
70
|
-
(0, ts_serval_1.validate)(),
|
|
71
|
-
(0, ts_serval_1.serialize)(),
|
|
72
|
-
__metadata("design:type", String)
|
|
73
|
-
], BaseKeyHandle.prototype, "id", void 0);
|
|
74
|
-
__decorate([
|
|
75
|
-
(0, ts_serval_1.validate)(),
|
|
76
|
-
(0, ts_serval_1.serialize)(),
|
|
77
|
-
__metadata("design:type", String)
|
|
78
|
-
], BaseKeyHandle.prototype, "providerName", void 0);
|
|
79
|
-
exports.BaseKeyHandle = BaseKeyHandle = BaseKeyHandle_1 = __decorate([
|
|
80
|
-
(0, ts_serval_1.type)("BaseKeyHandle")
|
|
81
|
-
], BaseKeyHandle);
|
|
82
|
-
//# sourceMappingURL=BaseKeyHandle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseKeyHandle.js","sourceRoot":"","sources":["../../../src/crypto-layer/encryption/BaseKeyHandle.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA8G;AAE9G,mDAAgD;AAChD,2DAAwD;AACxD,iEAAmE;AAGnE,kEAAsD;AACtD,0DAAuD;AAYvD;;;;GAIG;AAEI,IAAe,aAAa,qBAA5B,MAAe,aAAc,SAAQ,4CAAuB;IAYxD,KAAK,CAAC,0BAA0B;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO;YACH,mCAAgB,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC;YACjE,mCAAgB,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,CAAC;SACxE,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,mBAAmB;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,mCAAgB,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAEM,KAAK,CAAC,aAAa;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,mCAAgB,CAAC,iCAAiC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACjF,CAAC;IAES,MAAM,CAAU,OAAO,CAAC,KAAU;QACxC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;YACZ,KAAK,GAAG;gBACJ,EAAE,EAAE,KAAK,CAAC,GAAG;gBACb,YAAY,EAAE,KAAK,CAAC,GAAG;gBACvB,IAAI,EAAE,KAAK,CAAC,GAAG;aAClB,CAAC;QACN,CAAC;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,MAAM,CAAU,KAAK,CAAC,QAAQ,CAA8B,KAAQ;QACvE,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,yBAAW,CAAC,iCAAe,CAAC,qBAAqB,EAAE,uCAAuC,CAAC,CAAC;QAC1G,CAAC;QAED,MAAM,QAAQ,GAAG,IAAA,kCAAW,EAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QACnE,IAAI,SAAoB,CAAC;QACzB,IAAI,CAAC;YACD,SAAS,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,yBAAW,CACjB,iCAAe,CAAC,UAAU,EAC1B,4CAA4C,EAC5C,SAAS,EACT,CAAU,EACV,eAAa,CAAC,QAAQ,CACzB,CAAC;QACN,CAAC;QAED,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ,CAAA;AAjEqB,sCAAa;AAGxB;IAFN,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;yCACM;AAIX;IAFN,IAAA,oBAAQ,GAAE;IACV,IAAA,qBAAS,GAAE;;mDACgB;wBAPV,aAAa;IADlC,IAAA,gBAAI,EAAC,eAAe,CAAC;GACA,aAAa,CAiElC"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { KeyHandle, Provider } from "@nmshd/rs-crypto-types";
|
|
2
|
-
import { CoreBuffer } from "../../CoreBuffer";
|
|
3
|
-
import { CryptoCipher } from "../../encryption/CryptoCipher";
|
|
4
|
-
import { CryptoEncryptionAlgorithm } from "../../encryption/CryptoEncryption";
|
|
5
|
-
import { CryptoSecretKey } from "../../encryption/CryptoSecretKey";
|
|
6
|
-
import { CryptoHashAlgorithm } from "../../hash/CryptoHash";
|
|
7
|
-
import { CryptoLayerProviderIdentifier } from "../CryptoLayerConfig";
|
|
8
|
-
import { BaseDerivedKeyHandle } from "./BaseDerivedKeyHandle";
|
|
9
|
-
import { BaseKeyHandle } from "./BaseKeyHandle";
|
|
10
|
-
import { DeviceBoundKeyHandle } from "./DeviceBoundKeyHandle";
|
|
11
|
-
import { PortableDerivedKeyHandle } from "./PortableDerivedKeyHandle";
|
|
12
|
-
import { PortableKeyHandle } from "./PortableKeyHandle";
|
|
13
|
-
export declare class CryptoEncryptionHandle {
|
|
14
|
-
/**
|
|
15
|
-
* Creates a new {@link BaseKeyHandle} / {@link DerivedBaseKeyHandle} or its child from an existing {@link KeyHandle}.
|
|
16
|
-
*/
|
|
17
|
-
static _keyHandleFromProviderAndCalKeyHandle<T extends BaseKeyHandle | BaseDerivedKeyHandle>(constructor: new () => T, provider: Provider, keyHandle: KeyHandle): Promise<T>;
|
|
18
|
-
private static generateKeyHandle;
|
|
19
|
-
static generateDeviceBoundKeyHandle(providerIdent: CryptoLayerProviderIdentifier, encryptionAlgorithm: CryptoEncryptionAlgorithm, hashAlgorithm: CryptoHashAlgorithm): Promise<DeviceBoundKeyHandle>;
|
|
20
|
-
static generatePortableKeyHandle(providerIdent: CryptoLayerProviderIdentifier, encryptionAlgorithm: CryptoEncryptionAlgorithm, hashAlgorithm: CryptoHashAlgorithm): Promise<PortableKeyHandle>;
|
|
21
|
-
static encrypt<T extends BaseKeyHandle | BaseDerivedKeyHandle>(plaintext: CoreBuffer, secretKeyHandle: T, nonce?: CoreBuffer): Promise<CryptoCipher>;
|
|
22
|
-
static encryptWithCounter<T extends BaseKeyHandle | BaseDerivedKeyHandle>(plaintext: CoreBuffer, secretKeyHandle: T, nonce: CoreBuffer, counter: number): Promise<CryptoCipher>;
|
|
23
|
-
static decrypt<T extends BaseKeyHandle | BaseDerivedKeyHandle>(cipher: CryptoCipher, secretKeyHandle: T, nonce?: CoreBuffer): Promise<CoreBuffer>;
|
|
24
|
-
static decryptWithCounter<T extends BaseKeyHandle | BaseDerivedKeyHandle>(cipher: CryptoCipher, secretKeyHandle: T, nonce: CoreBuffer, counter: number): Promise<CoreBuffer>;
|
|
25
|
-
static createNonce(providerIdent: CryptoLayerProviderIdentifier, algorithm: CryptoEncryptionAlgorithm): Promise<CoreBuffer>;
|
|
26
|
-
static extractRawKey(portableKeyHandle: PortableKeyHandle | PortableDerivedKeyHandle): Promise<CoreBuffer>;
|
|
27
|
-
static cryptoSecretKeyFromPortableKeyHandle(portableKeyHandle: PortableKeyHandle | PortableDerivedKeyHandle): Promise<CryptoSecretKey>;
|
|
28
|
-
private static keyHandleFromCryptoSecretKey;
|
|
29
|
-
static portableKeyHandleFromCryptoSecretKey(providerIdent: CryptoLayerProviderIdentifier, cryptoSecretKey: CryptoSecretKey, signingHash?: CryptoHashAlgorithm): Promise<PortableKeyHandle>;
|
|
30
|
-
static portableDerivedKeyHandleFromCryptoSecretKey(providerIdent: CryptoLayerProviderIdentifier, cryptoSecretKey: CryptoSecretKey, signingHash?: CryptoHashAlgorithm): Promise<PortableDerivedKeyHandle>;
|
|
31
|
-
private static _addCounter;
|
|
32
|
-
}
|
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CryptoEncryptionHandle = 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 CryptoCipher_1 = require("../../encryption/CryptoCipher");
|
|
9
|
-
const CryptoSecretKey_1 = require("../../encryption/CryptoSecretKey");
|
|
10
|
-
const CryptoLayerProviders_1 = require("../CryptoLayerProviders");
|
|
11
|
-
const CryptoLayerUtils_1 = require("../CryptoLayerUtils");
|
|
12
|
-
const DeviceBoundKeyHandle_1 = require("./DeviceBoundKeyHandle");
|
|
13
|
-
const PortableDerivedKeyHandle_1 = require("./PortableDerivedKeyHandle");
|
|
14
|
-
const PortableKeyHandle_1 = require("./PortableKeyHandle");
|
|
15
|
-
class CryptoEncryptionHandle {
|
|
16
|
-
/**
|
|
17
|
-
* Creates a new {@link BaseKeyHandle} / {@link DerivedBaseKeyHandle} or its child from an existing {@link KeyHandle}.
|
|
18
|
-
*/
|
|
19
|
-
static async _keyHandleFromProviderAndCalKeyHandle(constructor, provider, keyHandle) {
|
|
20
|
-
const result = new constructor();
|
|
21
|
-
[result.providerName, result.id] = await Promise.all([provider.providerName(), keyHandle.id()]);
|
|
22
|
-
result.provider = provider;
|
|
23
|
-
result.keyHandle = keyHandle;
|
|
24
|
-
return result;
|
|
25
|
-
}
|
|
26
|
-
static async generateKeyHandle(constructor, providerIdent, spec) {
|
|
27
|
-
const provider = (0, CryptoLayerProviders_1.getProvider)(providerIdent);
|
|
28
|
-
const keyHandle = await provider.createKey(spec);
|
|
29
|
-
const secretKeyHandle = await CryptoEncryptionHandle._keyHandleFromProviderAndCalKeyHandle(constructor, provider, keyHandle);
|
|
30
|
-
return secretKeyHandle;
|
|
31
|
-
}
|
|
32
|
-
static async generateDeviceBoundKeyHandle(providerIdent, encryptionAlgorithm, hashAlgorithm) {
|
|
33
|
-
const deviceBoundSpec = {
|
|
34
|
-
cipher: CryptoLayerUtils_1.CryptoLayerUtils.cipherFromCryptoEncryptionAlgorithm(encryptionAlgorithm),
|
|
35
|
-
signing_hash: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashFromCryptoHashAlgorithm(hashAlgorithm),
|
|
36
|
-
ephemeral: false,
|
|
37
|
-
non_exportable: true
|
|
38
|
-
};
|
|
39
|
-
return await this.generateKeyHandle(DeviceBoundKeyHandle_1.DeviceBoundKeyHandle, providerIdent, deviceBoundSpec);
|
|
40
|
-
}
|
|
41
|
-
static async generatePortableKeyHandle(providerIdent, encryptionAlgorithm, hashAlgorithm) {
|
|
42
|
-
const portableSpec = {
|
|
43
|
-
cipher: CryptoLayerUtils_1.CryptoLayerUtils.cipherFromCryptoEncryptionAlgorithm(encryptionAlgorithm),
|
|
44
|
-
signing_hash: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashFromCryptoHashAlgorithm(hashAlgorithm),
|
|
45
|
-
ephemeral: false,
|
|
46
|
-
non_exportable: false
|
|
47
|
-
};
|
|
48
|
-
return await this.generateKeyHandle(PortableKeyHandle_1.PortableKeyHandle, providerIdent, portableSpec);
|
|
49
|
-
}
|
|
50
|
-
static async encrypt(plaintext, secretKeyHandle, nonce) {
|
|
51
|
-
const encryptionAlgorithm = await secretKeyHandle.encryptionAlgorithm();
|
|
52
|
-
if (nonce === undefined || nonce.buffer.length === 0) {
|
|
53
|
-
nonce = await this.createNonce({ providerName: secretKeyHandle.providerName }, encryptionAlgorithm);
|
|
54
|
-
}
|
|
55
|
-
else {
|
|
56
|
-
CryptoValidation_1.CryptoValidation.checkNonceForAlgorithm(nonce, encryptionAlgorithm);
|
|
57
|
-
}
|
|
58
|
-
let cipher;
|
|
59
|
-
try {
|
|
60
|
-
cipher = await secretKeyHandle.keyHandle.encryptWithIv(plaintext.buffer, nonce.buffer);
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.EncryptionEncrypt, `${e}`, undefined, e, CryptoEncryptionHandle.encrypt);
|
|
64
|
-
}
|
|
65
|
-
return CryptoCipher_1.CryptoCipher.from({
|
|
66
|
-
cipher: CoreBuffer_1.CoreBuffer.from(cipher),
|
|
67
|
-
algorithm: encryptionAlgorithm,
|
|
68
|
-
nonce
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
static async encryptWithCounter(plaintext, secretKeyHandle, nonce, counter) {
|
|
72
|
-
const encryptionAlgorithm = await secretKeyHandle.encryptionAlgorithm();
|
|
73
|
-
CryptoValidation_1.CryptoValidation.checkCounter(counter);
|
|
74
|
-
CryptoValidation_1.CryptoValidation.checkNonceForAlgorithm(nonce, encryptionAlgorithm);
|
|
75
|
-
const publicNonce = this._addCounter(nonce.buffer, counter);
|
|
76
|
-
let cipher;
|
|
77
|
-
try {
|
|
78
|
-
cipher = await secretKeyHandle.keyHandle.encryptWithIv(plaintext.buffer, publicNonce.buffer);
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.EncryptionEncrypt, `${e}`, undefined, e, CryptoEncryptionHandle.encryptWithCounter);
|
|
82
|
-
}
|
|
83
|
-
return CryptoCipher_1.CryptoCipher.from({
|
|
84
|
-
cipher: CoreBuffer_1.CoreBuffer.from(cipher),
|
|
85
|
-
algorithm: encryptionAlgorithm,
|
|
86
|
-
counter
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
static async decrypt(cipher, secretKeyHandle, nonce) {
|
|
90
|
-
const encryptionAlgorithm = await secretKeyHandle.encryptionAlgorithm();
|
|
91
|
-
let publicNonce;
|
|
92
|
-
if (nonce !== undefined) {
|
|
93
|
-
CryptoValidation_1.CryptoValidation.checkNonceForAlgorithm(nonce, encryptionAlgorithm);
|
|
94
|
-
publicNonce = nonce.buffer;
|
|
95
|
-
}
|
|
96
|
-
else if (cipher.nonce !== undefined) {
|
|
97
|
-
publicNonce = cipher.nonce.buffer;
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.EncryptionWrongNonce, "Cipher does not contain a nonce and no nonce is given.").setContext(CryptoEncryptionHandle.decrypt);
|
|
101
|
-
}
|
|
102
|
-
try {
|
|
103
|
-
const buffer = await secretKeyHandle.keyHandle.decryptData(cipher.cipher.buffer, publicNonce);
|
|
104
|
-
return CoreBuffer_1.CoreBuffer.from(buffer);
|
|
105
|
-
}
|
|
106
|
-
catch (e) {
|
|
107
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.EncryptionEncrypt, `${e}`, undefined, e, CryptoEncryptionHandle.decrypt);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
static async decryptWithCounter(cipher, secretKeyHandle, nonce, counter) {
|
|
111
|
-
const encryptionAlgorithm = await secretKeyHandle.encryptionAlgorithm();
|
|
112
|
-
CryptoValidation_1.CryptoValidation.checkCounter(counter);
|
|
113
|
-
CryptoValidation_1.CryptoValidation.checkNonceForAlgorithm(nonce, encryptionAlgorithm);
|
|
114
|
-
const publicNonce = this._addCounter(nonce.buffer, counter);
|
|
115
|
-
try {
|
|
116
|
-
const buffer = await secretKeyHandle.keyHandle.decryptData(cipher.cipher.buffer, publicNonce.buffer);
|
|
117
|
-
return CoreBuffer_1.CoreBuffer.from(buffer);
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.EncryptionDecrypt, `${e}`, undefined, e, CryptoEncryptionHandle.decryptWithCounter);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
static async createNonce(providerIdent, algorithm) {
|
|
124
|
-
const provider = (0, CryptoLayerProviders_1.getProvider)(providerIdent);
|
|
125
|
-
let nonceLength;
|
|
126
|
-
switch (algorithm) {
|
|
127
|
-
case 1 /* CryptoEncryptionAlgorithm.AES128_GCM */:
|
|
128
|
-
case 2 /* CryptoEncryptionAlgorithm.AES256_GCM */:
|
|
129
|
-
case 6 /* CryptoEncryptionAlgorithm.CHACHA20_POLY1305 */:
|
|
130
|
-
nonceLength = 12;
|
|
131
|
-
break;
|
|
132
|
-
case 4 /* CryptoEncryptionAlgorithm.AES128_CBC */:
|
|
133
|
-
case 5 /* CryptoEncryptionAlgorithm.AES256_CBC */:
|
|
134
|
-
nonceLength = 16;
|
|
135
|
-
break;
|
|
136
|
-
case 3 /* CryptoEncryptionAlgorithm.XCHACHA20_POLY1305 */:
|
|
137
|
-
nonceLength = 24;
|
|
138
|
-
break;
|
|
139
|
-
}
|
|
140
|
-
const buffer = await provider.getRandom(nonceLength);
|
|
141
|
-
return CoreBuffer_1.CoreBuffer.from(buffer);
|
|
142
|
-
}
|
|
143
|
-
static async extractRawKey(portableKeyHandle) {
|
|
144
|
-
const rawKey = await portableKeyHandle.keyHandle.extractKey();
|
|
145
|
-
return new CoreBuffer_1.CoreBuffer(rawKey);
|
|
146
|
-
}
|
|
147
|
-
static async cryptoSecretKeyFromPortableKeyHandle(portableKeyHandle) {
|
|
148
|
-
const rawKeyPromise = CryptoEncryptionHandle.extractRawKey(portableKeyHandle);
|
|
149
|
-
const algorithm = await portableKeyHandle.encryptionAlgorithm();
|
|
150
|
-
const cryptoSecretKeyObj = {
|
|
151
|
-
algorithm: algorithm,
|
|
152
|
-
secretKey: await rawKeyPromise
|
|
153
|
-
};
|
|
154
|
-
return CryptoSecretKey_1.CryptoSecretKey.from(cryptoSecretKeyObj);
|
|
155
|
-
}
|
|
156
|
-
static async keyHandleFromCryptoSecretKey(constructor, providerIdent, cryptoSecretKey, signingHash, ephemeral) {
|
|
157
|
-
const cipher = CryptoLayerUtils_1.CryptoLayerUtils.cipherFromCryptoEncryptionAlgorithm(cryptoSecretKey.algorithm);
|
|
158
|
-
const keySpec = {
|
|
159
|
-
cipher: cipher,
|
|
160
|
-
ephemeral: ephemeral,
|
|
161
|
-
signing_hash: CryptoLayerUtils_1.CryptoLayerUtils.cryptoHashFromCryptoHashAlgorithm(signingHash),
|
|
162
|
-
non_exportable: false
|
|
163
|
-
};
|
|
164
|
-
const provider = (0, CryptoLayerProviders_1.getProvider)(providerIdent);
|
|
165
|
-
let keyHandle;
|
|
166
|
-
try {
|
|
167
|
-
keyHandle = await provider.importKey(keySpec, cryptoSecretKey.secretKey.buffer);
|
|
168
|
-
}
|
|
169
|
-
catch (e) {
|
|
170
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.CalImportOfKey, "Failed to import crypto secret key.", undefined, e, CryptoEncryptionHandle.keyHandleFromCryptoSecretKey);
|
|
171
|
-
}
|
|
172
|
-
return await CryptoEncryptionHandle._keyHandleFromProviderAndCalKeyHandle(constructor, provider, keyHandle);
|
|
173
|
-
}
|
|
174
|
-
static async portableKeyHandleFromCryptoSecretKey(providerIdent, cryptoSecretKey, signingHash = 2 /* CryptoHashAlgorithm.SHA512 */) {
|
|
175
|
-
return await CryptoEncryptionHandle.keyHandleFromCryptoSecretKey(PortableKeyHandle_1.PortableKeyHandle, providerIdent, cryptoSecretKey, signingHash, false);
|
|
176
|
-
}
|
|
177
|
-
static async portableDerivedKeyHandleFromCryptoSecretKey(providerIdent, cryptoSecretKey, signingHash = 2 /* CryptoHashAlgorithm.SHA512 */) {
|
|
178
|
-
return await CryptoEncryptionHandle.keyHandleFromCryptoSecretKey(PortableDerivedKeyHandle_1.PortableDerivedKeyHandle, providerIdent, cryptoSecretKey, signingHash, true);
|
|
179
|
-
}
|
|
180
|
-
static _addCounter(nonce, counter) {
|
|
181
|
-
let buffer;
|
|
182
|
-
if (nonce instanceof Uint8Array) {
|
|
183
|
-
buffer = new CoreBuffer_1.CoreBuffer(nonce);
|
|
184
|
-
}
|
|
185
|
-
else if (nonce instanceof CoreBuffer_1.CoreBuffer) {
|
|
186
|
-
buffer = nonce;
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
throw new CryptoError_1.CryptoError(CryptoErrorCode_1.CryptoErrorCode.EncryptionWrongNonce).setContext(CryptoEncryptionHandle.decryptWithCounter);
|
|
190
|
-
}
|
|
191
|
-
const clone = buffer.clone().add(counter);
|
|
192
|
-
return clone;
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
exports.CryptoEncryptionHandle = CryptoEncryptionHandle;
|
|
196
|
-
//# sourceMappingURL=CryptoEncryptionHandle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoEncryptionHandle.js","sourceRoot":"","sources":["../../../src/crypto-layer/encryption/CryptoEncryptionHandle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { BaseDerivedKeyHandle } from "./BaseDerivedKeyHandle";
|
|
2
|
-
/** Non exportable, ephemeral key handle that is derived from a device bound key handle. */
|
|
3
|
-
export declare class DeviceBoundDerivedKeyHandle extends BaseDerivedKeyHandle {
|
|
4
|
-
readonly _isDeviceBoundDerivedKeyHandle = true;
|
|
5
|
-
}
|
|
@@ -1,24 +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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.DeviceBoundDerivedKeyHandle = void 0;
|
|
10
|
-
const ts_serval_1 = require("@js-soft/ts-serval");
|
|
11
|
-
const BaseDerivedKeyHandle_1 = require("./BaseDerivedKeyHandle");
|
|
12
|
-
/** Non exportable, ephemeral key handle that is derived from a device bound key handle. */
|
|
13
|
-
let DeviceBoundDerivedKeyHandle = class DeviceBoundDerivedKeyHandle extends BaseDerivedKeyHandle_1.BaseDerivedKeyHandle {
|
|
14
|
-
constructor() {
|
|
15
|
-
super(...arguments);
|
|
16
|
-
// Phantom marker to make this type incompatible to other types that extend `BaseKeyHandle`.
|
|
17
|
-
this._isDeviceBoundDerivedKeyHandle = true;
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
exports.DeviceBoundDerivedKeyHandle = DeviceBoundDerivedKeyHandle;
|
|
21
|
-
exports.DeviceBoundDerivedKeyHandle = DeviceBoundDerivedKeyHandle = __decorate([
|
|
22
|
-
(0, ts_serval_1.type)("DeviceBoundDerivedKeyHandle")
|
|
23
|
-
], DeviceBoundDerivedKeyHandle);
|
|
24
|
-
//# sourceMappingURL=DeviceBoundDerivedKeyHandle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceBoundDerivedKeyHandle.js","sourceRoot":"","sources":["../../../src/crypto-layer/encryption/DeviceBoundDerivedKeyHandle.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kDAA0C;AAC1C,iEAA8D;AAE9D,2FAA2F;AAEpF,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,2CAAoB;IAA9D;;QACH,4FAA4F;QAC5E,mCAA8B,GAAG,IAAI,CAAC;IAC1D,CAAC;CAAA,CAAA;AAHY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,gBAAI,EAAC,6BAA6B,CAAC;GACvB,2BAA2B,CAGvC"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { CoreBuffer } from "../../CoreBuffer";
|
|
2
|
-
import { BaseKeyHandle, IBaseKeyHandle, IBaseKeyHandleSerialized } from "./BaseKeyHandle";
|
|
3
|
-
/** Key handle that is non exportable (the key cannot be extracted). */
|
|
4
|
-
export declare class DeviceBoundKeyHandle extends BaseKeyHandle {
|
|
5
|
-
readonly _isDeviceBoundKeyHandle = true;
|
|
6
|
-
toJSON(verbose?: boolean): IBaseKeyHandleSerialized;
|
|
7
|
-
toBase64(verbose?: boolean): string;
|
|
8
|
-
/**
|
|
9
|
-
* Deserializes an object representation of a {@link DeviceBoundKeyHandle}.
|
|
10
|
-
*
|
|
11
|
-
* This method is not able to import raw keys or {@link KeyHandle}.
|
|
12
|
-
*/
|
|
13
|
-
static from(value: IBaseKeyHandle | CoreBuffer): Promise<DeviceBoundKeyHandle>;
|
|
14
|
-
/** @see from */
|
|
15
|
-
static fromJSON(value: IBaseKeyHandleSerialized): Promise<DeviceBoundKeyHandle>;
|
|
16
|
-
/** @see from */
|
|
17
|
-
static fromBase64(value: string): Promise<DeviceBoundKeyHandle>;
|
|
18
|
-
}
|
|
@@ -1,51 +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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.DeviceBoundKeyHandle = void 0;
|
|
10
|
-
const ts_serval_1 = require("@js-soft/ts-serval");
|
|
11
|
-
const CoreBuffer_1 = require("../../CoreBuffer");
|
|
12
|
-
const BaseKeyHandle_1 = require("./BaseKeyHandle");
|
|
13
|
-
/** Key handle that is non exportable (the key cannot be extracted). */
|
|
14
|
-
let DeviceBoundKeyHandle = class DeviceBoundKeyHandle extends BaseKeyHandle_1.BaseKeyHandle {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
// Phantom marker to make this type incompatible to other types that extend `BaseKeyHandle`.
|
|
18
|
-
this._isDeviceBoundKeyHandle = true;
|
|
19
|
-
}
|
|
20
|
-
toJSON(verbose = true) {
|
|
21
|
-
return {
|
|
22
|
-
kid: this.id,
|
|
23
|
-
pnm: this.providerName,
|
|
24
|
-
"@type": verbose ? "DeviceBoundKeyHandle" : undefined
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
toBase64(verbose = true) {
|
|
28
|
-
return CoreBuffer_1.CoreBuffer.utf8_base64(this.serialize(verbose));
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Deserializes an object representation of a {@link DeviceBoundKeyHandle}.
|
|
32
|
-
*
|
|
33
|
-
* This method is not able to import raw keys or {@link KeyHandle}.
|
|
34
|
-
*/
|
|
35
|
-
static async from(value) {
|
|
36
|
-
return await this.fromAny(value);
|
|
37
|
-
}
|
|
38
|
-
/** @see from */
|
|
39
|
-
static async fromJSON(value) {
|
|
40
|
-
return await this.fromAny(value);
|
|
41
|
-
}
|
|
42
|
-
/** @see from */
|
|
43
|
-
static async fromBase64(value) {
|
|
44
|
-
return await this.deserialize(CoreBuffer_1.CoreBuffer.base64_utf8(value));
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
exports.DeviceBoundKeyHandle = DeviceBoundKeyHandle;
|
|
48
|
-
exports.DeviceBoundKeyHandle = DeviceBoundKeyHandle = __decorate([
|
|
49
|
-
(0, ts_serval_1.type)("DeviceBoundKeyHandle")
|
|
50
|
-
], DeviceBoundKeyHandle);
|
|
51
|
-
//# sourceMappingURL=DeviceBoundKeyHandle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DeviceBoundKeyHandle.js","sourceRoot":"","sources":["../../../src/crypto-layer/encryption/DeviceBoundKeyHandle.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kDAA0C;AAC1C,iDAA8C;AAC9C,mDAA0F;AAE1F,uEAAuE;AAEhE,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,6BAAa;IAAhD;;QACH,4FAA4F;QAC5E,4BAAuB,GAAG,IAAI,CAAC;IAgCnD,CAAC;IA9BmB,MAAM,CAAC,OAAO,GAAG,IAAI;QACjC,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,EAAE;YACZ,GAAG,EAAE,IAAI,CAAC,YAAY;YACtB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS;SACxD,CAAC;IACN,CAAC;IAEe,QAAQ,CAAC,OAAO,GAAG,IAAI;QACnC,OAAO,uBAAU,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAkC;QACvD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAA+B;QACxD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,KAAa;QACxC,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,uBAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;CACJ,CAAA;AAlCY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,gBAAI,EAAC,sBAAsB,CAAC;GAChB,oBAAoB,CAkChC"}
|