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
package/lib/open-pgp-key-pair.js
CHANGED
|
@@ -24,9 +24,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.OpenPGPKeyPair = exports.OpenPGPKeyPairRemovalPolicy = void 0;
|
|
27
|
-
// tslint:disable-next-line: max-line-length
|
|
28
27
|
const path = __importStar(require("path"));
|
|
29
|
-
const
|
|
28
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
29
|
+
const constructs_1 = require("constructs");
|
|
30
30
|
const util_1 = require("./util");
|
|
31
31
|
/**
|
|
32
32
|
* The type of the {@link OpenPGPKeyPairProps.removalPolicy} property.
|
|
@@ -59,55 +59,56 @@ var OpenPGPKeyPairRemovalPolicy;
|
|
|
59
59
|
*
|
|
60
60
|
* { "PrivateKey": "... ASCII repr of key...", "Passphrase": "passphrase of the key" }
|
|
61
61
|
*/
|
|
62
|
-
class OpenPGPKeyPair extends
|
|
62
|
+
class OpenPGPKeyPair extends constructs_1.Construct {
|
|
63
63
|
constructor(parent, name, props) {
|
|
64
64
|
super(parent, name);
|
|
65
65
|
const codeLocation = path.resolve(__dirname, 'custom-resource-handlers', 'bin', 'pgp-secret');
|
|
66
|
-
const fn = new
|
|
66
|
+
const fn = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'Lambda', {
|
|
67
67
|
uuid: 'f25803d3-054b-44fc-985f-4860d7d6ee74',
|
|
68
68
|
description: 'Generates an OpenPGP Key and stores the private key in Secrets Manager and the public key in an SSM Parameter',
|
|
69
|
-
code: new
|
|
69
|
+
code: new aws_cdk_lib_1.aws_lambda.AssetCode(codeLocation),
|
|
70
70
|
handler: 'index.handler',
|
|
71
|
-
timeout:
|
|
72
|
-
runtime:
|
|
71
|
+
timeout: aws_cdk_lib_1.Duration.seconds(300),
|
|
72
|
+
runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_12_X,
|
|
73
73
|
// add the layer that contains the GPG binary (+ shared libraries)
|
|
74
|
-
layers: [new
|
|
75
|
-
code:
|
|
74
|
+
layers: [new aws_cdk_lib_1.aws_lambda.LayerVersion(this, 'GpgLayer', {
|
|
75
|
+
code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, 'custom-resource-handlers', 'layers', 'gpg-layer.zip')),
|
|
76
76
|
})],
|
|
77
77
|
});
|
|
78
|
-
fn.addToRolePolicy(new
|
|
78
|
+
fn.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
79
79
|
actions: [
|
|
80
80
|
'secretsmanager:CreateSecret',
|
|
81
81
|
'secretsmanager:GetSecretValue',
|
|
82
82
|
'secretsmanager:UpdateSecret',
|
|
83
83
|
'secretsmanager:DeleteSecret',
|
|
84
84
|
],
|
|
85
|
-
resources: [
|
|
85
|
+
resources: [aws_cdk_lib_1.Stack.of(this).formatArn({
|
|
86
86
|
service: 'secretsmanager',
|
|
87
87
|
resource: 'secret',
|
|
88
|
-
|
|
88
|
+
arnFormat: aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME,
|
|
89
89
|
resourceName: `${props.secretName}-??????`,
|
|
90
90
|
})],
|
|
91
91
|
}));
|
|
92
92
|
// To allow easy migration from verison that handled the SSM parameter in the custom resource
|
|
93
|
-
fn.addToRolePolicy(new
|
|
93
|
+
fn.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
94
94
|
actions: ['ssm:DeleteParameter'],
|
|
95
95
|
resources: ['*'],
|
|
96
96
|
}));
|
|
97
97
|
if (props.encryptionKey) {
|
|
98
|
-
props.encryptionKey.addToResourcePolicy(new
|
|
98
|
+
props.encryptionKey.addToResourcePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
99
99
|
actions: ['kms:Decrypt', 'kms:GenerateDataKey'],
|
|
100
100
|
resources: ['*'],
|
|
101
101
|
principals: [fn.role.grantPrincipal],
|
|
102
102
|
conditions: {
|
|
103
103
|
StringEquals: {
|
|
104
|
-
'kms:ViaService': `secretsmanager.${
|
|
104
|
+
'kms:ViaService': `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`,
|
|
105
105
|
},
|
|
106
106
|
},
|
|
107
107
|
}));
|
|
108
108
|
}
|
|
109
|
-
const secret = new
|
|
110
|
-
|
|
109
|
+
const secret = new aws_cdk_lib_1.CustomResource(this, 'Resource', {
|
|
110
|
+
serviceToken: fn.functionArn,
|
|
111
|
+
pascalCaseProperties: true,
|
|
111
112
|
properties: {
|
|
112
113
|
resourceVersion: (0, util_1.hashFileOrDirectory)(codeLocation),
|
|
113
114
|
identity: props.identity,
|
|
@@ -123,11 +124,11 @@ class OpenPGPKeyPair extends monocdk_1.Construct {
|
|
|
123
124
|
removalPolicy: openPgpKeyPairRemovalPolicyToCoreRemovalPolicy(props.removalPolicy),
|
|
124
125
|
});
|
|
125
126
|
secret.node.addDependency(fn);
|
|
126
|
-
this.credential =
|
|
127
|
+
this.credential = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretAttributes(this, 'Credential', {
|
|
127
128
|
encryptionKey: props.encryptionKey,
|
|
128
|
-
|
|
129
|
+
secretCompleteArn: secret.getAtt('SecretArn').toString(),
|
|
129
130
|
});
|
|
130
|
-
this.principal = new
|
|
131
|
+
this.principal = new aws_cdk_lib_1.aws_ssm.StringParameter(this, 'Principal', {
|
|
131
132
|
description: `The public part of the OpenPGP key in ${this.credential.secretArn}`,
|
|
132
133
|
parameterName: props.pubKeyParameterName,
|
|
133
134
|
stringValue: secret.getAtt('PublicKey').toString(),
|
|
@@ -135,17 +136,17 @@ class OpenPGPKeyPair extends monocdk_1.Construct {
|
|
|
135
136
|
}
|
|
136
137
|
grantRead(grantee) {
|
|
137
138
|
// Secret grant, identity-based only
|
|
138
|
-
grantee.
|
|
139
|
+
grantee.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
139
140
|
resources: [this.credential.secretArn],
|
|
140
141
|
actions: ['secretsmanager:ListSecrets', 'secretsmanager:DescribeSecret', 'secretsmanager:GetSecretValue'],
|
|
141
142
|
}));
|
|
142
143
|
// Key grant
|
|
143
144
|
if (this.credential.encryptionKey) {
|
|
144
|
-
grantee.
|
|
145
|
+
grantee.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
145
146
|
resources: [this.credential.encryptionKey.keyArn],
|
|
146
147
|
actions: ['kms:Decrypt'],
|
|
147
148
|
}));
|
|
148
|
-
this.credential.encryptionKey.addToResourcePolicy(new
|
|
149
|
+
this.credential.encryptionKey.addToResourcePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
|
|
149
150
|
resources: ['*'],
|
|
150
151
|
principals: [grantee.grantPrincipal],
|
|
151
152
|
actions: ['kms:Decrypt'],
|
|
@@ -156,10 +157,10 @@ class OpenPGPKeyPair extends monocdk_1.Construct {
|
|
|
156
157
|
exports.OpenPGPKeyPair = OpenPGPKeyPair;
|
|
157
158
|
function openPgpKeyPairRemovalPolicyToCoreRemovalPolicy(removalPolicy) {
|
|
158
159
|
if (removalPolicy === undefined) {
|
|
159
|
-
return
|
|
160
|
+
return aws_cdk_lib_1.RemovalPolicy.RETAIN;
|
|
160
161
|
}
|
|
161
162
|
return removalPolicy === OpenPGPKeyPairRemovalPolicy.RETAIN
|
|
162
|
-
?
|
|
163
|
-
:
|
|
163
|
+
? aws_cdk_lib_1.RemovalPolicy.RETAIN
|
|
164
|
+
: aws_cdk_lib_1.RemovalPolicy.DESTROY;
|
|
164
165
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1wZ3Ata2V5LXBhaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvcGVuLXBncC1rZXktcGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUE0QztBQUM1QywyQ0FBNkI7QUFDN0IscUNBUWlCO0FBRWpCLGlDQUE2QztBQUU3Qzs7R0FFRztBQUNILElBQVksMkJBbUJYO0FBbkJELFdBQVksMkJBQTJCO0lBQ3JDOzs7T0FHRztJQUNILGlGQUFNLENBQUE7SUFFTjs7O09BR0c7SUFDSCxpR0FBYyxDQUFBO0lBRWQ7Ozs7T0FJRztJQUNILDJHQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFuQlcsMkJBQTJCLEdBQTNCLG1DQUEyQixLQUEzQixtQ0FBMkIsUUFtQnRDO0FBNkREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsbUJBQVM7SUFJM0MsWUFBWSxNQUFpQixFQUFFLElBQVksRUFBRSxLQUEwQjtRQUNyRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RixNQUFNLEVBQUUsR0FBRyxJQUFJLG9CQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN0RCxJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFdBQVcsRUFBRSwrR0FBK0c7WUFDNUgsSUFBSSxFQUFFLElBQUksb0JBQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyxFQUFFLG9CQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsa0VBQWtFO1lBQ2xFLE1BQU0sRUFB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Y0FBYyxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7Q0FDRjtBQTFHRCx3Q0EwR0M7QUFFRCxTQUFTLDhDQUE4QyxDQUFDLGFBQTJDO0lBQ2pHLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUMvQixPQUFPLHVCQUFhLENBQUMsTUFBTSxDQUFDO0tBQzdCO0lBQ0QsT0FBTyxhQUFhLEtBQUssMkJBQTJCLENBQUMsTUFBTTtRQUN6RCxDQUFDLENBQUMsdUJBQWEsQ0FBQyxNQUFNO1FBQ3RCLENBQUMsQ0FBQyx1QkFBYSxDQUFDLE9BQU8sQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLCBTdGFjaywgUmVtb3ZhbFBvbGljeSxcbiAgYXdzX2Nsb3VkZm9ybWF0aW9uIGFzIGNmbixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19rbXMgYXMga21zLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNNYW5hZ2VyLFxuICBhd3Nfc3NtIGFzIHNzbSxcbn0gZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBJQ3JlZGVudGlhbFBhaXIgfSBmcm9tICcuL2NyZWRlbnRpYWwtcGFpcic7XG5pbXBvcnQgeyBoYXNoRmlsZU9yRGlyZWN0b3J5IH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUge0BsaW5rIE9wZW5QR1BLZXlQYWlyUHJvcHMucmVtb3ZhbFBvbGljeX0gcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBlbnVtIE9wZW5QR1BLZXlQYWlyUmVtb3ZhbFBvbGljeSB7XG4gIC8qKlxuICAgKiBLZWVwIHRoZSBzZWNyZXQgd2hlbiB0aGlzIHJlc291cmNlIGlzIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2suXG4gICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgc2V0dGluZy5cbiAgICovXG4gIFJFVEFJTixcblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBzZWNyZXQgd2hlbiB0aGlzIHJlc291cmNlIGlzIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2ssXG4gICAqIGJ1dCBsZWF2ZSBhIGdyYWNlIHBlcmlvZCBvZiBhIGZldyBkYXlzIHRoYXQgYWxsb3dzIHlvdSB0byBjYW5jZWwgdGhlIGRlbGV0aW9uIGZyb20gdGhlIEFXUyBDb25zb2xlLlxuICAgKi9cbiAgREVTVFJPWV9TQUZFTFksXG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gdGhlIHN0YWNrIGltbWVkaWF0ZWx5LlxuICAgKiBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGhhdmUgYSBiYWNrdXAgb2YgdGhpcyBrZXkgc29tZXdoZXJlLFxuICAgKiB0aGlzIG1lYW5zIGl0IHdpbGwgYmUgZ29uZSBmb3JldmVyIVxuICAgKi9cbiAgREVTVFJPWV9JTU1FRElBVEVMWVxufVxuXG5pbnRlcmZhY2UgT3BlblBHUEtleVBhaXJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGl0eSB0byBwdXQgaW50byB0aGUga2V5XG4gICAqL1xuICBpZGVudGl0eTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCBhZGRyZXNzIHRvIGF0dGFjaCB0byB0aGUga2V5XG4gICAqL1xuICBlbWFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBLZXkgc2l6ZSBpbiBiaXRzICgxMDI0LCAyMDQ4LCA0MDk2KVxuICAgKi9cbiAga2V5U2l6ZUJpdHM6IG51bWJlcjtcblxuICAvKipcbiAgICogR1BHIGV4cGlyeSBzcGVjaWZpZXJcbiAgICpcbiAgICogRXhhbXBsZTogJzF5J1xuICAgKi9cbiAgZXhwaXJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2Ygc2VjcmV0IHRvIGNyZWF0ZSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gICAqL1xuICBzZWNyZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgU1NNIHBhcmFtZXRlciB0byBzdG9yZSBwdWJsaWMga2V5XG4gICAqL1xuICBwdWJLZXlQYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgQVJOIHRvIHVzZSB0byBlbmNyeXB0IFNlY3JldHMgTWFuYWdlciBTZWNyZXRcbiAgICovXG4gIGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga2V5XG4gICAqXG4gICAqIEJ1bXAgdGhpcyBudW1iZXIgdG8gcmVnZW5lcmF0ZSB0aGUga2V5XG4gICAqL1xuICB2ZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gdG8gYXR0YWNoIHRvIHRoZSBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoYXQgaGFwcGVucyB0byB0aGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrLlxuICAgKiBUaGUgZGVmYXVsdCBpcyB0byBrZWVwIHRoZSBzZWNyZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9wZW5QR1BLZXlQYWlyUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBQR1Aga2V5IHRoYXQgaXMgc3RvcmVkIGluIFNlY3JldHMgTWFuYWdlci5cbiAqIFRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgaXMgYnkgZGVmYXVsdCByZXRhaW5lZCB3aGVuIHRoZSByZXNvdXJjZSBpcyBkZWxldGVkLFxuICogeW91IGNhbiBjaGFuZ2UgdGhhdCB3aXRoIHRoZSBgcmVtb3ZhbFBvbGljeWAgcHJvcGVydHkuXG4gKlxuICogVGhlIHN0cmluZyBpbiBzZWNyZXRzIG1hbmFnZXIgd2lsbCBiZSBhIEpTT04gc3RydWN0IG9mXG4gKlxuICogeyBcIlByaXZhdGVLZXlcIjogXCIuLi4gQVNDSUkgcmVwciBvZiBrZXkuLi5cIiwgXCJQYXNzcGhyYXNlXCI6IFwicGFzc3BocmFzZSBvZiB0aGUga2V5XCIgfVxuICovXG5leHBvcnQgY2xhc3MgT3BlblBHUEtleVBhaXIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ3JlZGVudGlhbFBhaXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWw6IHNlY3JldHNNYW5hZ2VyLklTZWNyZXQ7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IE9wZW5QR1BLZXlQYWlyUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgY29uc3QgY29kZUxvY2F0aW9uID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycycsICdiaW4nLCAncGdwLXNlY3JldCcpO1xuXG4gICAgY29uc3QgZm4gPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdMYW1iZGEnLCB7XG4gICAgICB1dWlkOiAnZjI1ODAzZDMtMDU0Yi00NGZjLTk4NWYtNDg2MGQ3ZDZlZTc0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVzIGFuIE9wZW5QR1AgS2V5IGFuZCBzdG9yZXMgdGhlIHByaXZhdGUga2V5IGluIFNlY3JldHMgTWFuYWdlciBhbmQgdGhlIHB1YmxpYyBrZXkgaW4gYW4gU1NNIFBhcmFtZXRlcicsXG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLkFzc2V0Q29kZShjb2RlTG9jYXRpb24pLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICAvLyBhZGQgdGhlIGxheWVyIHRoYXQgY29udGFpbnMgdGhlIEdQRyBiaW5hcnkgKCsgc2hhcmVkIGxpYnJhcmllcylcbiAgICAgIGxheWVyczogW25ldyBsYW1iZGEuTGF5ZXJWZXJzaW9uKHRoaXMsICdHcGdMYXllcicsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnbGF5ZXJzJywgJ2dwZy1sYXllci56aXAnKSksXG4gICAgICB9KV0sXG4gICAgfSk7XG5cbiAgICBmbi5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnc2VjcmV0c21hbmFnZXI6Q3JlYXRlU2VjcmV0JyxcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOlVwZGF0ZVNlY3JldCcsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpEZWxldGVTZWNyZXQnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW1N0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdzZWNyZXRzbWFuYWdlcicsXG4gICAgICAgIHJlc291cmNlOiAnc2VjcmV0JyxcbiAgICAgICAgc2VwOiAnOicsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7cHJvcHMuc2VjcmV0TmFtZX0tPz8/Pz8/YCxcbiAgICAgIH0pXSxcbiAgICB9KSk7XG5cbiAgICAvLyBUbyBhbGxvdyBlYXN5IG1pZ3JhdGlvbiBmcm9tIHZlcmlzb24gdGhhdCBoYW5kbGVkIHRoZSBTU00gcGFyYW1ldGVyIGluIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBmbi5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzc206RGVsZXRlUGFyYW1ldGVyJ10sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwcm9wcy5lbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgcHJpbmNpcGFsczogW2ZuLnJvbGUhLmdyYW50UHJpbmNpcGFsXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3JldCA9IG5ldyBjZm4uQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvdmlkZXI6IGNmbi5DdXN0b21SZXNvdXJjZVByb3ZpZGVyLmxhbWJkYShmbiksXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJlc291cmNlVmVyc2lvbjogaGFzaEZpbGVPckRpcmVjdG9yeShjb2RlTG9jYXRpb24pLFxuICAgICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICAgIGVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgZXhwaXJ5OiBwcm9wcy5leHBpcnksXG4gICAgICAgIGtleVNpemVCaXRzOiBwcm9wcy5rZXlTaXplQml0cyxcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgICAga2V5QXJuOiBwcm9wcy5lbmNyeXB0aW9uS2V5ICYmIHByb3BzLmVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIGRlbGV0ZUltbWVkaWF0ZWx5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuREVTVFJPWV9JTU1FRElBVEVMWSxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5OiBvcGVuUGdwS2V5UGFpclJlbW92YWxQb2xpY3lUb0NvcmVSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpLFxuICAgIH0pO1xuICAgIHNlY3JldC5ub2RlLmFkZERlcGVuZGVuY3koZm4pO1xuXG4gICAgdGhpcy5jcmVkZW50aWFsID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRBdHRyaWJ1dGVzKHRoaXMsICdDcmVkZW50aWFsJywge1xuICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuZW5jcnlwdGlvbktleSxcbiAgICAgIHNlY3JldEFybjogc2VjcmV0LmdldEF0dCgnU2VjcmV0QXJuJykudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgICB0aGlzLnByaW5jaXBhbCA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdQcmluY2lwYWwnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFRoZSBwdWJsaWMgcGFydCBvZiB0aGUgT3BlblBHUCBrZXkgaW4gJHt0aGlzLmNyZWRlbnRpYWwuc2VjcmV0QXJufWAsXG4gICAgICBwYXJhbWV0ZXJOYW1lOiBwcm9wcy5wdWJLZXlQYXJhbWV0ZXJOYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IHNlY3JldC5nZXRBdHQoJ1B1YmxpY0tleScpLnRvU3RyaW5nKCksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JUHJpbmNpcGFsKTogdm9pZCB7XG4gICAgLy8gU2VjcmV0IGdyYW50LCBpZGVudGl0eS1iYXNlZCBvbmx5XG4gICAgZ3JhbnRlZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFt0aGlzLmNyZWRlbnRpYWwuc2VjcmV0QXJuXSxcbiAgICAgIGFjdGlvbnM6IFsnc2VjcmV0c21hbmFnZXI6TGlzdFNlY3JldHMnLCAnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnLCAnc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWUnXSxcbiAgICB9KSk7XG5cbiAgICAvLyBLZXkgZ3JhbnRcbiAgICBpZiAodGhpcy5jcmVkZW50aWFsLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIGdyYW50ZWUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmNyZWRlbnRpYWwuZW5jcnlwdGlvbktleS5rZXlBcm5dLFxuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICB9KSk7XG5cbiAgICAgIHRoaXMuY3JlZGVudGlhbC5lbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBwcmluY2lwYWxzOiBbZ3JhbnRlZS5ncmFudFByaW5jaXBhbF0sXG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb3BlblBncEtleVBhaXJSZW1vdmFsUG9saWN5VG9Db3JlUmVtb3ZhbFBvbGljeShyZW1vdmFsUG9saWN5PzogT3BlblBHUEtleVBhaXJSZW1vdmFsUG9saWN5KTogUmVtb3ZhbFBvbGljeSB7XG4gIGlmIChyZW1vdmFsUG9saWN5ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gUmVtb3ZhbFBvbGljeS5SRVRBSU47XG4gIH1cbiAgcmV0dXJuIHJlbW92YWxQb2xpY3kgPT09IE9wZW5QR1BLZXlQYWlyUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICA/IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgOiBSZW1vdmFsUG9saWN5LkRFU1RST1k7XG59XG4iXX0=
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1wZ3Ata2V5LXBhaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvcGVuLXBncC1rZXktcGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FTcUI7QUFDckIsMkNBQXVDO0FBRXZDLGlDQUE2QztBQUU3Qzs7R0FFRztBQUNILElBQVksMkJBbUJYO0FBbkJELFdBQVksMkJBQTJCO0lBQ3JDOzs7T0FHRztJQUNILGlGQUFNLENBQUE7SUFFTjs7O09BR0c7SUFDSCxpR0FBYyxDQUFBO0lBRWQ7Ozs7T0FJRztJQUNILDJHQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFuQlcsMkJBQTJCLEdBQTNCLG1DQUEyQixLQUEzQixtQ0FBMkIsUUFtQnRDO0FBNkREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxNQUFpQixFQUFFLElBQVksRUFBRSxLQUEwQjtRQUNyRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RixNQUFNLEVBQUUsR0FBRyxJQUFJLHdCQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN0RCxJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFdBQVcsRUFBRSwrR0FBK0c7WUFDNUgsSUFBSSxFQUFFLElBQUksd0JBQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsa0VBQWtFO1lBQ2xFLE1BQU0sRUFB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TyxDQUFDLGNBQWMsQ0FBQztnQkFDcEMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ3pCLENBQUMsQ0FBQyxDQUFDO1NBQ0w7SUFDSCxDQUFDO0NBQ0Y7QUEzR0Qsd0NBMkdDO0FBRUQsU0FBUyw4Q0FBOEMsQ0FBQyxhQUEyQztJQUNqRyxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7UUFDL0IsT0FBTywyQkFBYSxDQUFDLE1BQU0sQ0FBQztLQUM3QjtJQUNELE9BQU8sYUFBYSxLQUFLLDJCQUEyQixDQUFDLE1BQU07UUFDekQsQ0FBQyxDQUFDLDJCQUFhLENBQUMsTUFBTTtRQUN0QixDQUFDLENBQUMsMkJBQWEsQ0FBQyxPQUFPLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbiwgU3RhY2ssIFJlbW92YWxQb2xpY3ksXG4gIEN1c3RvbVJlc291cmNlLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2ttcyBhcyBrbXMsXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3Nfc2VjcmV0c21hbmFnZXIgYXMgc2VjcmV0c01hbmFnZXIsXG4gIGF3c19zc20gYXMgc3NtLFxuICBBcm5Gb3JtYXQsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxQYWlyIH0gZnJvbSAnLi9jcmVkZW50aWFsLXBhaXInO1xuaW1wb3J0IHsgaGFzaEZpbGVPckRpcmVjdG9yeSB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIHtAbGluayBPcGVuUEdQS2V5UGFpclByb3BzLnJlbW92YWxQb2xpY3l9IHByb3BlcnR5LlxuICovXG5leHBvcnQgZW51bSBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kge1xuICAvKipcbiAgICogS2VlcCB0aGUgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gdGhlIHN0YWNrLlxuICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHNldHRpbmcuXG4gICAqL1xuICBSRVRBSU4sXG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gdGhlIHN0YWNrLFxuICAgKiBidXQgbGVhdmUgYSBncmFjZSBwZXJpb2Qgb2YgYSBmZXcgZGF5cyB0aGF0IGFsbG93cyB5b3UgdG8gY2FuY2VsIHRoZSBkZWxldGlvbiBmcm9tIHRoZSBBV1MgQ29uc29sZS5cbiAgICovXG4gIERFU1RST1lfU0FGRUxZLFxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIHNlY3JldCB3aGVuIHRoaXMgcmVzb3VyY2UgaXMgZGVsZXRlZCBmcm9tIHRoZSBzdGFjayBpbW1lZGlhdGVseS5cbiAgICogTm90ZSB0aGF0IGlmIHlvdSBkb24ndCBoYXZlIGEgYmFja3VwIG9mIHRoaXMga2V5IHNvbWV3aGVyZSxcbiAgICogdGhpcyBtZWFucyBpdCB3aWxsIGJlIGdvbmUgZm9yZXZlciFcbiAgICovXG4gIERFU1RST1lfSU1NRURJQVRFTFlcbn1cblxuaW50ZXJmYWNlIE9wZW5QR1BLZXlQYWlyUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpdHkgdG8gcHV0IGludG8gdGhlIGtleVxuICAgKi9cbiAgaWRlbnRpdHk6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgYWRkcmVzcyB0byBhdHRhY2ggdG8gdGhlIGtleVxuICAgKi9cbiAgZW1haWw6IHN0cmluZztcblxuICAvKipcbiAgICogS2V5IHNpemUgaW4gYml0cyAoMTAyNCwgMjA0OCwgNDA5NilcbiAgICovXG4gIGtleVNpemVCaXRzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdQRyBleHBpcnkgc3BlY2lmaWVyXG4gICAqXG4gICAqIEV4YW1wbGU6ICcxeSdcbiAgICovXG4gIGV4cGlyeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHNlY3JldCB0byBjcmVhdGUgaW4gQVdTIFNlY3JldHMgTWFuYWdlclxuICAgKi9cbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgdG8gc3RvcmUgcHVibGljIGtleVxuICAgKi9cbiAgcHViS2V5UGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBLTVMgS2V5IEFSTiB0byB1c2UgdG8gZW5jcnlwdCBTZWNyZXRzIE1hbmFnZXIgU2VjcmV0XG4gICAqL1xuICBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGtleVxuICAgKlxuICAgKiBCdW1wIHRoaXMgbnVtYmVyIHRvIHJlZ2VuZXJhdGUgdGhlIGtleVxuICAgKi9cbiAgdmVyc2lvbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIHRvIGF0dGFjaCB0byB0aGUgQVdTIFNlY3JldHNNYW5hZ2VyIHNlY3JldC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0IGhhcHBlbnMgdG8gdGhlIFNlY3JldHNNYW5hZ2VyIHNlY3JldCB3aGVuIHRoaXMgcmVzb3VyY2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAgICogVGhlIGRlZmF1bHQgaXMgdG8ga2VlcCB0aGUgc2VjcmV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogT3BlblBHUEtleVBhaXJSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgUEdQIGtleSB0aGF0IGlzIHN0b3JlZCBpbiBTZWNyZXRzIE1hbmFnZXIuXG4gKiBUaGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IGlzIGJ5IGRlZmF1bHQgcmV0YWluZWQgd2hlbiB0aGUgcmVzb3VyY2UgaXMgZGVsZXRlZCxcbiAqIHlvdSBjYW4gY2hhbmdlIHRoYXQgd2l0aCB0aGUgYHJlbW92YWxQb2xpY3lgIHByb3BlcnR5LlxuICpcbiAqIFRoZSBzdHJpbmcgaW4gc2VjcmV0cyBtYW5hZ2VyIHdpbGwgYmUgYSBKU09OIHN0cnVjdCBvZlxuICpcbiAqIHsgXCJQcml2YXRlS2V5XCI6IFwiLi4uIEFTQ0lJIHJlcHIgb2Yga2V5Li4uXCIsIFwiUGFzc3BocmFzZVwiOiBcInBhc3NwaHJhc2Ugb2YgdGhlIGtleVwiIH1cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5QR1BLZXlQYWlyIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNyZWRlbnRpYWxQYWlyIHtcbiAgcHVibGljIHJlYWRvbmx5IHByaW5jaXBhbDogc3NtLklTdHJpbmdQYXJhbWV0ZXI7XG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsOiBzZWNyZXRzTWFuYWdlci5JU2VjcmV0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBPcGVuUEdQS2V5UGFpclByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIGNvbnN0IGNvZGVMb2NhdGlvbiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnYmluJywgJ3BncC1zZWNyZXQnKTtcblxuICAgIGNvbnN0IGZuID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnTGFtYmRhJywge1xuICAgICAgdXVpZDogJ2YyNTgwM2QzLTA1NGItNDRmYy05ODVmLTQ4NjBkN2Q2ZWU3NCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlcyBhbiBPcGVuUEdQIEtleSBhbmQgc3RvcmVzIHRoZSBwcml2YXRlIGtleSBpbiBTZWNyZXRzIE1hbmFnZXIgYW5kIHRoZSBwdWJsaWMga2V5IGluIGFuIFNTTSBQYXJhbWV0ZXInLFxuICAgICAgY29kZTogbmV3IGxhbWJkYS5Bc3NldENvZGUoY29kZUxvY2F0aW9uKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgLy8gYWRkIHRoZSBsYXllciB0aGF0IGNvbnRhaW5zIHRoZSBHUEcgYmluYXJ5ICgrIHNoYXJlZCBsaWJyYXJpZXMpXG4gICAgICBsYXllcnM6IFtuZXcgbGFtYmRhLkxheWVyVmVyc2lvbih0aGlzLCAnR3BnTGF5ZXInLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzJywgJ2xheWVycycsICdncGctbGF5ZXIuemlwJykpLFxuICAgICAgfSldLFxuICAgIH0pO1xuXG4gICAgZm4uYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkNyZWF0ZVNlY3JldCcsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZScsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpVcGRhdGVTZWNyZXQnLFxuICAgICAgICAnc2VjcmV0c21hbmFnZXI6RGVsZXRlU2VjcmV0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFtTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnc2VjcmV0c21hbmFnZXInLFxuICAgICAgICByZXNvdXJjZTogJ3NlY3JldCcsXG4gICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7cHJvcHMuc2VjcmV0TmFtZX0tPz8/Pz8/YCxcbiAgICAgIH0pXSxcbiAgICB9KSk7XG5cbiAgICAvLyBUbyBhbGxvdyBlYXN5IG1pZ3JhdGlvbiBmcm9tIHZlcmlzb24gdGhhdCBoYW5kbGVkIHRoZSBTU00gcGFyYW1ldGVyIGluIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBmbi5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzc206RGVsZXRlUGFyYW1ldGVyJ10sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwcm9wcy5lbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgcHJpbmNpcGFsczogW2ZuLnJvbGUhLmdyYW50UHJpbmNpcGFsXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3JldCA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IGZuLmZ1bmN0aW9uQXJuLFxuICAgICAgcGFzY2FsQ2FzZVByb3BlcnRpZXM6IHRydWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJlc291cmNlVmVyc2lvbjogaGFzaEZpbGVPckRpcmVjdG9yeShjb2RlTG9jYXRpb24pLFxuICAgICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICAgIGVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgZXhwaXJ5OiBwcm9wcy5leHBpcnksXG4gICAgICAgIGtleVNpemVCaXRzOiBwcm9wcy5rZXlTaXplQml0cyxcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgICAga2V5QXJuOiBwcm9wcy5lbmNyeXB0aW9uS2V5ICYmIHByb3BzLmVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIGRlbGV0ZUltbWVkaWF0ZWx5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuREVTVFJPWV9JTU1FRElBVEVMWSxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5OiBvcGVuUGdwS2V5UGFpclJlbW92YWxQb2xpY3lUb0NvcmVSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpLFxuICAgIH0pO1xuICAgIHNlY3JldC5ub2RlLmFkZERlcGVuZGVuY3koZm4pO1xuXG4gICAgdGhpcy5jcmVkZW50aWFsID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRBdHRyaWJ1dGVzKHRoaXMsICdDcmVkZW50aWFsJywge1xuICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuZW5jcnlwdGlvbktleSxcbiAgICAgIHNlY3JldENvbXBsZXRlQXJuOiBzZWNyZXQuZ2V0QXR0KCdTZWNyZXRBcm4nKS50b1N0cmluZygpLFxuICAgIH0pO1xuICAgIHRoaXMucHJpbmNpcGFsID0gbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ1ByaW5jaXBhbCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgVGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBPcGVuUEdQIGtleSBpbiAke3RoaXMuY3JlZGVudGlhbC5zZWNyZXRBcm59YCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IHByb3BzLnB1YktleVBhcmFtZXRlck5hbWUsXG4gICAgICBzdHJpbmdWYWx1ZTogc2VjcmV0LmdldEF0dCgnUHVibGljS2V5JykudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklQcmluY2lwYWwpOiB2b2lkIHtcbiAgICAvLyBTZWNyZXQgZ3JhbnQsIGlkZW50aXR5LWJhc2VkIG9ubHlcbiAgICBncmFudGVlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW3RoaXMuY3JlZGVudGlhbC5zZWNyZXRBcm5dLFxuICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpMaXN0U2VjcmV0cycsICdzZWNyZXRzbWFuYWdlcjpEZXNjcmliZVNlY3JldCcsICdzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICAgIH0pKTtcblxuICAgIC8vIEtleSBncmFudFxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWwuZW5jcnlwdGlvbktleSkge1xuICAgICAgZ3JhbnRlZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogW3RoaXMuY3JlZGVudGlhbC5lbmNyeXB0aW9uS2V5LmtleUFybl0sXG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5jcmVkZW50aWFsLmVuY3J5cHRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIHByaW5jaXBhbHM6IFtncmFudGVlLmdyYW50UHJpbmNpcGFsXSxcbiAgICAgICAgYWN0aW9uczogWydrbXM6RGVjcnlwdCddLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBvcGVuUGdwS2V5UGFpclJlbW92YWxQb2xpY3lUb0NvcmVSZW1vdmFsUG9saWN5KHJlbW92YWxQb2xpY3k/OiBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kpOiBSZW1vdmFsUG9saWN5IHtcbiAgaWYgKHJlbW92YWxQb2xpY3kgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBSZW1vdmFsUG9saWN5LlJFVEFJTjtcbiAgfVxuICByZXR1cm4gcmVtb3ZhbFBvbGljeSA9PT0gT3BlblBHUEtleVBhaXJSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgID8gUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICA6IFJlbW92YWxQb2xpY3kuREVTVFJPWTtcbn1cbiJdfQ==
|
package/lib/open-pgp-key-pair.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
// tslint:disable-next-line: max-line-length
|
|
2
1
|
import * as path from 'path';
|
|
3
2
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Duration, Stack, RemovalPolicy,
|
|
4
|
+
CustomResource,
|
|
6
5
|
aws_iam as iam,
|
|
7
6
|
aws_kms as kms,
|
|
8
7
|
aws_lambda as lambda,
|
|
9
8
|
aws_secretsmanager as secretsManager,
|
|
10
9
|
aws_ssm as ssm,
|
|
11
|
-
|
|
10
|
+
ArnFormat,
|
|
11
|
+
} from 'aws-cdk-lib';
|
|
12
|
+
import { Construct } from 'constructs';
|
|
12
13
|
import { ICredentialPair } from './credential-pair';
|
|
13
14
|
import { hashFileOrDirectory } from './util';
|
|
14
15
|
|
|
@@ -136,7 +137,7 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
|
|
|
136
137
|
resources: [Stack.of(this).formatArn({
|
|
137
138
|
service: 'secretsmanager',
|
|
138
139
|
resource: 'secret',
|
|
139
|
-
|
|
140
|
+
arnFormat: ArnFormat.COLON_RESOURCE_NAME,
|
|
140
141
|
resourceName: `${props.secretName}-??????`,
|
|
141
142
|
})],
|
|
142
143
|
}));
|
|
@@ -160,8 +161,9 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
|
|
|
160
161
|
}));
|
|
161
162
|
}
|
|
162
163
|
|
|
163
|
-
const secret = new
|
|
164
|
-
|
|
164
|
+
const secret = new CustomResource(this, 'Resource', {
|
|
165
|
+
serviceToken: fn.functionArn,
|
|
166
|
+
pascalCaseProperties: true,
|
|
165
167
|
properties: {
|
|
166
168
|
resourceVersion: hashFileOrDirectory(codeLocation),
|
|
167
169
|
identity: props.identity,
|
|
@@ -180,7 +182,7 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
|
|
|
180
182
|
|
|
181
183
|
this.credential = secretsManager.Secret.fromSecretAttributes(this, 'Credential', {
|
|
182
184
|
encryptionKey: props.encryptionKey,
|
|
183
|
-
|
|
185
|
+
secretCompleteArn: secret.getAtt('SecretArn').toString(),
|
|
184
186
|
});
|
|
185
187
|
this.principal = new ssm.StringParameter(this, 'Principal', {
|
|
186
188
|
description: `The public part of the OpenPGP key in ${this.credential.secretArn}`,
|
|
@@ -191,14 +193,14 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
|
|
|
191
193
|
|
|
192
194
|
public grantRead(grantee: iam.IPrincipal): void {
|
|
193
195
|
// Secret grant, identity-based only
|
|
194
|
-
grantee.
|
|
196
|
+
grantee.addToPrincipalPolicy(new iam.PolicyStatement({
|
|
195
197
|
resources: [this.credential.secretArn],
|
|
196
198
|
actions: ['secretsmanager:ListSecrets', 'secretsmanager:DescribeSecret', 'secretsmanager:GetSecretValue'],
|
|
197
199
|
}));
|
|
198
200
|
|
|
199
201
|
// Key grant
|
|
200
202
|
if (this.credential.encryptionKey) {
|
|
201
|
-
grantee.
|
|
203
|
+
grantee.addToPrincipalPolicy(new iam.PolicyStatement({
|
|
202
204
|
resources: [this.credential.encryptionKey.keyArn],
|
|
203
205
|
actions: ['kms:Decrypt'],
|
|
204
206
|
}));
|