Objective-C
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
#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);