Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(MFC) Plaza API (bol.com) HMAC-SHA256 AuthenticationDemonstrates how to compute the Authorization header for bol.com using HMAC-SHA256.
#include <CkCrypt2.h> #include <CkStringBuilder.h> void ChilkatSample(void) { CkString strOut; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. CkCrypt2 crypt; crypt.put_EncodingMode("base64"); crypt.put_HashAlgorithm("sha256"); crypt.put_MacAlgorithm("hmac"); const char *publicKey = "oRNWbHFXtAECmhnZmEndcjLIaSKbRMVE"; const char *privateKey = "MaQHPOnmYkPZNgeRziPnQyyOJYytUbcFBVJBvbMKoDdpPqaZbaOiLUTWzPAkpPsZFZbJHrcoltdgpZolyNcgvvBaKcmkqFjucFzXhDONTsPAtHHyccQlLUZpkOuywMiOycDWcCySFsgpDiyGnCWCZJkNTtVdPxbSUTWVIFQiUxaPDYDXRQAVVTbSVZArAZkaLDLOoOvPzxSdhnkkJWzlQDkqsXNKfAIgAldrmyfROSyCGMCfvzdQdUQEaYZTPEoA"; // 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 const char *http_verb = "GET"; const char *content_type = "application/xml"; const char *x_bol_date = "Wed, 17 Feb 2016 00:00:00 GMT"; const char *uri = "/services/rest/orders/v2"; // 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. CkStringBuilder sb; sb.Append(http_verb); sb.Append("\n\n"); sb.Append(content_type); sb.Append("\n"); sb.Append(x_bol_date); sb.Append("\nx-bol-date:"); sb.Append(x_bol_date); sb.Append("\n"); sb.Append(uri); strOut.append("["); strOut.append(sb.getAsString()); strOut.append("]"); strOut.append("\r\n"); // Set the HMAC key: crypt.SetMacKeyEncoded(privateKey,"ascii"); const char *mac = crypt.macStringENC(sb.getAsString()); // The answer should be: nqzLWvXI1eBhBXrRx5NF23V5hS8Q1xWCloJzPi/RAts= strOut.append(mac); strOut.append("\r\n"); // The last step is to append the public key with the signature CkStringBuilder sbHeader; sbHeader.Append(publicKey); sbHeader.Append(":"); sbHeader.Append(mac); const char *hdrValue = sbHeader.getAsString(); strOut.append(hdrValue); strOut.append("\r\n"); SetDlgItemText(IDC_EDIT1,strOut.getUnicode()); } |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.