DataFlex
DataFlex
Plaza API (bol.com) HMAC-SHA256 Authentication
See more Encryption Examples
Demonstrates how to compute the Authorization header for bol.com using HMAC-SHA256.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Handle hoCrypt
String sPublicKey
String sPrivateKey
String sHttp_verb
String sContent_type
String sX_bol_date
String sUri
Handle hoSb
Boolean iSuccess
String sMac
Handle hoSbHeader
String sHdrValue
String sTemp1
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt
If (Not(IsComObjectCreated(hoCrypt))) Begin
Send CreateComObject of hoCrypt
End
Set ComEncodingMode Of hoCrypt To "base64"
Set ComHashAlgorithm Of hoCrypt To "sha256"
Set ComMacAlgorithm Of hoCrypt To "hmac"
Move "oRNWbHFXtAECmhnZmEndcjLIaSKbRMVE" To sPublicKey
Move "MaQHPOnmYkPZNgeRziPnQyyOJYytUbcFBVJBvbMKoDdpPqaZbaOiLUTWzPAkpPsZFZbJHrcoltdgpZolyNcgvvBaKcmkqFjucFzXhDONTsPAtHHyccQlLUZpkOuywMiOycDWcCySFsgpDiyGnCWCZJkNTtVdPxbSUTWVIFQiUxaPDYDXRQAVVTbSVZArAZkaLDLOoOvPzxSdhnkkJWzlQDkqsXNKfAIgAldrmyfROSyCGMCfvzdQdUQEaYZTPEoA" To sPrivateKey
// The string to sign is this:
// http_verb +'\n\n'+ content_type +'\n'+ x_bol_date +'\n'+ 'x-bol-date:'+ x_bol_date +'\n'+ uri
Move "GET" To sHttp_verb
Move "application/xml" To sContent_type
Move "Wed, 17 Feb 2016 00:00:00 GMT" To sX_bol_date
Move "/services/rest/orders/v2" To sUri
// IMPORTANT: Notice the use of underscore and hyphen (dash) chars in x-bol-date vs. x_bol_date.
// In one place hypens are used. In two places, underscore chars are used.
Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
If (Not(IsComObjectCreated(hoSb))) Begin
Send CreateComObject of hoSb
End
Get ComAppend Of hoSb sHttp_verb To iSuccess
Get ComAppend Of hoSb (character(10)) + (character(10)) To iSuccess
Get ComAppend Of hoSb sContent_type To iSuccess
Get ComAppend Of hoSb (character(10)) To iSuccess
Get ComAppend Of hoSb sX_bol_date To iSuccess
Get ComAppend Of hoSb (character(10)) + "x-bol-date:" To iSuccess
Get ComAppend Of hoSb sX_bol_date To iSuccess
Get ComAppend Of hoSb (character(10)) To iSuccess
Get ComAppend Of hoSb sUri To iSuccess
Get ComGetAsString Of hoSb To sTemp1
Showln "[" sTemp1 "]"
// Set the HMAC key:
Get ComSetMacKeyEncoded Of hoCrypt sPrivateKey "ascii" To iSuccess
Get ComGetAsString Of hoSb To sTemp1
Get ComMacStringENC Of hoCrypt sTemp1 To sMac
// The answer should be: nqzLWvXI1eBhBXrRx5NF23V5hS8Q1xWCloJzPi/RAts=
Showln sMac
// The last step is to append the public key with the signature
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbHeader
If (Not(IsComObjectCreated(hoSbHeader))) Begin
Send CreateComObject of hoSbHeader
End
Get ComAppend Of hoSbHeader sPublicKey To iSuccess
Get ComAppend Of hoSbHeader ":" To iSuccess
Get ComAppend Of hoSbHeader sMac To iSuccess
Get ComGetAsString Of hoSbHeader To sHdrValue
Showln sHdrValue
End_Procedure