aws-delivlib 13.6.2 → 13.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/cdk.out/{asset.98dba9b3d79739d40a37e0621754556a791eef3b1c96e913c6e8d5df3a379bd4 → asset.0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40}/index.js +30 -30
  2. package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +119 -0
  3. package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/index.d.ts +1 -0
  4. package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/index.js +81 -0
  5. package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_cloud-formation.js +0 -0
  6. package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_exec.js +0 -0
  7. package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_lambda.js +0 -0
  8. package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/_rmrf.js +0 -0
  9. package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/certificate-signing-request.js +18 -3
  10. package/cdk.out/{asset.70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99 → asset.9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9}/index.js +18 -3
  11. package/cdk.out/delivlib-test.assets.json +22 -8
  12. package/cdk.out/delivlib-test.template.json +237 -4
  13. package/cdk.out/manifest.json +129 -16
  14. package/cdk.out/tree.json +228 -2
  15. package/lib/code-signing/certificate-signing-request.d.ts +4 -1
  16. package/lib/code-signing/certificate-signing-request.js +11 -1
  17. package/lib/code-signing/certificate-signing-request.ts +17 -1
  18. package/lib/custom-resource-handlers/bin/certificate-signing-request/certificate-signing-request.js +18 -3
  19. package/lib/custom-resource-handlers/bin/certificate-signing-request/index.js +18 -3
  20. package/lib/custom-resource-handlers/src/certificate-signing-request.js +18 -3
  21. package/lib/custom-resource-handlers/src/certificate-signing-request.ts +19 -2
  22. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  23. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  24. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  25. package/lib/package-integrity/handler/validate.bundle.js +11 -11
  26. package/lib/pipeline.d.ts +1 -0
  27. package/lib/pipeline.js +7 -1
  28. package/lib/pipeline.ts +7 -0
  29. package/package.json +5 -4
