@aws-sdk/signature-v4-crt 3.180.0 → 3.183.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist-es/CrtSignerV4.js +83 -182
- package/dist-es/constants.js +27 -27
- package/dist-es/headerUtil.js +9 -43
- package/dist-es/suite.fixture.js +5 -5
- package/package.json +10 -10
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.183.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.182.0...v3.183.0) (2022-10-03)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @aws-sdk/signature-v4-crt
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
# [3.180.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.179.0...v3.180.0) (2022-09-27)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @aws-sdk/signature-v4-crt
|
package/dist-es/CrtSignerV4.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __assign, __awaiter, __generator, __read, __spreadArray } from "tslib";
|
|
2
1
|
import { parseQueryString } from "@aws-sdk/querystring-parser";
|
|
3
2
|
import { getCanonicalQuery, getPayloadHash, moveHeadersToQuery, prepareRequest, } from "@aws-sdk/signature-v4";
|
|
4
3
|
import { normalizeProvider } from "@aws-sdk/util-middleware";
|
|
@@ -7,14 +6,13 @@ import { MAX_PRESIGNED_TTL, SHA256_HEADER } from "./constants";
|
|
|
7
6
|
import { deleteHeader } from "./headerUtil";
|
|
8
7
|
function sdkHttpRequest2crtHttpRequest(sdkRequest) {
|
|
9
8
|
deleteHeader(SHA256_HEADER, sdkRequest.headers);
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const headersArray = Object.entries(sdkRequest.headers);
|
|
10
|
+
const crtHttpHeaders = new crtHttp.HttpHeaders(headersArray);
|
|
11
|
+
const queryString = getCanonicalQuery(sdkRequest);
|
|
13
12
|
return new crtHttp.HttpRequest(sdkRequest.method, sdkRequest.path + "?" + queryString, crtHttpHeaders);
|
|
14
13
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var credentials = _a.credentials, region = _a.region, service = _a.service, sha256 = _a.sha256, _b = _a.applyChecksum, applyChecksum = _b === void 0 ? true : _b, _c = _a.uriEscapePath, uriEscapePath = _c === void 0 ? true : _c, _d = _a.signingAlgorithm, signingAlgorithm = _d === void 0 ? crtAuth.AwsSigningAlgorithm.SigV4 : _d;
|
|
14
|
+
export class CrtSignerV4 {
|
|
15
|
+
constructor({ credentials, region, service, sha256, applyChecksum = true, uriEscapePath = true, signingAlgorithm = crtAuth.AwsSigningAlgorithm.SigV4, }) {
|
|
18
16
|
this.service = service;
|
|
19
17
|
this.sha256 = sha256;
|
|
20
18
|
this.uriEscapePath = uriEscapePath;
|
|
@@ -24,181 +22,84 @@ var CrtSignerV4 = (function () {
|
|
|
24
22
|
this.credentialProvider = normalizeProvider(credentials);
|
|
25
23
|
crtIO.enable_logging(crtIO.LogLevel.ERROR);
|
|
26
24
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
74
|
-
var request, crtSignedRequest, _a, _b, _c, _d;
|
|
75
|
-
return __generator(this, function (_e) {
|
|
76
|
-
switch (_e.label) {
|
|
77
|
-
case 0:
|
|
78
|
-
if (options.expiresIn && options.expiresIn > MAX_PRESIGNED_TTL) {
|
|
79
|
-
return [2, Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future")];
|
|
80
|
-
}
|
|
81
|
-
request = moveHeadersToQuery(prepareRequest(originalRequest));
|
|
82
|
-
_a = this.signRequest;
|
|
83
|
-
_b = [request];
|
|
84
|
-
_c = this.options2crtConfigure;
|
|
85
|
-
_d = [options,
|
|
86
|
-
false];
|
|
87
|
-
return [4, getPayloadHash(originalRequest, this.sha256)];
|
|
88
|
-
case 1: return [4, _c.apply(this, _d.concat([_e.sent(), options.expiresIn ? options.expiresIn : 3600]))];
|
|
89
|
-
case 2: return [4, _a.apply(this, _b.concat([_e.sent()]))];
|
|
90
|
-
case 3:
|
|
91
|
-
crtSignedRequest = _e.sent();
|
|
92
|
-
request.query = this.getQueryParam(crtSignedRequest.path);
|
|
93
|
-
return [2, request];
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
};
|
|
98
|
-
CrtSignerV4.prototype.sign = function (toSign, options) {
|
|
99
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
100
|
-
var request, crtSignedRequest, _a, _b, _c, _d;
|
|
101
|
-
return __generator(this, function (_e) {
|
|
102
|
-
switch (_e.label) {
|
|
103
|
-
case 0:
|
|
104
|
-
request = prepareRequest(toSign);
|
|
105
|
-
_a = this.signRequest;
|
|
106
|
-
_b = [request];
|
|
107
|
-
_c = this.options2crtConfigure;
|
|
108
|
-
_d = [options, true];
|
|
109
|
-
return [4, getPayloadHash(toSign, this.sha256)];
|
|
110
|
-
case 1: return [4, _c.apply(this, _d.concat([_e.sent()]))];
|
|
111
|
-
case 2: return [4, _a.apply(this, _b.concat([_e.sent()]))];
|
|
112
|
-
case 3:
|
|
113
|
-
crtSignedRequest = _e.sent();
|
|
114
|
-
request.headers = crtSignedRequest.headers._flatten().reduce(function (acc, _a) {
|
|
115
|
-
var _b;
|
|
116
|
-
var _c = __read(_a, 2), key = _c[0], value = _c[1];
|
|
117
|
-
return (__assign(__assign({}, acc), (_b = {}, _b[key] = value, _b)));
|
|
118
|
-
}, {});
|
|
119
|
-
return [2, request];
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
});
|
|
123
|
-
};
|
|
124
|
-
CrtSignerV4.prototype.getQueryParam = function (crtPath) {
|
|
125
|
-
var start = crtPath.search(/\?/);
|
|
126
|
-
var startHash = crtPath.search(/\#/);
|
|
127
|
-
var end = startHash == -1 ? undefined : startHash;
|
|
128
|
-
var queryParam = {};
|
|
25
|
+
async options2crtConfigure({ signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}, viaHeader, payloadHash, expiresIn) {
|
|
26
|
+
const credentials = await this.credentialProvider();
|
|
27
|
+
const region = signingRegion ?? (await this.regionProvider());
|
|
28
|
+
const service = signingService ?? this.service;
|
|
29
|
+
if (signableHeaders?.has("x-amzn-trace-id") || signableHeaders?.has("user-agent")) {
|
|
30
|
+
throw new Error("internal check (x-amzn-trace-id, user-agent) is not supported to be included to sign with CRT.");
|
|
31
|
+
}
|
|
32
|
+
const headersUnsignable = getHeadersUnsignable(unsignableHeaders, signableHeaders);
|
|
33
|
+
return {
|
|
34
|
+
algorithm: this.signingAlgorithm,
|
|
35
|
+
signature_type: viaHeader
|
|
36
|
+
? crtAuth.AwsSignatureType.HttpRequestViaHeaders
|
|
37
|
+
: crtAuth.AwsSignatureType.HttpRequestViaQueryParams,
|
|
38
|
+
provider: sdk2crtCredentialsProvider(credentials),
|
|
39
|
+
region: region,
|
|
40
|
+
service: service,
|
|
41
|
+
date: new Date(signingDate),
|
|
42
|
+
header_blacklist: headersUnsignable,
|
|
43
|
+
use_double_uri_encode: this.uriEscapePath,
|
|
44
|
+
signed_body_value: payloadHash,
|
|
45
|
+
signed_body_header: this.applyChecksum && viaHeader
|
|
46
|
+
? crtAuth.AwsSignedBodyHeaderType.XAmzContentSha256
|
|
47
|
+
: crtAuth.AwsSignedBodyHeaderType.None,
|
|
48
|
+
expiration_in_seconds: expiresIn,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async presign(originalRequest, options = {}) {
|
|
52
|
+
if (options.expiresIn && options.expiresIn > MAX_PRESIGNED_TTL) {
|
|
53
|
+
return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future");
|
|
54
|
+
}
|
|
55
|
+
const request = moveHeadersToQuery(prepareRequest(originalRequest));
|
|
56
|
+
const crtSignedRequest = await this.signRequest(request, await this.options2crtConfigure(options, false, await getPayloadHash(originalRequest, this.sha256), options.expiresIn ? options.expiresIn : 3600));
|
|
57
|
+
request.query = this.getQueryParam(crtSignedRequest.path);
|
|
58
|
+
return request;
|
|
59
|
+
}
|
|
60
|
+
async sign(toSign, options) {
|
|
61
|
+
const request = prepareRequest(toSign);
|
|
62
|
+
const crtSignedRequest = await this.signRequest(request, await this.options2crtConfigure(options, true, await getPayloadHash(toSign, this.sha256)));
|
|
63
|
+
request.headers = crtSignedRequest.headers._flatten().reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
64
|
+
return request;
|
|
65
|
+
}
|
|
66
|
+
getQueryParam(crtPath) {
|
|
67
|
+
const start = crtPath.search(/\?/);
|
|
68
|
+
const startHash = crtPath.search(/\#/);
|
|
69
|
+
const end = startHash == -1 ? undefined : startHash;
|
|
70
|
+
const queryParam = {};
|
|
129
71
|
if (start == -1) {
|
|
130
72
|
return queryParam;
|
|
131
73
|
}
|
|
132
|
-
|
|
74
|
+
const queryString = crtPath.slice(start + 1, end);
|
|
133
75
|
return parseQueryString(queryString);
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
return
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
case 0:
|
|
162
|
-
sdkRequest = prepareRequest(request);
|
|
163
|
-
crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
|
|
164
|
-
return [4, getPayloadHash(request, this.sha256)];
|
|
165
|
-
case 1:
|
|
166
|
-
payloadHash = _a.sent();
|
|
167
|
-
return [4, this.options2crtConfigure(options, true, payloadHash)];
|
|
168
|
-
case 2:
|
|
169
|
-
crtConfig = _a.sent();
|
|
170
|
-
return [2, crtAuth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY)];
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
};
|
|
175
|
-
CrtSignerV4.prototype.verifySigv4aPreSigning = function (request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options) {
|
|
176
|
-
if (options === void 0) { options = {}; }
|
|
177
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
178
|
-
var sdkRequest, crtRequest, crtConfig, _a, _b;
|
|
179
|
-
return __generator(this, function (_c) {
|
|
180
|
-
switch (_c.label) {
|
|
181
|
-
case 0:
|
|
182
|
-
if (typeof signature != "string") {
|
|
183
|
-
return [2, false];
|
|
184
|
-
}
|
|
185
|
-
sdkRequest = prepareRequest(request);
|
|
186
|
-
crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
|
|
187
|
-
_a = this.options2crtConfigure;
|
|
188
|
-
_b = [options,
|
|
189
|
-
false];
|
|
190
|
-
return [4, getPayloadHash(request, this.sha256)];
|
|
191
|
-
case 1: return [4, _a.apply(this, _b.concat([_c.sent(), options.expiresIn ? options.expiresIn : 3600]))];
|
|
192
|
-
case 2:
|
|
193
|
-
crtConfig = _c.sent();
|
|
194
|
-
return [2, crtAuth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY)];
|
|
195
|
-
}
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
};
|
|
199
|
-
return CrtSignerV4;
|
|
200
|
-
}());
|
|
201
|
-
export { CrtSignerV4 };
|
|
76
|
+
}
|
|
77
|
+
async signRequest(requestToSign, crtConfig) {
|
|
78
|
+
const request = sdkHttpRequest2crtHttpRequest(requestToSign);
|
|
79
|
+
try {
|
|
80
|
+
return await crtAuth.aws_sign_request(request, crtConfig);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw new Error(error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
async verifySigv4aSigning(request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options = {}) {
|
|
87
|
+
const sdkRequest = prepareRequest(request);
|
|
88
|
+
const crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
|
|
89
|
+
const payloadHash = await getPayloadHash(request, this.sha256);
|
|
90
|
+
const crtConfig = await this.options2crtConfigure(options, true, payloadHash);
|
|
91
|
+
return crtAuth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY);
|
|
92
|
+
}
|
|
93
|
+
async verifySigv4aPreSigning(request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options = {}) {
|
|
94
|
+
if (typeof signature != "string") {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
const sdkRequest = prepareRequest(request);
|
|
98
|
+
const crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
|
|
99
|
+
const crtConfig = await this.options2crtConfigure(options, false, await getPayloadHash(request, this.sha256), options.expiresIn ? options.expiresIn : 3600);
|
|
100
|
+
return crtAuth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
202
103
|
function sdk2crtCredentialsProvider(credentials) {
|
|
203
104
|
return crtAuth.AwsCredentialsProvider.newStatic(credentials.accessKeyId, credentials.secretAccessKey, credentials.sessionToken);
|
|
204
105
|
}
|
|
@@ -207,13 +108,13 @@ function getHeadersUnsignable(unsignableHeaders, signableHeaders) {
|
|
|
207
108
|
return [];
|
|
208
109
|
}
|
|
209
110
|
if (!signableHeaders) {
|
|
210
|
-
return
|
|
111
|
+
return [...unsignableHeaders];
|
|
211
112
|
}
|
|
212
|
-
|
|
213
|
-
for (
|
|
113
|
+
const result = new Set([...unsignableHeaders]);
|
|
114
|
+
for (let it = signableHeaders.values(), val = null; (val = it.next().value);) {
|
|
214
115
|
if (result.has(val)) {
|
|
215
116
|
result.delete(val);
|
|
216
117
|
}
|
|
217
118
|
}
|
|
218
|
-
return
|
|
119
|
+
return [...result];
|
|
219
120
|
}
|
package/dist-es/constants.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
12
|
-
export
|
|
13
|
-
export
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
export
|
|
1
|
+
export const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm";
|
|
2
|
+
export const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential";
|
|
3
|
+
export const AMZ_DATE_QUERY_PARAM = "X-Amz-Date";
|
|
4
|
+
export const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders";
|
|
5
|
+
export const EXPIRES_QUERY_PARAM = "X-Amz-Expires";
|
|
6
|
+
export const SIGNATURE_QUERY_PARAM = "X-Amz-Signature";
|
|
7
|
+
export const TOKEN_QUERY_PARAM = "X-Amz-Security-Token";
|
|
8
|
+
export const REGION_SET_PARAM = "X-Amz-Region-Set";
|
|
9
|
+
export const AUTH_HEADER = "authorization";
|
|
10
|
+
export const AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();
|
|
11
|
+
export const DATE_HEADER = "date";
|
|
12
|
+
export const GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];
|
|
13
|
+
export const SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();
|
|
14
|
+
export const SHA256_HEADER = "x-amz-content-sha256";
|
|
15
|
+
export const TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();
|
|
16
|
+
export const HOST_HEADER = "host";
|
|
17
|
+
export const ALWAYS_UNSIGNABLE_HEADERS = {
|
|
18
18
|
authorization: true,
|
|
19
19
|
"cache-control": true,
|
|
20
20
|
connection: true,
|
|
@@ -31,13 +31,13 @@ export var ALWAYS_UNSIGNABLE_HEADERS = {
|
|
|
31
31
|
"user-agent": true,
|
|
32
32
|
"x-amzn-trace-id": true,
|
|
33
33
|
};
|
|
34
|
-
export
|
|
35
|
-
export
|
|
36
|
-
export
|
|
37
|
-
export
|
|
38
|
-
export
|
|
39
|
-
export
|
|
40
|
-
export
|
|
41
|
-
export
|
|
42
|
-
export
|
|
43
|
-
export
|
|
34
|
+
export const PROXY_HEADER_PATTERN = /^proxy-/;
|
|
35
|
+
export const SEC_HEADER_PATTERN = /^sec-/;
|
|
36
|
+
export const UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];
|
|
37
|
+
export const ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256";
|
|
38
|
+
export const ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256";
|
|
39
|
+
export const EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD";
|
|
40
|
+
export const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD";
|
|
41
|
+
export const MAX_CACHE_SIZE = 50;
|
|
42
|
+
export const KEY_TYPE_IDENTIFIER = "aws4_request";
|
|
43
|
+
export const MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;
|
package/dist-es/headerUtil.js
CHANGED
|
@@ -1,60 +1,26 @@
|
|
|
1
|
-
import { __values } from "tslib";
|
|
2
1
|
export function hasHeader(soughtHeader, headers) {
|
|
3
|
-
var e_1, _a;
|
|
4
2
|
soughtHeader = soughtHeader.toLowerCase();
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (soughtHeader === headerName.toLowerCase()) {
|
|
9
|
-
return true;
|
|
10
|
-
}
|
|
3
|
+
for (const headerName of Object.keys(headers)) {
|
|
4
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
5
|
+
return true;
|
|
11
6
|
}
|
|
12
7
|
}
|
|
13
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
14
|
-
finally {
|
|
15
|
-
try {
|
|
16
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
17
|
-
}
|
|
18
|
-
finally { if (e_1) throw e_1.error; }
|
|
19
|
-
}
|
|
20
8
|
return false;
|
|
21
9
|
}
|
|
22
10
|
export function getHeaderValue(soughtHeader, headers) {
|
|
23
|
-
var e_2, _a;
|
|
24
11
|
soughtHeader = soughtHeader.toLowerCase();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (soughtHeader === headerName.toLowerCase()) {
|
|
29
|
-
return headers[headerName];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
34
|
-
finally {
|
|
35
|
-
try {
|
|
36
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
12
|
+
for (const headerName of Object.keys(headers)) {
|
|
13
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
14
|
+
return headers[headerName];
|
|
37
15
|
}
|
|
38
|
-
finally { if (e_2) throw e_2.error; }
|
|
39
16
|
}
|
|
40
17
|
return undefined;
|
|
41
18
|
}
|
|
42
19
|
export function deleteHeader(soughtHeader, headers) {
|
|
43
|
-
var e_3, _a;
|
|
44
20
|
soughtHeader = soughtHeader.toLowerCase();
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (soughtHeader === headerName.toLowerCase()) {
|
|
49
|
-
delete headers[headerName];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
54
|
-
finally {
|
|
55
|
-
try {
|
|
56
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
21
|
+
for (const headerName of Object.keys(headers)) {
|
|
22
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
23
|
+
delete headers[headerName];
|
|
57
24
|
}
|
|
58
|
-
finally { if (e_3) throw e_3.error; }
|
|
59
25
|
}
|
|
60
26
|
}
|
package/dist-es/suite.fixture.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
1
|
+
export const region = "us-east-1";
|
|
2
|
+
export const service = "service";
|
|
3
|
+
export const credentials = {
|
|
4
4
|
accessKeyId: "AKIDEXAMPLE",
|
|
5
5
|
secretAccessKey: "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY",
|
|
6
6
|
};
|
|
7
|
-
export
|
|
8
|
-
export
|
|
7
|
+
export const signingDate = new Date("2015-08-30T12:36:00Z");
|
|
8
|
+
export const requests = [
|
|
9
9
|
{
|
|
10
10
|
name: "get-header-key-duplicate",
|
|
11
11
|
request: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-sdk/signature-v4-crt",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.183.0",
|
|
4
4
|
"description": "A revision of AWS Signature V4 request signer based on AWS Common Runtime https://github.com/awslabs/aws-crt-nodejs",
|
|
5
5
|
"main": "./dist-cjs/index.js",
|
|
6
6
|
"module": "./dist-es/index.js",
|
|
@@ -21,20 +21,20 @@
|
|
|
21
21
|
},
|
|
22
22
|
"license": "Apache-2.0",
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@aws-sdk/is-array-buffer": "3.
|
|
25
|
-
"@aws-sdk/querystring-parser": "3.
|
|
26
|
-
"@aws-sdk/signature-v4": "3.
|
|
27
|
-
"@aws-sdk/util-hex-encoding": "3.
|
|
28
|
-
"@aws-sdk/util-middleware": "3.
|
|
29
|
-
"@aws-sdk/util-uri-escape": "3.
|
|
24
|
+
"@aws-sdk/is-array-buffer": "3.183.0",
|
|
25
|
+
"@aws-sdk/querystring-parser": "3.183.0",
|
|
26
|
+
"@aws-sdk/signature-v4": "3.183.0",
|
|
27
|
+
"@aws-sdk/util-hex-encoding": "3.183.0",
|
|
28
|
+
"@aws-sdk/util-middleware": "3.183.0",
|
|
29
|
+
"@aws-sdk/util-uri-escape": "3.183.0",
|
|
30
30
|
"aws-crt": "^1.13.2",
|
|
31
31
|
"tslib": "^2.3.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@aws-crypto/sha256-js": "2.0.0",
|
|
35
|
-
"@aws-sdk/protocol-http": "3.
|
|
36
|
-
"@aws-sdk/types": "3.
|
|
37
|
-
"@aws-sdk/util-buffer-from": "3.
|
|
35
|
+
"@aws-sdk/protocol-http": "3.183.0",
|
|
36
|
+
"@aws-sdk/types": "3.183.0",
|
|
37
|
+
"@aws-sdk/util-buffer-from": "3.183.0",
|
|
38
38
|
"@tsconfig/recommended": "1.0.1",
|
|
39
39
|
"concurrently": "7.0.0",
|
|
40
40
|
"downlevel-dts": "0.10.1",
|