4. Create the String
This is the String that will then be signed at the next step
For the String creation the following headers (request-target)
host
digest
date
must be used.
-
For the header field name
(request-target)
generate the header field value by concatenating the lowercased HTTP verb, a space and the request path -
For the remaining headers create the string by concatenating the lowercased header field name followed with a colon
:
, a space and the header field value
Notes
Leading and trailing optional whitespace in the header field value must be omitted
Make sure that the order of the headers in the HTTP request is the same used to create the String
Request path in the
(request-target)
must include the QUERY PARAMSThe format of the
date
header must beEEE, dd MMM yyyy HH:mm:ss O
If there are multiple instances of the same header field, all header field values associated with the header field must be concatenated, separated by a comma
,
and a space and be used in the order in which they will appear in the transmitted HTTP message
POST /wally-services/protocol/tests/signature HTTP/1.1
Host: staging.authservices.satispay.com
Date: Mon, 18 Mar 2019 15:10:24 +0000
Content-Type: application/json
Content-Length: 123
Digest: SHA-256=ZML76UQPYzw5yDTmhySnU1S8nmqGde/jhqOG5rpfVSI=
{
"flow": "MATCH_CODE",
"amount_unit": 100,
"currency": "EUR"
}
(request-target): post /wally-services/protocol/tests/signature
host: staging.authservices.satispay.com
date: Mon, 18 Mar 2019 15:10:24 +0000
digest: SHA-256=ZML76UQPYzw5yDTmhySnU1S8nmqGde/jhqOG5rpfVSI=
Code sample 2/4
BODY="{\n \"flow\": \"MATCH_CODE\",\n \"amount_unit\": 100,\n \"currency\": \"EUR\"\n}"
DIGEST="SHA-256="$(echo -e "$BODY\c" | openssl dgst -sha256 -binary | base64)
STRING="(request-target): post /wally-services/protocol/tests/signature\nhost: staging.authservices.satispay.com\ndate: Mon, 18 Mar 2019 15:10:24 +0000\ndigest: $DIGEST"
$body = "{
\"flow\": \"MATCH_CODE\",
\"amount_unit\": 100,
\"currency\": \"EUR\"
}";
$digest = "SHA-256=".base64_encode(hash("sha256", $body, true));
$string = "(request-target): post /wally-services/protocol/tests/signature
host: staging.authservices.satispay.com
date: Mon, 18 Mar 2019 15:10:24 +0000
digest: $digest";
const crypto = require('crypto')
const body = `{
"flow": "MATCH_CODE",
"amount_unit": 100,
"currency": "EUR"
}`
const digest = `SHA-256=`.concat(crypto.createHash('sha256').update(body).digest('base64'))
const string = `(request-target): post /wally-services/protocol/tests/signature
host: staging.authservices.satispay.com
date: Mon, 18 Mar 2019 15:10:24 +0000
digest: ${digest}`
Updated over 2 years ago