package/cdk.out/tree.json CHANGED
@@ -9259,7 +9259,7 @@
9259
9259
  "aws:cdk:cloudformation:props": {
9260
9260
  "code": {
9261
9261
  "s3Bucket": "cdk-hnb659fds-assets-712950704752-us-east-1",
9262
- "s3Key": "98dba9b3d79739d40a37e0621754556a791eef3b1c96e913c6e8d5df3a379bd4.zip"
9262
+ "s3Key": "0ff875115bf3a3ba9f32946b1f2b9b153553ecba0e511c42ac11bef064968c40.zip"
9263
9263
  },
9264
9264
  "role": {
9265
9265
  "Fn::GetAtt": [
@@ -9642,6 +9642,165 @@
9642
9642
  "version": "1.146.0"
9643
9643
  }
9644
9644
  },
9645
+ "Bucket": {
9646
+ "id": "Bucket",
9647
+ "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Bucket",
9648
+ "children": {
9649
+ "Resource": {
9650
+ "id": "Resource",
9651
+ "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Bucket/Resource",
9652
+ "attributes": {
9653
+ "aws:cdk:cloudformation:type": "AWS::S3::Bucket",
9654
+ "aws:cdk:cloudformation:props": {
9655
+ "bucketEncryption": {
9656
+ "serverSideEncryptionConfiguration": [
9657
+ {
9658
+ "serverSideEncryptionByDefault": {
9659
+ "sseAlgorithm": "AES256"
9660
+ }
9661
+ }
9662
+ ]
9663
+ },
9664
+ "tags": [
9665
+ {
9666
+ "key": "aws-cdk:auto-delete-objects",
9667
+ "value": "true"
9668
+ }
9669
+ ]
9670
+ }
9671
+ },
9672
+ "constructInfo": {
9673
+ "fqn": "monocdk.aws_s3.CfnBucket",
9674
+ "version": "1.146.0"
9675
+ }
9676
+ },
9677
+ "Policy": {
9678
+ "id": "Policy",
9679
+ "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Bucket/Policy",
9680
+ "children": {
9681
+ "Resource": {
9682
+ "id": "Resource",
9683
+ "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Bucket/Policy/Resource",
9684
+ "attributes": {
9685
+ "aws:cdk:cloudformation:type": "AWS::S3::BucketPolicy",
9686
+ "aws:cdk:cloudformation:props": {
9687
+ "bucket": {
9688
+ "Ref": "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261"
9689
+ },
9690
+ "policyDocument": {
9691
+ "Statement": [
9692
+ {
9693
+ "Action": "s3:*",
9694
+ "Condition": {
9695
+ "Bool": {
9696
+ "aws:SecureTransport": "false"
9697
+ }
9698
+ },
9699
+ "Effect": "Deny",
9700
+ "Principal": {
9701
+ "AWS": "*"
9702
+ },
9703
+ "Resource": [
9704
+ {
9705
+ "Fn::GetAtt": [
9706
+ "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261",
9707
+ "Arn"
9708
+ ]
9709
+ },
9710
+ {
9711
+ "Fn::Join": [
9712
+ "",
9713
+ [
9714
+ {
9715
+ "Fn::GetAtt": [
9716
+ "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261",
9717
+ "Arn"
9718
+ ]
9719
+ },
9720
+ "/*"
9721
+ ]
9722
+ ]
9723
+ }
9724
+ ]
9725
+ },
9726
+ {
9727
+ "Action": [
9728
+ "s3:GetBucket*",
9729
+ "s3:List*",
9730
+ "s3:DeleteObject*"
9731
+ ],
9732
+ "Effect": "Allow",
9733
+ "Principal": {
9734
+ "AWS": {
9735
+ "Fn::GetAtt": [
9736
+ "CustomS3AutoDeleteObjectsCustomResourceProviderRole3B1BD092",
9737
+ "Arn"
9738
+ ]
9739
+ }
9740
+ },
9741
+ "Resource": [
9742
+ {
9743
+ "Fn::GetAtt": [
9744
+ "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261",
9745
+ "Arn"
9746
+ ]
9747
+ },
9748
+ {
9749
+ "Fn::Join": [
9750
+ "",
9751
+ [
9752
+ {
9753
+ "Fn::GetAtt": [
9754
+ "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261",
9755
+ "Arn"
9756
+ ]
9757
+ },
9758
+ "/*"
9759
+ ]
9760
+ ]
9761
+ }
9762
+ ]
9763
+ }
9764
+ ],
9765
+ "Version": "2012-10-17"
9766
+ }
9767
+ }
9768
+ },
9769
+ "constructInfo": {
9770
+ "fqn": "monocdk.aws_s3.CfnBucketPolicy",
9771
+ "version": "1.146.0"
9772
+ }
9773
+ }
9774
+ },
9775
+ "constructInfo": {
9776
+ "fqn": "monocdk.aws_s3.BucketPolicy",
9777
+ "version": "1.146.0"
9778
+ }
9779
+ },
9780
+ "AutoDeleteObjectsCustomResource": {
9781
+ "id": "AutoDeleteObjectsCustomResource",
9782
+ "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Bucket/AutoDeleteObjectsCustomResource",
9783
+ "children": {
9784
+ "Default": {
9785
+ "id": "Default",
9786
+ "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Bucket/AutoDeleteObjectsCustomResource/Default",
9787
+ "constructInfo": {
9788
+ "fqn": "monocdk.CfnResource",
9789
+ "version": "1.146.0"
9790
+ }
9791
+ }
9792
+ },
9793
+ "constructInfo": {
9794
+ "fqn": "monocdk.CustomResource",
9795
+ "version": "1.146.0"
9796
+ }
9797
+ }
9798
+ },
9799
+ "constructInfo": {
9800
+ "fqn": "monocdk.aws_s3.Bucket",
9801
+ "version": "1.146.0"
9802
+ }
9803
+ },
9645
9804
  "Resource": {
9646
9805
  "id": "Resource",
9647
9806
  "path": "delivlib-test/X509CodeSigningKey/RSAPrivateKey/CertificateSigningRequest/Resource",
@@ -9970,6 +10129,39 @@
9970
10129
  "aws:cdk:cloudformation:props": {
9971
10130
  "policyDocument": {
9972
10131
  "Statement": [
10132
+ {
10133
+ "Action": [
10134
+ "s3:GetObject*",
10135
+ "s3:GetBucket*",
10136
+ "s3:List*",
10137
+ "s3:DeleteObject*",
10138
+ "s3:PutObject*",
10139
+ "s3:Abort*"
10140
+ ],
10141
+ "Effect": "Allow",
10142
+ "Resource": [
10143
+ {
10144
+ "Fn::GetAtt": [
10145
+ "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261",
10146
+ "Arn"
10147
+ ]
10148
+ },
10149
+ {
10150
+ "Fn::Join": [
10151
+ "",
10152
+ [
10153
+ {
10154
+ "Fn::GetAtt": [
10155
+ "X509CodeSigningKeyRSAPrivateKeyCertificateSigningRequestBucketD81FB261",
10156
+ "Arn"
10157
+ ]
10158
+ },
10159
+ "/*"
10160
+ ]
10161
+ ]
10162
+ }
10163
+ ]
10164
+ },
9973
10165
  {
9974
10166
  "Action": "secretsmanager:GetSecretValue",
9975
10167
  "Effect": "Allow",
@@ -10042,7 +10234,7 @@
10042
10234
  "aws:cdk:cloudformation:props": {
10043
10235
  "code": {
10044
10236
  "s3Bucket": "cdk-hnb659fds-assets-712950704752-us-east-1",
10045
- "s3Key": "70d613312145b8280d33a47035cc5be2a9bd0e5069705e39f83b14cd1f720e99.zip"
10237
+ "s3Key": "9012a4bd6eb36f7ec4fec65ce817435d9b8dda297c62e87163a773c7d25c60a9.zip"
10046
10238
  },
10047
10239
  "role": {
10048
10240
  "Fn::GetAtt": [
@@ -10072,6 +10264,40 @@
10072
10264
  "version": "1.146.0"
10073
10265
  }
10074
10266
  },
10267
+ "Custom::S3AutoDeleteObjectsCustomResourceProvider": {
10268
+ "id": "Custom::S3AutoDeleteObjectsCustomResourceProvider",
10269
+ "path": "delivlib-test/Custom::S3AutoDeleteObjectsCustomResourceProvider",
10270
+ "children": {
10271
+ "Staging": {
10272
+ "id": "Staging",
10273
+ "path": "delivlib-test/Custom::S3AutoDeleteObjectsCustomResourceProvider/Staging",
10274
+ "constructInfo": {
10275
+ "fqn": "monocdk.AssetStaging",
10276
+ "version": "1.146.0"
10277
+ }
10278
+ },
10279
+ "Role": {
10280
+ "id": "Role",
10281
+ "path": "delivlib-test/Custom::S3AutoDeleteObjectsCustomResourceProvider/Role",
10282
+ "constructInfo": {
10283
+ "fqn": "monocdk.CfnResource",
10284
+ "version": "1.146.0"
10285
+ }
10286
+ },
10287
+ "Handler": {
10288
+ "id": "Handler",
10289
+ "path": "delivlib-test/Custom::S3AutoDeleteObjectsCustomResourceProvider/Handler",
10290
+ "constructInfo": {
10291
+ "fqn": "monocdk.CfnResource",
10292
+ "version": "1.146.0"
10293
+ }
10294
+ }
10295
+ },
10296
+ "constructInfo": {
10297
+ "fqn": "monocdk.CustomResourceProvider",
10298
+ "version": "1.146.0"
10299
+ }
10300
+ },
10075
10301
  "CodeSign-CMK": {
10076
10302
  "id": "CodeSign-CMK",
10077
10303
  "path": "delivlib-test/CodeSign-CMK",
@@ -32,9 +32,12 @@ export interface CertificateSigningRequestProps {
32
32
  */
33
33
  export declare class CertificateSigningRequest extends Construct {
34
34
  /**
35
- * The PEM-encoded CSR document.
35
+ * The S3 URL to the CSR document.
36
36
  */
37
37
  readonly pemRequest: string;
38
+ /**
39
+ * The S3 URL to a self-signed certificate that corresponds with this CSR.
40
+ */
38
41
  readonly selfSignedPemCertificate: string;
39
42
  constructor(parent: Construct, id: string, props: CertificateSigningRequestProps);
40
43
  }
@@ -48,6 +48,14 @@ class CertificateSigningRequest extends monocdk_1.Construct {
48
48
  code: monocdk_1.aws_lambda.Code.fromAsset(path.join(__dirname, '..', 'custom-resource-handlers', 'layers', 'openssl-cli-layer.zip')),
49
49
  })],
50
50
  });
51
+ const outputBucket = new monocdk_1.aws_s3.Bucket(this, 'Bucket', {
52
+ // CSRs can be easily re-created if lost or corrupt, so we can let those get to a black hole, no worries.
53
+ autoDeleteObjects: true,
54
+ removalPolicy: monocdk_1.RemovalPolicy.DESTROY,
55
+ encryption: monocdk_1.aws_s3.BucketEncryption.S3_MANAGED,
56
+ enforceSSL: true,
57
+ });
58
+ outputBucket.grantReadWrite(customResource);
51
59
  const csr = new monocdk_1.aws_cloudformation.CustomResource(this, 'Resource', {
52
60
  provider: monocdk_1.aws_cloudformation.CustomResourceProvider.lambda(customResource),
53
61
  resourceType: 'Custom::CertificateSigningRequest',
@@ -66,6 +74,8 @@ class CertificateSigningRequest extends monocdk_1.Construct {
66
74
  // Key Usage
67
75
  extendedKeyUsage: props.extendedKeyUsage || '',
68
76
  keyUsage: props.keyUsage,
77
+ // Ouput location
78
+ outputBucket: outputBucket.bucketName,
69
79
  },
70
80
  });
71
81
  if (customResource.role) {
@@ -78,4 +88,4 @@ class CertificateSigningRequest extends monocdk_1.Construct {
78
88
  }
79
89
  }
80
90
  exports.CertificateSigningRequest = CertificateSigningRequest;
81
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IscUNBSWlCO0FBQ2pCLGtDQUE4QztBQTJCOUM7Ozs7Ozs7R0FPRztBQUNILE1BQWEseUJBQTBCLFNBQVEsbUJBQVM7SUFRdEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM5RSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUNySCxNQUFNLGNBQWMsR0FBRyxJQUFJLG9CQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNFLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsYUFBYSxFQUFFLFdBQVc7WUFDMUIsV0FBVyxFQUFFLHdFQUF3RTtZQUNyRixPQUFPLEVBQUUsb0JBQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsSUFBSSxvQkFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDeEMsT0FBTyxFQUFFLGtCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM5QixxREFBcUQ7WUFDckQsTUFBTSxFQUFFLENBQUMsSUFBSSxvQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7b0JBQ3hELElBQUksRUFBRSxvQkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO2lCQUN2SCxDQUFDLENBQUM7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLEdBQUcsR0FBRyxJQUFJLDRCQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDbkQsUUFBUSxFQUFFLDRCQUFHLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQztZQUMzRCxZQUFZLEVBQUUsbUNBQW1DO1lBQ2pELFVBQVUsRUFBRTtnQkFDVixlQUFlLEVBQUUsSUFBQSwwQkFBbUIsRUFBQyxZQUFZLENBQUM7Z0JBQ2xELGNBQWM7Z0JBQ2Qsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxTQUFTO2dCQUM5QyxxQkFBcUI7Z0JBQ3JCLFlBQVksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVU7Z0JBQ2pDLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU87Z0JBQzNCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsZUFBZTtnQkFDM0MsVUFBVSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUTtnQkFDN0Isa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0I7Z0JBQzdDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsc0JBQXNCO2dCQUN6RCxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxZQUFZO2dCQUNyQyxZQUFZO2dCQUNaLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO2dCQUM5QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7YUFDekI7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUU7WUFDdkIsMkRBQTJEO1lBQzNELEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxLQUFLLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUMzRDtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMvQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pGLENBQUM7Q0FDRjtBQXZERCw4REF1REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0LCBEdXJhdGlvbixcbiAgYXdzX2Nsb3VkZm9ybWF0aW9uIGFzIGNmbixcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgaGFzaEZpbGVPckRpcmVjdG9yeSB9IGZyb20gJy4uL3V0aWwnO1xuaW1wb3J0IHsgUnNhUHJpdmF0ZUtleVNlY3JldCB9IGZyb20gJy4vcHJpdmF0ZS1rZXknO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBSU0EgUHJpdmF0ZSBLZXkgdG8gdXNlIGZvciB0aGlzIENTUi5cbiAgICovXG4gIHByaXZhdGVLZXk6IFJzYVByaXZhdGVLZXlTZWNyZXQ7XG4gIC8qKlxuICAgKiBUaGUgRGlzdGluZ3Vpc2hlZCBOYW1lIGZvciB0aGlzIENTUi5cbiAgICovXG4gIGRuOiBEaXN0aW5ndWlzaGVkTmFtZTtcbiAgLyoqXG4gICAqIFRoZSBrZXkgdXNhZ2UgcmVxdWVzdHMgZm9yIHRoaXMgQ1NSLlxuICAgKlxuICAgKiBAZXhhbXBsZSBjcml0aWNhbCxkaWdpdGFsU2lnbmF0dXJlXG4gICAqL1xuICBrZXlVc2FnZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGV4dGVuZGVkIGtleSB1c2FnZSByZXF1ZXN0cyBmb3IgdGhpcyBDU1IuXG4gICAqXG4gICAqIEBleGFtcGxlIGNyaXRpY2FsLGNvZGVTaWduaW5nXG4gICAqL1xuICBleHRlbmRlZEtleVVzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBDZXJ0aWZpY2F0ZSBTaWduaW5nIFJlcXVlc3QgKENTUiksIHdoaWNoIHdpbGwgYWxsb3cgYSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgdG8gcHJvdmlkZSBhIHNpZ25lZCBjZXJ0aWZpY2F0ZVxuICogdGhhdCB1c2VzIHRoZSBzcGVjaWZpZWQgUlNBIFByaXZhdGUgS2V5LiBBIENTUiBkb2N1bWVudCBjYW4gdXN1YWxseSBiZSBzaGFyZWQgcHVibGljbHksIGhvd2V2ZXIgaXQgbXVzdCBiZSBub3RlZCB0aGF0XG4gKiB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgaW4gdGhlIGBgZG5gYCBmaWVsZHMsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwdWJsaWMga2V5IGFuZCB0aGUgaW50ZW5kZWQgbGV5IHVzYWdlIHdpbGwgYmVcbiAqIHJlYWRhYmxlIGJ5IGFueW9uZSB3aG8gY2FuIGFjY2VzcyB0aGUgQ1NSLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9tYW5tYXN0ZXIvbWFuMS9yZXEuaHRtbFxuICovXG5leHBvcnQgY2xhc3MgQ2VydGlmaWNhdGVTaWduaW5nUmVxdWVzdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgUEVNLWVuY29kZWQgQ1NSIGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlbVJlcXVlc3Q6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZlNpZ25lZFBlbUNlcnRpZmljYXRlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDZXJ0aWZpY2F0ZVNpZ25pbmdSZXF1ZXN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGNvZGVMb2NhdGlvbiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnYmluJywgJ2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdCcpO1xuICAgIGNvbnN0IGN1c3RvbVJlc291cmNlID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnUmVzb3VyY2VIYW5kbGVyJywge1xuICAgICAgdXVpZDogJzU0MUY2NzgyLTZEQ0YtNDlBNy04QzVBLTY3NzE1QUREOUU0QycsXG4gICAgICBsYW1iZGFQdXJwb3NlOiAnQ3JlYXRlQ1NSJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ3JlYXRlcyBhIENlcnRpZmljYXRlIFNpZ25pbmcgUmVxdWVzdCBkb2N1bWVudCBmb3IgYW4geDUwOSBjZXJ0aWZpY2F0ZScsXG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMTJfWCxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IG5ldyBsYW1iZGEuQXNzZXRDb2RlKGNvZGVMb2NhdGlvbiksXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwMCksXG4gICAgICAvLyBhZGQgdGhlIGxheWVyIHRoYXQgY29udGFpbnMgdGhlIE9wZW5TU0wgQ0xJIGJpbmFyeVxuICAgICAgbGF5ZXJzOiBbbmV3IGxhbWJkYS5MYXllclZlcnNpb24odGhpcywgJ09wZW5Tc2xDbGlMYXllcicsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnbGF5ZXJzJywgJ29wZW5zc2wtY2xpLWxheWVyLnppcCcpKSxcbiAgICAgIH0pXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGNzciA9IG5ldyBjZm4uQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvdmlkZXI6IGNmbi5DdXN0b21SZXNvdXJjZVByb3ZpZGVyLmxhbWJkYShjdXN0b21SZXNvdXJjZSksXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OkNlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3QnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICByZXNvdXJjZVZlcnNpb246IGhhc2hGaWxlT3JEaXJlY3RvcnkoY29kZUxvY2F0aW9uKSxcbiAgICAgICAgLy8gUHJpdmF0ZSBrZXlcbiAgICAgICAgcHJpdmF0ZUtleVNlY3JldElkOiBwcm9wcy5wcml2YXRlS2V5LnNlY3JldEFybixcbiAgICAgICAgLy8gRGlzdGluZ3Vpc2hlZCBuYW1lXG4gICAgICAgIGRuQ29tbW9uTmFtZTogcHJvcHMuZG4uY29tbW9uTmFtZSxcbiAgICAgICAgZG5Db3VudHJ5OiBwcm9wcy5kbi5jb3VudHJ5LFxuICAgICAgICBkblN0YXRlT3JQcm92aW5jZTogcHJvcHMuZG4uc3RhdGVPclByb3ZpbmNlLFxuICAgICAgICBkbkxvY2FsaXR5OiBwcm9wcy5kbi5sb2NhbGl0eSxcbiAgICAgICAgZG5Pcmdhbml6YXRpb25OYW1lOiBwcm9wcy5kbi5vcmdhbml6YXRpb25OYW1lLFxuICAgICAgICBkbk9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IHByb3BzLmRuLm9yZ2FuaXphdGlvbmFsVW5pdE5hbWUsXG4gICAgICAgIGRuRW1haWxBZGRyZXNzOiBwcm9wcy5kbi5lbWFpbEFkZHJlc3MsXG4gICAgICAgIC8vIEtleSBVc2FnZVxuICAgICAgICBleHRlbmRlZEtleVVzYWdlOiBwcm9wcy5leHRlbmRlZEtleVVzYWdlIHx8ICcnLFxuICAgICAgICBrZXlVc2FnZTogcHJvcHMua2V5VXNhZ2UsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjdXN0b21SZXNvdXJjZS5yb2xlKSB7XG4gICAgICAvLyBNYWtlIHN1cmUgdGhlIHBlcm1pc3Npb25zIGFyZSBhbGwgZ29vZCBiZWZvcmUgcHJvY2VlZGluZ1xuICAgICAgY3NyLm5vZGUuYWRkRGVwZW5kZW5jeShjdXN0b21SZXNvdXJjZS5yb2xlKTtcbiAgICAgIHByb3BzLnByaXZhdGVLZXkuZ3JhbnRHZXRTZWNyZXRWYWx1ZShjdXN0b21SZXNvdXJjZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlbVJlcXVlc3QgPSBjc3IuZ2V0QXR0KCdDU1InKS50b1N0cmluZygpO1xuICAgIHRoaXMuc2VsZlNpZ25lZFBlbUNlcnRpZmljYXRlID0gY3NyLmdldEF0dCgnU2VsZlNpZ25lZENlcnRpZmljYXRlJykudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4vKipcbiAqIEZpZWxkcyB0aGF0IGNvbXBvc2UgdGhlIGRpc3Rpbmd1aXNoZWQgbmFtZSBvZiBhIGNlcnRpZmljYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdGluZ3Vpc2hlZE5hbWUge1xuICAvKiogVGhlIENvbW1vbiBOYW1lIChDTikgKi9cbiAgY29tbW9uTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGVtYWlsIGFkZHJlc3MgKGVtYWlsQWRkcmVzcykgKi9cbiAgZW1haWxBZGRyZXNzOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBDb3VudHJ5IChDKSAqL1xuICBjb3VudHJ5OiBzdHJpbmc7XG4gIC8qKiBUaGUgU3RhdGUgb3IgUHJvdmluY2UgKFNUKSAqL1xuICBzdGF0ZU9yUHJvdmluY2U6IHN0cmluZztcbiAgLyoqIFRoZSBsb2NhbGl0eSAoTCkgKi9cbiAgbG9jYWxpdHk6IHN0cmluZztcblxuICAvKiogVGhlIG9yZ2FuaXphdGlvbiBuYW1lIChPKSAqL1xuICBvcmdhbml6YXRpb25OYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgb3JnYW5pemF0aW9uYWwgdW5pdCBuYW1lIChPVSkgKi9cbiAgb3JnYW5pemF0aW9uYWxVbml0TmFtZTogc3RyaW5nO1xufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0IscUNBTWlCO0FBQ2pCLGtDQUE4QztBQTJCOUM7Ozs7Ozs7R0FPRztBQUNILE1BQWEseUJBQTBCLFNBQVEsbUJBQVM7SUFXdEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFxQztRQUM5RSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSwwQkFBMEIsRUFBRSxLQUFLLEVBQUUsNkJBQTZCLENBQUMsQ0FBQztRQUNySCxNQUFNLGNBQWMsR0FBRyxJQUFJLG9CQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQzNFLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsYUFBYSxFQUFFLFdBQVc7WUFDMUIsV0FBVyxFQUFFLHdFQUF3RTtZQUNyRixPQUFPLEVBQUUsb0JBQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztZQUNuQyxPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsSUFBSSxvQkFBTSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUM7WUFDeEMsT0FBTyxFQUFFLGtCQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM5QixxREFBcUQ7WUFDckQsTUFBTSxFQUFFLENBQUMsSUFBSSxvQkFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7b0JBQ3hELElBQUksRUFBRSxvQkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO2lCQUN2SCxDQUFDLENBQUM7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDakQseUdBQXlHO1lBQ3pHLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsYUFBYSxFQUFFLHVCQUFhLENBQUMsT0FBTztZQUNwQyxVQUFVLEVBQUUsZ0JBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVO1lBQzFDLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUMsTUFBTSxHQUFHLEdBQUcsSUFBSSw0QkFBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25ELFFBQVEsRUFBRSw0QkFBRyxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7WUFDM0QsWUFBWSxFQUFFLG1DQUFtQztZQUNqRCxVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLElBQUEsMEJBQW1CLEVBQUMsWUFBWSxDQUFDO2dCQUNsRCxjQUFjO2dCQUNkLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBUztnQkFDOUMscUJBQXFCO2dCQUNyQixZQUFZLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxVQUFVO2dCQUNqQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPO2dCQUMzQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLGVBQWU7Z0JBQzNDLFVBQVUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVE7Z0JBQzdCLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0JBQWdCO2dCQUM3Qyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLHNCQUFzQjtnQkFDekQsY0FBYyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWTtnQkFDckMsWUFBWTtnQkFDWixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCLElBQUksRUFBRTtnQkFDOUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2dCQUN4QixpQkFBaUI7Z0JBQ2pCLFlBQVksRUFBRSxZQUFZLENBQUMsVUFBVTthQUN0QztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksY0FBYyxDQUFDLElBQUksRUFBRTtZQUN2QiwyREFBMkQ7WUFDM0QsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVDLEtBQUssQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNEO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBckVELDhEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLFxuICBhd3NfY2xvdWRmb3JtYXRpb24gYXMgY2ZuLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3MzIGFzIHMzLFxuICBSZW1vdmFsUG9saWN5LFxufSBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IGhhc2hGaWxlT3JEaXJlY3RvcnkgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IFJzYVByaXZhdGVLZXlTZWNyZXQgfSBmcm9tICcuL3ByaXZhdGUta2V5JztcblxuXG5leHBvcnQgaW50ZXJmYWNlIENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgUlNBIFByaXZhdGUgS2V5IHRvIHVzZSBmb3IgdGhpcyBDU1IuXG4gICAqL1xuICBwcml2YXRlS2V5OiBSc2FQcml2YXRlS2V5U2VjcmV0O1xuICAvKipcbiAgICogVGhlIERpc3Rpbmd1aXNoZWQgTmFtZSBmb3IgdGhpcyBDU1IuXG4gICAqL1xuICBkbjogRGlzdGluZ3Vpc2hlZE5hbWU7XG4gIC8qKlxuICAgKiBUaGUga2V5IHVzYWdlIHJlcXVlc3RzIGZvciB0aGlzIENTUi5cbiAgICpcbiAgICogQGV4YW1wbGUgY3JpdGljYWwsZGlnaXRhbFNpZ25hdHVyZVxuICAgKi9cbiAga2V5VXNhZ2U6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBleHRlbmRlZCBrZXkgdXNhZ2UgcmVxdWVzdHMgZm9yIHRoaXMgQ1NSLlxuICAgKlxuICAgKiBAZXhhbXBsZSBjcml0aWNhbCxjb2RlU2lnbmluZ1xuICAgKi9cbiAgZXh0ZW5kZWRLZXlVc2FnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgQ2VydGlmaWNhdGUgU2lnbmluZyBSZXF1ZXN0IChDU1IpLCB3aGljaCB3aWxsIGFsbG93IGEgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IHRvIHByb3ZpZGUgYSBzaWduZWQgY2VydGlmaWNhdGVcbiAqIHRoYXQgdXNlcyB0aGUgc3BlY2lmaWVkIFJTQSBQcml2YXRlIEtleS4gQSBDU1IgZG9jdW1lbnQgY2FuIHVzdWFsbHkgYmUgc2hhcmVkIHB1YmxpY2x5LCBob3dldmVyIGl0IG11c3QgYmUgbm90ZWQgdGhhdFxuICogdGhlIGluZm9ybWF0aW9uIHByb3ZpZGVkIGluIHRoZSBgYGRuYGAgZmllbGRzLCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHVibGljIGtleSBhbmQgdGhlIGludGVuZGVkIGxleSB1c2FnZSB3aWxsIGJlXG4gKiByZWFkYWJsZSBieSBhbnlvbmUgd2hvIGNhbiBhY2Nlc3MgdGhlIENTUi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFubWFzdGVyL21hbjEvcmVxLmh0bWxcbiAqL1xuZXhwb3J0IGNsYXNzIENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIFMzIFVSTCB0byB0aGUgQ1NSIGRvY3VtZW50LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBlbVJlcXVlc3Q6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFMzIFVSTCB0byBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGlzIENTUi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzZWxmU2lnbmVkUGVtQ2VydGlmaWNhdGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgY29kZUxvY2F0aW9uID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJ2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycycsICdiaW4nLCAnY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0Jyk7XG4gICAgY29uc3QgY3VzdG9tUmVzb3VyY2UgPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdSZXNvdXJjZUhhbmRsZXInLCB7XG4gICAgICB1dWlkOiAnNTQxRjY3ODItNkRDRi00OUE3LThDNUEtNjc3MTVBREQ5RTRDJyxcbiAgICAgIGxhbWJkYVB1cnBvc2U6ICdDcmVhdGVDU1InLFxuICAgICAgZGVzY3JpcHRpb246ICdDcmVhdGVzIGEgQ2VydGlmaWNhdGUgU2lnbmluZyBSZXF1ZXN0IGRvY3VtZW50IGZvciBhbiB4NTA5IGNlcnRpZmljYXRlJyxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbmV3IGxhbWJkYS5Bc3NldENvZGUoY29kZUxvY2F0aW9uKSxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIC8vIGFkZCB0aGUgbGF5ZXIgdGhhdCBjb250YWlucyB0aGUgT3BlblNTTCBDTEkgYmluYXJ5XG4gICAgICBsYXllcnM6IFtuZXcgbGFtYmRhLkxheWVyVmVyc2lvbih0aGlzLCAnT3BlblNzbENsaUxheWVyJywge1xuICAgICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJ2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycycsICdsYXllcnMnLCAnb3BlbnNzbC1jbGktbGF5ZXIuemlwJykpLFxuICAgICAgfSldLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgb3V0cHV0QnVja2V0ID0gbmV3IHMzLkJ1Y2tldCh0aGlzLCAnQnVja2V0Jywge1xuICAgICAgLy8gQ1NScyBjYW4gYmUgZWFzaWx5IHJlLWNyZWF0ZWQgaWYgbG9zdCBvciBjb3JydXB0LCBzbyB3ZSBjYW4gbGV0IHRob3NlIGdldCB0byBhIGJsYWNrIGhvbGUsIG5vIHdvcnJpZXMuXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICAgIGVuZm9yY2VTU0w6IHRydWUsXG4gICAgfSk7XG4gICAgb3V0cHV0QnVja2V0LmdyYW50UmVhZFdyaXRlKGN1c3RvbVJlc291cmNlKTtcblxuICAgIGNvbnN0IGNzciA9IG5ldyBjZm4uQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvdmlkZXI6IGNmbi5DdXN0b21SZXNvdXJjZVByb3ZpZGVyLmxhbWJkYShjdXN0b21SZXNvdXJjZSksXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OkNlcnRpZmljYXRlU2lnbmluZ1JlcXVlc3QnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICByZXNvdXJjZVZlcnNpb246IGhhc2hGaWxlT3JEaXJlY3RvcnkoY29kZUxvY2F0aW9uKSxcbiAgICAgICAgLy8gUHJpdmF0ZSBrZXlcbiAgICAgICAgcHJpdmF0ZUtleVNlY3JldElkOiBwcm9wcy5wcml2YXRlS2V5LnNlY3JldEFybixcbiAgICAgICAgLy8gRGlzdGluZ3Vpc2hlZCBuYW1lXG4gICAgICAgIGRuQ29tbW9uTmFtZTogcHJvcHMuZG4uY29tbW9uTmFtZSxcbiAgICAgICAgZG5Db3VudHJ5OiBwcm9wcy5kbi5jb3VudHJ5LFxuICAgICAgICBkblN0YXRlT3JQcm92aW5jZTogcHJvcHMuZG4uc3RhdGVPclByb3ZpbmNlLFxuICAgICAgICBkbkxvY2FsaXR5OiBwcm9wcy5kbi5sb2NhbGl0eSxcbiAgICAgICAgZG5Pcmdhbml6YXRpb25OYW1lOiBwcm9wcy5kbi5vcmdhbml6YXRpb25OYW1lLFxuICAgICAgICBkbk9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IHByb3BzLmRuLm9yZ2FuaXphdGlvbmFsVW5pdE5hbWUsXG4gICAgICAgIGRuRW1haWxBZGRyZXNzOiBwcm9wcy5kbi5lbWFpbEFkZHJlc3MsXG4gICAgICAgIC8vIEtleSBVc2FnZVxuICAgICAgICBleHRlbmRlZEtleVVzYWdlOiBwcm9wcy5leHRlbmRlZEtleVVzYWdlIHx8ICcnLFxuICAgICAgICBrZXlVc2FnZTogcHJvcHMua2V5VXNhZ2UsXG4gICAgICAgIC8vIE91cHV0IGxvY2F0aW9uXG4gICAgICAgIG91dHB1dEJ1Y2tldDogb3V0cHV0QnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGlmIChjdXN0b21SZXNvdXJjZS5yb2xlKSB7XG4gICAgICAvLyBNYWtlIHN1cmUgdGhlIHBlcm1pc3Npb25zIGFyZSBhbGwgZ29vZCBiZWZvcmUgcHJvY2VlZGluZ1xuICAgICAgY3NyLm5vZGUuYWRkRGVwZW5kZW5jeShjdXN0b21SZXNvdXJjZS5yb2xlKTtcbiAgICAgIHByb3BzLnByaXZhdGVLZXkuZ3JhbnRHZXRTZWNyZXRWYWx1ZShjdXN0b21SZXNvdXJjZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnBlbVJlcXVlc3QgPSBjc3IuZ2V0QXR0KCdDU1InKS50b1N0cmluZygpO1xuICAgIHRoaXMuc2VsZlNpZ25lZFBlbUNlcnRpZmljYXRlID0gY3NyLmdldEF0dCgnU2VsZlNpZ25lZENlcnRpZmljYXRlJykudG9TdHJpbmcoKTtcbiAgfVxufVxuXG4vKipcbiAqIEZpZWxkcyB0aGF0IGNvbXBvc2UgdGhlIGRpc3Rpbmd1aXNoZWQgbmFtZSBvZiBhIGNlcnRpZmljYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdGluZ3Vpc2hlZE5hbWUge1xuICAvKiogVGhlIENvbW1vbiBOYW1lIChDTikgKi9cbiAgY29tbW9uTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGVtYWlsIGFkZHJlc3MgKGVtYWlsQWRkcmVzcykgKi9cbiAgZW1haWxBZGRyZXNzOiBzdHJpbmc7XG5cbiAgLyoqIFRoZSBDb3VudHJ5IChDKSAqL1xuICBjb3VudHJ5OiBzdHJpbmc7XG4gIC8qKiBUaGUgU3RhdGUgb3IgUHJvdmluY2UgKFNUKSAqL1xuICBzdGF0ZU9yUHJvdmluY2U6IHN0cmluZztcbiAgLyoqIFRoZSBsb2NhbGl0eSAoTCkgKi9cbiAgbG9jYWxpdHk6IHN0cmluZztcblxuICAvKiogVGhlIG9yZ2FuaXphdGlvbiBuYW1lIChPKSAqL1xuICBvcmdhbml6YXRpb25OYW1lOiBzdHJpbmc7XG4gIC8qKiBUaGUgb3JnYW5pemF0aW9uYWwgdW5pdCBuYW1lIChPVSkgKi9cbiAgb3JnYW5pemF0aW9uYWxVbml0TmFtZTogc3RyaW5nO1xufVxuIl19
@@ -3,6 +3,8 @@ import {
3
3
  Construct, Duration,
4
4
  aws_cloudformation as cfn,
5
5
  aws_lambda as lambda,
6
+ aws_s3 as s3,
7
+ RemovalPolicy,
6
8
  } from 'monocdk';
7
9
  import { hashFileOrDirectory } from '../util';
8
10
  import { RsaPrivateKeySecret } from './private-key';
@@ -41,10 +43,13 @@ export interface CertificateSigningRequestProps {
41
43
  */
42
44
  export class CertificateSigningRequest extends Construct {
43
45
  /**
44
- * The PEM-encoded CSR document.
46
+ * The S3 URL to the CSR document.
45
47
  */
46
48
  public readonly pemRequest: string;
47
49
 
50
+ /**
51
+ * The S3 URL to a self-signed certificate that corresponds with this CSR.
52
+ */
48
53
  public readonly selfSignedPemCertificate: string;
49
54
 
50
55
  constructor(parent: Construct, id: string, props: CertificateSigningRequestProps) {
@@ -65,6 +70,15 @@ export class CertificateSigningRequest extends Construct {
65
70
  })],
66
71
  });
67
72
 
73
+ const outputBucket = new s3.Bucket(this, 'Bucket', {
74
+ // CSRs can be easily re-created if lost or corrupt, so we can let those get to a black hole, no worries.
75
+ autoDeleteObjects: true,
76
+ removalPolicy: RemovalPolicy.DESTROY,
77
+ encryption: s3.BucketEncryption.S3_MANAGED,
78
+ enforceSSL: true,
79
+ });
80
+ outputBucket.grantReadWrite(customResource);
81
+
68
82
  const csr = new cfn.CustomResource(this, 'Resource', {
69
83
  provider: cfn.CustomResourceProvider.lambda(customResource),
70
84
  resourceType: 'Custom::CertificateSigningRequest',
@@ -83,6 +97,8 @@ export class CertificateSigningRequest extends Construct {
83
97
  // Key Usage
84
98
  extendedKeyUsage: props.extendedKeyUsage || '',
85
99
  keyUsage: props.keyUsage,
100
+ // Ouput location
101
+ outputBucket: outputBucket.bucketName,
86
102
  },
87
103
  });
88
104
  if (customResource.role) {
@@ -26,6 +26,7 @@ async function handleEvent(event, _context) {
26
26
  ExtendedKeyUsage: false,
27
27
  KeyUsage: true,
28
28
  PrivateKeySecretId: true,
29
+ OutputBucket: true,
29
30
  });
30
31
  }
31
32
  switch (event.RequestType) {
@@ -45,10 +46,24 @@ async function _createSelfSignedCertificate(event) {
45
46
  await _exec('/opt/openssl', 'req', '-config', configFile, '-key', pkeyFile, '-out', csrFile, '-new');
46
47
  const certFile = path.join(tempDir, 'cert.pem');
47
48
  await _exec('/opt/openssl', 'x509', '-in', csrFile, '-out', certFile, '-req', '-signkey', pkeyFile, '-days', '365');
49
+ const s3 = new aws.S3();
50
+ const bucketName = event.ResourceProperties.OutputBucket;
51
+ await s3.putObject({
52
+ Bucket: bucketName,
53
+ Key: 'certificate-signing-request.pem',
54
+ Body: await readFile(csrFile, { encoding: 'utf8' }),
55
+ ContentType: 'application/x-pem-file',
56
+ }).promise();
57
+ await s3.putObject({
58
+ Bucket: bucketName,
59
+ Key: 'self-signed-certificate.pem',
60
+ Body: await readFile(certFile, { encoding: 'utf8' }),
61
+ ContentType: 'application/x-pem-file',
62
+ }).promise();
48
63
  return {
49
64
  Ref: event.LogicalResourceId,
50
- CSR: await readFile(csrFile, { encoding: 'utf8' }),
51
- SelfSignedCertificate: await readFile(certFile, { encoding: 'utf8' }),
65
+ CSR: `s3://${bucketName}/certificate-signing-request.pem`,
66
+ SelfSignedCertificate: `s3://${bucketName}/self-signed-certificate.pem`,
52
67
  };
53
68
  }
54
69
  finally {
@@ -91,4 +106,4 @@ async function _retrievePrivateKey(event, dir) {
91
106
  await writeFile(file, secret.SecretString, { encoding: 'utf8' });
92
107
  return file;
93
108
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFFL0IsMENBQTBDO0FBRTFDLGlDQUFrQztBQUdsQyxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixR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
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFFL0IsMENBQTBDO0FBRTFDLGlDQUFrQztBQUdsQyxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixR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
@@ -26,6 +26,7 @@ async function handleEvent(event, _context) {
26
26
  ExtendedKeyUsage: false,
27
27
  KeyUsage: true,
28
28
  PrivateKeySecretId: true,
29
+ OutputBucket: true,
29
30
  });
30
31
  }
31
32
  switch (event.RequestType) {
@@ -45,10 +46,24 @@ async function _createSelfSignedCertificate(event) {
45
46
  await _exec('/opt/openssl', 'req', '-config', configFile, '-key', pkeyFile, '-out', csrFile, '-new');
46
47
  const certFile = path.join(tempDir, 'cert.pem');
47
48
  await _exec('/opt/openssl', 'x509', '-in', csrFile, '-out', certFile, '-req', '-signkey', pkeyFile, '-days', '365');
49
+ const s3 = new aws.S3();
50
+ const bucketName = event.ResourceProperties.OutputBucket;
51
+ await s3.putObject({
52
+ Bucket: bucketName,
53
+ Key: 'certificate-signing-request.pem',
54
+ Body: await readFile(csrFile, { encoding: 'utf8' }),
55
+ ContentType: 'application/x-pem-file',
56
+ }).promise();
57
+ await s3.putObject({
58
+ Bucket: bucketName,
59
+ Key: 'self-signed-certificate.pem',
60
+ Body: await readFile(certFile, { encoding: 'utf8' }),
61
+ ContentType: 'application/x-pem-file',
62
+ }).promise();
48
63
  return {
49
64
  Ref: event.LogicalResourceId,
50
- CSR: await readFile(csrFile, { encoding: 'utf8' }),
51
- SelfSignedCertificate: await readFile(certFile, { encoding: 'utf8' }),
65
+ CSR: `s3://${bucketName}/certificate-signing-request.pem`,
66
+ SelfSignedCertificate: `s3://${bucketName}/self-signed-certificate.pem`,
52
67
  };
53
68
  }
54
69
  finally {
@@ -91,4 +106,4 @@ async function _retrievePrivateKey(event, dir) {
91
106
  await writeFile(file, secret.SecretString, { encoding: 'utf8' });
92
107
  return file;
93
108
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFFL0IsMENBQTBDO0FBRTFDLGlDQUFrQztBQUdsQyxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixR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
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUF5QjtBQUN6Qix5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLDZCQUE2QjtBQUU3QiwrQkFBK0I7QUFFL0IsMENBQTBDO0FBRTFDLGlDQUFrQztBQUdsQyxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixR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
@@ -48,6 +48,7 @@ async function handleEvent(event, _context) {
48
48
  ExtendedKeyUsage: false,
49
49
  KeyUsage: true,
50
50
  PrivateKeySecretId: true,
51
+ OutputBucket: true,
51
52
  });
52
53
  }
53
54
  switch (event.RequestType) {
@@ -68,10 +69,24 @@ async function _createSelfSignedCertificate(event) {
68
69
  await _exec('/opt/openssl', 'req', '-config', configFile, '-key', pkeyFile, '-out', csrFile, '-new');
69
70
  const certFile = path.join(tempDir, 'cert.pem');
70
71
  await _exec('/opt/openssl', 'x509', '-in', csrFile, '-out', certFile, '-req', '-signkey', pkeyFile, '-days', '365');
72
+ const s3 = new aws.S3();
73
+ const bucketName = event.ResourceProperties.OutputBucket;
74
+ await s3.putObject({
75
+ Bucket: bucketName,
76
+ Key: 'certificate-signing-request.pem',
77
+ Body: await readFile(csrFile, { encoding: 'utf8' }),
78
+ ContentType: 'application/x-pem-file',
79
+ }).promise();
80
+ await s3.putObject({
81
+ Bucket: bucketName,
82
+ Key: 'self-signed-certificate.pem',
83
+ Body: await readFile(certFile, { encoding: 'utf8' }),
84
+ ContentType: 'application/x-pem-file',
85
+ }).promise();
71
86
  return {
72
87
  Ref: event.LogicalResourceId,
73
- CSR: await readFile(csrFile, { encoding: 'utf8' }),
74
- SelfSignedCertificate: await readFile(certFile, { encoding: 'utf8' }),
88
+ CSR: `s3://${bucketName}/certificate-signing-request.pem`,
89
+ SelfSignedCertificate: `s3://${bucketName}/self-signed-certificate.pem`,
75
90
  };
76
91
  }
77
92
  finally {
@@ -114,4 +129,4 @@ async function _retrievePrivateKey(event, dir) {
114
129
  await writeFile(file, secret.SecretString, { encoding: 'utf8' });
115
130
  return file;
116
131
  }
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDJDQUE2QjtBQUM3Qiw2REFBNkQ7QUFDN0QsNkNBQStCO0FBRS9CLHdEQUEwQztBQUMxQyxpRUFBaUU7QUFDakUsaUNBQWtDO0FBRWxDLGlFQUFpRTtBQUNqRSxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlC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RUFBRTtRQUM3RSwwQkFBMEIsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsRUFBRTtRQUNuRSxFQUFFO1FBQ0YsZ0JBQWdCO1FBQ2hCLDBCQUEwQixLQUFLLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUU7UUFDckUsMEJBQTBCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7UUFDN0QsNkJBQTZCO0tBQzlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsS0FBSyxVQUFVLG1CQUFtQixDQUFDLEtBQWdCLEVBQUUsR0FBVztJQUM5RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sTUFBTSxHQUFHLE1BQU0sY0FBYyxDQUFDLGNBQWMsQ0FBQztRQUNqRCxRQUFRLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQjtRQUNyRCxZQUFZLEVBQUUsWUFBWTtLQUMzQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDYixNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJ3V0aWwnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgYXdzIGZyb20gJ2F3cy1zZGsnO1xuXG5pbXBvcnQgKiBhcyBjZm4gZnJvbSAnLi9fY2xvdWQtZm9ybWF0aW9uJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgX2V4ZWMgPSByZXF1aXJlKCcuL19leGVjJyk7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnLi9fbGFtYmRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgX3JtcmYgPSByZXF1aXJlKCcuL19ybXJmJyk7XG5cbmNvbnN0IG1rZHRlbXAgPSB1dGlsLnByb21pc2lmeShmcy5ta2R0ZW1wKTtcbmNvbnN0IHJlYWRGaWxlID0gdXRpbC5wcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuY29uc3Qgd3JpdGVGaWxlID0gdXRpbC5wcm9taXNpZnkoZnMud3JpdGVGaWxlKTtcblxuY29uc3Qgc2VjcmV0c01hbmFnZXIgPSBuZXcgYXdzLlNlY3JldHNNYW5hZ2VyKCk7XG5cbmV4cG9ydHMuaGFuZGxlciA9IGNmbi5jdXN0b21SZXNvdXJjZUhhbmRsZXIoaGFuZGxlRXZlbnQpO1xuXG5pbnRlcmZhY2UgUmVzb3VyY2VBdHRyaWJ1dGVzIGV4dGVuZHMgY2ZuLlJlc291cmNlQXR0cmlidXRlcyB7XG4gIENTUjogc3RyaW5nO1xuICBTZWxmU2lnbmVkQ2VydGlmaWNhdGU6IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRXZlbnQoZXZlbnQ6IGNmbi5FdmVudCwgX2NvbnRleHQ6IGxhbWJkYS5Db250ZXh0KTogUHJvbWlzZTxjZm4uUmVzb3VyY2VBdHRyaWJ1dGVzPiB7XG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSAhPT0gY2ZuLlJlcXVlc3RUeXBlLkRFTEVURSkge1xuICAgIGNmbi52YWxpZGF0ZVByb3BlcnRpZXMoZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLCB7XG4gICAgICBEbkNvbW1vbk5hbWU6IHRydWUsXG4gICAgICBEbkNvdW50cnk6IHRydWUsXG4gICAgICBEbkVtYWlsQWRkcmVzczogdHJ1ZSxcbiAgICAgIERuTG9jYWxpdHk6IHRydWUsXG4gICAgICBEbk9yZ2FuaXphdGlvbk5hbWU6IHRydWUsXG4gICAgICBEbk9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IHRydWUsXG4gICAgICBEblN0YXRlT3JQcm92aW5jZTogdHJ1ZSxcbiAgICAgIEV4dGVuZGVkS2V5VXNhZ2U6IGZhbHNlLFxuICAgICAgS2V5VXNhZ2U6IHRydWUsXG4gICAgICBQcml2YXRlS2V5U2VjcmV0SWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBjZm4uUmVxdWVzdFR5cGUuQ1JFQVRFOlxuICAgIGNhc2UgY2ZuLlJlcXVlc3RUeXBlLlVQREFURTpcbiAgICAgIHJldHVybiBfY3JlYXRlU2VsZlNpZ25lZENlcnRpZmljYXRlKGV2ZW50KTtcbiAgICBjYXNlIGNmbi5SZXF1ZXN0VHlwZS5ERUxFVEU6XG4gICAgLy8gTm90aGluZyB0byBkbyAtIHRoaXMgaXMgbm90IGEgXCJQaHlzaWNhbFwiIHJlc291cmNlXG4gICAgICByZXR1cm4geyBSZWY6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkIH07XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gX2NyZWF0ZVNlbGZTaWduZWRDZXJ0aWZpY2F0ZShldmVudDogY2ZuLkV2ZW50KTogUHJvbWlzZTxSZXNvdXJjZUF0dHJpYnV0ZXM+IHtcbiAgY29uc3QgdGVtcERpciA9IGF3YWl0IG1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAneDUwOUNTUi0nKSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IF9tYWtlQ3NyQ29uZmlnKGV2ZW50LCB0ZW1wRGlyKTtcbiAgICBjb25zdCBwa2V5RmlsZSA9IGF3YWl0IF9yZXRyaWV2ZVByaXZhdGVLZXkoZXZlbnQsIHRlbXBEaXIpO1xuICAgIGNvbnN0IGNzckZpbGUgPSBwYXRoLmpvaW4odGVtcERpciwgJ2Nzci5wZW0nKTtcbiAgICBhd2FpdCBfZXhlYygnL29wdC9vcGVuc3NsJywgJ3JlcScsICctY29uZmlnJywgY29uZmlnRmlsZSxcbiAgICAgICcta2V5JywgcGtleUZpbGUsXG4gICAgICAnLW91dCcsIGNzckZpbGUsXG4gICAgICAnLW5ldycpO1xuICAgIGNvbnN0IGNlcnRGaWxlID0gcGF0aC5qb2luKHRlbXBEaXIsICdjZXJ0LnBlbScpO1xuICAgIGF3YWl0IF9leGVjKCcvb3B0L29wZW5zc2wnLCAneDUwOScsICctaW4nLCBjc3JGaWxlLFxuICAgICAgJy1vdXQnLCBjZXJ0RmlsZSxcbiAgICAgICctcmVxJyxcbiAgICAgICctc2lnbmtleScsIHBrZXlGaWxlLFxuICAgICAgJy1kYXlzJywgJzM2NScpO1xuICAgIHJldHVybiB7XG4gICAgICBSZWY6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgICAgQ1NSOiBhd2FpdCByZWFkRmlsZShjc3JGaWxlLCB7IGVuY29kaW5nOiAndXRmOCcgfSksXG4gICAgICBTZWxmU2lnbmVkQ2VydGlmaWNhdGU6IGF3YWl0IHJlYWRGaWxlKGNlcnRGaWxlLCB7IGVuY29kaW5nOiAndXRmOCcgfSksXG4gICAgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBfcm1yZih0ZW1wRGlyKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBfbWFrZUNzckNvbmZpZyhldmVudDogY2ZuLkV2ZW50LCBkaXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBwYXRoLmpvaW4oZGlyLCAnY3NyLmNvbmZpZycpO1xuICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgW1xuICAgICdbIHJlcSBdJyxcbiAgICAnZGVmYXVsdF9tZCAgICAgICAgICAgPSBzaGEyNTYnLFxuICAgICdkaXN0aW5ndWlzaGVkX25hbWUgICA9IGRuJyxcbiAgICAncHJvbXB0ICAgICAgICAgICAgICAgPSBubycsXG4gICAgJ3JlcV9leHRlbnNpb25zICAgICAgID0gZXh0ZW5zaW9ucycsXG4gICAgJ3N0cmluZ19tYXNrICAgICAgICAgID0gdXRmOG9ubHknLFxuICAgICd1dGY4ICAgICAgICAgICAgICAgICA9IHllcycsXG4gICAgJycsXG4gICAgJ1sgZG4gXScsXG4gICAgYENOICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Db21tb25OYW1lfWAsXG4gICAgYEMgICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Db3VudHJ5fWAsXG4gICAgYFNUICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5TdGF0ZU9yUHJvdmluY2V9YCxcbiAgICBgTCAgICAgICAgICAgICAgICAgICAgPSAke2V2ZW50LlJlc291cmNlUHJvcGVydGllcy5EbkxvY2FsaXR5fWAsXG4gICAgYE8gICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Pcmdhbml6YXRpb25OYW1lfWAsXG4gICAgYE9VICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Pcmdhbml6YXRpb25hbFVuaXROYW1lfWAsXG4gICAgYGVtYWlsQWRkcmVzcyAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5FbWFpbEFkZHJlc3N9YCxcbiAgICAnJyxcbiAgICAnWyBleHRlbnNpb25zIF0nLFxuICAgIGBleHRlbmRlZEtleVVzYWdlICAgICA9ICR7ZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkV4dGVuZGVkS2V5VXNhZ2V9YCxcbiAgICBga2V5VXNhZ2UgICAgICAgICAgICAgPSAke2V2ZW50LlJlc291cmNlUHJvcGVydGllcy5LZXlVc2FnZX1gLFxuICAgICdzdWJqZWN0S2V5SWRlbnRpZmllciA9IGhhc2gnLFxuICBdLmpvaW4oJ1xcbicpLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XG4gIHJldHVybiBmaWxlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBfcmV0cmlldmVQcml2YXRlS2V5KGV2ZW50OiBjZm4uRXZlbnQsIGRpcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZmlsZSA9IHBhdGguam9pbihkaXIsICdwcml2YXRlX2tleS5wZW0nKTtcbiAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgc2VjcmV0c01hbmFnZXIuZ2V0U2VjcmV0VmFsdWUoe1xuICAgIFNlY3JldElkOiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuUHJpdmF0ZUtleVNlY3JldElkLFxuICAgIFZlcnNpb25TdGFnZTogJ0FXU0NVUlJFTlQnLFxuICB9KS5wcm9taXNlKCk7XG4gIGF3YWl0IHdyaXRlRmlsZShmaWxlLCBzZWNyZXQuU2VjcmV0U3RyaW5nISwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1xuICByZXR1cm4gZmlsZTtcbn1cbiJdfQ==
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6Qix1Q0FBeUI7QUFDekIsMkNBQTZCO0FBQzdCLDJDQUE2QjtBQUM3Qiw2REFBNkQ7QUFDN0QsNkNBQStCO0FBRS9CLHdEQUEwQztBQUMxQyxpRUFBaUU7QUFDakUsaUNBQWtDO0FBRWxDLGlFQUFpRTtBQUNqRSxpQ0FBa0M7QUFFbEMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFL0MsTUFBTSxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFaEQsT0FBTyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFPekQsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFnQixFQUFFLFFBQXdCO0lBQ25FLElBQUksS0FBSyxDQUFDLFdBQVcsS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtRQUNoRCxHQUFHLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFO1lBQy9DLFlBQVksRUFBRSxJQUFJO1lBQ2xCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLElBQUk7WUFDcEIsVUFBVSxFQUFFLElBQUk7WUFDaEIsa0JBQWtCLEVBQUUsSUFBSTtZQUN4Qix3QkFBd0IsRUFBRSxJQUFJO1lBQzlC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S0FBSyxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQjtRQUNyRCxZQUFZLEVBQUUsWUFBWTtLQUMzQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDYixNQUFNLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLFlBQWEsRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIG9zIGZyb20gJ29zJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB1dGlsIGZyb20gJ3V0aWwnO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgYXdzIGZyb20gJ2F3cy1zZGsnO1xuXG5pbXBvcnQgKiBhcyBjZm4gZnJvbSAnLi9fY2xvdWQtZm9ybWF0aW9uJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgX2V4ZWMgPSByZXF1aXJlKCcuL19leGVjJyk7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnLi9fbGFtYmRhJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG5pbXBvcnQgX3JtcmYgPSByZXF1aXJlKCcuL19ybXJmJyk7XG5cbmNvbnN0IG1rZHRlbXAgPSB1dGlsLnByb21pc2lmeShmcy5ta2R0ZW1wKTtcbmNvbnN0IHJlYWRGaWxlID0gdXRpbC5wcm9taXNpZnkoZnMucmVhZEZpbGUpO1xuY29uc3Qgd3JpdGVGaWxlID0gdXRpbC5wcm9taXNpZnkoZnMud3JpdGVGaWxlKTtcblxuY29uc3Qgc2VjcmV0c01hbmFnZXIgPSBuZXcgYXdzLlNlY3JldHNNYW5hZ2VyKCk7XG5cbmV4cG9ydHMuaGFuZGxlciA9IGNmbi5jdXN0b21SZXNvdXJjZUhhbmRsZXIoaGFuZGxlRXZlbnQpO1xuXG5pbnRlcmZhY2UgUmVzb3VyY2VBdHRyaWJ1dGVzIGV4dGVuZHMgY2ZuLlJlc291cmNlQXR0cmlidXRlcyB7XG4gIENTUjogc3RyaW5nO1xuICBTZWxmU2lnbmVkQ2VydGlmaWNhdGU6IHN0cmluZztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFuZGxlRXZlbnQoZXZlbnQ6IGNmbi5FdmVudCwgX2NvbnRleHQ6IGxhbWJkYS5Db250ZXh0KTogUHJvbWlzZTxjZm4uUmVzb3VyY2VBdHRyaWJ1dGVzPiB7XG4gIGlmIChldmVudC5SZXF1ZXN0VHlwZSAhPT0gY2ZuLlJlcXVlc3RUeXBlLkRFTEVURSkge1xuICAgIGNmbi52YWxpZGF0ZVByb3BlcnRpZXMoZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLCB7XG4gICAgICBEbkNvbW1vbk5hbWU6IHRydWUsXG4gICAgICBEbkNvdW50cnk6IHRydWUsXG4gICAgICBEbkVtYWlsQWRkcmVzczogdHJ1ZSxcbiAgICAgIERuTG9jYWxpdHk6IHRydWUsXG4gICAgICBEbk9yZ2FuaXphdGlvbk5hbWU6IHRydWUsXG4gICAgICBEbk9yZ2FuaXphdGlvbmFsVW5pdE5hbWU6IHRydWUsXG4gICAgICBEblN0YXRlT3JQcm92aW5jZTogdHJ1ZSxcbiAgICAgIEV4dGVuZGVkS2V5VXNhZ2U6IGZhbHNlLFxuICAgICAgS2V5VXNhZ2U6IHRydWUsXG4gICAgICBQcml2YXRlS2V5U2VjcmV0SWQ6IHRydWUsXG4gICAgICBPdXRwdXRCdWNrZXQ6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBzd2l0Y2ggKGV2ZW50LlJlcXVlc3RUeXBlKSB7XG4gICAgY2FzZSBjZm4uUmVxdWVzdFR5cGUuQ1JFQVRFOlxuICAgIGNhc2UgY2ZuLlJlcXVlc3RUeXBlLlVQREFURTpcbiAgICAgIHJldHVybiBfY3JlYXRlU2VsZlNpZ25lZENlcnRpZmljYXRlKGV2ZW50KTtcbiAgICBjYXNlIGNmbi5SZXF1ZXN0VHlwZS5ERUxFVEU6XG4gICAgLy8gTm90aGluZyB0byBkbyAtIHRoaXMgaXMgbm90IGEgXCJQaHlzaWNhbFwiIHJlc291cmNlXG4gICAgICByZXR1cm4geyBSZWY6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkIH07XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gX2NyZWF0ZVNlbGZTaWduZWRDZXJ0aWZpY2F0ZShldmVudDogY2ZuLkV2ZW50KTogUHJvbWlzZTxSZXNvdXJjZUF0dHJpYnV0ZXM+IHtcbiAgY29uc3QgdGVtcERpciA9IGF3YWl0IG1rZHRlbXAocGF0aC5qb2luKG9zLnRtcGRpcigpLCAneDUwOUNTUi0nKSk7XG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnRmlsZSA9IGF3YWl0IF9tYWtlQ3NyQ29uZmlnKGV2ZW50LCB0ZW1wRGlyKTtcbiAgICBjb25zdCBwa2V5RmlsZSA9IGF3YWl0IF9yZXRyaWV2ZVByaXZhdGVLZXkoZXZlbnQsIHRlbXBEaXIpO1xuICAgIGNvbnN0IGNzckZpbGUgPSBwYXRoLmpvaW4odGVtcERpciwgJ2Nzci5wZW0nKTtcbiAgICBhd2FpdCBfZXhlYygnL29wdC9vcGVuc3NsJywgJ3JlcScsICctY29uZmlnJywgY29uZmlnRmlsZSxcbiAgICAgICcta2V5JywgcGtleUZpbGUsXG4gICAgICAnLW91dCcsIGNzckZpbGUsXG4gICAgICAnLW5ldycpO1xuICAgIGNvbnN0IGNlcnRGaWxlID0gcGF0aC5qb2luKHRlbXBEaXIsICdjZXJ0LnBlbScpO1xuICAgIGF3YWl0IF9leGVjKCcvb3B0L29wZW5zc2wnLCAneDUwOScsICctaW4nLCBjc3JGaWxlLFxuICAgICAgJy1vdXQnLCBjZXJ0RmlsZSxcbiAgICAgICctcmVxJyxcbiAgICAgICctc2lnbmtleScsIHBrZXlGaWxlLFxuICAgICAgJy1kYXlzJywgJzM2NScpO1xuXG4gICAgY29uc3QgczMgPSBuZXcgYXdzLlMzKCk7XG4gICAgY29uc3QgYnVja2V0TmFtZTogc3RyaW5nID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLk91dHB1dEJ1Y2tldDtcbiAgICBhd2FpdCBzMy5wdXRPYmplY3Qoe1xuICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgS2V5OiAnY2VydGlmaWNhdGUtc2lnbmluZy1yZXF1ZXN0LnBlbScsXG4gICAgICBCb2R5OiBhd2FpdCByZWFkRmlsZShjc3JGaWxlLCB7IGVuY29kaW5nOiAndXRmOCcgfSksXG4gICAgICBDb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3gtcGVtLWZpbGUnLFxuICAgIH0pLnByb21pc2UoKTtcbiAgICBhd2FpdCBzMy5wdXRPYmplY3Qoe1xuICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxuICAgICAgS2V5OiAnc2VsZi1zaWduZWQtY2VydGlmaWNhdGUucGVtJyxcbiAgICAgIEJvZHk6IGF3YWl0IHJlYWRGaWxlKGNlcnRGaWxlLCB7IGVuY29kaW5nOiAndXRmOCcgfSksXG4gICAgICBDb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL3gtcGVtLWZpbGUnLFxuICAgIH0pLnByb21pc2UoKTtcblxuICAgIHJldHVybiB7XG4gICAgICBSZWY6IGV2ZW50LkxvZ2ljYWxSZXNvdXJjZUlkLFxuICAgICAgQ1NSOiBgczM6Ly8ke2J1Y2tldE5hbWV9L2NlcnRpZmljYXRlLXNpZ25pbmctcmVxdWVzdC5wZW1gLFxuICAgICAgU2VsZlNpZ25lZENlcnRpZmljYXRlOiBgczM6Ly8ke2J1Y2tldE5hbWV9L3NlbGYtc2lnbmVkLWNlcnRpZmljYXRlLnBlbWAsXG4gICAgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBfcm1yZih0ZW1wRGlyKTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBfbWFrZUNzckNvbmZpZyhldmVudDogY2ZuLkV2ZW50LCBkaXI6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGZpbGUgPSBwYXRoLmpvaW4oZGlyLCAnY3NyLmNvbmZpZycpO1xuICBhd2FpdCB3cml0ZUZpbGUoZmlsZSwgW1xuICAgICdbIHJlcSBdJyxcbiAgICAnZGVmYXVsdF9tZCAgICAgICAgICAgPSBzaGEyNTYnLFxuICAgICdkaXN0aW5ndWlzaGVkX25hbWUgICA9IGRuJyxcbiAgICAncHJvbXB0ICAgICAgICAgICAgICAgPSBubycsXG4gICAgJ3JlcV9leHRlbnNpb25zICAgICAgID0gZXh0ZW5zaW9ucycsXG4gICAgJ3N0cmluZ19tYXNrICAgICAgICAgID0gdXRmOG9ubHknLFxuICAgICd1dGY4ICAgICAgICAgICAgICAgICA9IHllcycsXG4gICAgJycsXG4gICAgJ1sgZG4gXScsXG4gICAgYENOICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Db21tb25OYW1lfWAsXG4gICAgYEMgICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Db3VudHJ5fWAsXG4gICAgYFNUICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5TdGF0ZU9yUHJvdmluY2V9YCxcbiAgICBgTCAgICAgICAgICAgICAgICAgICAgPSAke2V2ZW50LlJlc291cmNlUHJvcGVydGllcy5EbkxvY2FsaXR5fWAsXG4gICAgYE8gICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Pcmdhbml6YXRpb25OYW1lfWAsXG4gICAgYE9VICAgICAgICAgICAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5Pcmdhbml6YXRpb25hbFVuaXROYW1lfWAsXG4gICAgYGVtYWlsQWRkcmVzcyAgICAgICAgID0gJHtldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRG5FbWFpbEFkZHJlc3N9YCxcbiAgICAnJyxcbiAgICAnWyBleHRlbnNpb25zIF0nLFxuICAgIGBleHRlbmRlZEtleVVzYWdlICAgICA9ICR7ZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLkV4dGVuZGVkS2V5VXNhZ2V9YCxcbiAgICBga2V5VXNhZ2UgICAgICAgICAgICAgPSAke2V2ZW50LlJlc291cmNlUHJvcGVydGllcy5LZXlVc2FnZX1gLFxuICAgICdzdWJqZWN0S2V5SWRlbnRpZmllciA9IGhhc2gnLFxuICBdLmpvaW4oJ1xcbicpLCB7IGVuY29kaW5nOiAndXRmOCcgfSk7XG4gIHJldHVybiBmaWxlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBfcmV0cmlldmVQcml2YXRlS2V5KGV2ZW50OiBjZm4uRXZlbnQsIGRpcjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgZmlsZSA9IHBhdGguam9pbihkaXIsICdwcml2YXRlX2tleS5wZW0nKTtcbiAgY29uc3Qgc2VjcmV0ID0gYXdhaXQgc2VjcmV0c01hbmFnZXIuZ2V0U2VjcmV0VmFsdWUoe1xuICAgIFNlY3JldElkOiBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuUHJpdmF0ZUtleVNlY3JldElkLFxuICAgIFZlcnNpb25TdGFnZTogJ0FXU0NVUlJFTlQnLFxuICB9KS5wcm9taXNlKCk7XG4gIGF3YWl0IHdyaXRlRmlsZShmaWxlLCBzZWNyZXQuU2VjcmV0U3RyaW5nISwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1xuICByZXR1cm4gZmlsZTtcbn1cbiJdfQ==