Sample code for 30+ languages & platforms
Objective-C

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 Objective-C Downloads

Objective-C
#import <CkoCrypt2.h>
#import <NSString.h>
#import <CkoStringBuilder.h>

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init];

crypt.EncodingMode = @"base64";
crypt.HashAlgorithm = @"sha256";
crypt.MacAlgorithm = @"hmac";

NSString *publicKey = @"oRNWbHFXtAECmhnZmEndcjLIaSKbRMVE";
NSString *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

NSString *http_verb = @"GET";
NSString *content_type = @"application/xml";
NSString *x_bol_date = @"Wed, 17 Feb 2016 00:00:00 GMT";
NSString *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.
CkoStringBuilder *sb = [[CkoStringBuilder alloc] init];
[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];
NSLog(@"%@%@%@",@"[",[sb GetAsString],@"]");

//  Set the HMAC key:
[crypt SetMacKeyEncoded: privateKey encoding: @"ascii"];
NSString *mac = [crypt MacStringENC: [sb GetAsString]];

//  The answer should be: nqzLWvXI1eBhBXrRx5NF23V5hS8Q1xWCloJzPi/RAts=
NSLog(@"%@",mac);

//  The last step is to append the public key with the signature
CkoStringBuilder *sbHeader = [[CkoStringBuilder alloc] init];
[sbHeader Append: publicKey];
[sbHeader Append: @":"];
[sbHeader Append: mac];

NSString *hdrValue = [sbHeader GetAsString];
NSLog(@"%@",hdrValue);