summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2017-09-15 10:09:55 +0300
committerYuval Adam <_@yuv.al>2017-09-15 10:09:55 +0300
commitce53b0960ed73f06098e00e1bd1a525342e6bc55 (patch)
treeb6f011a9536e2e68ebb0b6daaee1ef19c68c3ea6
parent7299fc696f5387aa88f0e483b293f06f5fc7042f (diff)
Continue script implementation
-rwxr-xr-xroute53.sh41
1 files changed, 24 insertions, 17 deletions
diff --git a/route53.sh b/route53.sh
index 1d9c362..be2584c 100755
--- a/route53.sh
+++ b/route53.sh
@@ -21,11 +21,9 @@ AWS_SECRET_ACCESS_KEY=''
AWS_REGION='us-east-1'
AWS_SERVICE='route53domains'
-date=`date +%Y%m%d`
-
-request_body=$(cat <<EOF
-<?xml version="1.0" encoding="UTF-8"?>
-<ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2013-04-01/">
+request_body="
+<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<ChangeResourceRecordSetsRequest xmlns=\"https://route53.amazonaws.com/doc/2013-04-01/\">
<ChangeBatch>
<Changes>
<Change>
@@ -44,10 +42,16 @@ request_body=$(cat <<EOF
</Changes>
</ChangeBatch>
</ChangeResourceRecordSetsRequest>
-EOF
-)
+"
+
+fulldate=$(date -Iseconds)
+signed_headers="host;z-amx-date"
+canonical_request="POST\n${PATH}\n\nhost:route53.amazon.com\nx-amz-date:${fulldate}\n\n${signed_headers}\n$(hash $request_body)"
-canonical_request="POST\n${PATH}\n\nhost:route53.amazon.com\nx-amz-date:`date -Iseconds`\n\nhost;x-amz-date"
+hash() {
+ msg=$1
+ echo -n $msg | openssl dgst -sha256 | sed 's/^.* //'
+}
sign() {
key=$1
@@ -57,21 +61,24 @@ sign() {
getSignatureKey() {
# usage: getSignatureKey date region service
- date_key=$(sign AWS4${AWS_SECRET_ACCESS_KEY_ID} ${date})
+ date_key=$(sign AWS4${AWS_SECRET_ACCESS_KEY_ID} $(date +%Y%m%d))
region_key=$(sign $date_key $AWS_REGION)
service_key=$(sign $region_key $AWS_SERVICE)
signing_key=$(sign $service_key aws4_request)
echo -n $signing_key
}
-amzdate=`date -Iseconds`
+credential="{fulldate}\n${date}/${AWS_REGION}/${AWS_SERVICE}/aws4_request"
+sigmsg="AWS4-HMAC-SHA256\n${credential}\n$(hash $(echo -e canonical_request))"
+sigkey=$(getSignatureKey)
+signature=$(sign sigkey sigmsg)
-credential="${AWS_ACCESS_KEY_ID}/${date}/${AWS_REGION}/${AWS_SERVICE}/aws4_request"
-signed_headers="host;x-amz-date"
-signature=""
-authorization="AWS4-HMAC-SHA256 Credential=${credential},SignedHeaders=${signed_headers},Signature=${signature}"
+authorization="AWS4-HMAC-SHA256 Credential=${AWS_ACCESS_KEY_ID}/${credential},SignedHeaders=${signed_headers},Signature=${signature}"
curl \
- -H "x-amz-date=`date -Iseconds`" \
- -H "Authorization=${authorization}}"
- "https://${ENDPOINT}"
+ -X "POST" \
+ -H "host:route53.amazonaws.com" \
+ -H "x-amz-date:${fulldate}" \
+ -H "authorization:${authorization}}" \
+ --data $request_body
+ "https://${ENDPOINT}${PATH}"