@aws-sdk/signature-v4-crt 3.34.0 → 3.35.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 (39) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist-cjs/CrtSignerV4.js +124 -0
  3. package/dist-cjs/constants.js +47 -0
  4. package/dist-cjs/headerUtil.js +33 -0
  5. package/{dist/cjs → dist-cjs}/index.js +1 -1
  6. package/dist-cjs/suite.fixture.js +387 -0
  7. package/dist-es/CrtSignerV4.js +219 -0
  8. package/dist-es/constants.js +44 -0
  9. package/dist-es/headerUtil.js +61 -0
  10. package/dist-es/index.js +2 -0
  11. package/dist-es/suite.fixture.js +384 -0
  12. package/{dist/types → dist-types}/CrtSignerV4.d.ts +0 -0
  13. package/{dist/types → dist-types}/constants.d.ts +0 -0
  14. package/{dist/types → dist-types}/headerUtil.d.ts +0 -0
  15. package/{dist/types → dist-types}/index.d.ts +0 -0
  16. package/{dist/types → dist-types}/suite.fixture.d.ts +0 -0
  17. package/{dist/types → dist-types}/ts3.4/CrtSignerV4.d.ts +0 -0
  18. package/{dist/types → dist-types}/ts3.4/constants.d.ts +0 -0
  19. package/{dist/types → dist-types}/ts3.4/headerUtil.d.ts +0 -0
  20. package/{dist/types → dist-types}/ts3.4/index.d.ts +0 -0
  21. package/{dist/types → dist-types}/ts3.4/suite.fixture.d.ts +0 -0
  22. package/package.json +13 -13
  23. package/tsconfig.cjs.json +1 -1
  24. package/tsconfig.cjs.tsbuildinfo +1 -0
  25. package/tsconfig.es.json +2 -6
  26. package/tsconfig.es.tsbuildinfo +1 -0
  27. package/tsconfig.types.json +1 -1
  28. package/tsconfig.types.tsbuildinfo +1 -1
  29. package/dist/cjs/CrtSignerV4.js +0 -124
  30. package/dist/cjs/constants.js +0 -47
  31. package/dist/cjs/headerUtil.js +0 -33
  32. package/dist/cjs/suite.fixture.js +0 -387
  33. package/dist/es/CrtSignerV4.js +0 -254
  34. package/dist/es/constants.js +0 -44
  35. package/dist/es/headerUtil.js +0 -63
  36. package/dist/es/index.js +0 -2
  37. package/dist/es/suite.fixture.js +0 -404
  38. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  39. package/dist/tsconfig.es.tsbuildinfo +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [3.35.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.34.0...v3.35.0) (2021-10-04)
7
+
8
+ **Note:** Version bump only for package @aws-sdk/signature-v4-crt
9
+
10
+
11
+
12
+
13
+
6
14
  # [3.34.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.33.0...v3.34.0) (2021-09-24)
7
15
 
