-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathsigv4a_sign.js
More file actions
34 lines (28 loc) · 1.04 KB
/
sigv4a_sign.js
File metadata and controls
34 lines (28 loc) · 1.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
const crt = require("aws-crt");
const {HttpRequest} = require("aws-crt/dist/native/http");
function sigV4ASign(method, endpoint, config = crt.auth.AwsSigningConfig) {
const host = new URL(endpoint).host;
const request = new HttpRequest(method, endpoint);
request.headers.add('host', host);
crt.auth.aws_sign_request(request, config);
return request.headers;
}
function sigV4ASignBasic(method, endpoint, service) {
const host = new URL(endpoint).host;
const request = new HttpRequest(method, endpoint);
request.headers.add('host', host);
const config = {
service: service,
region: "*",
algorithm: crt.auth.AwsSigningAlgorithm.SigV4Asymmetric,
signature_type: crt.auth.AwsSignatureType.HttpRequestViaHeaders,
signed_body_header: crt.auth.AwsSignedBodyHeaderType.XAmzContentSha256,
provider: crt.auth.AwsCredentialsProvider.newDefault()
};
crt.auth.aws_sign_request(request, config);
return request.headers;
}
module.exports = {
sigV4ASign,
sigV4ASignBasic,
}