@aws-amplify/core 5.2.1-unstable.eca5078.2 → 5.3.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/lib/Platform/version.d.ts +1 -1
- package/lib/Platform/version.js +1 -1
- package/lib/Platform/version.js.map +1 -1
- package/lib/Signer.d.ts +1 -1
- package/lib/Signer.js +59 -256
- package/lib/Signer.js.map +1 -1
- package/lib/clients/middleware/signing/signer/signatureV4/constants.d.ts +17 -0
- package/lib/clients/middleware/signing/signer/signatureV4/constants.js +26 -0
- package/lib/clients/middleware/signing/signer/signatureV4/constants.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/index.d.ts +3 -0
- package/lib/clients/middleware/signing/signer/signatureV4/index.js +12 -0
- package/lib/clients/middleware/signing/signer/signatureV4/index.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/index.native.d.ts +4 -0
- package/lib/clients/middleware/signing/signer/signatureV4/index.native.js +13 -0
- package/lib/clients/middleware/signing/signer/signatureV4/index.native.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/presignUrl.d.ts +9 -0
- package/lib/clients/middleware/signing/signer/signatureV4/presignUrl.js +40 -0
- package/lib/clients/middleware/signing/signer/signatureV4/presignUrl.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/signRequest.d.ts +10 -0
- package/lib/clients/middleware/signing/signer/signatureV4/signRequest.js +36 -0
- package/lib/clients/middleware/signing/signer/signatureV4/signRequest.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/types/index.d.ts +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/types/index.js +5 -0
- package/lib/clients/middleware/signing/signer/signatureV4/types/index.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/types/signer.d.ts +20 -0
- package/lib/clients/middleware/signing/signer/signatureV4/types/signer.js +5 -0
- package/lib/clients/middleware/signing/signer/signatureV4/types/signer.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.d.ts +18 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js +35 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.d.ts +12 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js +31 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.d.ts +12 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js +39 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.d.ts +16 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js +35 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.d.ts +10 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js +17 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.d.ts +12 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js +18 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.d.ts +12 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js +22 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.d.ts +10 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js +35 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignature.d.ts +13 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignature.js +31 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignature.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.d.ts +10 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js +20 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.d.ts +13 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js +27 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.d.ts +11 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js +34 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js.map +1 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.d.ts +16 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js +24 -0
- package/lib/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js.map +1 -0
- package/lib/clients/types/aws.d.ts +2 -0
- package/lib/clients/types/aws.js +5 -0
- package/lib/clients/types/aws.js.map +1 -0
- package/lib/clients/types/core.d.ts +13 -0
- package/lib/clients/types/core.js +5 -0
- package/lib/clients/types/core.js.map +1 -0
- package/lib/clients/types/http.d.ts +26 -0
- package/lib/clients/types/http.js +5 -0
- package/lib/clients/types/http.js.map +1 -0
- package/lib/clients/types/index.d.ts +2 -0
- package/lib/clients/types/index.js +5 -0
- package/lib/clients/types/index.js.map +1 -0
- package/lib-esm/Platform/version.d.ts +1 -1
- package/lib-esm/Platform/version.js +1 -1
- package/lib-esm/Platform/version.js.map +1 -1
- package/lib-esm/Signer.d.ts +1 -1
- package/lib-esm/Signer.js +60 -257
- package/lib-esm/Signer.js.map +1 -1
- package/lib-esm/clients/middleware/signing/signer/signatureV4/constants.d.ts +17 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/constants.js +24 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/constants.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.d.ts +3 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.js +7 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.native.d.ts +4 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.native.js +8 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/index.native.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/presignUrl.d.ts +9 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/presignUrl.js +38 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/presignUrl.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/signRequest.d.ts +10 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/signRequest.js +34 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/signRequest.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/types/index.d.ts +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/types/index.js +3 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/types/index.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/types/signer.d.ts +20 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/types/signer.js +3 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/types/signer.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.d.ts +18 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js +33 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.d.ts +12 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js +29 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.d.ts +12 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js +37 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.d.ts +16 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js +33 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.d.ts +10 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js +15 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.d.ts +12 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js +16 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.d.ts +12 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js +20 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.d.ts +10 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js +33 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.d.ts +13 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.js +29 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignature.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.d.ts +10 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js +18 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.d.ts +13 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js +25 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.d.ts +11 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js +32 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.js.map +1 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.d.ts +16 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js +22 -0
- package/lib-esm/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.js.map +1 -0
- package/lib-esm/clients/types/aws.d.ts +2 -0
- package/lib-esm/clients/types/aws.js +3 -0
- package/lib-esm/clients/types/aws.js.map +1 -0
- package/lib-esm/clients/types/core.d.ts +13 -0
- package/lib-esm/clients/types/core.js +3 -0
- package/lib-esm/clients/types/core.js.map +1 -0
- package/lib-esm/clients/types/http.d.ts +26 -0
- package/lib-esm/clients/types/http.js +3 -0
- package/lib-esm/clients/types/http.js.map +1 -0
- package/lib-esm/clients/types/index.d.ts +2 -0
- package/lib-esm/clients/types/index.js +3 -0
- package/lib-esm/clients/types/index.js.map +1 -0
- package/package.json +6 -2
- package/src/Platform/version.ts +1 -1
- package/src/Signer.ts +89 -344
- package/src/clients/middleware/signing/signer/signatureV4/constants.ts +28 -0
- package/src/clients/middleware/signing/signer/signatureV4/index.native.ts +9 -0
- package/src/clients/middleware/signing/signer/signatureV4/index.ts +7 -0
- package/src/clients/middleware/signing/signer/signatureV4/presignUrl.ts +59 -0
- package/src/clients/middleware/signing/signer/signatureV4/signRequest.ts +51 -0
- package/src/clients/middleware/signing/signer/signatureV4/types/index.ts +4 -0
- package/src/clients/middleware/signing/signer/signatureV4/types/signer.ts +31 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/dataHashHelpers.ts +42 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalHeaders.ts +25 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalQueryString.ts +32 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalRequest.ts +38 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getCanonicalUri.ts +14 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getCredentialScope.ts +21 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getFormattedDates.ts +22 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getHashedPayload.ts +38 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getSignature.ts +52 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getSignedHeaders.ts +19 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getSigningKey.ts +31 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getSigningValues.ts +43 -0
- package/src/clients/middleware/signing/signer/signatureV4/utils/getStringToSign.ts +28 -0
- package/src/clients/types/aws.ts +6 -0
- package/src/clients/types/core.ts +17 -0
- package/src/clients/types/http.ts +33 -0
- package/src/clients/types/index.ts +5 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "5.2.1
|
|
1
|
+
export declare const version = "5.2.1";
|
package/lib/Platform/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/Platform/version.ts"],"names":[],"mappings":";;AAAA,0BAA0B;AACb,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/Platform/version.ts"],"names":[],"mappings":";;AAAA,0BAA0B;AACb,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
package/lib/Signer.d.ts
CHANGED
|
@@ -35,7 +35,7 @@ export declare class Signer {
|
|
|
35
35
|
*
|
|
36
36
|
* @returns {object} Signed HTTP request
|
|
37
37
|
*/
|
|
38
|
-
static sign(request: any,
|
|
38
|
+
static sign(request: any, accessInfo: any, serviceInfo: any): any;
|
|
39
39
|
static signUrl(urlToSign: string, accessInfo: any, serviceInfo?: any, expiration?: number): string;
|
|
40
40
|
static signUrl(request: any, accessInfo: any, serviceInfo?: any, expiration?: number): string;
|
|
41
41
|
}
|
package/lib/Signer.js
CHANGED
|
@@ -3,204 +3,11 @@
|
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
var tslib_1 = require("tslib");
|
|
6
|
-
var Logger_1 = require("./Logger");
|
|
7
|
-
var sha256_js_1 = require("@aws-crypto/sha256-js");
|
|
8
|
-
var util_hex_encoding_1 = require("@aws-sdk/util-hex-encoding");
|
|
9
|
-
var url_1 = require("url");
|
|
10
6
|
var Util_1 = require("./Util");
|
|
11
|
-
var
|
|
12
|
-
var DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';
|
|
7
|
+
var signatureV4_1 = require("./clients/middleware/signing/signer/signatureV4");
|
|
13
8
|
var IOT_SERVICE_NAME = 'iotdevicegateway';
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
hash.update(src);
|
|
17
|
-
return hash.digestSync();
|
|
18
|
-
};
|
|
19
|
-
var hash = function (src) {
|
|
20
|
-
var arg = src || '';
|
|
21
|
-
var hash = new sha256_js_1.Sha256();
|
|
22
|
-
hash.update(arg);
|
|
23
|
-
return util_hex_encoding_1.toHex(hash.digestSync());
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* @private
|
|
27
|
-
* RFC 3986 compliant version of encodeURIComponent
|
|
28
|
-
*/
|
|
29
|
-
var escape_RFC3986 = function (component) {
|
|
30
|
-
return component.replace(/[!'()*]/g, function (c) {
|
|
31
|
-
return '%' + c.charCodeAt(0).toString(16).toUpperCase();
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* @private
|
|
36
|
-
* Create canonical query string
|
|
37
|
-
*
|
|
38
|
-
*/
|
|
39
|
-
var canonical_query = function (query) {
|
|
40
|
-
if (!query || query.length === 0) {
|
|
41
|
-
return '';
|
|
42
|
-
}
|
|
43
|
-
return query
|
|
44
|
-
.split('&')
|
|
45
|
-
.map(function (e) {
|
|
46
|
-
var key_val = e.split('=');
|
|
47
|
-
if (key_val.length === 1) {
|
|
48
|
-
return e;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
var reencoded_val = escape_RFC3986(key_val[1]);
|
|
52
|
-
return key_val[0] + '=' + reencoded_val;
|
|
53
|
-
}
|
|
54
|
-
})
|
|
55
|
-
.sort(function (a, b) {
|
|
56
|
-
var key_a = a.split('=')[0];
|
|
57
|
-
var key_b = b.split('=')[0];
|
|
58
|
-
if (key_a === key_b) {
|
|
59
|
-
return a < b ? -1 : 1;
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
return key_a < key_b ? -1 : 1;
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
.join('&');
|
|
66
|
-
};
|
|
67
|
-
/**
|
|
68
|
-
* @private
|
|
69
|
-
* Create canonical headers
|
|
70
|
-
*
|
|
71
|
-
<pre>
|
|
72
|
-
CanonicalHeaders =
|
|
73
|
-
CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN
|
|
74
|
-
CanonicalHeadersEntry =
|
|
75
|
-
Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\n'
|
|
76
|
-
</pre>
|
|
77
|
-
*/
|
|
78
|
-
var canonical_headers = function (headers) {
|
|
79
|
-
if (!headers || Object.keys(headers).length === 0) {
|
|
80
|
-
return '';
|
|
81
|
-
}
|
|
82
|
-
return (Object.keys(headers)
|
|
83
|
-
.map(function (key) {
|
|
84
|
-
return {
|
|
85
|
-
key: key.toLowerCase(),
|
|
86
|
-
value: headers[key] ? headers[key].trim().replace(/\s+/g, ' ') : '',
|
|
87
|
-
};
|
|
88
|
-
})
|
|
89
|
-
.sort(function (a, b) {
|
|
90
|
-
return a.key < b.key ? -1 : 1;
|
|
91
|
-
})
|
|
92
|
-
.map(function (item) {
|
|
93
|
-
return item.key + ':' + item.value;
|
|
94
|
-
})
|
|
95
|
-
.join('\n') + '\n');
|
|
96
|
-
};
|
|
97
|
-
/**
|
|
98
|
-
* List of header keys included in the canonical headers.
|
|
99
|
-
* @access private
|
|
100
|
-
*/
|
|
101
|
-
var signed_headers = function (headers) {
|
|
102
|
-
return Object.keys(headers)
|
|
103
|
-
.map(function (key) {
|
|
104
|
-
return key.toLowerCase();
|
|
105
|
-
})
|
|
106
|
-
.sort()
|
|
107
|
-
.join(';');
|
|
108
|
-
};
|
|
109
|
-
/**
|
|
110
|
-
* @private
|
|
111
|
-
* Create canonical request
|
|
112
|
-
* Refer to
|
|
113
|
-
* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html|Create a Canonical Request}
|
|
114
|
-
*
|
|
115
|
-
<pre>
|
|
116
|
-
CanonicalRequest =
|
|
117
|
-
HTTPRequestMethod + '\n' +
|
|
118
|
-
CanonicalURI + '\n' +
|
|
119
|
-
CanonicalQueryString + '\n' +
|
|
120
|
-
CanonicalHeaders + '\n' +
|
|
121
|
-
SignedHeaders + '\n' +
|
|
122
|
-
HexEncode(Hash(RequestPayload))
|
|
123
|
-
</pre>
|
|
124
|
-
*/
|
|
125
|
-
var canonical_request = function (request) {
|
|
126
|
-
var url_info = url_1.parse(request.url);
|
|
127
|
-
return [
|
|
128
|
-
request.method || '/',
|
|
129
|
-
encodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'),
|
|
130
|
-
canonical_query(url_info.query),
|
|
131
|
-
canonical_headers(request.headers),
|
|
132
|
-
signed_headers(request.headers),
|
|
133
|
-
hash(request.data),
|
|
134
|
-
].join('\n');
|
|
135
|
-
};
|
|
136
|
-
var parse_service_info = function (request) {
|
|
137
|
-
var url_info = url_1.parse(request.url), host = url_info.host;
|
|
138
|
-
var matched = host.match(/([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com$/);
|
|
139
|
-
var parsed = (matched || []).slice(1, 3);
|
|
140
|
-
if (parsed[1] === 'es') {
|
|
141
|
-
// Elastic Search
|
|
142
|
-
parsed = parsed.reverse();
|
|
143
|
-
}
|
|
144
|
-
return {
|
|
145
|
-
service: request.service || parsed[0],
|
|
146
|
-
region: request.region || parsed[1],
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
var credential_scope = function (d_str, region, service) {
|
|
150
|
-
return [d_str, region, service, 'aws4_request'].join('/');
|
|
151
|
-
};
|
|
152
|
-
/**
|
|
153
|
-
* @private
|
|
154
|
-
* Create a string to sign
|
|
155
|
-
* Refer to
|
|
156
|
-
* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html|Create String to Sign}
|
|
157
|
-
*
|
|
158
|
-
<pre>
|
|
159
|
-
StringToSign =
|
|
160
|
-
Algorithm + \n +
|
|
161
|
-
RequestDateTime + \n +
|
|
162
|
-
CredentialScope + \n +
|
|
163
|
-
HashedCanonicalRequest
|
|
164
|
-
</pre>
|
|
165
|
-
*/
|
|
166
|
-
var string_to_sign = function (algorithm, canonical_request, dt_str, scope) {
|
|
167
|
-
return [algorithm, dt_str, scope, hash(canonical_request)].join('\n');
|
|
168
|
-
};
|
|
169
|
-
/**
|
|
170
|
-
* @private
|
|
171
|
-
* Create signing key
|
|
172
|
-
* Refer to
|
|
173
|
-
* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html|Calculate Signature}
|
|
174
|
-
*
|
|
175
|
-
<pre>
|
|
176
|
-
kSecret = your secret access key
|
|
177
|
-
kDate = HMAC("AWS4" + kSecret, Date)
|
|
178
|
-
kRegion = HMAC(kDate, Region)
|
|
179
|
-
kService = HMAC(kRegion, Service)
|
|
180
|
-
kSigning = HMAC(kService, "aws4_request")
|
|
181
|
-
</pre>
|
|
182
|
-
*/
|
|
183
|
-
var get_signing_key = function (secret_key, d_str, service_info) {
|
|
184
|
-
logger.debug(service_info);
|
|
185
|
-
var k = 'AWS4' + secret_key, k_date = encrypt(k, d_str), k_region = encrypt(k_date, service_info.region), k_service = encrypt(k_region, service_info.service), k_signing = encrypt(k_service, 'aws4_request');
|
|
186
|
-
return k_signing;
|
|
187
|
-
};
|
|
188
|
-
var get_signature = function (signing_key, str_to_sign) {
|
|
189
|
-
return util_hex_encoding_1.toHex(encrypt(signing_key, str_to_sign));
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* @private
|
|
193
|
-
* Create authorization header
|
|
194
|
-
* Refer to
|
|
195
|
-
* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html|Add the Signing Information}
|
|
196
|
-
*/
|
|
197
|
-
var get_authorization_header = function (algorithm, access_key, scope, signed_headers, signature) {
|
|
198
|
-
return [
|
|
199
|
-
algorithm + ' ' + 'Credential=' + access_key + '/' + scope,
|
|
200
|
-
'SignedHeaders=' + signed_headers,
|
|
201
|
-
'Signature=' + signature,
|
|
202
|
-
].join(', ');
|
|
203
|
-
};
|
|
9
|
+
// Best practice regex to parse the service and region from an AWS endpoint
|
|
10
|
+
var AWS_ENDPOINT_REGEX = /([^\.]+)\.(?:([^\.]*)\.)?amazonaws\.com(.cn)?$/;
|
|
204
11
|
var Signer = /** @class */ (function () {
|
|
205
12
|
function Signer() {
|
|
206
13
|
}
|
|
@@ -240,78 +47,74 @@ var Signer = /** @class */ (function () {
|
|
|
240
47
|
*
|
|
241
48
|
* @returns {object} Signed HTTP request
|
|
242
49
|
*/
|
|
243
|
-
Signer.sign = function (request,
|
|
244
|
-
if (service_info === void 0) { service_info = null; }
|
|
50
|
+
Signer.sign = function (request, accessInfo, serviceInfo) {
|
|
245
51
|
request.headers = request.headers || {};
|
|
246
52
|
if (request.body && !request.data) {
|
|
247
53
|
throw new Error('The attribute "body" was found on the request object. Please use the attribute "data" instead.');
|
|
248
54
|
}
|
|
249
|
-
|
|
250
|
-
var
|
|
251
|
-
var
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
var signing_key = get_signing_key(access_info.secret_key, d_str, serviceInfo), signature = get_signature(signing_key, str_to_sign);
|
|
264
|
-
// Task 4: Adding the Signing information to the Request
|
|
265
|
-
var authorization_header = get_authorization_header(DEFAULT_ALGORITHM, access_info.access_key, scope, signed_headers(request.headers), signature);
|
|
266
|
-
request.headers['Authorization'] = authorization_header;
|
|
267
|
-
return request;
|
|
55
|
+
var requestToSign = tslib_1.__assign(tslib_1.__assign({}, request), { body: request.data, url: new URL(request.url) });
|
|
56
|
+
var options = getOptions(requestToSign, accessInfo, serviceInfo);
|
|
57
|
+
var signedRequest = signatureV4_1.signRequest(requestToSign, options);
|
|
58
|
+
// Prior to using `signRequest`, Signer accepted urls as strings and outputted urls as string. Coerce the property
|
|
59
|
+
// back to a string so as not to disrupt consumers of Signer.
|
|
60
|
+
signedRequest.url = signedRequest.url.toString();
|
|
61
|
+
// HTTP headers should be case insensitive but, to maintain parity with the previous Signer implementation and
|
|
62
|
+
// limit the impact of this implementation swap, replace lowercased headers with title cased ones.
|
|
63
|
+
signedRequest.headers.Authorization = signedRequest.headers.authorization;
|
|
64
|
+
signedRequest.headers['X-Amz-Security-Token'] =
|
|
65
|
+
signedRequest.headers['x-amz-security-token'];
|
|
66
|
+
delete signedRequest.headers.authorization;
|
|
67
|
+
delete signedRequest.headers['x-amz-security-token'];
|
|
68
|
+
return signedRequest;
|
|
268
69
|
};
|
|
269
70
|
Signer.signUrl = function (urlOrRequest, accessInfo, serviceInfo, expiration) {
|
|
270
71
|
var urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;
|
|
271
72
|
var method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';
|
|
272
73
|
var body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;
|
|
273
|
-
var
|
|
274
|
-
|
|
275
|
-
.replace(/[:\-]|\.\d{3}/g, '');
|
|
276
|
-
var today = now.substr(0, 8);
|
|
277
|
-
// Intentionally discarding search
|
|
278
|
-
var _a = url_1.parse(urlToSign, true, true), search = _a.search, parsedUrl = tslib_1.__rest(_a, ["search"]);
|
|
279
|
-
var host = parsedUrl.host;
|
|
280
|
-
var signedHeaders = { host: host };
|
|
281
|
-
var _b = serviceInfo || parse_service_info({ url: url_1.format(parsedUrl) }), region = _b.region, service = _b.service;
|
|
282
|
-
var credentialScope = credential_scope(today, region, service);
|
|
283
|
-
// IoT service does not allow the session token in the canonical request
|
|
284
|
-
// https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html
|
|
285
|
-
var sessionTokenRequired = accessInfo.session_token && service !== IOT_SERVICE_NAME;
|
|
286
|
-
var queryParams = tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({ 'X-Amz-Algorithm': DEFAULT_ALGORITHM, 'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'), 'X-Amz-Date': now.substr(0, 16) }, (sessionTokenRequired
|
|
287
|
-
? { 'X-Amz-Security-Token': "" + accessInfo.session_token }
|
|
288
|
-
: {})), (expiration ? { 'X-Amz-Expires': "" + expiration } : {})), { 'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(',') });
|
|
289
|
-
var canonicalRequest = canonical_request({
|
|
74
|
+
var presignable = {
|
|
75
|
+
body: body,
|
|
290
76
|
method: method,
|
|
291
|
-
url:
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
var signature = get_signature(signing_key, stringToSign);
|
|
301
|
-
var additionalQueryParams = tslib_1.__assign({ 'X-Amz-Signature': signature }, (accessInfo.session_token && {
|
|
302
|
-
'X-Amz-Security-Token': accessInfo.session_token,
|
|
303
|
-
}));
|
|
304
|
-
var result = url_1.format({
|
|
305
|
-
protocol: parsedUrl.protocol,
|
|
306
|
-
slashes: true,
|
|
307
|
-
hostname: parsedUrl.hostname,
|
|
308
|
-
port: parsedUrl.port,
|
|
309
|
-
pathname: parsedUrl.pathname,
|
|
310
|
-
query: tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, parsedUrl.query), queryParams), additionalQueryParams),
|
|
311
|
-
});
|
|
312
|
-
return result;
|
|
77
|
+
url: new URL(urlToSign),
|
|
78
|
+
};
|
|
79
|
+
var options = getOptions(presignable, accessInfo, serviceInfo, expiration);
|
|
80
|
+
var signedUrl = signatureV4_1.presignUrl(presignable, options);
|
|
81
|
+
if (accessInfo.session_token &&
|
|
82
|
+
!sessionTokenRequiredInSigning(options.signingService)) {
|
|
83
|
+
signedUrl.searchParams.append(signatureV4_1.TOKEN_QUERY_PARAM, accessInfo.session_token);
|
|
84
|
+
}
|
|
85
|
+
return signedUrl.toString();
|
|
313
86
|
};
|
|
314
87
|
return Signer;
|
|
315
88
|
}());
|
|
316
89
|
exports.Signer = Signer;
|
|
90
|
+
var getOptions = function (request, accessInfo, serviceInfo, expiration) {
|
|
91
|
+
var _a = accessInfo !== null && accessInfo !== void 0 ? accessInfo : {}, access_key = _a.access_key, secret_key = _a.secret_key, session_token = _a.session_token;
|
|
92
|
+
var _b = parseServiceInfo(request.url), urlRegion = _b.region, urlService = _b.service;
|
|
93
|
+
var _c = serviceInfo !== null && serviceInfo !== void 0 ? serviceInfo : {}, _d = _c.region, region = _d === void 0 ? urlRegion : _d, _e = _c.service, service = _e === void 0 ? urlService : _e;
|
|
94
|
+
var credentials = tslib_1.__assign({ accessKeyId: access_key, secretAccessKey: secret_key }, (sessionTokenRequiredInSigning(service)
|
|
95
|
+
? { sessionToken: session_token }
|
|
96
|
+
: {}));
|
|
97
|
+
return tslib_1.__assign({ credentials: credentials, signingDate: Util_1.DateUtils.getDateWithClockOffset(), signingRegion: region, signingService: service }, (expiration && { expiration: expiration }));
|
|
98
|
+
};
|
|
99
|
+
// TODO: V6 investigate whether add to custom clients' general signer implementation.
|
|
100
|
+
var parseServiceInfo = function (url) {
|
|
101
|
+
var _a;
|
|
102
|
+
var host = url.host;
|
|
103
|
+
var matched = (_a = host.match(AWS_ENDPOINT_REGEX)) !== null && _a !== void 0 ? _a : [];
|
|
104
|
+
var parsed = matched.slice(1, 3);
|
|
105
|
+
if (parsed[1] === 'es') {
|
|
106
|
+
// Elastic Search
|
|
107
|
+
parsed = parsed.reverse();
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
service: parsed[0],
|
|
111
|
+
region: parsed[1],
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
// IoT service does not allow the session token in the canonical request
|
|
115
|
+
// https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html
|
|
116
|
+
// TODO: V6 investigate whether add to custom clients' general signer implementation.
|
|
117
|
+
var sessionTokenRequiredInSigning = function (service) {
|
|
118
|
+
return service !== IOT_SERVICE_NAME;
|
|
119
|
+
};
|
|
317
120
|
//# sourceMappingURL=Signer.js.map
|
package/lib/Signer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAEtC
|
|
1
|
+
{"version":3,"file":"Signer.js","sourceRoot":"","sources":["../src/Signer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm";
|
|
2
|
+
export declare const AMZ_DATE_QUERY_PARAM = "X-Amz-Date";
|
|
3
|
+
export declare const CREDENTIAL_QUERY_PARAM = "X-Amz-Credential";
|
|
4
|
+
export declare const EXPIRES_QUERY_PARAM = "X-Amz-Expires";
|
|
5
|
+
export declare const REGION_SET_PARAM = "X-Amz-Region-Set";
|
|
6
|
+
export declare const SIGNATURE_QUERY_PARAM = "X-Amz-Signature";
|
|
7
|
+
export declare const SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders";
|
|
8
|
+
export declare const TOKEN_QUERY_PARAM = "X-Amz-Security-Token";
|
|
9
|
+
export declare const AUTH_HEADER = "authorization";
|
|
10
|
+
export declare const HOST_HEADER = "host";
|
|
11
|
+
export declare const AMZ_DATE_HEADER: string;
|
|
12
|
+
export declare const TOKEN_HEADER: string;
|
|
13
|
+
export declare const KEY_TYPE_IDENTIFIER = "aws4_request";
|
|
14
|
+
export declare const SHA256_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256";
|
|
15
|
+
export declare const SIGNATURE_IDENTIFIER = "AWS4";
|
|
16
|
+
export declare const EMPTY_HASH = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
|
|
17
|
+
export declare const UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
// query params
|
|
6
|
+
exports.ALGORITHM_QUERY_PARAM = 'X-Amz-Algorithm';
|
|
7
|
+
exports.AMZ_DATE_QUERY_PARAM = 'X-Amz-Date';
|
|
8
|
+
exports.CREDENTIAL_QUERY_PARAM = 'X-Amz-Credential';
|
|
9
|
+
exports.EXPIRES_QUERY_PARAM = 'X-Amz-Expires';
|
|
10
|
+
exports.REGION_SET_PARAM = 'X-Amz-Region-Set';
|
|
11
|
+
exports.SIGNATURE_QUERY_PARAM = 'X-Amz-Signature';
|
|
12
|
+
exports.SIGNED_HEADERS_QUERY_PARAM = 'X-Amz-SignedHeaders';
|
|
13
|
+
exports.TOKEN_QUERY_PARAM = 'X-Amz-Security-Token';
|
|
14
|
+
// headers
|
|
15
|
+
exports.AUTH_HEADER = 'authorization';
|
|
16
|
+
exports.HOST_HEADER = 'host';
|
|
17
|
+
exports.AMZ_DATE_HEADER = exports.AMZ_DATE_QUERY_PARAM.toLowerCase();
|
|
18
|
+
exports.TOKEN_HEADER = exports.TOKEN_QUERY_PARAM.toLowerCase();
|
|
19
|
+
// identifiers
|
|
20
|
+
exports.KEY_TYPE_IDENTIFIER = 'aws4_request';
|
|
21
|
+
exports.SHA256_ALGORITHM_IDENTIFIER = 'AWS4-HMAC-SHA256';
|
|
22
|
+
exports.SIGNATURE_IDENTIFIER = 'AWS4';
|
|
23
|
+
// preset values
|
|
24
|
+
exports.EMPTY_HASH = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855';
|
|
25
|
+
exports.UNSIGNED_PAYLOAD = 'UNSIGNED-PAYLOAD';
|
|
26
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/clients/middleware/signing/signer/signatureV4/constants.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;AAEtC,eAAe;AACF,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,oBAAoB,GAAG,YAAY,CAAC;AACpC,QAAA,sBAAsB,GAAG,kBAAkB,CAAC;AAC5C,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,gBAAgB,GAAG,kBAAkB,CAAC;AACtC,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,0BAA0B,GAAG,qBAAqB,CAAC;AACnD,QAAA,iBAAiB,GAAG,sBAAsB,CAAC;AAExD,UAAU;AACG,QAAA,WAAW,GAAG,eAAe,CAAC;AAC9B,QAAA,WAAW,GAAG,MAAM,CAAC;AACrB,QAAA,eAAe,GAAG,4BAAoB,CAAC,WAAW,EAAE,CAAC;AACrD,QAAA,YAAY,GAAG,yBAAiB,CAAC,WAAW,EAAE,CAAC;AAE5D,cAAc;AACD,QAAA,mBAAmB,GAAG,cAAc,CAAC;AACrC,QAAA,2BAA2B,GAAG,kBAAkB,CAAC;AACjD,QAAA,oBAAoB,GAAG,MAAM,CAAC;AAE3C,gBAAgB;AACH,QAAA,UAAU,GACtB,kEAAkE,CAAC;AACvD,QAAA,gBAAgB,GAAG,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
// TODO: V6 replace Signer
|
|
6
|
+
var signRequest_1 = require("./signRequest");
|
|
7
|
+
exports.signRequest = signRequest_1.signRequest;
|
|
8
|
+
var presignUrl_1 = require("./presignUrl");
|
|
9
|
+
exports.presignUrl = presignUrl_1.presignUrl;
|
|
10
|
+
var constants_1 = require("./constants");
|
|
11
|
+
exports.TOKEN_QUERY_PARAM = constants_1.TOKEN_QUERY_PARAM;
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/clients/middleware/signing/signer/signatureV4/index.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;AAEtC,0BAA0B;AAC1B,6CAA4C;AAAnC,oCAAA,WAAW,CAAA;AACpB,2CAA0C;AAAjC,kCAAA,UAAU,CAAA;AACnB,yCAAgD;AAAvC,wCAAA,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
require("react-native-url-polyfill/auto");
|
|
6
|
+
// TODO: V6 replace Signer
|
|
7
|
+
var signRequest_1 = require("./signRequest");
|
|
8
|
+
exports.signRequest = signRequest_1.signRequest;
|
|
9
|
+
var presignUrl_1 = require("./presignUrl");
|
|
10
|
+
exports.presignUrl = presignUrl_1.presignUrl;
|
|
11
|
+
var constants_1 = require("./constants");
|
|
12
|
+
exports.TOKEN_QUERY_PARAM = constants_1.TOKEN_QUERY_PARAM;
|
|
13
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.js","sourceRoot":"","sources":["../../../../../../src/clients/middleware/signing/signer/signatureV4/index.native.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;AAEtC,0CAAwC;AAExC,0BAA0B;AAC1B,6CAA4C;AAAnC,oCAAA,WAAW,CAAA;AACpB,2CAA0C;AAAjC,kCAAA,UAAU,CAAA;AACnB,yCAAgD;AAAvC,wCAAA,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Presignable, PresignUrlOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Given a `Presignable` object, returns a Signature Version 4 presigned `URL` object.
|
|
4
|
+
*
|
|
5
|
+
* @param presignable `Presignable` object containing at least a url to be presigned with authentication query params.
|
|
6
|
+
* @param presignUrlOptions `PresignUrlOptions` object containing values used to construct the signature.
|
|
7
|
+
* @returns A `URL` with authentication query params which can grant temporary access to AWS resources.
|
|
8
|
+
*/
|
|
9
|
+
export declare const presignUrl: ({ body, method, url }: Presignable, { expiration, ...options }: PresignUrlOptions) => URL;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
var tslib_1 = require("tslib");
|
|
6
|
+
var constants_1 = require("./constants");
|
|
7
|
+
var getSigningValues_1 = require("./utils/getSigningValues");
|
|
8
|
+
var getSignature_1 = require("./utils/getSignature");
|
|
9
|
+
/**
|
|
10
|
+
* Given a `Presignable` object, returns a Signature Version 4 presigned `URL` object.
|
|
11
|
+
*
|
|
12
|
+
* @param presignable `Presignable` object containing at least a url to be presigned with authentication query params.
|
|
13
|
+
* @param presignUrlOptions `PresignUrlOptions` object containing values used to construct the signature.
|
|
14
|
+
* @returns A `URL` with authentication query params which can grant temporary access to AWS resources.
|
|
15
|
+
*/
|
|
16
|
+
exports.presignUrl = function (_a, _b) {
|
|
17
|
+
var _c, _d, _e, _f;
|
|
18
|
+
var body = _a.body, _g = _a.method, method = _g === void 0 ? 'GET' : _g, url = _a.url;
|
|
19
|
+
var expiration = _b.expiration, options = tslib_1.__rest(_b, ["expiration"]);
|
|
20
|
+
var signingValues = getSigningValues_1.getSigningValues(options);
|
|
21
|
+
var accessKeyId = signingValues.accessKeyId, credentialScope = signingValues.credentialScope, longDate = signingValues.longDate, sessionToken = signingValues.sessionToken;
|
|
22
|
+
// create the request to sign
|
|
23
|
+
// @ts-ignore URL constructor accepts a URL object
|
|
24
|
+
var presignedUrl = new URL(url);
|
|
25
|
+
Object.entries(tslib_1.__assign(tslib_1.__assign((_c = {}, _c[constants_1.ALGORITHM_QUERY_PARAM] = constants_1.SHA256_ALGORITHM_IDENTIFIER, _c[constants_1.CREDENTIAL_QUERY_PARAM] = accessKeyId + "/" + credentialScope, _c[constants_1.AMZ_DATE_QUERY_PARAM] = longDate, _c[constants_1.SIGNED_HEADERS_QUERY_PARAM] = constants_1.HOST_HEADER, _c), (expiration && (_d = {}, _d[constants_1.EXPIRES_QUERY_PARAM] = expiration.toString(), _d))), (sessionToken && (_e = {}, _e[constants_1.TOKEN_QUERY_PARAM] = sessionToken, _e)))).forEach(function (_a) {
|
|
26
|
+
var _b = tslib_1.__read(_a, 2), key = _b[0], value = _b[1];
|
|
27
|
+
presignedUrl.searchParams.append(key, value);
|
|
28
|
+
});
|
|
29
|
+
var requestToSign = {
|
|
30
|
+
body: body,
|
|
31
|
+
headers: (_f = {}, _f[constants_1.HOST_HEADER] = url.host, _f),
|
|
32
|
+
method: method,
|
|
33
|
+
url: presignedUrl,
|
|
34
|
+
};
|
|
35
|
+
// calculate and add the signature to the url
|
|
36
|
+
var signature = getSignature_1.getSignature(requestToSign, signingValues);
|
|
37
|
+
presignedUrl.searchParams.append(constants_1.SIGNATURE_QUERY_PARAM, signature);
|
|
38
|
+
return presignedUrl;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=presignUrl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presignUrl.js","sourceRoot":"","sources":["../../../../../../src/clients/middleware/signing/signer/signatureV4/presignUrl.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAGtC,yCAUqB;AACrB,6DAA4D;AAC5D,qDAAoD;AAEpD;;;;;;GAMG;AACU,QAAA,UAAU,GAAG,UACzB,EAA0C,EAC1C,EAA6C;;QAD3C,cAAI,EAAE,cAAc,EAAd,mCAAc,EAAE,YAAG;IACzB,IAAA,0BAAU,EAAE,4CAAU;IAExB,IAAM,aAAa,GAAG,mCAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAA,uCAAW,EAAE,+CAAe,EAAE,iCAAQ,EAAE,yCAAY,CAC7C;IAEf,6BAA6B;IAC7B,kDAAkD;IAClD,IAAM,YAAY,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,CAAC,OAAO,gDACZ,iCAAqB,IAAG,uCAA2B,KACnD,kCAAsB,IAAM,WAAW,SAAI,eAAiB,KAC5D,gCAAoB,IAAG,QAAQ,KAC/B,sCAA0B,IAAG,uBAAW,OACtC,CAAC,UAAU,cAAM,GAAC,+BAAmB,IAAG,UAAU,CAAC,QAAQ,EAAE,KAAE,CAAC,GAChE,CAAC,YAAY,cAAM,GAAC,6BAAiB,IAAG,YAAY,KAAE,CAAC,EACzD,CAAC,OAAO,CAAC,UAAC,EAAY;YAAZ,0BAAY,EAAX,WAAG,EAAE,aAAK;QACtB,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,IAAM,aAAa,GAAG;QACrB,IAAI,MAAA;QACJ,OAAO,YAAI,GAAC,uBAAW,IAAG,GAAG,CAAC,IAAI,KAAE;QACpC,MAAM,QAAA;QACN,GAAG,EAAE,YAAY;KACjB,CAAC;IAEF,6CAA6C;IAC7C,IAAM,SAAS,GAAG,2BAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC7D,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,iCAAqB,EAAE,SAAS,CAAC,CAAC;IAEnE,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { HttpRequest } from '../../../../types';
|
|
2
|
+
import { SignRequestOptions } from './types/signer';
|
|
3
|
+
/**
|
|
4
|
+
* Given a `HttpRequest`, returns a Signature Version 4 signed `HttpRequest`.
|
|
5
|
+
*
|
|
6
|
+
* @param request `HttpRequest` to be signed.
|
|
7
|
+
* @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.
|
|
8
|
+
* @returns A `HttpRequest` with authentication headers which can grant temporary access to AWS resources.
|
|
9
|
+
*/
|
|
10
|
+
export declare const signRequest: (request: HttpRequest, options: SignRequestOptions) => HttpRequest;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
var tslib_1 = require("tslib");
|
|
6
|
+
var getSignedHeaders_1 = require("./utils/getSignedHeaders");
|
|
7
|
+
var getSigningValues_1 = require("./utils/getSigningValues");
|
|
8
|
+
var constants_1 = require("./constants");
|
|
9
|
+
var getSignature_1 = require("./utils/getSignature");
|
|
10
|
+
/**
|
|
11
|
+
* Given a `HttpRequest`, returns a Signature Version 4 signed `HttpRequest`.
|
|
12
|
+
*
|
|
13
|
+
* @param request `HttpRequest` to be signed.
|
|
14
|
+
* @param signRequestOptions `SignRequestOptions` object containing values used to construct the signature.
|
|
15
|
+
* @returns A `HttpRequest` with authentication headers which can grant temporary access to AWS resources.
|
|
16
|
+
*/
|
|
17
|
+
exports.signRequest = function (request, options) {
|
|
18
|
+
var signingValues = getSigningValues_1.getSigningValues(options);
|
|
19
|
+
var accessKeyId = signingValues.accessKeyId, credentialScope = signingValues.credentialScope, longDate = signingValues.longDate, sessionToken = signingValues.sessionToken;
|
|
20
|
+
// create the request to sign
|
|
21
|
+
var headers = tslib_1.__assign({}, request.headers);
|
|
22
|
+
headers[constants_1.HOST_HEADER] = request.url.host;
|
|
23
|
+
headers[constants_1.AMZ_DATE_HEADER] = longDate;
|
|
24
|
+
if (sessionToken) {
|
|
25
|
+
headers[constants_1.TOKEN_HEADER] = sessionToken;
|
|
26
|
+
}
|
|
27
|
+
var requestToSign = tslib_1.__assign(tslib_1.__assign({}, request), { headers: headers });
|
|
28
|
+
// calculate and add the signature to the request
|
|
29
|
+
var signature = getSignature_1.getSignature(requestToSign, signingValues);
|
|
30
|
+
var credentialEntry = "Credential=" + accessKeyId + "/" + credentialScope;
|
|
31
|
+
var signedHeadersEntry = "SignedHeaders=" + getSignedHeaders_1.getSignedHeaders(headers);
|
|
32
|
+
var signatureEntry = "Signature=" + signature;
|
|
33
|
+
headers[constants_1.AUTH_HEADER] = constants_1.SHA256_ALGORITHM_IDENTIFIER + " " + credentialEntry + ", " + signedHeadersEntry + ", " + signatureEntry;
|
|
34
|
+
return requestToSign;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=signRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signRequest.js","sourceRoot":"","sources":["../../../../../../src/clients/middleware/signing/signer/signatureV4/signRequest.ts"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,sCAAsC;;;AAItC,6DAA4D;AAC5D,6DAA4D;AAC5D,yCAMqB;AACrB,qDAAoD;AAEpD;;;;;;GAMG;AACU,QAAA,WAAW,GAAG,UAC1B,OAAoB,EACpB,OAA2B;IAE3B,IAAM,aAAa,GAAG,mCAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,IAAA,uCAAW,EAAE,+CAAe,EAAE,iCAAQ,EAAE,yCAAY,CAC7C;IAEf,6BAA6B;IAC7B,IAAM,OAAO,wBAAQ,OAAO,CAAC,OAAO,CAAE,CAAC;IACvC,OAAO,CAAC,uBAAW,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IACxC,OAAO,CAAC,2BAAe,CAAC,GAAG,QAAQ,CAAC;IACpC,IAAI,YAAY,EAAE;QACjB,OAAO,CAAC,wBAAY,CAAC,GAAG,YAAY,CAAC;KACrC;IACD,IAAM,aAAa,yCAAQ,OAAO,KAAE,OAAO,SAAA,GAAE,CAAC;IAE9C,iDAAiD;IACjD,IAAM,SAAS,GAAG,2BAAY,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IAC7D,IAAM,eAAe,GAAG,gBAAc,WAAW,SAAI,eAAiB,CAAC;IACvE,IAAM,kBAAkB,GAAG,mBAAiB,mCAAgB,CAAC,OAAO,CAAG,CAAC;IACxE,IAAM,cAAc,GAAG,eAAa,SAAW,CAAC;IAChD,OAAO,CACN,uBAAW,CACX,GAAM,uCAA2B,SAAI,eAAe,UAAK,kBAAkB,UAAK,cAAgB,CAAC;IAElG,OAAO,aAAa,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Presignable, PresignUrlOptions, SignRequestOptions } from './signer';
|