aws-delivlib 13.7.10 → 14.0.2
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/cdk.out/asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1/__entrypoint__.js +119 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.d.ts +0 -0
- package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.js +0 -0
- package/cdk.out/{asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353 → asset.7ada94e893d605ebbcf2f5b3bedc83bad3c704ab7892c1f2af45bfd79fb751e7}/index.js +20 -4
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/create-release.js +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package-lock.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package.json +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/publish.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/sign-files.sh +0 -0
- package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/with-signing-key.sh +1 -7
- package/cdk.out/cdk.out +1 -1
- package/cdk.out/delivlib-test.assets.json +12 -12
- package/cdk.out/delivlib-test.template.json +7135 -7704
- package/cdk.out/manifest.json +152 -2498
- package/cdk.out/tree.json +1059 -1427
- package/lib/auto-build.d.ts +2 -1
- package/lib/auto-build.js +8 -7
- package/lib/auto-build.ts +3 -2
- package/lib/build-env.d.ts +1 -1
- package/lib/build-env.js +4 -4
- package/lib/build-env.ts +1 -1
- package/lib/canary.d.ts +2 -1
- package/lib/canary.js +7 -6
- package/lib/canary.ts +2 -2
- package/lib/change-controller.d.ts +2 -1
- package/lib/change-controller.js +20 -18
- package/lib/change-controller.ts +6 -5
- package/lib/chime-notifier/chime-notifier.d.ts +2 -1
- package/lib/chime-notifier/chime-notifier.js +12 -11
- package/lib/chime-notifier/chime-notifier.ts +3 -2
- package/lib/code-signing/certificate-signing-request.d.ts +1 -1
- package/lib/code-signing/certificate-signing-request.js +16 -14
- package/lib/code-signing/certificate-signing-request.ts +7 -5
- package/lib/code-signing/code-signing-certificate.d.ts +2 -1
- package/lib/code-signing/code-signing-certificate.js +12 -11
- package/lib/code-signing/code-signing-certificate.ts +5 -4
- package/lib/code-signing/private-key.d.ts +2 -1
- package/lib/code-signing/private-key.js +28 -26
- package/lib/code-signing/private-key.ts +10 -8
- package/lib/credential-pair.d.ts +1 -1
- package/lib/credential-pair.js +1 -1
- package/lib/credential-pair.ts +1 -1
- package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
- package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
- package/lib/open-pgp-key-pair.d.ts +2 -1
- package/lib/open-pgp-key-pair.js +28 -27
- package/lib/open-pgp-key-pair.ts +12 -10
- package/lib/package-integrity/handler/validate.bundle.js +814 -457
- package/lib/package-integrity/integrity.d.ts +2 -1
- package/lib/package-integrity/integrity.js +7 -6
- package/lib/package-integrity/integrity.ts +2 -2
- package/lib/permissions.d.ts +1 -1
- package/lib/permissions.js +5 -5
- package/lib/permissions.ts +4 -4
- package/lib/pipeline-notifications/slack.d.ts +1 -1
- package/lib/pipeline-notifications/slack.js +4 -4
- package/lib/pipeline-notifications/slack.ts +1 -1
- package/lib/pipeline-watcher/watcher.d.ts +2 -1
- package/lib/pipeline-watcher/watcher.js +16 -15
- package/lib/pipeline-watcher/watcher.ts +3 -3
- package/lib/pipeline.d.ts +2 -1
- package/lib/pipeline.js +19 -18
- package/lib/pipeline.ts +5 -4
- package/lib/publishing/github/with-signing-key.sh +1 -7
- package/lib/publishing.d.ts +2 -1
- package/lib/publishing.js +36 -35
- package/lib/publishing.ts +9 -8
- package/lib/pull-request/bump.d.ts +3 -3
- package/lib/pull-request/bump.js +3 -26
- package/lib/pull-request/bump.ts +3 -3
- package/lib/pull-request/merge-back.d.ts +3 -3
- package/lib/pull-request/merge-back.js +3 -3
- package/lib/pull-request/merge-back.ts +3 -3
- package/lib/pull-request/pr.d.ts +2 -1
- package/lib/pull-request/pr.js +11 -10
- package/lib/pull-request/pr.ts +3 -2
- package/lib/registry-sync/ecr-mirror.d.ts +2 -1
- package/lib/registry-sync/ecr-mirror.js +22 -21
- package/lib/registry-sync/ecr-mirror.ts +4 -3
- package/lib/registry-sync/mirror-source.d.ts +2 -1
- package/lib/registry-sync/mirror-source.js +3 -3
- package/lib/registry-sync/mirror-source.ts +2 -2
- package/lib/repo.d.ts +2 -1
- package/lib/repo.js +12 -12
- package/lib/repo.ts +3 -2
- package/lib/shellable.d.ts +2 -1
- package/lib/shellable.js +23 -22
- package/lib/shellable.ts +5 -4
- package/lib/signing-key.d.ts +2 -1
- package/lib/signing-key.js +6 -5
- package/lib/signing-key.ts +3 -2
- package/lib/util.d.ts +1 -1
- package/lib/util.js +1 -1
- package/lib/util.ts +1 -1
- package/package.json +12 -10
- package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +0 -119
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Duration,
|
|
4
|
+
CustomResource,
|
|
5
5
|
aws_lambda as lambda,
|
|
6
6
|
aws_s3 as s3,
|
|
7
7
|
RemovalPolicy,
|
|
8
|
-
} from '
|
|
8
|
+
} from 'aws-cdk-lib';
|
|
9
|
+
import { Construct } from 'constructs';
|
|
9
10
|
import { hashFileOrDirectory } from '../util';
|
|
10
11
|
import { RsaPrivateKeySecret } from './private-key';
|
|
11
12
|
|
|
@@ -79,9 +80,10 @@ export class CertificateSigningRequest extends Construct {
|
|
|
79
80
|
});
|
|
80
81
|
outputBucket.grantReadWrite(customResource);
|
|
81
82
|
|
|
82
|
-
const csr = new
|
|
83
|
-
|
|
83
|
+
const csr = new CustomResource(this, 'Resource', {
|
|
84
|
+
serviceToken: customResource.functionArn,
|
|
84
85
|
resourceType: 'Custom::CertificateSigningRequest',
|
|
86
|
+
pascalCaseProperties: true,
|
|
85
87
|
properties: {
|
|
86
88
|
resourceVersion: hashFileOrDirectory(codeLocation),
|
|
87
89
|
// Private key
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { aws_iam as iam, aws_kms as kms, aws_secretsmanager as secretsManager, aws_ssm as ssm } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct, IConstruct } from 'constructs';
|
|
2
3
|
import { ICredentialPair } from '../credential-pair';
|
|
3
4
|
import { DistinguishedName } from './certificate-signing-request';
|
|
4
5
|
export { DistinguishedName } from './certificate-signing-request';
|
|
@@ -24,7 +24,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.CodeSigningCertificate = void 0;
|
|
27
|
-
const
|
|
27
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
28
|
+
const constructs_1 = require("constructs");
|
|
28
29
|
const permissions = __importStar(require("../permissions"));
|
|
29
30
|
const private_key_1 = require("./private-key");
|
|
30
31
|
/**
|
|
@@ -42,28 +43,28 @@ const private_key_1 = require("./private-key");
|
|
|
42
43
|
* you wish to retain the private key, you can set ``forceCertificateSigningRequest`` to ``true`` in order to obtain a
|
|
43
44
|
* new CSR document.
|
|
44
45
|
*/
|
|
45
|
-
class CodeSigningCertificate extends
|
|
46
|
+
class CodeSigningCertificate extends constructs_1.Construct {
|
|
46
47
|
constructor(parent, id, props) {
|
|
47
48
|
var _a;
|
|
48
49
|
super(parent, id);
|
|
49
50
|
// The construct path of this construct with respect to the containing stack, without any leading /
|
|
50
|
-
const stack =
|
|
51
|
+
const stack = aws_cdk_lib_1.Stack.of(this);
|
|
51
52
|
const baseName = (_a = props.baseName) !== null && _a !== void 0 ? _a : `${stack.stackName}${this.node.path.substr(stack.node.path.length)}`;
|
|
52
53
|
const privateKey = new private_key_1.RsaPrivateKeySecret(this, 'RSAPrivateKey', {
|
|
53
|
-
removalPolicy: props.retainPrivateKey === false ?
|
|
54
|
+
removalPolicy: props.retainPrivateKey === false ? aws_cdk_lib_1.RemovalPolicy.DESTROY : aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
54
55
|
description: 'The PEM-encoded private key of the x509 Code-Signing Certificate',
|
|
55
56
|
keySize: props.rsaKeySize || 2048,
|
|
56
57
|
secretEncryptionKey: props.secretEncryptionKey,
|
|
57
58
|
secretName: `${baseName}/RSAPrivateKey`,
|
|
58
59
|
});
|
|
59
|
-
this.credential =
|
|
60
|
+
this.credential = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretAttributes(this, 'Credential', {
|
|
60
61
|
encryptionKey: props.secretEncryptionKey,
|
|
61
|
-
|
|
62
|
+
secretCompleteArn: privateKey.secretArn,
|
|
62
63
|
});
|
|
63
64
|
let certificate = props.pemCertificate;
|
|
64
65
|
if (!certificate || props.forceCertificateSigningRequest) {
|
|
65
66
|
const csr = privateKey.newCertificateSigningRequest('CertificateSigningRequest', props.distinguishedName, 'critical,digitalSignature', 'critical,codeSigning');
|
|
66
|
-
new
|
|
67
|
+
new aws_cdk_lib_1.CfnOutput(this, 'CSR', {
|
|
67
68
|
description: 'A PEM-encoded Certificate Signing Request for a Code-Signing Certificate',
|
|
68
69
|
value: csr.pemRequest,
|
|
69
70
|
});
|
|
@@ -71,7 +72,7 @@ class CodeSigningCertificate extends monocdk_1.Construct {
|
|
|
71
72
|
certificate = csr.selfSignedPemCertificate;
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
|
-
this.principal = new
|
|
75
|
+
this.principal = new aws_cdk_lib_1.aws_ssm.StringParameter(this, 'Resource', {
|
|
75
76
|
description: `A PEM-encoded Code-Signing Certificate (private key in ${privateKey.secretArn})`,
|
|
76
77
|
parameterName: `/${baseName}/Certificate`,
|
|
77
78
|
stringValue: certificate,
|
|
@@ -89,9 +90,9 @@ class CodeSigningCertificate extends monocdk_1.Construct {
|
|
|
89
90
|
keyArn: this.credential.encryptionKey && this.credential.encryptionKey.keyArn,
|
|
90
91
|
secretArn: this.credential.secretArn,
|
|
91
92
|
}, principal);
|
|
92
|
-
principal.
|
|
93
|
+
principal.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
93
94
|
actions: ['ssm:GetParameter'],
|
|
94
|
-
resources: [
|
|
95
|
+
resources: [aws_cdk_lib_1.Stack.of(this).formatArn({
|
|
95
96
|
// TODO: This is a workaround until https://github.com/awslabs/aws-cdk/pull/1726 is released
|
|
96
97
|
service: 'ssm',
|
|
97
98
|
resource: `parameter${this.principal.parameterName}`,
|
|
@@ -100,4 +101,4 @@ class CodeSigningCertificate extends monocdk_1.Construct {
|
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
exports.CodeSigningCertificate = CodeSigningCertificate;
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1zaWduaW5nLWNlcnRpZmljYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29kZS1zaWduaW5nLWNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBTWlCO0FBRWpCLDREQUE4QztBQUU5QywrQ0FBb0Q7QUFtRXBEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxtQkFBUztJQVduRCxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQWtDOztRQUMzRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLG1HQUFtRztRQUNuRyxNQUFNLEtBQUssR0FBRyxlQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQUEsS0FBSyxDQUFDLFFBQVEsbUNBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBRXhHLE1BQU0sVUFBVSxHQUFHLElBQUksaUNBQW1CLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUNoRSxhQUFhLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsdUJBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHVCQUFhLENBQUMsTUFBTTtZQUM5RixXQUFXLEVBQUUsa0VBQWtFO1lBQy9FLE9BQU8sRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUk7WUFDakMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUM5QyxVQUFVLEVBQUUsR0FBRyxRQUFRLGdCQUFnQjtTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLDRCQUFjLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDL0UsYUFBYSxFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDeEMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxTQUFTO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFFdkMsSUFBSSxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsOEJBQThCLEVBQUU7WUFDeEQsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLDRCQUE0QixDQUFDLDJCQUEyQixFQUM3RSxLQUFLLENBQUMsaUJBQWlCLEVBQ3ZCLDJCQUEyQixFQUMzQixzQkFBc0IsQ0FBQyxDQUFDO1lBRTFCLElBQUksbUJBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUN6QixXQUFXLEVBQUUsMEVBQTBFO2dCQUN2RixLQUFLLEVBQUUsR0FBRyxDQUFDLFVBQVU7YUFDdEIsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDaEIsV0FBVyxHQUFHLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQzthQUM1QztTQUNGO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGlCQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDekQsV0FBVyxFQUFFLDBEQUEwRCxVQUFVLENBQUMsU0FBUyxHQUFHO1lBQzlGLGFBQWEsRUFBRSxJQUFJLFFBQVEsY0FBYztZQUN6QyxXQUFXLEVBQUUsV0FBWTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLFNBQTBCO1FBQzVDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFM0IsV0FBVyxDQUFDLGVBQWUsQ0FBQztZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTTtZQUM3RSxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTO1NBQ3JDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFZCxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksaUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDNUMsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7WUFDN0IsU0FBUyxFQUFFLENBQUMsZUFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ25DLDRGQUE0RjtvQkFDNUYsT0FBTyxFQUFFLEtBQUs7b0JBQ2QsUUFBUSxFQUFFLFlBQVksSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLEVBQUU7aUJBQ3JELENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztDQUNGO0FBN0VELHdEQTZFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdCwgQ2ZuT3V0cHV0LCBJQ29uc3RydWN0LCBSZW1vdmFsUG9saWN5LCBTdGFjayxcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19rbXMgYXMga21zLFxuICBhd3Nfc2VjcmV0c21hbmFnZXIgYXMgc2VjcmV0c01hbmFnZXIsXG4gIGF3c19zc20gYXMgc3NtLFxufSBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IElDcmVkZW50aWFsUGFpciB9IGZyb20gJy4uL2NyZWRlbnRpYWwtcGFpcic7XG5pbXBvcnQgKiBhcyBwZXJtaXNzaW9ucyBmcm9tICcuLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBEaXN0aW5ndWlzaGVkTmFtZSB9IGZyb20gJy4vY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0JztcbmltcG9ydCB7IFJzYVByaXZhdGVLZXlTZWNyZXQgfSBmcm9tICcuL3ByaXZhdGUta2V5JztcblxuXG5leHBvcnQgeyBEaXN0aW5ndWlzaGVkTmFtZSB9IGZyb20gJy4vY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0JztcblxuaW50ZXJmYWNlIENvZGVTaWduaW5nQ2VydGlmaWNhdGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGJpdHMgdG8gY29tcG9zZSB0aGUgbW9kdWx1cyBvZiB0aGUgZ2VuZXJhdGVkIHByaXZhdGUga2V5IGZvciB0aGlzIGNlcnRpZmljYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAyMDQ4XG4gICAqL1xuICByc2FLZXlTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIENNSyB0byB1c2UgZm9yIGVuY3J5cHRpbmcgdGhlIFByaXZhdGUgS2V5IHNlY3JldC5cbiAgICogQGRlZmF1bHQgQSBuZXcgS01TIGtleSB3aWxsIGJlIGFsbG9jYXRlZCBmb3IgeW91XG4gICAqL1xuICBzZWNyZXRFbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBQRU0tZW5jb2RlZCBjZXJ0aWZpY2F0ZSB0aGF0IHdhcyBzaWduZWQgYnkgdGhlIHJlbGV2YW50IGF1dGhvcml0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgSWYgYSBjZXJ0aWZpY2F0ZSBpcyBub3QgcHJvdmlkZWQsIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGUgd2lsbFxuICAgKiBiZSBnZW5lcmF0ZWQgYW5kIGEgQ1NSIChjZXJ0aWZpY2F0ZSBzaWduaW5nIHJlcXVlc3QpIHdpbGwgYnkgYXZhaWxhYmxlIGluXG4gICAqIHRoZSBzdGFjayBvdXRwdXQuXG4gICAqL1xuICBwZW1DZXJ0aWZpY2F0ZT86IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciBhIENTUiBzaG91bGQgYmUgZ2VuZXJhdGVkLCBldmVuIGlmIHRoZSBjZXJ0aWZpY2F0ZSBpcyBwcm92aWRlZC5cbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGlmIG9uZSB3YW50cyB0byByZW5ldyBhIGNlcnRpZmljYXRlIHRoYXQgaXMgY2xvc2UgdG9cbiAgICogZXhwaXJ5IHdpdGhvdXQgZ2VuZXJhdGluZyBhIG5ldyBwcml2YXRlIGtleSAoZm9yIGV4YW1wbGUsIHRvIGF2b2lkIGJyZWFraW5nXG4gICAqIGNsaWVudHMgdGhhdCBtYWtlIHVzZSBvZiBjZXJ0aWZpY2F0ZSBwaW5uaW5nKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZvcmNlQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZW4gZW5hYmxlZCwgdGhlIFByaXZhdGUgS2V5IHNlY3JldCB3aWxsIGhhdmUgYSBEZWxldGlvblBvbGljeSBvZlxuICAgKiBcIlJFVEFJTlwiLCBtYWtpbmcgc3VyZSB0aGUgUHJpdmF0ZSBLZXkgaXMgbm90IGluYWR2ZXJ0ZW50bHkgZGVzdHJveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZXRhaW5Qcml2YXRlS2V5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIERpc3Rpbmd1aXNoZWQgTmFtZSBmb3IgdGhpcyBDU1IuXG4gICAqL1xuICBkaXN0aW5ndWlzaGVkTmFtZTogRGlzdGluZ3Vpc2hlZE5hbWU7XG5cbiAgLyoqXG4gICAqIEJhc2UgbmFtZXMgZm9yIHRoZSBwcml2YXRlIGtleSBhbmQgb3V0cHV0IFNTTSBwYXJhbWV0ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZU5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvZGVTaWduaW5nQ2VydGlmaWNhdGUgZXh0ZW5kcyBJQ29uc3RydWN0LCBJQ3JlZGVudGlhbFBhaXIge1xuICAvKipcbiAgICogR3JhbnQgdGhlIElBTSBwcmluY2lwYWwgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgcHJpdmF0ZSBrZXkgYW5kXG4gICAqIGNlcnRpZmljYXRlLlxuICAgKi9cbiAgZ3JhbnREZWNyeXB0KHByaW5jaXBhbD86IGlhbS5JUHJpbmNpcGFsKTogdm9pZDtcbn1cblxuLyoqXG4gKiBBIENvZGUtU2lnbmluZyBjZXJ0aWZpY2F0ZSwgdGhhdCB3aWxsIHVzZSBhIHByaXZhdGUga2V5IHRoYXQgaXMgZ2VuZXJhdGVkIGJ5IGEgTGFtYmRhIGZ1bmN0aW9uLiBUaGUgQ2VydGlmaWNhdGUgd2lsbFxuICogbm90IGJlIHVzYWJsZSB1bnRpbCB0aGUgYGBwZW1DZXJ0aWZpY2F0ZWBgIHZhbHVlIGhhcyBiZWVuIHByb3ZpZGVkLiBBIHR5cGljYWwgd29ya2Zsb3cgdG8gdXNlIHRoaXMgQ29uc3RydWN0IHdvdWxkIGJlOlxuICpcbiAqIDEuIEFkZCBhbiBpbnN0YW5jZSBvZiB0aGUgY29uc3RydWN0IHRvIHlvdXIgYXBwLCB3aXRob3V0IHByb3ZpZGluZyB0aGUgYGBwZW1DZXJ0aWZpY2F0ZWBgIHByb3BlcnR5XG4gKiAyLiBEZXBsb3kgdGhlIHN0YWNrIHRvIHByb3Zpc2lvbiBhIFByaXZhdGUgS2V5IGFuZCBvYnRhaW4gdGhlIENTUiAoeW91IGNhbiBzdXJmYWNlIGl0IHVzaW5nIGEgT3V0cHV0LCBmb3IgZXhhbXBsZSlcbiAqIDMuIFN1Ym1pdCB0aGUgQ1NSIHRvIHlvdXIgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IG9mIGNob2ljZS5cbiAqIDQuIFBvcHVsYXRlIHRoZSBgYHBlbUNlcnRpZmljYXRlYGAgcHJvcGVydHkgd2l0aCB0aGUgUEVNLWVuY29kZWQgY2VydGlmaWNhdGUgcHJvdmlkZWQgYnkgeW91ciBDQSBvZiBjb2ljZS5cbiAqIDUuIFJlLWRlcGxveSB0aGUgc3RhY2sgc28gbWFrZSB0aGUgY2VydGlmaWNhdGUgdXNhYmxlXG4gKlxuICogSW4gb3JkZXIgdG8gcmVuZXcgdGhlIGNlcnRpZmljYXRlLCBpZiB5b3UgZG8gbm90IHdpc2ggdG8gcmV0YWluIHRoZSBzYW1lIHByaXZhdGUga2V5ICh5b3VyIGNsaWVudHMgZG8gbm90IHJlbHkgb25cbiAqIHB1YmxpYyBrZXkgcGlubmluZyksIHNpbXBseSBhZGQgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNvbnN0cnVjdCB0byB5b3VyIGFwcCBhbmQgZm9sbG93IHRoZSBwcm9jZXNzIGxpc3RlZCBhYm92ZS4gSWZcbiAqIHlvdSB3aXNoIHRvIHJldGFpbiB0aGUgcHJpdmF0ZSBrZXksIHlvdSBjYW4gc2V0IGBgZm9yY2VDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0YGAgdG8gYGB0cnVlYGAgaW4gb3JkZXIgdG8gb2J0YWluIGFcbiAqIG5ldyBDU1IgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2RlU2lnbmluZ0NlcnRpZmljYXRlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvZGVTaWduaW5nQ2VydGlmaWNhdGUge1xuICAvKipcbiAgICogVGhlIEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHRoYXQgaG9sZHMgdGhlIHByaXZhdGUga2V5IGZvciB0aGlzIENTQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWw6IHNlY3JldHNNYW5hZ2VyLklTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBBV1MgU1NNIFBhcmFtZXRlciB0aGF0IGhvbGRzIHRoZSBjZXJ0aWZpY2F0ZSBmb3IgdGhpcyBDU0MuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvZGVTaWduaW5nQ2VydGlmaWNhdGVQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgLy8gVGhlIGNvbnN0cnVjdCBwYXRoIG9mIHRoaXMgY29uc3RydWN0IHdpdGggcmVzcGVjdCB0byB0aGUgY29udGFpbmluZyBzdGFjaywgd2l0aG91dCBhbnkgbGVhZGluZyAvXG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZih0aGlzKTtcbiAgICBjb25zdCBiYXNlTmFtZSA9IHByb3BzLmJhc2VOYW1lID8/IGAke3N0YWNrLnN0YWNrTmFtZX0ke3RoaXMubm9kZS5wYXRoLnN1YnN0cihzdGFjay5ub2RlLnBhdGgubGVuZ3RoKX1gO1xuXG4gICAgY29uc3QgcHJpdmF0ZUtleSA9IG5ldyBSc2FQcml2YXRlS2V5U2VjcmV0KHRoaXMsICdSU0FQcml2YXRlS2V5Jywge1xuICAgICAgcmVtb3ZhbFBvbGljeTogcHJvcHMucmV0YWluUHJpdmF0ZUtleSA9PT0gZmFsc2UgPyBSZW1vdmFsUG9saWN5LkRFU1RST1kgOiBSZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIFBFTS1lbmNvZGVkIHByaXZhdGUga2V5IG9mIHRoZSB4NTA5IENvZGUtU2lnbmluZyBDZXJ0aWZpY2F0ZScsXG4gICAgICBrZXlTaXplOiBwcm9wcy5yc2FLZXlTaXplIHx8IDIwNDgsXG4gICAgICBzZWNyZXRFbmNyeXB0aW9uS2V5OiBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5LFxuICAgICAgc2VjcmV0TmFtZTogYCR7YmFzZU5hbWV9L1JTQVByaXZhdGVLZXlgLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVkZW50aWFsID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRBdHRyaWJ1dGVzKHRoaXMsICdDcmVkZW50aWFsJywge1xuICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuc2VjcmV0RW5jcnlwdGlvbktleSxcbiAgICAgIHNlY3JldEFybjogcHJpdmF0ZUtleS5zZWNyZXRBcm4sXG4gICAgfSk7XG5cbiAgICBsZXQgY2VydGlmaWNhdGUgPSBwcm9wcy5wZW1DZXJ0aWZpY2F0ZTtcblxuICAgIGlmICghY2VydGlmaWNhdGUgfHwgcHJvcHMuZm9yY2VDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0KSB7XG4gICAgICBjb25zdCBjc3IgPSBwcml2YXRlS2V5Lm5ld0NlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3QoJ0NlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3QnLFxuICAgICAgICBwcm9wcy5kaXN0aW5ndWlzaGVkTmFtZSxcbiAgICAgICAgJ2NyaXRpY2FsLGRpZ2l0YWxTaWduYXR1cmUnLFxuICAgICAgICAnY3JpdGljYWwsY29kZVNpZ25pbmcnKTtcblxuICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnQ1NSJywge1xuICAgICAgICBkZXNjcmlwdGlvbjogJ0EgUEVNLWVuY29kZWQgQ2VydGlmaWNhdGUgU2lnbmluZyBSZXF1ZXN0IGZvciBhIENvZGUtU2lnbmluZyBDZXJ0aWZpY2F0ZScsXG4gICAgICAgIHZhbHVlOiBjc3IucGVtUmVxdWVzdCxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoIWNlcnRpZmljYXRlKSB7XG4gICAgICAgIGNlcnRpZmljYXRlID0gY3NyLnNlbGZTaWduZWRQZW1DZXJ0aWZpY2F0ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnByaW5jaXBhbCA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgQSBQRU0tZW5jb2RlZCBDb2RlLVNpZ25pbmcgQ2VydGlmaWNhdGUgKHByaXZhdGUga2V5IGluICR7cHJpdmF0ZUtleS5zZWNyZXRBcm59KWAsXG4gICAgICBwYXJhbWV0ZXJOYW1lOiBgLyR7YmFzZU5hbWV9L0NlcnRpZmljYXRlYCxcbiAgICAgIHN0cmluZ1ZhbHVlOiBjZXJ0aWZpY2F0ZSEsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgdGhlIElBTSBwcmluY2lwYWwgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGUgcHJpdmF0ZSBrZXkgYW5kXG4gICAqIGNlcnRpZmljYXRlLlxuICAgKi9cbiAgcHVibGljIGdyYW50RGVjcnlwdChwcmluY2lwYWw/OiBpYW0uSVByaW5jaXBhbCkge1xuICAgIGlmICghcHJpbmNpcGFsKSB7IHJldHVybjsgfVxuXG4gICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHtcbiAgICAgIGtleUFybjogdGhpcy5jcmVkZW50aWFsLmVuY3J5cHRpb25LZXkgJiYgdGhpcy5jcmVkZW50aWFsLmVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgc2VjcmV0QXJuOiB0aGlzLmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgIH0sIHByaW5jaXBhbCk7XG5cbiAgICBwcmluY2lwYWwuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzc206R2V0UGFyYW1ldGVyJ10sXG4gICAgICByZXNvdXJjZXM6IFtTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICAvLyBUT0RPOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCB1bnRpbCBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtY2RrL3B1bGwvMTcyNiBpcyByZWxlYXNlZFxuICAgICAgICBzZXJ2aWNlOiAnc3NtJyxcbiAgICAgICAgcmVzb3VyY2U6IGBwYXJhbWV0ZXIke3RoaXMucHJpbmNpcGFsLnBhcmFtZXRlck5hbWV9YCxcbiAgICAgIH0pXSxcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1zaWduaW5nLWNlcnRpZmljYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29kZS1zaWduaW5nLWNlcnRpZmljYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBTXFCO0FBQ3JCLDJDQUFtRDtBQUVuRCw0REFBOEM7QUFFOUMsK0NBQW9EO0FBbUVwRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsc0JBQVM7SUFXbkQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFrQzs7UUFDM0UsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixtR0FBbUc7UUFDbkcsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBQSxLQUFLLENBQUMsUUFBUSxtQ0FBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFFeEcsTUFBTSxVQUFVLEdBQUcsSUFBSSxpQ0FBbUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQ2hFLGFBQWEsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQywyQkFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsMkJBQWEsQ0FBQyxNQUFNO1lBQzlGLFdBQVcsRUFBRSxrRUFBa0U7WUFDL0UsT0FBTyxFQUFFLEtBQUssQ0FBQyxVQUFVLElBQUksSUFBSTtZQUNqQyxtQkFBbUIsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1lBQzlDLFVBQVUsRUFBRSxHQUFHLFFBQVEsZ0JBQWdCO1NBQ3hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLEdBQUcsZ0NBQWMsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUMvRSxhQUFhLEVBQUUsS0FBSyxDQUFDLG1CQUFtQjtZQUN4QyxpQkFBaUIsRUFBRSxVQUFVLENBQUMsU0FBUztTQUN4QyxDQUFDLENBQUM7UUFFSCxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUMsY0FBYyxDQUFDO1FBRXZDLElBQUksQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLDhCQUE4QixFQUFFO1lBQ3hELE1BQU0sR0FBRyxHQUFHLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQywyQkFBMkIsRUFDN0UsS0FBSyxDQUFDLGlCQUFpQixFQUN2QiwyQkFBMkIsRUFDM0Isc0JBQXNCLENBQUMsQ0FBQztZQUUxQixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtnQkFDekIsV0FBVyxFQUFFLDBFQUEwRTtnQkFDdkYsS0FBSyxFQUFFLEdBQUcsQ0FBQyxVQUFVO2FBQ3RCLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2hCLFdBQVcsR0FBRyxHQUFHLENBQUMsd0JBQXdCLENBQUM7YUFDNUM7U0FDRjtRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxxQkFBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ3pELFdBQVcsRUFBRSwwREFBMEQsVUFBVSxDQUFDLFNBQVMsR0FBRztZQUM5RixhQUFhLEVBQUUsSUFBSSxRQUFRLGNBQWM7WUFDekMsV0FBVyxFQUFFLFdBQVk7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNJLFlBQVksQ0FBQyxTQUEwQjtRQUM1QyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQUUsT0FBTztTQUFFO1FBRTNCLFdBQVcsQ0FBQyxlQUFlLENBQUM7WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU07WUFDN0UsU0FBUyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUztTQUNyQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRWQsU0FBUyxDQUFDLG9CQUFvQixDQUFDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDckQsT0FBTyxFQUFFLENBQUMsa0JBQWtCLENBQUM7WUFDN0IsU0FBUyxFQUFFLENBQUMsbUJBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNuQyw0RkFBNEY7b0JBQzVGLE9BQU8sRUFBRSxLQUFLO29CQUNkLFFBQVEsRUFBRSxZQUFZLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFFO2lCQUNyRCxDQUFDLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQTdFRCx3REE2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDZm5PdXRwdXQsIFJlbW92YWxQb2xpY3ksIFN0YWNrLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2ttcyBhcyBrbXMsXG4gIGF3c19zZWNyZXRzbWFuYWdlciBhcyBzZWNyZXRzTWFuYWdlcixcbiAgYXdzX3NzbSBhcyBzc20sXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxQYWlyIH0gZnJvbSAnLi4vY3JlZGVudGlhbC1wYWlyJztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IERpc3Rpbmd1aXNoZWROYW1lIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZS1zaWduaW5nLXJlcXVlc3QnO1xuaW1wb3J0IHsgUnNhUHJpdmF0ZUtleVNlY3JldCB9IGZyb20gJy4vcHJpdmF0ZS1rZXknO1xuXG5cbmV4cG9ydCB7IERpc3Rpbmd1aXNoZWROYW1lIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZS1zaWduaW5nLXJlcXVlc3QnO1xuXG5pbnRlcmZhY2UgQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgYml0cyB0byBjb21wb3NlIHRoZSBtb2R1bHVzIG9mIHRoZSBnZW5lcmF0ZWQgcHJpdmF0ZSBrZXkgZm9yIHRoaXMgY2VydGlmaWNhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDIwNDhcbiAgICovXG4gIHJzYUtleVNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMgQ01LIHRvIHVzZSBmb3IgZW5jcnlwdGluZyB0aGUgUHJpdmF0ZSBLZXkgc2VjcmV0LlxuICAgKiBAZGVmYXVsdCBBIG5ldyBLTVMga2V5IHdpbGwgYmUgYWxsb2NhdGVkIGZvciB5b3VcbiAgICovXG4gIHNlY3JldEVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIFBFTS1lbmNvZGVkIGNlcnRpZmljYXRlIHRoYXQgd2FzIHNpZ25lZCBieSB0aGUgcmVsZXZhbnQgYXV0aG9yaXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBJZiBhIGNlcnRpZmljYXRlIGlzIG5vdCBwcm92aWRlZCwgYSBzZWxmLXNpZ25lZCBjZXJ0aWZpY2F0ZSB3aWxsXG4gICAqIGJlIGdlbmVyYXRlZCBhbmQgYSBDU1IgKGNlcnRpZmljYXRlIHNpZ25pbmcgcmVxdWVzdCkgd2lsbCBieSBhdmFpbGFibGUgaW5cbiAgICogdGhlIHN0YWNrIG91dHB1dC5cbiAgICovXG4gIHBlbUNlcnRpZmljYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGEgQ1NSIHNob3VsZCBiZSBnZW5lcmF0ZWQsIGV2ZW4gaWYgdGhlIGNlcnRpZmljYXRlIGlzIHByb3ZpZGVkLlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgaWYgb25lIHdhbnRzIHRvIHJlbmV3IGEgY2VydGlmaWNhdGUgdGhhdCBpcyBjbG9zZSB0b1xuICAgKiBleHBpcnkgd2l0aG91dCBnZW5lcmF0aW5nIGEgbmV3IHByaXZhdGUga2V5IChmb3IgZXhhbXBsZSwgdG8gYXZvaWQgYnJlYWtpbmdcbiAgICogY2xpZW50cyB0aGF0IG1ha2UgdXNlIG9mIGNlcnRpZmljYXRlIHBpbm5pbmcpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZm9yY2VDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hlbiBlbmFibGVkLCB0aGUgUHJpdmF0ZSBLZXkgc2VjcmV0IHdpbGwgaGF2ZSBhIERlbGV0aW9uUG9saWN5IG9mXG4gICAqIFwiUkVUQUlOXCIsIG1ha2luZyBzdXJlIHRoZSBQcml2YXRlIEtleSBpcyBub3QgaW5hZHZlcnRlbnRseSBkZXN0cm95ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJldGFpblByaXZhdGVLZXk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgRGlzdGluZ3Vpc2hlZCBOYW1lIGZvciB0aGlzIENTUi5cbiAgICovXG4gIGRpc3Rpbmd1aXNoZWROYW1lOiBEaXN0aW5ndWlzaGVkTmFtZTtcblxuICAvKipcbiAgICogQmFzZSBuYW1lcyBmb3IgdGhlIHByaXZhdGUga2V5IGFuZCBvdXRwdXQgU1NNIHBhcmFtZXRlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBiYXNlTmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZSBleHRlbmRzIElDb25zdHJ1Y3QsIElDcmVkZW50aWFsUGFpciB7XG4gIC8qKlxuICAgKiBHcmFudCB0aGUgSUFNIHByaW5jaXBhbCBwZXJtaXNzaW9ucyB0byByZWFkIHRoZSBwcml2YXRlIGtleSBhbmRcbiAgICogY2VydGlmaWNhdGUuXG4gICAqL1xuICBncmFudERlY3J5cHQocHJpbmNpcGFsPzogaWFtLklQcmluY2lwYWwpOiB2b2lkO1xufVxuXG4vKipcbiAqIEEgQ29kZS1TaWduaW5nIGNlcnRpZmljYXRlLCB0aGF0IHdpbGwgdXNlIGEgcHJpdmF0ZSBrZXkgdGhhdCBpcyBnZW5lcmF0ZWQgYnkgYSBMYW1iZGEgZnVuY3Rpb24uIFRoZSBDZXJ0aWZpY2F0ZSB3aWxsXG4gKiBub3QgYmUgdXNhYmxlIHVudGlsIHRoZSBgYHBlbUNlcnRpZmljYXRlYGAgdmFsdWUgaGFzIGJlZW4gcHJvdmlkZWQuIEEgdHlwaWNhbCB3b3JrZmxvdyB0byB1c2UgdGhpcyBDb25zdHJ1Y3Qgd291bGQgYmU6XG4gKlxuICogMS4gQWRkIGFuIGluc3RhbmNlIG9mIHRoZSBjb25zdHJ1Y3QgdG8geW91ciBhcHAsIHdpdGhvdXQgcHJvdmlkaW5nIHRoZSBgYHBlbUNlcnRpZmljYXRlYGAgcHJvcGVydHlcbiAqIDIuIERlcGxveSB0aGUgc3RhY2sgdG8gcHJvdmlzaW9uIGEgUHJpdmF0ZSBLZXkgYW5kIG9idGFpbiB0aGUgQ1NSICh5b3UgY2FuIHN1cmZhY2UgaXQgdXNpbmcgYSBPdXRwdXQsIGZvciBleGFtcGxlKVxuICogMy4gU3VibWl0IHRoZSBDU1IgdG8geW91ciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgb2YgY2hvaWNlLlxuICogNC4gUG9wdWxhdGUgdGhlIGBgcGVtQ2VydGlmaWNhdGVgYCBwcm9wZXJ0eSB3aXRoIHRoZSBQRU0tZW5jb2RlZCBjZXJ0aWZpY2F0ZSBwcm92aWRlZCBieSB5b3VyIENBIG9mIGNvaWNlLlxuICogNS4gUmUtZGVwbG95IHRoZSBzdGFjayBzbyBtYWtlIHRoZSBjZXJ0aWZpY2F0ZSB1c2FibGVcbiAqXG4gKiBJbiBvcmRlciB0byByZW5ldyB0aGUgY2VydGlmaWNhdGUsIGlmIHlvdSBkbyBub3Qgd2lzaCB0byByZXRhaW4gdGhlIHNhbWUgcHJpdmF0ZSBrZXkgKHlvdXIgY2xpZW50cyBkbyBub3QgcmVseSBvblxuICogcHVibGljIGtleSBwaW5uaW5nKSwgc2ltcGx5IGFkZCBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY29uc3RydWN0IHRvIHlvdXIgYXBwIGFuZCBmb2xsb3cgdGhlIHByb2Nlc3MgbGlzdGVkIGFib3ZlLiBJZlxuICogeW91IHdpc2ggdG8gcmV0YWluIHRoZSBwcml2YXRlIGtleSwgeW91IGNhbiBzZXQgYGBmb3JjZUNlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RgYCB0byBgYHRydWVgYCBpbiBvcmRlciB0byBvYnRhaW4gYVxuICogbmV3IENTUiBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvZGVTaWduaW5nQ2VydGlmaWNhdGUgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZSB7XG4gIC8qKlxuICAgKiBUaGUgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBob2xkcyB0aGUgcHJpdmF0ZSBrZXkgZm9yIHRoaXMgQ1NDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbDogc2VjcmV0c01hbmFnZXIuSVNlY3JldDtcblxuICAvKipcbiAgICogVGhlIEFXUyBTU00gUGFyYW1ldGVyIHRoYXQgaG9sZHMgdGhlIGNlcnRpZmljYXRlIGZvciB0aGlzIENTQy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcmluY2lwYWw6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICAvLyBUaGUgY29uc3RydWN0IHBhdGggb2YgdGhpcyBjb25zdHJ1Y3Qgd2l0aCByZXNwZWN0IHRvIHRoZSBjb250YWluaW5nIHN0YWNrLCB3aXRob3V0IGFueSBsZWFkaW5nIC9cbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuICAgIGNvbnN0IGJhc2VOYW1lID0gcHJvcHMuYmFzZU5hbWUgPz8gYCR7c3RhY2suc3RhY2tOYW1lfSR7dGhpcy5ub2RlLnBhdGguc3Vic3RyKHN0YWNrLm5vZGUucGF0aC5sZW5ndGgpfWA7XG5cbiAgICBjb25zdCBwcml2YXRlS2V5ID0gbmV3IFJzYVByaXZhdGVLZXlTZWNyZXQodGhpcywgJ1JTQVByaXZhdGVLZXknLCB7XG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZXRhaW5Qcml2YXRlS2V5ID09PSBmYWxzZSA/IFJlbW92YWxQb2xpY3kuREVTVFJPWSA6IFJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGUgUEVNLWVuY29kZWQgcHJpdmF0ZSBrZXkgb2YgdGhlIHg1MDkgQ29kZS1TaWduaW5nIENlcnRpZmljYXRlJyxcbiAgICAgIGtleVNpemU6IHByb3BzLnJzYUtleVNpemUgfHwgMjA0OCxcbiAgICAgIHNlY3JldEVuY3J5cHRpb25LZXk6IHByb3BzLnNlY3JldEVuY3J5cHRpb25LZXksXG4gICAgICBzZWNyZXROYW1lOiBgJHtiYXNlTmFtZX0vUlNBUHJpdmF0ZUtleWAsXG4gICAgfSk7XG5cbiAgICB0aGlzLmNyZWRlbnRpYWwgPSBzZWNyZXRzTWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldEF0dHJpYnV0ZXModGhpcywgJ0NyZWRlbnRpYWwnLCB7XG4gICAgICBlbmNyeXB0aW9uS2V5OiBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5LFxuICAgICAgc2VjcmV0Q29tcGxldGVBcm46IHByaXZhdGVLZXkuc2VjcmV0QXJuLFxuICAgIH0pO1xuXG4gICAgbGV0IGNlcnRpZmljYXRlID0gcHJvcHMucGVtQ2VydGlmaWNhdGU7XG5cbiAgICBpZiAoIWNlcnRpZmljYXRlIHx8IHByb3BzLmZvcmNlQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdCkge1xuICAgICAgY29uc3QgY3NyID0gcHJpdmF0ZUtleS5uZXdDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0KCdDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0JyxcbiAgICAgICAgcHJvcHMuZGlzdGluZ3Vpc2hlZE5hbWUsXG4gICAgICAgICdjcml0aWNhbCxkaWdpdGFsU2lnbmF0dXJlJyxcbiAgICAgICAgJ2NyaXRpY2FsLGNvZGVTaWduaW5nJyk7XG5cbiAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0NTUicsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdBIFBFTS1lbmNvZGVkIENlcnRpZmljYXRlIFNpZ25pbmcgUmVxdWVzdCBmb3IgYSBDb2RlLVNpZ25pbmcgQ2VydGlmaWNhdGUnLFxuICAgICAgICB2YWx1ZTogY3NyLnBlbVJlcXVlc3QsXG4gICAgICB9KTtcblxuICAgICAgaWYgKCFjZXJ0aWZpY2F0ZSkge1xuICAgICAgICBjZXJ0aWZpY2F0ZSA9IGNzci5zZWxmU2lnbmVkUGVtQ2VydGlmaWNhdGU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5wcmluY2lwYWwgPSBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYEEgUEVNLWVuY29kZWQgQ29kZS1TaWduaW5nIENlcnRpZmljYXRlIChwcml2YXRlIGtleSBpbiAke3ByaXZhdGVLZXkuc2VjcmV0QXJufSlgLFxuICAgICAgcGFyYW1ldGVyTmFtZTogYC8ke2Jhc2VOYW1lfS9DZXJ0aWZpY2F0ZWAsXG4gICAgICBzdHJpbmdWYWx1ZTogY2VydGlmaWNhdGUhLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHRoZSBJQU0gcHJpbmNpcGFsIHBlcm1pc3Npb25zIHRvIHJlYWQgdGhlIHByaXZhdGUga2V5IGFuZFxuICAgKiBjZXJ0aWZpY2F0ZS5cbiAgICovXG4gIHB1YmxpYyBncmFudERlY3J5cHQocHJpbmNpcGFsPzogaWFtLklQcmluY2lwYWwpIHtcbiAgICBpZiAoIXByaW5jaXBhbCkgeyByZXR1cm47IH1cblxuICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZCh7XG4gICAgICBrZXlBcm46IHRoaXMuY3JlZGVudGlhbC5lbmNyeXB0aW9uS2V5ICYmIHRoaXMuY3JlZGVudGlhbC5lbmNyeXB0aW9uS2V5LmtleUFybixcbiAgICAgIHNlY3JldEFybjogdGhpcy5jcmVkZW50aWFsLnNlY3JldEFybixcbiAgICB9LCBwcmluY2lwYWwpO1xuXG4gICAgcHJpbmNpcGFsLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsnc3NtOkdldFBhcmFtZXRlciddLFxuICAgICAgcmVzb3VyY2VzOiBbU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgLy8gVE9ETzogVGhpcyBpcyBhIHdvcmthcm91bmQgdW50aWwgaHR0cHM6Ly9naXRodWIuY29tL2F3c2xhYnMvYXdzLWNkay9wdWxsLzE3MjYgaXMgcmVsZWFzZWRcbiAgICAgICAgc2VydmljZTogJ3NzbScsXG4gICAgICAgIHJlc291cmNlOiBgcGFyYW1ldGVyJHt0aGlzLnByaW5jaXBhbC5wYXJhbWV0ZXJOYW1lfWAsXG4gICAgICB9KV0sXG4gICAgfSkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
CfnOutput, RemovalPolicy, Stack,
|
|
3
3
|
aws_iam as iam,
|
|
4
4
|
aws_kms as kms,
|
|
5
5
|
aws_secretsmanager as secretsManager,
|
|
6
6
|
aws_ssm as ssm,
|
|
7
|
-
} from '
|
|
7
|
+
} from 'aws-cdk-lib';
|
|
8
|
+
import { Construct, IConstruct } from 'constructs';
|
|
8
9
|
import { ICredentialPair } from '../credential-pair';
|
|
9
10
|
import * as permissions from '../permissions';
|
|
10
11
|
import { DistinguishedName } from './certificate-signing-request';
|
|
@@ -118,7 +119,7 @@ export class CodeSigningCertificate extends Construct implements ICodeSigningCer
|
|
|
118
119
|
|
|
119
120
|
this.credential = secretsManager.Secret.fromSecretAttributes(this, 'Credential', {
|
|
120
121
|
encryptionKey: props.secretEncryptionKey,
|
|
121
|
-
|
|
122
|
+
secretCompleteArn: privateKey.secretArn,
|
|
122
123
|
});
|
|
123
124
|
|
|
124
125
|
let certificate = props.pemCertificate;
|
|
@@ -158,7 +159,7 @@ export class CodeSigningCertificate extends Construct implements ICodeSigningCer
|
|
|
158
159
|
secretArn: this.credential.secretArn,
|
|
159
160
|
}, principal);
|
|
160
161
|
|
|
161
|
-
principal.
|
|
162
|
+
principal.addToPrincipalPolicy(new iam.PolicyStatement({
|
|
162
163
|
actions: ['ssm:GetParameter'],
|
|
163
164
|
resources: [Stack.of(this).formatArn({
|
|
164
165
|
// TODO: This is a workaround until https://github.com/awslabs/aws-cdk/pull/1726 is released
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { RemovalPolicy, aws_iam as iam, aws_kms as kms } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
2
3
|
import { CertificateSigningRequest, DistinguishedName } from './certificate-signing-request';
|
|
3
4
|
export interface RsaPrivateKeySecretProps {
|
|
4
5
|
/**
|
|
@@ -25,7 +25,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.RsaPrivateKeySecret = void 0;
|
|
27
27
|
const path = __importStar(require("path"));
|
|
28
|
-
const
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const constructs_1 = require("constructs");
|
|
29
30
|
const util_1 = require("../util");
|
|
30
31
|
const certificate_signing_request_1 = require("./certificate-signing-request");
|
|
31
32
|
/**
|
|
@@ -33,31 +34,31 @@ const certificate_signing_request_1 = require("./certificate-signing-request");
|
|
|
33
34
|
* Authority through the use of the ``CertificateSigningRequest`` construct (or via the
|
|
34
35
|
* ``#newCertificateSigningRequest``) method.
|
|
35
36
|
*/
|
|
36
|
-
class RsaPrivateKeySecret extends
|
|
37
|
+
class RsaPrivateKeySecret extends constructs_1.Construct {
|
|
37
38
|
constructor(parent, id, props) {
|
|
38
39
|
super(parent, id);
|
|
39
40
|
const codeLocation = path.resolve(__dirname, '..', 'custom-resource-handlers', 'bin', 'private-key');
|
|
40
|
-
const customResource = new
|
|
41
|
+
const customResource = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'ResourceHandler', {
|
|
41
42
|
lambdaPurpose: 'RSAPrivate-Key',
|
|
42
43
|
uuid: '72FD327D-3813-4632-9340-28EC437AA486',
|
|
43
44
|
description: 'Generates an RSA Private Key and stores it in AWS Secrets Manager',
|
|
44
|
-
runtime:
|
|
45
|
+
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_12_X,
|
|
45
46
|
handler: 'index.handler',
|
|
46
|
-
code: new
|
|
47
|
-
timeout:
|
|
47
|
+
code: new aws_cdk_lib_1.aws_lambda.AssetCode(codeLocation),
|
|
48
|
+
timeout: aws_cdk_lib_1.Duration.seconds(300),
|
|
48
49
|
// add the layer that contains the OpenSSL CLI binary
|
|
49
|
-
layers: [new
|
|
50
|
-
code:
|
|
50
|
+
layers: [new aws_cdk_lib_1.aws_lambda.LayerVersion(this, 'OpenSslCliLayer', {
|
|
51
|
+
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, '..', 'custom-resource-handlers', 'layers', 'openssl-cli-layer.zip')),
|
|
51
52
|
})],
|
|
52
53
|
});
|
|
53
|
-
this.secretArnLike =
|
|
54
|
+
this.secretArnLike = aws_cdk_lib_1.Stack.of(this).formatArn({
|
|
54
55
|
service: 'secretsmanager',
|
|
55
56
|
resource: 'secret',
|
|
56
|
-
|
|
57
|
+
arnFormat: aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME,
|
|
57
58
|
// The ARN of a secret has "-" followed by 6 random characters appended at the end
|
|
58
59
|
resourceName: `${props.secretName}-??????`,
|
|
59
60
|
});
|
|
60
|
-
customResource.addToRolePolicy(new
|
|
61
|
+
customResource.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
61
62
|
actions: [
|
|
62
63
|
'secretsmanager:CreateSecret',
|
|
63
64
|
'secretsmanager:DeleteSecret',
|
|
@@ -66,14 +67,14 @@ class RsaPrivateKeySecret extends monocdk_1.Construct {
|
|
|
66
67
|
resources: [this.secretArnLike],
|
|
67
68
|
}));
|
|
68
69
|
if (props.secretEncryptionKey) {
|
|
69
|
-
props.secretEncryptionKey.addToResourcePolicy(new
|
|
70
|
+
props.secretEncryptionKey.addToResourcePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
70
71
|
// description: `Allow use via AWS Secrets Manager by CustomResource handler ${customResource.functionName}`,
|
|
71
|
-
principals: [new
|
|
72
|
+
principals: [new aws_cdk_lib_1.aws_iam.ArnPrincipal(customResource.role.roleArn)],
|
|
72
73
|
actions: ['kms:Decrypt', 'kms:GenerateDataKey'],
|
|
73
74
|
resources: ['*'],
|
|
74
75
|
conditions: {
|
|
75
76
|
StringEquals: {
|
|
76
|
-
'kms:ViaService': `secretsmanager.${
|
|
77
|
+
'kms:ViaService': `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`,
|
|
77
78
|
},
|
|
78
79
|
ArnLike: {
|
|
79
80
|
'kms:EncryptionContext:SecretARN': this.secretArnLike,
|
|
@@ -81,9 +82,10 @@ class RsaPrivateKeySecret extends monocdk_1.Construct {
|
|
|
81
82
|
},
|
|
82
83
|
}));
|
|
83
84
|
}
|
|
84
|
-
const privateKey = new
|
|
85
|
-
|
|
85
|
+
const privateKey = new aws_cdk_lib_1.CustomResource(this, 'Resource', {
|
|
86
|
+
serviceToken: customResource.functionArn,
|
|
86
87
|
resourceType: 'Custom::RsaPrivateKeySecret',
|
|
88
|
+
pascalCaseProperties: true,
|
|
87
89
|
properties: {
|
|
88
90
|
resourceVersion: (0, util_1.hashFileOrDirectory)(codeLocation),
|
|
89
91
|
description: props.description,
|
|
@@ -91,23 +93,23 @@ class RsaPrivateKeySecret extends monocdk_1.Construct {
|
|
|
91
93
|
secretName: props.secretName,
|
|
92
94
|
kmsKeyId: props.secretEncryptionKey && props.secretEncryptionKey.keyArn,
|
|
93
95
|
},
|
|
94
|
-
removalPolicy: props.removalPolicy ||
|
|
96
|
+
removalPolicy: props.removalPolicy || aws_cdk_lib_1.RemovalPolicy.RETAIN,
|
|
95
97
|
});
|
|
96
98
|
if (customResource.role) {
|
|
97
99
|
privateKey.node.addDependency(customResource.role);
|
|
98
100
|
if (props.secretEncryptionKey) {
|
|
99
101
|
// Modeling as a separate Policy to evade a dependency cycle (Role -> Key -> Role), as the Key refers to the
|
|
100
102
|
// role in it's resource policy.
|
|
101
|
-
privateKey.node.addDependency(new
|
|
103
|
+
privateKey.node.addDependency(new aws_cdk_lib_1.aws_iam.Policy(this, 'GrantLambdaRoleKeyAccess', {
|
|
102
104
|
roles: [customResource.role],
|
|
103
105
|
statements: [
|
|
104
|
-
new
|
|
106
|
+
new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
105
107
|
// description: `AWSSecretsManager${props.secretName.replace(/[^0-9A-Za-z]/g, '')}CMK`,
|
|
106
108
|
actions: ['kms:Decrypt', 'kms:GenerateDataKey'],
|
|
107
109
|
resources: [props.secretEncryptionKey.keyArn],
|
|
108
110
|
conditions: {
|
|
109
111
|
StringEquals: {
|
|
110
|
-
'kms:ViaService': `secretsmanager.${
|
|
112
|
+
'kms:ViaService': `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`,
|
|
111
113
|
},
|
|
112
114
|
StringLike: { 'kms:EncryptionContext:SecretARN': [this.secretArnLike, 'RequestToValidateKeyAccess'] },
|
|
113
115
|
},
|
|
@@ -143,31 +145,31 @@ class RsaPrivateKeySecret extends monocdk_1.Construct {
|
|
|
143
145
|
* @param grantee the principal to which permissions should be granted.
|
|
144
146
|
*/
|
|
145
147
|
grantGetSecretValue(grantee) {
|
|
146
|
-
grantee.
|
|
148
|
+
grantee.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
147
149
|
actions: ['secretsmanager:GetSecretValue'],
|
|
148
150
|
resources: [this.secretArn],
|
|
149
151
|
}));
|
|
150
152
|
if (this.masterKey) {
|
|
151
153
|
// Add a key grant since we're using a CMK
|
|
152
|
-
this.masterKey.addToResourcePolicy(new
|
|
154
|
+
this.masterKey.addToResourcePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
153
155
|
actions: ['kms:Decrypt'],
|
|
154
156
|
resources: ['*'],
|
|
155
157
|
principals: [grantee.grantPrincipal],
|
|
156
158
|
conditions: {
|
|
157
159
|
StringEquals: {
|
|
158
|
-
'kms:ViaService': `secretsmanager.${
|
|
160
|
+
'kms:ViaService': `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`,
|
|
159
161
|
},
|
|
160
162
|
ArnLike: {
|
|
161
163
|
'kms:EncryptionContext:SecretARN': this.secretArnLike,
|
|
162
164
|
},
|
|
163
165
|
},
|
|
164
166
|
}));
|
|
165
|
-
grantee.
|
|
167
|
+
grantee.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
166
168
|
actions: ['kms:Decrypt'],
|
|
167
169
|
resources: [this.masterKey.keyArn],
|
|
168
170
|
conditions: {
|
|
169
171
|
StringEquals: {
|
|
170
|
-
'kms:ViaService': `secretsmanager.${
|
|
172
|
+
'kms:ViaService': `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`,
|
|
171
173
|
},
|
|
172
174
|
ArnEquals: {
|
|
173
175
|
'kms:EncryptionContext:SecretARN': this.secretArn,
|
|
@@ -178,4 +180,4 @@ class RsaPrivateKeySecret extends monocdk_1.Construct {
|
|
|
178
180
|
}
|
|
179
181
|
}
|
|
180
182
|
exports.RsaPrivateKeySecret = RsaPrivateKeySecret;
|
|
181
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcml2YXRlLWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixxQ0FNaUI7QUFDakIsa0NBQThDO0FBQzlDLCtFQUE2RjtBQXFDN0Y7Ozs7R0FJRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsbUJBQVM7SUFTaEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN4RSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDckcsTUFBTSxjQUFjLEdBQUcsSUFBSSxvQkFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUMzRSxhQUFhLEVBQUUsZ0JBQWdCO1lBQy9CLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsV0FBVyxFQUFFLG1FQUFtRTtZQUNoRixPQUFPLEVBQUUsb0JBQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsSUFBSSxvQkFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDeEMsT0FBTyxFQUFFLGtCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM5QixxREFBcUQ7WUFDckQsTUFBTSxFQUFFLENBQUMsSUFBSSxvQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7b0JBQ3hELElBQUksRUFBRSxvQkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSx1QkFB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QUcsQ0FBQztnQkFDaEIsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztnQkFDcEMsVUFBVSxFQUFFO29CQUNWLFlBQVksRUFBRTt3QkFDWixnQkFBZ0IsRUFBRSxrQkFBa0IsZUFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLGdCQUFnQjtxQkFDMUU7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxhQUFhO3FCQUN0RDtpQkFDRjthQUNGLENBQUMsQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLGlCQUFHLENBQUMsZUFBZSxDQUFDO2dCQUMxQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7Z0JBQ3hCLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUNsQyxVQUFVLEVBQUU7b0JBQ1YsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQixFQUFFLGtCQUFrQixlQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCO3FCQUMxRTtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFNBQVM7cUJBQ2xEO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7Q0FDRjtBQTlKRCxrREE4SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0LCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2ssXG4gIGF3c19jbG91ZGZvcm1hdGlvbiBhcyBjZm4sXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3Nfa21zIGFzIGttcyxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgaGFzaEZpbGVPckRpcmVjdG9yeSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdCwgRGlzdGluZ3Vpc2hlZE5hbWUgfSBmcm9tICcuL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdCc7XG5cblxuZXhwb3J0IGludGVyZmFjZSBSc2FQcml2YXRlS2V5U2VjcmV0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG1vZHVsdXMgc2l6ZSBvZiB0aGUgUlNBIGtleSB0aGF0IHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKlxuICAgKiBUaGUgTklTVCBwdWJsaXNoZXMgYSBkb2N1bWVudCB0aGF0IHByb3ZpZGVzIGd1aWRhbmNlIG9uIGhvdyB0byBzZWxlY3QgYW4gYXBwcm9wcmlhdGUga2V5IHNpemU6XG4gICAqIEBzZWUgaHR0cHM6Ly9jc3JjLm5pc3QuZ292L3B1YmxpY2F0aW9ucy9kZXRhaWwvc3AvODAwLTU3LXBhcnQtMS9yZXYtNC9maW5hbFxuICAgKi9cbiAga2V5U2l6ZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQVdTIFNlY3JldHMgTWFuYWdlciBlbnRpdHkgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgdG8gaG9sZCB0aGUgcHJpdmF0ZSBrZXkuXG4gICAqL1xuICBzZWNyZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiB0byBhdHRhY2ggdG8gdGhlIEFXUyBTZWNyZXRzIE1hbmFnZXIgZW50aXR5IHRoYXQgd2lsbCBob2xkIHRoZSBwcml2YXRlIGtleS5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB0byBiZSB1c2VkIGZvciBlbmNyeXB0aW5nIHRoZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIGVudGl0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgS01TIGtleSB3aWxsIGJlIHVzZWQgaW4gYWNjb3JkYW5jZSB3aXRoIEFXUyBTZWNyZXRzIE1hbmFnZXIgZGVmYXVsdCBiZWhhdmlvci5cbiAgICovXG4gIHNlY3JldEVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIGRlbGV0aW9uIHBvbGljeSB0byBhcHBseSBvbiB0aGUgUHJpdmF0ZSBLZXkgc2VjcmV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZXRhaW5cbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEFuIE9wZW5TU0wtZ2VuZXJhdGVkIFJTQSBQcml2YXRlIEtleS4gSXQgY2FuIGZvciBleGFtcGxlIGJlIHVzZWQgdG8gb2J0YWluIGEgQ2VydGlmaWNhdGUgc2lnbmVkIGJ5IGEgQ2VydGlmaWNhdGVcbiAqIEF1dGhvcml0eSB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIGBgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdGBgIGNvbnN0cnVjdCAob3IgdmlhIHRoZVxuICogYGAjbmV3Q2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdGBgKSBtZXRob2QuXG4gKi9cbmV4cG9ydCBjbGFzcyBSc2FQcml2YXRlS2V5U2VjcmV0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHNlY3JldCB0aGF0IGhvbGRzIHRoZSBwcml2YXRlIGtleS5cbiAgICovXG4gIHB1YmxpYyBzZWNyZXRBcm46IHN0cmluZztcblxuICBwcml2YXRlIHNlY3JldEFybkxpa2U6IHN0cmluZztcbiAgcHJpdmF0ZSBtYXN0ZXJLZXk/OiBrbXMuSUtleTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJzYVByaXZhdGVLZXlTZWNyZXRQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgY29kZUxvY2F0aW9uID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycycsICdiaW4nLCAncHJpdmF0ZS1rZXknKTtcbiAgICBjb25zdCBjdXN0b21SZXNvdXJjZSA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24odGhpcywgJ1Jlc291cmNlSGFuZGxlcicsIHtcbiAgICAgIGxhbWJkYVB1cnBvc2U6ICdSU0FQcml2YXRlLUtleScsXG4gICAgICB1dWlkOiAnNzJGRDMyN0QtMzgxMy00NjMyLTkzNDAtMjhFQzQzN0FBNDg2JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVzIGFuIFJTQSBQcml2YXRlIEtleSBhbmQgc3RvcmVzIGl0IGluIEFXUyBTZWNyZXRzIE1hbmFnZXInLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLkFzc2V0Q29kZShjb2RlTG9jYXRpb24pLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgLy8gYWRkIHRoZSBsYXllciB0aGF0IGNvbnRhaW5zIHRoZSBPcGVuU1NMIENMSSBiaW5hcnlcbiAgICAgIGxheWVyczogW25ldyBsYW1iZGEuTGF5ZXJWZXJzaW9uKHRoaXMsICdPcGVuU3NsQ2xpTGF5ZXInLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzJywgJ2xheWVycycsICdvcGVuc3NsLWNsaS1sYXllci56aXAnKSksXG4gICAgICB9KV0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnNlY3JldEFybkxpa2UgPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ3NlY3JldHNtYW5hZ2VyJyxcbiAgICAgIHJlc291cmNlOiAnc2VjcmV0JyxcbiAgICAgIHNlcDogJzonLFxuICAgICAgLy8gVGhlIEFSTiBvZiBhIHNlY3JldCBoYXMgXCItXCIgZm9sbG93ZWQgYnkgNiByYW5kb20gY2hhcmFjdGVycyBhcHBlbmRlZCBhdCB0aGUgZW5kXG4gICAgICByZXNvdXJjZU5hbWU6IGAke3Byb3BzLnNlY3JldE5hbWV9LT8/Pz8/P2AsXG4gICAgfSk7XG4gICAgY3VzdG9tUmVzb3VyY2UuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkNyZWF0ZVNlY3JldCcsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpEZWxldGVTZWNyZXQnLFxuICAgICAgICAnc2VjcmV0c21hbmFnZXI6VXBkYXRlU2VjcmV0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLnNlY3JldEFybkxpa2VdLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAvLyBkZXNjcmlwdGlvbjogYEFsbG93IHVzZSB2aWEgQVdTIFNlY3JldHMgTWFuYWdlciBieSBDdXN0b21SZXNvdXJjZSBoYW5kbGVyICR7Y3VzdG9tUmVzb3VyY2UuZnVuY3Rpb25OYW1lfWAsXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFyblByaW5jaXBhbChjdXN0b21SZXNvdXJjZS5yb2xlIS5yb2xlQXJuKV0sXG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnLCAna21zOkdlbmVyYXRlRGF0YUtleSddLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAna21zOlZpYVNlcnZpY2UnOiBgc2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQXJuTGlrZToge1xuICAgICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDpTZWNyZXRBUk4nOiB0aGlzLnNlY3JldEFybkxpa2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcml2YXRlS2V5ID0gbmV3IGNmbi5DdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBwcm92aWRlcjogY2ZuLkN1c3RvbVJlc291cmNlUHJvdmlkZXIubGFtYmRhKGN1c3RvbVJlc291cmNlKSxcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6UnNhUHJpdmF0ZUtleVNlY3JldCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJlc291cmNlVmVyc2lvbjogaGFzaEZpbGVPckRpcmVjdG9yeShjb2RlTG9jYXRpb24pLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIGtleVNpemU6IHByb3BzLmtleVNpemUsXG4gICAgICAgIHNlY3JldE5hbWU6IHByb3BzLnNlY3JldE5hbWUsXG4gICAgICAgIGttc0tleUlkOiBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5ICYmIHByb3BzLnNlY3JldEVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgfSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgfSk7XG4gICAgaWYgKGN1c3RvbVJlc291cmNlLnJvbGUpIHtcbiAgICAgIHByaXZhdGVLZXkubm9kZS5hZGREZXBlbmRlbmN5KGN1c3RvbVJlc291cmNlLnJvbGUpO1xuICAgICAgaWYgKHByb3BzLnNlY3JldEVuY3J5cHRpb25LZXkpIHtcbiAgICAgICAgLy8gTW9kZWxpbmcgYXMgYSBzZXBhcmF0ZSBQb2xpY3kgdG8gZXZhZGUgYSBkZXBlbmRlbmN5IGN5Y2xlIChSb2xlIC0+IEtleSAtPiBSb2xlKSwgYXMgdGhlIEtleSByZWZlcnMgdG8gdGhlXG4gICAgICAgIC8vIHJvbGUgaW4gaXQncyByZXNvdXJjZSBwb2xpY3kuXG4gICAgICAgIHByaXZhdGVLZXkubm9kZS5hZGREZXBlbmRlbmN5KG5ldyBpYW0uUG9saWN5KHRoaXMsICdHcmFudExhbWJkYVJvbGVLZXlBY2Nlc3MnLCB7XG4gICAgICAgICAgcm9sZXM6IFtjdXN0b21SZXNvdXJjZS5yb2xlXSxcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIC8vIGRlc2NyaXB0aW9uOiBgQVdTU2VjcmV0c01hbmFnZXIke3Byb3BzLnNlY3JldE5hbWUucmVwbGFjZSgvW14wLTlBLVphLXpdL2csICcnKX1DTUtgLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuc2VjcmV0RW5jcnlwdGlvbktleS5rZXlBcm5dLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAgICAgICAna21zOlZpYVNlcnZpY2UnOiBgc2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgU3RyaW5nTGlrZTogeyAna21zOkVuY3J5cHRpb25Db250ZXh0OlNlY3JldEFSTic6IFt0aGlzLnNlY3JldEFybkxpa2UsICdSZXF1ZXN0VG9WYWxpZGF0ZUtleUFjY2VzcyddIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5tYXN0ZXJLZXkgPSBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5O1xuICAgIHRoaXMuc2VjcmV0QXJuID0gcHJpdmF0ZUtleS5nZXRBdHQoJ1NlY3JldEFybicpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBDU1IgcmVzb3VyY2UgdXNpbmcgdGhpcyBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGlkICAgICAgICAgICAgICAgdGhlIElEIG9mIHRoZSBjb25zdHJ1Y3QgaW4gdGhlIGNvbnN0cnVjdCB0cmVlLlxuICAgKiBAcGFyYW0gZG4gICAgICAgICAgICAgICB0aGUgZGlzdGluZ3Vpc2hlZCBuYW1lIHRvIHJlY29yZCBvbiB0aGUgQ1NSLlxuICAgKiBAcGFyYW0ga2V5VXNhZ2UgICAgICAgICB0aGUgaW50ZW5kZWQga2V5IHVzYWdlIChmb3IgZXhhbXBsZTogXCJjcml0aWNhbCxkaWdpdGFsU2lnbmF0dXJlXCIpXG4gICAqIEBwYXJhbSBleHRlbmRlZEtleVVzYWdlIHRoZSBpbmRlbmRlZCBleHRlbmRlZCBrZXkgdXNhZ2UsIGlmIGFueSAoZm9yIGV4YW1wbGU6IFwiY3JpdGljYWwsZGlnaXRhbFNpZ25hdHVyZVwiKVxuICAgKlxuICAgKiBAcmV0dXJucyBhIG5ldyBgYENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RgYCBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgYWN0dWFsIENTUiBkb2N1bWVudC5cbiAgICovXG4gIHB1YmxpYyBuZXdDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0KGlkOiBzdHJpbmcsIGRuOiBEaXN0aW5ndWlzaGVkTmFtZSwga2V5VXNhZ2U6IHN0cmluZywgZXh0ZW5kZWRLZXlVc2FnZT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdCh0aGlzLCBpZCwge1xuICAgICAgcHJpdmF0ZUtleTogdGhpcyxcbiAgICAgIGRuLFxuICAgICAga2V5VXNhZ2UsXG4gICAgICBleHRlbmRlZEtleVVzYWdlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhIGdpdmVuIElBTSBSb2xlIHRvIHJlYWQgdGhlIHNlY3JldCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbCB0byB3aGljaCBwZXJtaXNzaW9ucyBzaG91bGQgYmUgZ3JhbnRlZC5cbiAgICovXG4gIHB1YmxpYyBncmFudEdldFNlY3JldFZhbHVlKGdyYW50ZWU6IGlhbS5JUHJpbmNpcGFsKTogdm9pZCB7XG4gICAgZ3JhbnRlZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJ10sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLnNlY3JldEFybl0sXG4gICAgfSkpO1xuICAgIGlmICh0aGlzLm1hc3RlcktleSkge1xuICAgICAgLy8gQWRkIGEga2V5IGdyYW50IHNpbmNlIHdlJ3JlIHVzaW5nIGEgQ01LXG4gICAgICB0aGlzLm1hc3RlcktleS5hZGRUb1Jlc291cmNlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydrbXM6RGVjcnlwdCddLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBwcmluY2lwYWxzOiBbZ3JhbnRlZS5ncmFudFByaW5jaXBhbF0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdrbXM6VmlhU2VydmljZSc6IGBzZWNyZXRzbWFuYWdlci4ke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgICAna21zOkVuY3J5cHRpb25Db250ZXh0OlNlY3JldEFSTic6IHRoaXMuc2VjcmV0QXJuTGlrZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgICAgZ3JhbnRlZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5tYXN0ZXJLZXkua2V5QXJuXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFybkVxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDpTZWNyZXRBUk4nOiB0aGlzLnNlY3JldEFybixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
183
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS1rZXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcml2YXRlLWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FNcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLGtDQUE4QztBQUM5QywrRUFBNkY7QUFxQzdGOzs7O0dBSUc7QUFDSCxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBU2hELFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDeEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsMEJBQTBCLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3JHLE1BQU0sY0FBYyxHQUFHLElBQUksd0JBQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDM0UsYUFBYSxFQUFFLGdCQUFnQjtZQUMvQixJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFdBQVcsRUFBRSxtRUFBbUU7WUFDaEYsT0FBTyxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLElBQUksd0JBQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIscURBQXFEO1lBQ3JELE1BQU0sRUFBRSxDQUFDLElBQUksd0JBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO29CQUN4RCxJQUFJLEVBQUUsd0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxR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U0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUNoQixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUNwQyxVQUFVLEVBQUU7b0JBQ1YsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQixFQUFFLGtCQUFrQixtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLGdCQUFnQjtxQkFDMUU7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGlDQUFpQyxFQUFFLElBQUksQ0FBQyxhQUFhO3FCQUN0RDtpQkFDRjthQUNGLENBQUMsQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLG9CQUFvQixDQUFDLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQ25ELE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztnQkFDeEIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2xDLFVBQVUsRUFBRTtvQkFDVixZQUFZLEVBQUU7d0JBQ1osZ0JBQWdCLEVBQUUsa0JBQWtCLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCO3FCQUMxRTtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsaUNBQWlDLEVBQUUsSUFBSSxDQUFDLFNBQVM7cUJBQ2xEO2lCQUNGO2FBQ0YsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7Q0FDRjtBQS9KRCxrREErSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFN0YWNrLFxuICBBcm5Gb3JtYXQsIEN1c3RvbVJlc291cmNlLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2ttcyBhcyBrbXMsXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGhhc2hGaWxlT3JEaXJlY3RvcnkgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3QsIERpc3Rpbmd1aXNoZWROYW1lIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZS1zaWduaW5nLXJlcXVlc3QnO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUnNhUHJpdmF0ZUtleVNlY3JldFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBtb2R1bHVzIHNpemUgb2YgdGhlIFJTQSBrZXkgdGhhdCB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICpcbiAgICogVGhlIE5JU1QgcHVibGlzaGVzIGEgZG9jdW1lbnQgdGhhdCBwcm92aWRlcyBndWlkYW5jZSBvbiBob3cgdG8gc2VsZWN0IGFuIGFwcHJvcHJpYXRlIGtleSBzaXplOlxuICAgKiBAc2VlIGh0dHBzOi8vY3NyYy5uaXN0Lmdvdi9wdWJsaWNhdGlvbnMvZGV0YWlsL3NwLzgwMC01Ny1wYXJ0LTEvcmV2LTQvZmluYWxcbiAgICovXG4gIGtleVNpemU6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIEFXUyBTZWNyZXRzIE1hbmFnZXIgZW50aXR5IHRoYXQgd2lsbCBiZSBjcmVhdGVkIHRvIGhvbGQgdGhlIHByaXZhdGUga2V5LlxuICAgKi9cbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gdG8gYXR0YWNoIHRvIHRoZSBBV1MgU2VjcmV0cyBNYW5hZ2VyIGVudGl0eSB0aGF0IHdpbGwgaG9sZCB0aGUgcHJpdmF0ZSBrZXkuXG4gICAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdG8gYmUgdXNlZCBmb3IgZW5jcnlwdGluZyB0aGUgQVdTIFNlY3JldHMgTWFuYWdlciBlbnRpdHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IEtNUyBrZXkgd2lsbCBiZSB1c2VkIGluIGFjY29yZGFuY2Ugd2l0aCBBV1MgU2VjcmV0cyBNYW5hZ2VyIGRlZmF1bHQgYmVoYXZpb3IuXG4gICAqL1xuICBzZWNyZXRFbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWxldGlvbiBwb2xpY3kgdG8gYXBwbHkgb24gdGhlIFByaXZhdGUgS2V5IHNlY3JldC5cbiAgICpcbiAgICogQGRlZmF1bHQgUmV0YWluXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBBbiBPcGVuU1NMLWdlbmVyYXRlZCBSU0EgUHJpdmF0ZSBLZXkuIEl0IGNhbiBmb3IgZXhhbXBsZSBiZSB1c2VkIHRvIG9idGFpbiBhIENlcnRpZmljYXRlIHNpZ25lZCBieSBhIENlcnRpZmljYXRlXG4gKiBBdXRob3JpdHkgdGhyb3VnaCB0aGUgdXNlIG9mIHRoZSBgYENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RgYCBjb25zdHJ1Y3QgKG9yIHZpYSB0aGVcbiAqIGBgI25ld0NlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RgYCkgbWV0aG9kLlxuICovXG5leHBvcnQgY2xhc3MgUnNhUHJpdmF0ZUtleVNlY3JldCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzZWNyZXQgdGhhdCBob2xkcyB0aGUgcHJpdmF0ZSBrZXkuXG4gICAqL1xuICBwdWJsaWMgc2VjcmV0QXJuOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZWNyZXRBcm5MaWtlOiBzdHJpbmc7XG4gIHByaXZhdGUgbWFzdGVyS2V5Pzoga21zLklLZXk7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSc2FQcml2YXRlS2V5U2VjcmV0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGNvZGVMb2NhdGlvbiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnYmluJywgJ3ByaXZhdGUta2V5Jyk7XG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdSZXNvdXJjZUhhbmRsZXInLCB7XG4gICAgICBsYW1iZGFQdXJwb3NlOiAnUlNBUHJpdmF0ZS1LZXknLFxuICAgICAgdXVpZDogJzcyRkQzMjdELTM4MTMtNDYzMi05MzQwLTI4RUM0MzdBQTQ4NicsXG4gICAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlcyBhbiBSU0EgUHJpdmF0ZSBLZXkgYW5kIHN0b3JlcyBpdCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyJyxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbmV3IGxhbWJkYS5Bc3NldENvZGUoY29kZUxvY2F0aW9uKSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIC8vIGFkZCB0aGUgbGF5ZXIgdGhhdCBjb250YWlucyB0aGUgT3BlblNTTCBDTEkgYmluYXJ5XG4gICAgICBsYXllcnM6IFtuZXcgbGFtYmRhLkxheWVyVmVyc2lvbih0aGlzLCAnT3BlblNzbENsaUxheWVyJywge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycycsICdsYXllcnMnLCAnb3BlbnNzbC1jbGktbGF5ZXIuemlwJykpLFxuICAgICAgfSldLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWNyZXRBcm5MaWtlID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6ICdzZWNyZXRzbWFuYWdlcicsXG4gICAgICByZXNvdXJjZTogJ3NlY3JldCcsXG4gICAgICBhcm5Gb3JtYXQ6IEFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgICAgLy8gVGhlIEFSTiBvZiBhIHNlY3JldCBoYXMgXCItXCIgZm9sbG93ZWQgYnkgNiByYW5kb20gY2hhcmFjdGVycyBhcHBlbmRlZCBhdCB0aGUgZW5kXG4gICAgICByZXNvdXJjZU5hbWU6IGAke3Byb3BzLnNlY3JldE5hbWV9LT8/Pz8/P2AsXG4gICAgfSk7XG4gICAgY3VzdG9tUmVzb3VyY2UuYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkNyZWF0ZVNlY3JldCcsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpEZWxldGVTZWNyZXQnLFxuICAgICAgICAnc2VjcmV0c21hbmFnZXI6VXBkYXRlU2VjcmV0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLnNlY3JldEFybkxpa2VdLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAvLyBkZXNjcmlwdGlvbjogYEFsbG93IHVzZSB2aWEgQVdTIFNlY3JldHMgTWFuYWdlciBieSBDdXN0b21SZXNvdXJjZSBoYW5kbGVyICR7Y3VzdG9tUmVzb3VyY2UuZnVuY3Rpb25OYW1lfWAsXG4gICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFyblByaW5jaXBhbChjdXN0b21SZXNvdXJjZS5yb2xlIS5yb2xlQXJuKV0sXG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnLCAna21zOkdlbmVyYXRlRGF0YUtleSddLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAna21zOlZpYVNlcnZpY2UnOiBgc2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgQXJuTGlrZToge1xuICAgICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDpTZWNyZXRBUk4nOiB0aGlzLnNlY3JldEFybkxpa2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBwcml2YXRlS2V5ID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogY3VzdG9tUmVzb3VyY2UuZnVuY3Rpb25Bcm4sXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OlJzYVByaXZhdGVLZXlTZWNyZXQnLFxuICAgICAgcGFzY2FsQ2FzZVByb3BlcnRpZXM6IHRydWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJlc291cmNlVmVyc2lvbjogaGFzaEZpbGVPckRpcmVjdG9yeShjb2RlTG9jYXRpb24pLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIGtleVNpemU6IHByb3BzLmtleVNpemUsXG4gICAgICAgIHNlY3JldE5hbWU6IHByb3BzLnNlY3JldE5hbWUsXG4gICAgICAgIGttc0tleUlkOiBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5ICYmIHByb3BzLnNlY3JldEVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgfSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzLnJlbW92YWxQb2xpY3kgfHwgUmVtb3ZhbFBvbGljeS5SRVRBSU4sXG4gICAgfSk7XG4gICAgaWYgKGN1c3RvbVJlc291cmNlLnJvbGUpIHtcbiAgICAgIHByaXZhdGVLZXkubm9kZS5hZGREZXBlbmRlbmN5KGN1c3RvbVJlc291cmNlLnJvbGUpO1xuICAgICAgaWYgKHByb3BzLnNlY3JldEVuY3J5cHRpb25LZXkpIHtcbiAgICAgICAgLy8gTW9kZWxpbmcgYXMgYSBzZXBhcmF0ZSBQb2xpY3kgdG8gZXZhZGUgYSBkZXBlbmRlbmN5IGN5Y2xlIChSb2xlIC0+IEtleSAtPiBSb2xlKSwgYXMgdGhlIEtleSByZWZlcnMgdG8gdGhlXG4gICAgICAgIC8vIHJvbGUgaW4gaXQncyByZXNvdXJjZSBwb2xpY3kuXG4gICAgICAgIHByaXZhdGVLZXkubm9kZS5hZGREZXBlbmRlbmN5KG5ldyBpYW0uUG9saWN5KHRoaXMsICdHcmFudExhbWJkYVJvbGVLZXlBY2Nlc3MnLCB7XG4gICAgICAgICAgcm9sZXM6IFtjdXN0b21SZXNvdXJjZS5yb2xlXSxcbiAgICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgIC8vIGRlc2NyaXB0aW9uOiBgQVdTU2VjcmV0c01hbmFnZXIke3Byb3BzLnNlY3JldE5hbWUucmVwbGFjZSgvW14wLTlBLVphLXpdL2csICcnKX1DTUtgLFxuICAgICAgICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMuc2VjcmV0RW5jcnlwdGlvbktleS5rZXlBcm5dLFxuICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAgICAgICAna21zOlZpYVNlcnZpY2UnOiBgc2VjcmV0c21hbmFnZXIuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgU3RyaW5nTGlrZTogeyAna21zOkVuY3J5cHRpb25Db250ZXh0OlNlY3JldEFSTic6IFt0aGlzLnNlY3JldEFybkxpa2UsICdSZXF1ZXN0VG9WYWxpZGF0ZUtleUFjY2VzcyddIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5tYXN0ZXJLZXkgPSBwcm9wcy5zZWNyZXRFbmNyeXB0aW9uS2V5O1xuICAgIHRoaXMuc2VjcmV0QXJuID0gcHJpdmF0ZUtleS5nZXRBdHQoJ1NlY3JldEFybicpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBDU1IgcmVzb3VyY2UgdXNpbmcgdGhpcyBwcml2YXRlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIGlkICAgICAgICAgICAgICAgdGhlIElEIG9mIHRoZSBjb25zdHJ1Y3QgaW4gdGhlIGNvbnN0cnVjdCB0cmVlLlxuICAgKiBAcGFyYW0gZG4gICAgICAgICAgICAgICB0aGUgZGlzdGluZ3Vpc2hlZCBuYW1lIHRvIHJlY29yZCBvbiB0aGUgQ1NSLlxuICAgKiBAcGFyYW0ga2V5VXNhZ2UgICAgICAgICB0aGUgaW50ZW5kZWQga2V5IHVzYWdlIChmb3IgZXhhbXBsZTogXCJjcml0aWNhbCxkaWdpdGFsU2lnbmF0dXJlXCIpXG4gICAqIEBwYXJhbSBleHRlbmRlZEtleVVzYWdlIHRoZSBpbmRlbmRlZCBleHRlbmRlZCBrZXkgdXNhZ2UsIGlmIGFueSAoZm9yIGV4YW1wbGU6IFwiY3JpdGljYWwsZGlnaXRhbFNpZ25hdHVyZVwiKVxuICAgKlxuICAgKiBAcmV0dXJucyBhIG5ldyBgYENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RgYCBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgYWN0dWFsIENTUiBkb2N1bWVudC5cbiAgICovXG4gIHB1YmxpYyBuZXdDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0KGlkOiBzdHJpbmcsIGRuOiBEaXN0aW5ndWlzaGVkTmFtZSwga2V5VXNhZ2U6IHN0cmluZywgZXh0ZW5kZWRLZXlVc2FnZT86IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdCh0aGlzLCBpZCwge1xuICAgICAgcHJpdmF0ZUtleTogdGhpcyxcbiAgICAgIGRuLFxuICAgICAga2V5VXNhZ2UsXG4gICAgICBleHRlbmRlZEtleVVzYWdlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhIGdpdmVuIElBTSBSb2xlIHRvIHJlYWQgdGhlIHNlY3JldCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgdGhlIHByaW5jaXBhbCB0byB3aGljaCBwZXJtaXNzaW9ucyBzaG91bGQgYmUgZ3JhbnRlZC5cbiAgICovXG4gIHB1YmxpYyBncmFudEdldFNlY3JldFZhbHVlKGdyYW50ZWU6IGlhbS5JUHJpbmNpcGFsKTogdm9pZCB7XG4gICAgZ3JhbnRlZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJ10sXG4gICAgICByZXNvdXJjZXM6IFt0aGlzLnNlY3JldEFybl0sXG4gICAgfSkpO1xuICAgIGlmICh0aGlzLm1hc3RlcktleSkge1xuICAgICAgLy8gQWRkIGEga2V5IGdyYW50IHNpbmNlIHdlJ3JlIHVzaW5nIGEgQ01LXG4gICAgICB0aGlzLm1hc3RlcktleS5hZGRUb1Jlc291cmNlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydrbXM6RGVjcnlwdCddLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBwcmluY2lwYWxzOiBbZ3JhbnRlZS5ncmFudFByaW5jaXBhbF0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICdrbXM6VmlhU2VydmljZSc6IGBzZWNyZXRzbWFuYWdlci4ke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgICAna21zOkVuY3J5cHRpb25Db250ZXh0OlNlY3JldEFSTic6IHRoaXMuc2VjcmV0QXJuTGlrZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgICAgZ3JhbnRlZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5tYXN0ZXJLZXkua2V5QXJuXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFybkVxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpFbmNyeXB0aW9uQ29udGV4dDpTZWNyZXRBUk4nOiB0aGlzLnNlY3JldEFybixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as path from 'path';
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
Duration, RemovalPolicy, Stack,
|
|
4
|
+
ArnFormat, CustomResource,
|
|
5
5
|
aws_iam as iam,
|
|
6
6
|
aws_kms as kms,
|
|
7
7
|
aws_lambda as lambda,
|
|
8
|
-
} from '
|
|
8
|
+
} from 'aws-cdk-lib';
|
|
9
|
+
import { Construct } from 'constructs';
|
|
9
10
|
import { hashFileOrDirectory } from '../util';
|
|
10
11
|
import { CertificateSigningRequest, DistinguishedName } from './certificate-signing-request';
|
|
11
12
|
|
|
@@ -79,7 +80,7 @@ export class RsaPrivateKeySecret extends Construct {
|
|
|
79
80
|
this.secretArnLike = Stack.of(this).formatArn({
|
|
80
81
|
service: 'secretsmanager',
|
|
81
82
|
resource: 'secret',
|
|
82
|
-
|
|
83
|
+
arnFormat: ArnFormat.COLON_RESOURCE_NAME,
|
|
83
84
|
// The ARN of a secret has "-" followed by 6 random characters appended at the end
|
|
84
85
|
resourceName: `${props.secretName}-??????`,
|
|
85
86
|
});
|
|
@@ -109,9 +110,10 @@ export class RsaPrivateKeySecret extends Construct {
|
|
|
109
110
|
}));
|
|
110
111
|
}
|
|
111
112
|
|
|
112
|
-
const privateKey = new
|
|
113
|
-
|
|
113
|
+
const privateKey = new CustomResource(this, 'Resource', {
|
|
114
|
+
serviceToken: customResource.functionArn,
|
|
114
115
|
resourceType: 'Custom::RsaPrivateKeySecret',
|
|
116
|
+
pascalCaseProperties: true,
|
|
115
117
|
properties: {
|
|
116
118
|
resourceVersion: hashFileOrDirectory(codeLocation),
|
|
117
119
|
description: props.description,
|
|
@@ -174,7 +176,7 @@ export class RsaPrivateKeySecret extends Construct {
|
|
|
174
176
|
* @param grantee the principal to which permissions should be granted.
|
|
175
177
|
*/
|
|
176
178
|
public grantGetSecretValue(grantee: iam.IPrincipal): void {
|
|
177
|
-
grantee.
|
|
179
|
+
grantee.addToPrincipalPolicy(new iam.PolicyStatement({
|
|
178
180
|
actions: ['secretsmanager:GetSecretValue'],
|
|
179
181
|
resources: [this.secretArn],
|
|
180
182
|
}));
|
|
@@ -193,7 +195,7 @@ export class RsaPrivateKeySecret extends Construct {
|
|
|
193
195
|
},
|
|
194
196
|
},
|
|
195
197
|
}));
|
|
196
|
-
grantee.
|
|
198
|
+
grantee.addToPrincipalPolicy(new iam.PolicyStatement({
|
|
197
199
|
actions: ['kms:Decrypt'],
|
|
198
200
|
resources: [this.masterKey.keyArn],
|
|
199
201
|
conditions: {
|
package/lib/credential-pair.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aws_ssm as ssm, aws_secretsmanager as secretsManager } from '
|
|
1
|
+
import { aws_ssm as ssm, aws_secretsmanager as secretsManager } from 'aws-cdk-lib';
|
|
2
2
|
/**
|
|
3
3
|
* A Credential Pair combines a secret element (the credential) and a public
|
|
4
4
|
* element (the principal). The public element is stored in an SSM Parameter,
|
package/lib/credential-pair.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbC1wYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY3JlZGVudGlhbC1wYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBhd3Nfc3NtIGFzIHNzbSxcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNNYW5hZ2VyLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5cblxuLyoqXG4gKiBBIENyZWRlbnRpYWwgUGFpciBjb21iaW5lcyBhIHNlY3JldCBlbGVtZW50ICh0aGUgY3JlZGVudGlhbCkgYW5kIGEgcHVibGljXG4gKiBlbGVtZW50ICh0aGUgcHJpbmNpcGFsKS4gVGhlIHB1YmxpYyBlbGVtZW50IGlzIHN0b3JlZCBpbiBhbiBTU00gUGFyYW1ldGVyLFxuICogd2hpbGUgdGhlIHNlY3JldCBlbGVtZW50IGlzIHN0b3JlZCBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyLlxuICpcbiAqIEZvciBleGFtcGxlLCB0aGlzIGNhbiBiZTpcbiAqIC0gQSB1c2VybmFtZSBhbmQgYSBwYXNzd29yZFxuICogLSBBIHByaXZhdGUga2V5IGFuZCBhIGNlcnRpZmljYXRlXG4gKiAtIEFuIE9wZW5QR1AgUHJpdmF0ZSBrZXkgYW5kIGl0cyBwdWJsaWMgcGFydFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDcmVkZW50aWFsUGFpciB7XG4gIC8qKlxuICAgKiBUaGUgcHVibGljIHBhcnQgb2YgdGhpcyBjcmVkZW50aWFsIHBhaXIuXG4gICAqL1xuICByZWFkb25seSBwcmluY2lwYWw6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VjcmV0IHBhcnQgb2YgdGhpcyBjcmVkZW50aWFsIHBhaXIuXG4gICAqL1xuICByZWFkb25seSBjcmVkZW50aWFsOiBzZWNyZXRzTWFuYWdlci5JU2VjcmV0O1xufVxuIl19
|