Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Plaza API (bol.com) HMAC-SHA256 AuthenticationDemonstrates how to compute the Authorization header for bol.com using HMAC-SHA256.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var crypt: TChilkatCrypt2; publicKey: WideString; privateKey: WideString; http_verb: WideString; content_type: WideString; x_bol_date: WideString; uri: WideString; sb: TChilkatStringBuilder; mac: WideString; sbHeader: TChilkatStringBuilder; hdrValue: WideString; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. crypt := TChilkatCrypt2.Create(Self); crypt.EncodingMode := 'base64'; crypt.HashAlgorithm := 'sha256'; crypt.MacAlgorithm := 'hmac'; publicKey := 'oRNWbHFXtAECmhnZmEndcjLIaSKbRMVE'; 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 http_verb := 'GET'; content_type := 'application/xml'; x_bol_date := 'Wed, 17 Feb 2016 00:00:00 GMT'; 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. sb := TChilkatStringBuilder.Create(Self); sb.Append(http_verb); sb.Append(#10 + #10); sb.Append(content_type); sb.Append(#10); sb.Append(x_bol_date); sb.Append(#10 + 'x-bol-date:'); sb.Append(x_bol_date); sb.Append(#10); sb.Append(uri); Memo1.Lines.Add('[' + sb.GetAsString() + ']'); // Set the HMAC key: crypt.SetMacKeyEncoded(privateKey,'ascii'); mac := crypt.MacStringENC(sb.GetAsString()); // The answer should be: nqzLWvXI1eBhBXrRx5NF23V5hS8Q1xWCloJzPi/RAts= Memo1.Lines.Add(mac); // The last step is to append the public key with the signature sbHeader := TChilkatStringBuilder.Create(Self); sbHeader.Append(publicKey); sbHeader.Append(':'); sbHeader.Append(mac); hdrValue := sbHeader.GetAsString(); Memo1.Lines.Add(hdrValue); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.