8
16
 
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CrtSignerV4 = void 0;
4
+ const querystring_parser_1 = require("@aws-sdk/querystring-parser");
5
+ const signature_v4_1 = require("@aws-sdk/signature-v4");
6
+ const aws_crt_1 = require("aws-crt");
7
+ const constants_1 = require("./constants");
8
+ const headerUtil_1 = require("./headerUtil");
9
+ function sdkHttpRequest2crtHttpRequest(sdkRequest) {
10
+ headerUtil_1.deleteHeader(constants_1.SHA256_HEADER, sdkRequest.headers);
11
+ const headersArray = Object.entries(sdkRequest.headers);
12
+ const crtHttpHeaders = new aws_crt_1.http.HttpHeaders(headersArray);
13
+ const queryString = signature_v4_1.getCanonicalQuery(sdkRequest);
14
+ return new aws_crt_1.http.HttpRequest(sdkRequest.method, sdkRequest.path + "?" + queryString, crtHttpHeaders);
15
+ }
16
+ class CrtSignerV4 {
17
+ constructor({ credentials, region, service, sha256, applyChecksum = true, uriEscapePath = true, signingAlgorithm = aws_crt_1.auth.AwsSigningAlgorithm.SigV4, }) {
18
+ this.service = service;
19
+ this.sha256 = sha256;
20
+ this.uriEscapePath = uriEscapePath;
21
+ this.signingAlgorithm = signingAlgorithm;
22
+ this.applyChecksum = applyChecksum;
23
+ this.regionProvider = signature_v4_1.normalizeRegionProvider(region);
24
+ this.credentialProvider = signature_v4_1.normalizeCredentialsProvider(credentials);
25
+ aws_crt_1.io.enable_logging(aws_crt_1.io.LogLevel.ERROR);
26
+ }
27
+ async options2crtConfigure({ signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}, viaHeader, payloadHash, expiresIn) {
28
+ const credentials = await this.credentialProvider();
29
+ const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : (await this.regionProvider());
30
+ const service = signingService !== null && signingService !== void 0 ? signingService : this.service;
31
+ if ((signableHeaders === null || signableHeaders === void 0 ? void 0 : signableHeaders.has("x-amzn-trace-id")) || (signableHeaders === null || signableHeaders === void 0 ? void 0 : signableHeaders.has("user-agent"))) {
32
+ throw new Error("internal check (x-amzn-trace-id, user-agent) is not supported to be included to sign with CRT.");
33
+ }
34
+ const headersUnsignable = getHeadersUnsignable(unsignableHeaders, signableHeaders);
35
+ return {
36
+ algorithm: this.signingAlgorithm,
37
+ signature_type: viaHeader
38
+ ? aws_crt_1.auth.AwsSignatureType.HttpRequestViaHeaders
39
+ : aws_crt_1.auth.AwsSignatureType.HttpRequestViaQueryParams,
40
+ provider: sdk2crtCredentialsProvider(credentials),
41
+ region: region,
42
+ service: service,
43
+ date: new Date(signingDate),
44
+ header_blacklist: headersUnsignable,
45
+ use_double_uri_encode: this.uriEscapePath,
46
+ signed_body_value: payloadHash,
47
+ signed_body_header: this.applyChecksum && viaHeader
48
+ ? aws_crt_1.auth.AwsSignedBodyHeaderType.XAmzContentSha256
49
+ : aws_crt_1.auth.AwsSignedBodyHeaderType.None,
50
+ expiration_in_seconds: expiresIn,
51
+ };
52
+ }
53
+ async presign(originalRequest, options = {}) {
54
+ if (options.expiresIn && options.expiresIn > constants_1.MAX_PRESIGNED_TTL) {
55
+ return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future");
56
+ }
57
+ const request = signature_v4_1.moveHeadersToQuery(signature_v4_1.prepareRequest(originalRequest));
58
+ const crtSignedRequest = await this.signRequest(request, await this.options2crtConfigure(options, false, await signature_v4_1.getPayloadHash(originalRequest, this.sha256), options.expiresIn ? options.expiresIn : 3600));
59
+ request.query = this.getQueryParam(crtSignedRequest.path);
60
+ return request;
61
+ }
62
+ async sign(toSign, options) {
63
+ const request = signature_v4_1.prepareRequest(toSign);
64
+ const crtSignedRequest = await this.signRequest(request, await this.options2crtConfigure(options, true, await signature_v4_1.getPayloadHash(toSign, this.sha256)));
65
+ request.headers = crtSignedRequest.headers._flatten().reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
66
+ return request;
67
+ }
68
+ getQueryParam(crtPath) {
69
+ const start = crtPath.search(/\?/);
70
+ const startHash = crtPath.search(/\#/);
71
+ const end = startHash == -1 ? undefined : startHash;
72
+ const queryParam = {};
73
+ if (start == -1) {
74
+ return queryParam;
75
+ }
76
+ const queryString = crtPath.slice(start + 1, end);
77
+ return querystring_parser_1.parseQueryString(queryString);
78
+ }
79
+ async signRequest(requestToSign, crtConfig) {
80
+ const request = sdkHttpRequest2crtHttpRequest(requestToSign);
81
+ try {
82
+ return await aws_crt_1.auth.aws_sign_request(request, crtConfig);
83
+ }
84
+ catch (error) {
85
+ throw new Error(error);
86
+ }
87
+ }
88
+ async verifySigv4aSigning(request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options = {}) {
89
+ const sdkRequest = signature_v4_1.prepareRequest(request);
90
+ const crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
91
+ const payloadHash = await signature_v4_1.getPayloadHash(request, this.sha256);
92
+ const crtConfig = await this.options2crtConfigure(options, true, payloadHash);
93
+ return aws_crt_1.auth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY);
94
+ }
95
+ async verifySigv4aPreSigning(request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options = {}) {
96
+ if (typeof signature != "string") {
97
+ return false;
98
+ }
99
+ const sdkRequest = signature_v4_1.prepareRequest(request);
100
+ const crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
101
+ const crtConfig = await this.options2crtConfigure(options, false, await signature_v4_1.getPayloadHash(request, this.sha256), options.expiresIn ? options.expiresIn : 3600);
102
+ return aws_crt_1.auth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY);
103
+ }
104
+ }
105
+ exports.CrtSignerV4 = CrtSignerV4;
106
+ function sdk2crtCredentialsProvider(credentials) {
107
+ return aws_crt_1.auth.AwsCredentialsProvider.newStatic(credentials.accessKeyId, credentials.secretAccessKey, credentials.sessionToken);
108
+ }
109
+ function getHeadersUnsignable(unsignableHeaders, signableHeaders) {
110
+ if (!unsignableHeaders) {
111
+ return [];
112
+ }
113
+ if (!signableHeaders) {
114
+ return [...unsignableHeaders];
115
+ }
116
+ const result = new Set([...unsignableHeaders]);
117
+ for (let it = signableHeaders.values(), val = null; (val = it.next().value);) {
118
+ if (result.has(val)) {
119
+ result.delete(val);
120
+ }
121
+ }
122
+ return [...result];
123
+ }
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J0U2lnbmVyVjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ3J0U2lnbmVyVjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQStEO0FBQy9ELHdEQVMrQjtBQVcvQixxQ0FBd0U7QUFFeEUsMkNBQStEO0FBQy9ELDZDQUE0QztBQUs1QyxTQUFTLDZCQUE2QixDQUFDLFVBQXVCO0lBRTVELHlCQUFZLENBQUMseUJBQWEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdELE1BQU0sV0FBVyxHQUFHLGdDQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBTWxELE9BQU8sSUFBSSxjQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pHLENBQUM7QUFvQkQsTUFBYSxXQUFXO0lBU3RCLFlBQVksRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE9BQU8sRUFDUCxNQUFNLEVBQ04sYUFBYSxHQUFHLElBQUksRUFDcEIsYUFBYSxHQUFHLElBQUksRUFDcEIsZ0JBQWdCLEdBQUcsY0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FDWjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7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RyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSyxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUk7UUFDN0UsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7S0FDRjtJQUNELE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZVF1ZXJ5U3RyaW5nIH0gZnJvbSBcIkBhd3Mtc2RrL3F1ZXJ5c3RyaW5nLXBhcnNlclwiO1xuaW1wb3J0IHtcbiAgZ2V0Q2Fub25pY2FsUXVlcnksXG4gIGdldFBheWxvYWRIYXNoLFxuICBtb3ZlSGVhZGVyc1RvUXVlcnksXG4gIG5vcm1hbGl6ZUNyZWRlbnRpYWxzUHJvdmlkZXIsXG4gIG5vcm1hbGl6ZVJlZ2lvblByb3ZpZGVyLFxuICBwcmVwYXJlUmVxdWVzdCxcbiAgU2lnbmF0dXJlVjRDcnlwdG9Jbml0LFxuICBTaWduYXR1cmVWNEluaXQsXG59IGZyb20gXCJAYXdzLXNkay9zaWduYXR1cmUtdjRcIjtcbmltcG9ydCB7XG4gIENyZWRlbnRpYWxzLFxuICBIdHRwUmVxdWVzdCxcbiAgUHJvdmlkZXIsXG4gIFF1ZXJ5UGFyYW1ldGVyQmFnLFxuICBSZXF1ZXN0UHJlc2lnbmVyLFxuICBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyxcbiAgUmVxdWVzdFNpZ25lcixcbiAgUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMsXG59IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuaW1wb3J0IHsgYXV0aCBhcyBjcnRBdXRoLCBodHRwIGFzIGNydEh0dHAsIGlvIGFzIGNydElPIH0gZnJvbSBcImF3cy1jcnRcIjtcblxuaW1wb3J0IHsgTUFYX1BSRVNJR05FRF9UVEwsIFNIQTI1Nl9IRUFERVIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGRlbGV0ZUhlYWRlciB9IGZyb20gXCIuL2hlYWRlclV0aWxcIjtcblxuZXhwb3J0IHR5cGUgQXdzU2lnbmluZ0FsZ29yaXRobSA9IGNydEF1dGguQXdzU2lnbmluZ0FsZ29yaXRobTtcblxuLyogcHJpdmF0ZSBmdW5jdGlvbiB0byBjb252ZXJ0IHNkayBIdHRwIHJlcXVlc3QgdG8gY3J0IEh0dHAgcmVxdWVzdCAqL1xuZnVuY3Rpb24gc2RrSHR0cFJlcXVlc3QyY3J0SHR0cFJlcXVlc3Qoc2RrUmVxdWVzdDogSHR0cFJlcXVlc3QpOiBjcnRIdHRwLkh0dHBSZXF1ZXN0IHtcbiAgLyogUmVtb3ZlIHRoZSB4LWFtei1jb250ZW50LXNoYTI1NiBoZWFkZXIsIGlmIGV4aXN0cyAqL1xuICBkZWxldGVIZWFkZXIoU0hBMjU2X0hFQURFUiwgc2RrUmVxdWVzdC5oZWFkZXJzKTtcbiAgY29uc3QgaGVhZGVyc0FycmF5ID0gT2JqZWN0LmVudHJpZXMoc2RrUmVxdWVzdC5oZWFkZXJzKTtcbiAgY29uc3QgY3J0SHR0cEhlYWRlcnMgPSBuZXcgY3J0SHR0cC5IdHRwSGVhZGVycyhoZWFkZXJzQXJyYXkpO1xuICBjb25zdCBxdWVyeVN0cmluZyA9IGdldENhbm9uaWNhbFF1ZXJ5KHNka1JlcXVlc3QpO1xuXG4gIC8qKlxuICAgKiBOb3QgY29udmVydGluZyB0aGUgYm9keSB0byB0aGUgY3J0UmVxdWVzdC4gRm9yIG5vdywgaXQncyBiZXR0ZXIgdG8gZ2V0IHRoZSBwYXlsb2FkIEhhc2ggZnJvbSBTREsuXG4gICAqIFRoZSBib2R5IHZhbHVlIHdpbGwgYmUgc2V0IGZyb20gY29uZmlnLlxuICAgKi9cbiAgcmV0dXJuIG5ldyBjcnRIdHRwLkh0dHBSZXF1ZXN0KHNka1JlcXVlc3QubWV0aG9kLCBzZGtSZXF1ZXN0LnBhdGggKyBcIj9cIiArIHF1ZXJ5U3RyaW5nLCBjcnRIdHRwSGVhZGVycyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3J0U2lnbmVyVjRJbml0IGV4dGVuZHMgU2lnbmF0dXJlVjRJbml0IHtcbiAgLyoqXG4gICAqIFRoZSBBbGdvcml0aG0gdXNlZCBmb3IgdGhlIHNpZ25lci4gSW5jbHVkZXM6IFNpZ1Y0LCBTaWdWNEFzeW1tZXRyaWMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtTaWdWNF1cbiAgICovXG4gIHNpZ25pbmdBbGdvcml0aG0/OiBBd3NTaWduaW5nQWxnb3JpdGhtO1xufVxuXG4vKipcbiAqIEJhc2VkIGF3cy1jcnQsIHdpdGggdGhlIHNhbWUgQVBJIGFzIHNpZ25pbmcgdGhlIHJlcXVlc3QgZnJvbSBTaWduYXR1cmVWNCwgY29tcGF0aWJsZSB3aXRoIHJlcXVlc3QgU2lnbmVyIGZyb20gU0RLLlxuICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtIGlzIENydFNpZ25lclY0IG9ubHkgc3VwcG9ydHMgc2lnbmluZy9wcmVzaWduaW5nIHRoZSByZXF1ZXN0LiBUaGUgYmVoYXZpb3Igb2YgdHdvIHNpZ25lcnNcbiAqIGFyZSBzbGlnaHRseSBkaWZmZXJlbnQsIGluY2x1ZGVzIHRoZSBjYXNlIG9mIGhlYWRlcnMgbmFtZSBhZnRlciBzaWduaW5nIGFuZCB0aGUgQ3J0U2lnbmVyVjQgZG9lcyBOT1Qgc3VwcG9ydCBvdmVyd3JpdGVcbiAqIHRoZSBpbnRlcm5hbCBjaGVjayBhZ2FpbnN0ICh4LWFtem4tdHJhY2UtaWQsIHVzZXItYWdlbnQpLCB3aGljaCB3aWxsIGFsd2F5cyBiZSBza2lwcGVkLlxuICogTW9zdCBpbXBvcnRhbnRseSwgQ3J0U2lnbmVyVjQgc3VwcG9ydHMgU2lnbmF0dXJlIFY0IEFzeW1tZXRyaWMuXG4gKlxuICogTm90ZTogYXdzLWNydCB0aGF0IHN1cHBvcnRzIFNpZ1Y0QSBpcyBzdGlsbCBhIHByaXZhdGUgcmVwbyBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtY3J0LW5vZGVqcy1zdGFnaW5nL3RyZWUvc2lndjRhLWJpbmRpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIENydFNpZ25lclY0IGltcGxlbWVudHMgUmVxdWVzdFByZXNpZ25lciwgUmVxdWVzdFNpZ25lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lvblByb3ZpZGVyOiBQcm92aWRlcjxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlcjogUHJvdmlkZXI8Q3JlZGVudGlhbHM+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNoYTI1NjogYW55O1xuICBwcml2YXRlIHJlYWRvbmx5IHVyaUVzY2FwZVBhdGg6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwbHlDaGVja3N1bTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaWduaW5nQWxnb3JpdGhtOiBBd3NTaWduaW5nQWxnb3JpdGhtO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBjcmVkZW50aWFscyxcbiAgICByZWdpb24sXG4gICAgc2VydmljZSxcbiAgICBzaGEyNTYsXG4gICAgYXBwbHlDaGVja3N1bSA9IHRydWUsXG4gICAgdXJpRXNjYXBlUGF0aCA9IHRydWUsXG4gICAgc2lnbmluZ0FsZ29yaXRobSA9IGNydEF1dGguQXdzU2lnbmluZ0FsZ29yaXRobS5TaWdWNCxcbiAgfTogQ3J0U2lnbmVyVjRJbml0ICYgU2lnbmF0dXJlVjRDcnlwdG9Jbml0KSB7XG4gICAgdGhpcy5zZXJ2aWNlID0gc2VydmljZTtcbiAgICB0aGlzLnNoYTI1NiA9IHNoYTI1NjtcbiAgICB0aGlzLnVyaUVzY2FwZVBhdGggPSB1cmlFc2NhcGVQYXRoO1xuICAgIHRoaXMuc2lnbmluZ0FsZ29yaXRobSA9IHNpZ25pbmdBbGdvcml0aG07XG4gICAgdGhpcy5hcHBseUNoZWNrc3VtID0gYXBwbHlDaGVja3N1bTtcbiAgICB0aGlzLnJlZ2lvblByb3ZpZGVyID0gbm9ybWFsaXplUmVnaW9uUHJvdmlkZXIocmVnaW9uKTtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlciA9IG5vcm1hbGl6ZUNyZWRlbnRpYWxzUHJvdmlkZXIoY3JlZGVudGlhbHMpO1xuICAgIGNydElPLmVuYWJsZV9sb2dnaW5nKGNydElPLkxvZ0xldmVsLkVSUk9SKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb3B0aW9uczJjcnRDb25maWd1cmUoXG4gICAge1xuICAgICAgc2lnbmluZ0RhdGUgPSBuZXcgRGF0ZSgpLFxuICAgICAgc2lnbmFibGVIZWFkZXJzLFxuICAgICAgdW5zaWduYWJsZUhlYWRlcnMsXG4gICAgICBzaWduaW5nUmVnaW9uLFxuICAgICAgc2lnbmluZ1NlcnZpY2UsXG4gICAgfTogUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMgfCBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHt9LFxuICAgIHZpYUhlYWRlcjogQm9vbGVhbixcbiAgICBwYXlsb2FkSGFzaDogc3RyaW5nLFxuICAgIGV4cGlyZXNJbj86IG51bWJlclxuICApOiBQcm9taXNlPGNydEF1dGguQXdzU2lnbmluZ0NvbmZpZz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIoKTtcbiAgICBjb25zdCByZWdpb24gPSBzaWduaW5nUmVnaW9uID8/IChhd2FpdCB0aGlzLnJlZ2lvblByb3ZpZGVyKCkpO1xuICAgIGNvbnN0IHNlcnZpY2UgPSBzaWduaW5nU2VydmljZSA/PyB0aGlzLnNlcnZpY2U7XG4gICAgaWYgKHNpZ25hYmxlSGVhZGVycz8uaGFzKFwieC1hbXpuLXRyYWNlLWlkXCIpIHx8IHNpZ25hYmxlSGVhZGVycz8uaGFzKFwidXNlci1hZ2VudFwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW50ZXJuYWwgY2hlY2sgKHgtYW16bi10cmFjZS1pZCwgdXNlci1hZ2VudCkgaXMgbm90IHN1cHBvcnRlZCB0byBiZSBpbmNsdWRlZCB0byBzaWduIHdpdGggQ1JULlwiKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVyc1Vuc2lnbmFibGUgPSBnZXRIZWFkZXJzVW5zaWduYWJsZSh1bnNpZ25hYmxlSGVhZGVycywgc2lnbmFibGVIZWFkZXJzKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWxnb3JpdGhtOiB0aGlzLnNpZ25pbmdBbGdvcml0aG0sXG4gICAgICBzaWduYXR1cmVfdHlwZTogdmlhSGVhZGVyXG4gICAgICAgID8gY3J0QXV0aC5Bd3NTaWduYXR1cmVUeXBlLkh0dHBSZXF1ZXN0VmlhSGVhZGVyc1xuICAgICAgICA6IGNydEF1dGguQXdzU2lnbmF0dXJlVHlwZS5IdHRwUmVxdWVzdFZpYVF1ZXJ5UGFyYW1zLFxuICAgICAgcHJvdmlkZXI6IHNkazJjcnRDcmVkZW50aWFsc1Byb3ZpZGVyKGNyZWRlbnRpYWxzKSxcbiAgICAgIHJlZ2lvbjogcmVnaW9uLFxuICAgICAgc2VydmljZTogc2VydmljZSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHNpZ25pbmdEYXRlKSxcbiAgICAgIGhlYWRlcl9ibGFja2xpc3Q6IGhlYWRlcnNVbnNpZ25hYmxlLFxuICAgICAgdXNlX2RvdWJsZV91cmlfZW5jb2RlOiB0aGlzLnVyaUVzY2FwZVBhdGgsXG4gICAgICAvKiBBbHdheXMgc2V0IHRoZSBib2R5IHZhbHVlIGJ5IHRoZSByZXN1bHQgZnJvbSBTREsgKi9cbiAgICAgIHNpZ25lZF9ib2R5X3ZhbHVlOiBwYXlsb2FkSGFzaCxcbiAgICAgIHNpZ25lZF9ib2R5X2hlYWRlcjpcbiAgICAgICAgdGhpcy5hcHBseUNoZWNrc3VtICYmIHZpYUhlYWRlclxuICAgICAgICAgID8gY3J0QXV0aC5Bd3NTaWduZWRCb2R5SGVhZGVyVHlwZS5YQW16Q29udGVudFNoYTI1NlxuICAgICAgICAgIDogY3J0QXV0aC5Bd3NTaWduZWRCb2R5SGVhZGVyVHlwZS5Ob25lLFxuICAgICAgZXhwaXJhdGlvbl9pbl9zZWNvbmRzOiBleHBpcmVzSW4sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVzaWduKG9yaWdpbmFsUmVxdWVzdDogSHR0cFJlcXVlc3QsIG9wdGlvbnM6IFJlcXVlc3RQcmVzaWduaW5nQXJndW1lbnRzID0ge30pOiBQcm9taXNlPEh0dHBSZXF1ZXN0PiB7XG4gICAgaWYgKG9wdGlvbnMuZXhwaXJlc0luICYmIG9wdGlvbnMuZXhwaXJlc0luID4gTUFYX1BSRVNJR05FRF9UVEwpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgXCJTaWduYXR1cmUgdmVyc2lvbiA0IHByZXNpZ25lZCBVUkxzXCIgKyBcIiBtdXN0IGhhdmUgYW4gZXhwaXJhdGlvbiBkYXRlIGxlc3MgdGhhbiBvbmUgd2VlayBpblwiICsgXCIgdGhlIGZ1dHVyZVwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbW92ZUhlYWRlcnNUb1F1ZXJ5KHByZXBhcmVSZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCkpO1xuXG4gICAgY29uc3QgY3J0U2lnbmVkUmVxdWVzdCA9IGF3YWl0IHRoaXMuc2lnblJlcXVlc3QoXG4gICAgICByZXF1ZXN0LFxuICAgICAgYXdhaXQgdGhpcy5vcHRpb25zMmNydENvbmZpZ3VyZShcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZmFsc2UgLyogdmlhSGVhZGVyICovLFxuICAgICAgICBhd2FpdCBnZXRQYXlsb2FkSGFzaChvcmlnaW5hbFJlcXVlc3QsIHRoaXMuc2hhMjU2KSxcbiAgICAgICAgb3B0aW9ucy5leHBpcmVzSW4gPyBvcHRpb25zLmV4cGlyZXNJbiA6IDM2MDBcbiAgICAgIClcbiAgICApO1xuICAgIHJlcXVlc3QucXVlcnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW0oY3J0U2lnbmVkUmVxdWVzdC5wYXRoKTtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaWduKHRvU2lnbjogSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0U2lnbmluZ0FyZ3VtZW50cyk6IFByb21pc2U8SHR0cFJlcXVlc3Q+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gcHJlcGFyZVJlcXVlc3QodG9TaWduKTtcbiAgICBjb25zdCBjcnRTaWduZWRSZXF1ZXN0ID0gYXdhaXQgdGhpcy5zaWduUmVxdWVzdChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMyY3J0Q29uZmlndXJlKG9wdGlvbnMsIHRydWUgLyogdmlhSGVhZGVyICovLCBhd2FpdCBnZXRQYXlsb2FkSGFzaCh0b1NpZ24sIHRoaXMuc2hhMjU2KSlcbiAgICApO1xuICAgIHJlcXVlc3QuaGVhZGVycyA9IGNydFNpZ25lZFJlcXVlc3QuaGVhZGVycy5fZmxhdHRlbigpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7IC4uLmFjYywgW2tleV06IHZhbHVlIH0pLCB7fSk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICAvKiBHZXQgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZnJvbSBjcnRQYXRoICovXG4gIHByaXZhdGUgZ2V0UXVlcnlQYXJhbShjcnRQYXRoOiBzdHJpbmcpOiBRdWVyeVBhcmFtZXRlckJhZyB7XG4gICAgY29uc3Qgc3RhcnQgPSBjcnRQYXRoLnNlYXJjaCgvXFw/Lyk7XG4gICAgY29uc3Qgc3RhcnRIYXNoID0gY3J0UGF0aC5zZWFyY2goL1xcIy8pO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0SGFzaCA9PSAtMSA/IHVuZGVmaW5lZCA6IHN0YXJ0SGFzaDtcbiAgICBjb25zdCBxdWVyeVBhcmFtID0ge30gYXMgUXVlcnlQYXJhbWV0ZXJCYWc7XG4gICAgaWYgKHN0YXJ0ID09IC0xKSB7XG4gICAgICByZXR1cm4gcXVlcnlQYXJhbTtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBjcnRQYXRoLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKTtcbiAgICByZXR1cm4gcGFyc2VRdWVyeVN0cmluZyhxdWVyeVN0cmluZyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNpZ25SZXF1ZXN0KFxuICAgIHJlcXVlc3RUb1NpZ246IEh0dHBSZXF1ZXN0LFxuICAgIGNydENvbmZpZzogY3J0QXV0aC5Bd3NTaWduaW5nQ29uZmlnXG4gICk6IFByb21pc2U8Y3J0SHR0cC5IdHRwUmVxdWVzdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBzZGtIdHRwUmVxdWVzdDJjcnRIdHRwUmVxdWVzdChyZXF1ZXN0VG9TaWduKTtcbiAgICAvLyBpZiAocmVxdWVzdFRvU2lnbi5oZWFkZXJzW1RPS0VOX0hFQURFUl0pXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBjcnRBdXRoLmF3c19zaWduX3JlcXVlc3QocmVxdWVzdCwgY3J0Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGVzdC1vbmx5IEFQSSB1c2VkIGZvciBjcm9zcy1saWJyYXJ5IHNpZ25pbmcgdmVyaWZpY2F0aW9uIHRlc3RzLiBWZXJpZnkgc2lnbi5cbiAgICpcbiAgICogVmVyaWZpZXM6XG4gICAqICAoMSkgVGhlIGNhbm9uaWNhbCByZXF1ZXN0IGdlbmVyYXRlZCBkdXJpbmcgc2lndjRhIHNpZ25pbmcgb2YgdGhlIHJlcXVlc3QgbWF0Y2hlcyB3aGF0IGlzIHBhc3NlZCBpblxuICAgKiAgKDIpIFRoZSBzaWduYXR1cmUgcGFzc2VkIGluIGlzIGEgdmFsaWQgRUNEU0Egc2lnbmF0dXJlIG9mIHRoZSBoYXNoZWQgc3RyaW5nLXRvLXNpZ24gZGVyaXZlZCBmcm9tIHRoZVxuICAgKiAgY2Fub25pY2FsIHJlcXVlc3RcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIG9yaWdpbmFsIHJlcXVlc3QgdXNlZCBmb3Igc2lnbmluZ1xuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBhY3R1YWwgc2lnbmF0dXJlIGNvbXB1dGVkIGZyb20gYSBwcmV2aW91cyBzaWduaW5nIG9mIHRoZSBzaWduYWJsZVxuICAgKiBAcGFyYW0gZXhwZWN0ZWRDYW5vbmljYWxSZXF1ZXN0IGV4cGVjdGVkIHJlc3VsdCB3aGVuIGJ1aWxkaW5nIHRoZSBjYW5vbmljYWwgcmVxdWVzdFxuICAgKiBAcGFyYW0gZWNjUHViS2V5WCB0aGUgeCBjb29yZGluYXRlIG9mIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUgZWNjIGtleSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gZWNjUHViS2V5WSB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUgZWNjIGtleSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMgdXNlZCBmb3Igc2lnbmluZ1xuICAgKlxuICAgKiBAcmV0dXJuIFRydWUsIGlmIHRoZSB2ZXJpZmljYXRpb24gc3VjY2VlZC4gT3RoZXJ3aXNlLCBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnlTaWd2NGFTaWduaW5nKFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LFxuICAgIHNpZ25hdHVyZTogc3RyaW5nLFxuICAgIGV4cGVjdGVkQ2Fub25pY2FsUmVxdWVzdDogc3RyaW5nLFxuICAgIGVjY1B1YktleVg6IHN0cmluZyxcbiAgICBlY2NQdWJLZXlZOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMgPSB7fVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZGtSZXF1ZXN0ID0gcHJlcGFyZVJlcXVlc3QocmVxdWVzdCk7XG4gICAgY29uc3QgY3J0UmVxdWVzdCA9IHNka0h0dHBSZXF1ZXN0MmNydEh0dHBSZXF1ZXN0KHNka1JlcXVlc3QpO1xuICAgIGNvbnN0IHBheWxvYWRIYXNoID0gYXdhaXQgZ2V0UGF5bG9hZEhhc2gocmVxdWVzdCwgdGhpcy5zaGEyNTYpO1xuICAgIGNvbnN0IGNydENvbmZpZyA9IGF3YWl0IHRoaXMub3B0aW9uczJjcnRDb25maWd1cmUob3B0aW9ucywgdHJ1ZSAvKiB2aWFIZWFkZXIgKi8sIHBheWxvYWRIYXNoKTtcbiAgICByZXR1cm4gY3J0QXV0aC5hd3NfdmVyaWZ5X3NpZ3Y0YV9zaWduaW5nKFxuICAgICAgY3J0UmVxdWVzdCxcbiAgICAgIGNydENvbmZpZyxcbiAgICAgIGV4cGVjdGVkQ2Fub25pY2FsUmVxdWVzdCxcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGVjY1B1YktleVgsXG4gICAgICBlY2NQdWJLZXlZXG4gICAgKTtcbiAgfVxuXG4gIC8qIFZlcmlmeSBwcmVzaWduICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnlTaWd2NGFQcmVTaWduaW5nKFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LFxuICAgIHNpZ25hdHVyZTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB8IG51bGwsXG4gICAgZXhwZWN0ZWRDYW5vbmljYWxSZXF1ZXN0OiBzdHJpbmcsXG4gICAgZWNjUHViS2V5WDogc3RyaW5nLFxuICAgIGVjY1B1YktleVk6IHN0cmluZyxcbiAgICBvcHRpb25zOiBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0eXBlb2Ygc2lnbmF0dXJlICE9IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgc2RrUmVxdWVzdCA9IHByZXBhcmVSZXF1ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IGNydFJlcXVlc3QgPSBzZGtIdHRwUmVxdWVzdDJjcnRIdHRwUmVxdWVzdChzZGtSZXF1ZXN0KTtcbiAgICBjb25zdCBjcnRDb25maWcgPSBhd2FpdCB0aGlzLm9wdGlvbnMyY3J0Q29uZmlndXJlKFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGZhbHNlIC8qIHZpYUhlYWRlciAqLyxcbiAgICAgIGF3YWl0IGdldFBheWxvYWRIYXNoKHJlcXVlc3QsIHRoaXMuc2hhMjU2KSxcbiAgICAgIG9wdGlvbnMuZXhwaXJlc0luID8gb3B0aW9ucy5leHBpcmVzSW4gOiAzNjAwXG4gICAgKTtcbiAgICByZXR1cm4gY3J0QXV0aC5hd3NfdmVyaWZ5X3NpZ3Y0YV9zaWduaW5nKFxuICAgICAgY3J0UmVxdWVzdCxcbiAgICAgIGNydENvbmZpZyxcbiAgICAgIGV4cGVjdGVkQ2Fub25pY2FsUmVxdWVzdCxcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGVjY1B1YktleVgsXG4gICAgICBlY2NQdWJLZXlZXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZGsyY3J0Q3JlZGVudGlhbHNQcm92aWRlcihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBjcnRBdXRoLkF3c0NyZWRlbnRpYWxzUHJvdmlkZXIge1xuICByZXR1cm4gY3J0QXV0aC5Bd3NDcmVkZW50aWFsc1Byb3ZpZGVyLm5ld1N0YXRpYyhcbiAgICBjcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICBjcmVkZW50aWFscy5zZWNyZXRBY2Nlc3NLZXksXG4gICAgY3JlZGVudGlhbHMuc2Vzc2lvblRva2VuXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEhlYWRlcnNVbnNpZ25hYmxlKHVuc2lnbmFibGVIZWFkZXJzPzogU2V0PHN0cmluZz4sIHNpZ25hYmxlSGVhZGVycz86IFNldDxzdHJpbmc+KTogc3RyaW5nW10ge1xuICBpZiAoIXVuc2lnbmFibGVIZWFkZXJzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICghc2lnbmFibGVIZWFkZXJzKSB7XG4gICAgcmV0dXJuIFsuLi51bnNpZ25hYmxlSGVhZGVyc107XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gbmV3IFNldChbLi4udW5zaWduYWJsZUhlYWRlcnNdKTtcbiAgZm9yIChsZXQgaXQgPSBzaWduYWJsZUhlYWRlcnMudmFsdWVzKCksIHZhbCA9IG51bGw7ICh2YWwgPSBpdC5uZXh0KCkudmFsdWUpOyApIHtcbiAgICBpZiAocmVzdWx0Lmhhcyh2YWwpKSB7XG4gICAgICByZXN1bHQuZGVsZXRlKHZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ucmVzdWx0XTtcbn1cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MAX_PRESIGNED_TTL = exports.KEY_TYPE_IDENTIFIER = exports.MAX_CACHE_SIZE = exports.UNSIGNED_PAYLOAD = exports.EVENT_ALGORITHM_IDENTIFIER = exports.ALGORITHM_IDENTIFIER_V4A = exports.ALGORITHM_IDENTIFIER = exports.UNSIGNABLE_PATTERNS = exports.SEC_HEADER_PATTERN = exports.PROXY_HEADER_PATTERN = exports.ALWAYS_UNSIGNABLE_HEADERS = exports.HOST_HEADER = exports.TOKEN_HEADER = exports.SHA256_HEADER = exports.SIGNATURE_HEADER = exports.GENERATED_HEADERS = exports.DATE_HEADER = exports.AMZ_DATE_HEADER = exports.AUTH_HEADER = exports.REGION_SET_PARAM = exports.TOKEN_QUERY_PARAM = exports.SIGNATURE_QUERY_PARAM = exports.EXPIRES_QUERY_PARAM = exports.SIGNED_HEADERS_QUERY_PARAM = exports.AMZ_DATE_QUERY_PARAM = exports.CREDENTIAL_QUERY_PARAM = exports.ALGORITHM_QUERY_PARAM = void 0;
4
+ exports.ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm";
5
+ exports.CREDENTIAL_QUERY_PARAM = "X-Amz-Credential";
6
+ exports.AMZ_DATE_QUERY_PARAM = "X-Amz-Date";
7
+ exports.SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders";
8
+ exports.EXPIRES_QUERY_PARAM = "X-Amz-Expires";
9
+ exports.SIGNATURE_QUERY_PARAM = "X-Amz-Signature";
10
+ exports.TOKEN_QUERY_PARAM = "X-Amz-Security-Token";
11
+ exports.REGION_SET_PARAM = "X-Amz-Region-Set";
12
+ exports.AUTH_HEADER = "authorization";
13
+ exports.AMZ_DATE_HEADER = exports.AMZ_DATE_QUERY_PARAM.toLowerCase();
14
+ exports.DATE_HEADER = "date";
15
+ exports.GENERATED_HEADERS = [exports.AUTH_HEADER, exports.AMZ_DATE_HEADER, exports.DATE_HEADER];
16
+ exports.SIGNATURE_HEADER = exports.SIGNATURE_QUERY_PARAM.toLowerCase();
17
+ exports.SHA256_HEADER = "x-amz-content-sha256";
18
+ exports.TOKEN_HEADER = exports.TOKEN_QUERY_PARAM.toLowerCase();
19
+ exports.HOST_HEADER = "host";
20
+ exports.ALWAYS_UNSIGNABLE_HEADERS = {
21
+ authorization: true,
22
+ "cache-control": true,
23
+ connection: true,
24
+ expect: true,
25
+ from: true,
26
+ "keep-alive": true,
27
+ "max-forwards": true,
28
+ pragma: true,
29
+ referer: true,
30
+ te: true,
31
+ trailer: true,
32
+ "transfer-encoding": true,
33
+ upgrade: true,
34
+ "user-agent": true,
35
+ "x-amzn-trace-id": true,
36
+ };
37
+ exports.PROXY_HEADER_PATTERN = /^proxy-/;
38
+ exports.SEC_HEADER_PATTERN = /^sec-/;
39
+ exports.UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];
40
+ exports.ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256";
41
+ exports.ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256";
42
+ exports.EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD";
43
+ exports.UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD";
44
+ exports.MAX_CACHE_SIZE = 50;
45
+ exports.KEY_TYPE_IDENTIFIER = "aws4_request";
46
+ exports.MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQzFDLFFBQUEsc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7QUFDNUMsUUFBQSxvQkFBb0IsR0FBRyxZQUFZLENBQUM7QUFDcEMsUUFBQSwwQkFBMEIsR0FBRyxxQkFBcUIsQ0FBQztBQUNuRCxRQUFBLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztBQUN0QyxRQUFBLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQzFDLFFBQUEsaUJBQWlCLEdBQUcsc0JBQXNCLENBQUM7QUFDM0MsUUFBQSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUV0QyxRQUFBLFdBQVcsR0FBRyxlQUFlLENBQUM7QUFDOUIsUUFBQSxlQUFlLEdBQUcsNEJBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDckQsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxtQkFBVyxFQUFFLHVCQUFlLEVBQUUsbUJBQVcsQ0FBQyxDQUFDO0FBQ2hFLFFBQUEsZ0JBQWdCLEdBQUcsNkJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdkQsUUFBQSxhQUFhLEdBQUcsc0JBQXNCLENBQUM7QUFDdkMsUUFBQSxZQUFZLEdBQUcseUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDL0MsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBRXJCLFFBQUEseUJBQXlCLEdBQUc7SUFDdkMsYUFBYSxFQUFFLElBQUk7SUFDbkIsZUFBZSxFQUFFLElBQUk7SUFDckIsVUFBVSxFQUFFLElBQUk7SUFDaEIsTUFBTSxFQUFFLElBQUk7SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLElBQUk7SUFDYixFQUFFLEVBQUUsSUFBSTtJQUNSLE9BQU8sRUFBRSxJQUFJO0lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtJQUN6QixPQUFPLEVBQUUsSUFBSTtJQUNiLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO0FBRWpDLFFBQUEsa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBRTdCLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFN0MsUUFBQSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQztBQUMxQyxRQUFBLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRXBELFFBQUEsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7QUFFeEQsUUFBQSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUV0QyxRQUFBLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDcEIsUUFBQSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFFckMsUUFBQSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUxHT1JJVEhNX1FVRVJZX1BBUkFNID0gXCJYLUFtei1BbGdvcml0aG1cIjtcbmV4cG9ydCBjb25zdCBDUkVERU5USUFMX1FVRVJZX1BBUkFNID0gXCJYLUFtei1DcmVkZW50aWFsXCI7XG5leHBvcnQgY29uc3QgQU1aX0RBVEVfUVVFUllfUEFSQU0gPSBcIlgtQW16LURhdGVcIjtcbmV4cG9ydCBjb25zdCBTSUdORURfSEVBREVSU19RVUVSWV9QQVJBTSA9IFwiWC1BbXotU2lnbmVkSGVhZGVyc1wiO1xuZXhwb3J0IGNvbnN0IEVYUElSRVNfUVVFUllfUEFSQU0gPSBcIlgtQW16LUV4cGlyZXNcIjtcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfUVVFUllfUEFSQU0gPSBcIlgtQW16LVNpZ25hdHVyZVwiO1xuZXhwb3J0IGNvbnN0IFRPS0VOX1FVRVJZX1BBUkFNID0gXCJYLUFtei1TZWN1cml0eS1Ub2tlblwiO1xuZXhwb3J0IGNvbnN0IFJFR0lPTl9TRVRfUEFSQU0gPSBcIlgtQW16LVJlZ2lvbi1TZXRcIjtcblxuZXhwb3J0IGNvbnN0IEFVVEhfSEVBREVSID0gXCJhdXRob3JpemF0aW9uXCI7XG5leHBvcnQgY29uc3QgQU1aX0RBVEVfSEVBREVSID0gQU1aX0RBVEVfUVVFUllfUEFSQU0udG9Mb3dlckNhc2UoKTtcbmV4cG9ydCBjb25zdCBEQVRFX0hFQURFUiA9IFwiZGF0ZVwiO1xuZXhwb3J0IGNvbnN0IEdFTkVSQVRFRF9IRUFERVJTID0gW0FVVEhfSEVBREVSLCBBTVpfREFURV9IRUFERVIsIERBVEVfSEVBREVSXTtcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfSEVBREVSID0gU0lHTkFUVVJFX1FVRVJZX1BBUkFNLnRvTG93ZXJDYXNlKCk7XG5leHBvcnQgY29uc3QgU0hBMjU2X0hFQURFUiA9IFwieC1hbXotY29udGVudC1zaGEyNTZcIjtcbmV4cG9ydCBjb25zdCBUT0tFTl9IRUFERVIgPSBUT0tFTl9RVUVSWV9QQVJBTS50b0xvd2VyQ2FzZSgpO1xuZXhwb3J0IGNvbnN0IEhPU1RfSEVBREVSID0gXCJob3N0XCI7XG5cbmV4cG9ydCBjb25zdCBBTFdBWVNfVU5TSUdOQUJMRV9IRUFERVJTID0ge1xuICBhdXRob3JpemF0aW9uOiB0cnVlLFxuICBcImNhY2hlLWNvbnRyb2xcIjogdHJ1ZSxcbiAgY29ubmVjdGlvbjogdHJ1ZSxcbiAgZXhwZWN0OiB0cnVlLFxuICBmcm9tOiB0cnVlLFxuICBcImtlZXAtYWxpdmVcIjogdHJ1ZSxcbiAgXCJtYXgtZm9yd2FyZHNcIjogdHJ1ZSxcbiAgcHJhZ21hOiB0cnVlLFxuICByZWZlcmVyOiB0cnVlLFxuICB0ZTogdHJ1ZSxcbiAgdHJhaWxlcjogdHJ1ZSxcbiAgXCJ0cmFuc2Zlci1lbmNvZGluZ1wiOiB0cnVlLFxuICB1cGdyYWRlOiB0cnVlLFxuICBcInVzZXItYWdlbnRcIjogdHJ1ZSxcbiAgXCJ4LWFtem4tdHJhY2UtaWRcIjogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBQUk9YWV9IRUFERVJfUEFUVEVSTiA9IC9ecHJveHktLztcblxuZXhwb3J0IGNvbnN0IFNFQ19IRUFERVJfUEFUVEVSTiA9IC9ec2VjLS87XG5cbmV4cG9ydCBjb25zdCBVTlNJR05BQkxFX1BBVFRFUk5TID0gWy9ecHJveHktL2ksIC9ec2VjLS9pXTtcblxuZXhwb3J0IGNvbnN0IEFMR09SSVRITV9JREVOVElGSUVSID0gXCJBV1M0LUhNQUMtU0hBMjU2XCI7XG5leHBvcnQgY29uc3QgQUxHT1JJVEhNX0lERU5USUZJRVJfVjRBID0gXCJBV1M0LUVDRFNBLVAyNTYtU0hBMjU2XCI7XG5cbmV4cG9ydCBjb25zdCBFVkVOVF9BTEdPUklUSE1fSURFTlRJRklFUiA9IFwiQVdTNC1ITUFDLVNIQTI1Ni1QQVlMT0FEXCI7XG5cbmV4cG9ydCBjb25zdCBVTlNJR05FRF9QQVlMT0FEID0gXCJVTlNJR05FRC1QQVlMT0FEXCI7XG5cbmV4cG9ydCBjb25zdCBNQVhfQ0FDSEVfU0laRSA9IDUwO1xuZXhwb3J0IGNvbnN0IEtFWV9UWVBFX0lERU5USUZJRVIgPSBcImF3czRfcmVxdWVzdFwiO1xuXG5leHBvcnQgY29uc3QgTUFYX1BSRVNJR05FRF9UVEwgPSA2MCAqIDYwICogMjQgKiA3O1xuIl19
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteHeader = exports.getHeaderValue = exports.hasHeader = void 0;
4
+ function hasHeader(soughtHeader, headers) {
5
+ soughtHeader = soughtHeader.toLowerCase();
6
+ for (const headerName of Object.keys(headers)) {
7
+ if (soughtHeader === headerName.toLowerCase()) {
8
+ return true;
9
+ }
10
+ }
11
+ return false;
12
+ }
13
+ exports.hasHeader = hasHeader;
14
+ function getHeaderValue(soughtHeader, headers) {
15
+ soughtHeader = soughtHeader.toLowerCase();
16
+ for (const headerName of Object.keys(headers)) {
17
+ if (soughtHeader === headerName.toLowerCase()) {
18
+ return headers[headerName];
19
+ }
20
+ }
21
+ return undefined;
22
+ }
23
+ exports.getHeaderValue = getHeaderValue;
24
+ function deleteHeader(soughtHeader, headers) {
25
+ soughtHeader = soughtHeader.toLowerCase();
26
+ for (const headerName of Object.keys(headers)) {
27
+ if (soughtHeader === headerName.toLowerCase()) {
28
+ delete headers[headerName];
29
+ }
30
+ }
31
+ }
32
+ exports.deleteHeader = deleteHeader;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWFkZXJVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLFNBQWdCLFNBQVMsQ0FBQyxZQUFvQixFQUFFLE9BQWtCO0lBQ2hFLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzdDLElBQUksWUFBWSxLQUFLLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFURCw4QkFTQztBQUdELFNBQWdCLGNBQWMsQ0FBQyxZQUFvQixFQUFFLE9BQWtCO0lBQ3JFLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzdDLElBQUksWUFBWSxLQUFLLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM3QyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1QjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQVRELHdDQVNDO0FBR0QsU0FBZ0IsWUFBWSxDQUFDLFlBQW9CLEVBQUUsT0FBa0I7SUFDbkUsWUFBWSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDN0MsSUFBSSxZQUFZLEtBQUssVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzdDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVCO0tBQ0Y7QUFDSCxDQUFDO0FBUEQsb0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWFkZXJCYWcgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0hlYWRlcihzb3VnaHRIZWFkZXI6IHN0cmluZywgaGVhZGVyczogSGVhZGVyQmFnKTogYm9vbGVhbiB7XG4gIHNvdWdodEhlYWRlciA9IHNvdWdodEhlYWRlci50b0xvd2VyQ2FzZSgpO1xuICBmb3IgKGNvbnN0IGhlYWRlck5hbWUgb2YgT2JqZWN0LmtleXMoaGVhZGVycykpIHtcbiAgICBpZiAoc291Z2h0SGVhZGVyID09PSBoZWFkZXJOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyogR2V0IHRoZSB2YWx1ZSBvZiBvbmUgcmVxdWVzdCBoZWFkZXIsIGlnbm9yZSB0aGUgY2FzZS4gUmV0dXJuIHN0cmluZyBpZiBoZWFkZXIgaXMgaW4gdGhlIGhlYWRlcnMsIGVsc2UgcmV0dXJuIHVuZGVmaW5lZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlclZhbHVlKHNvdWdodEhlYWRlcjogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJCYWcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzb3VnaHRIZWFkZXIgPSBzb3VnaHRIZWFkZXIudG9Mb3dlckNhc2UoKTtcbiAgZm9yIChjb25zdCBoZWFkZXJOYW1lIG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7XG4gICAgaWYgKHNvdWdodEhlYWRlciA9PT0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gaGVhZGVyc1toZWFkZXJOYW1lXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiBEZWxldGUgdGhlIG9uZSByZXF1ZXN0IGhlYWRlciwgaWdub3JlIHRoZSBjYXNlLiBEbyBub3RoaW5nIGlmIGl0J3Mgbm90IHRoZXJlICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlSGVhZGVyKHNvdWdodEhlYWRlcjogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJCYWcpIHtcbiAgc291Z2h0SGVhZGVyID0gc291Z2h0SGVhZGVyLnRvTG93ZXJDYXNlKCk7XG4gIGZvciAoY29uc3QgaGVhZGVyTmFtZSBvZiBPYmplY3Qua2V5cyhoZWFkZXJzKSkge1xuICAgIGlmIChzb3VnaHRIZWFkZXIgPT09IGhlYWRlck5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgZGVsZXRlIGhlYWRlcnNbaGVhZGVyTmFtZV07XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -2,4 +2,4 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./CrtSignerV4"), exports);
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ3J0U2lnbmVyVjRcIjtcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ3J0U2lnbmVyVjRcIjtcbiJdfQ==