Unicode C
Unicode C
ChartURL - Create a Signed URL
See more HTTP Misc Examples
Demonstrates how to create a signed URL for ChartURL.Chilkat Unicode C Downloads
#include <C_CkCrypt2W.h>
#include <C_CkJsonObjectW.h>
#include <C_CkStringBuilderW.h>
void ChilkatSample(void)
{
HCkCrypt2W crypt;
const wchar_t *key;
const wchar_t *token;
const wchar_t *slug;
const wchar_t *data;
HCkJsonObjectW json;
const wchar_t *sig;
HCkStringBuilderW sbUrl;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
crypt = CkCrypt2W_Create();
// Example key: "dek-d7a46236eda961a6c3c18ffcc6b077ba87d27e9ae85f7842c6d427c265dd5f69d5131308d93332353d4a55a4b1160fcf516515a4a9f0aa50fbf2d7a2e7d0f1c5"
key = L"charturl-sign-encrypt-key";
// Example token: "dt-RwYN"
token = L"charturl-token";
slug = L"weekly-activity";
data = L"{ \"options\": {\"data\": {\"columns\": [[\"This Week\",10,13],[\"Last Week\",9,5]]}}}";
CkCrypt2W_putHashAlgorithm(crypt,L"SHA256");
CkCrypt2W_putMacAlgorithm(crypt,L"HMAC");
CkCrypt2W_SetMacKeyString(crypt,key);
CkCrypt2W_putEncodingMode(crypt,L"base64");
json = CkJsonObjectW_Create();
CkJsonObjectW_Load(json,data);
wprintf(L"json = %s\n",CkJsonObjectW_emit(json));
sig = CkCrypt2W_macStringENC(crypt,CkJsonObjectW_emit(json));
sbUrl = CkStringBuilderW_Create();
CkStringBuilderW_Append(sbUrl,L"https://charturl.com/i/");
CkStringBuilderW_Append(sbUrl,token);
CkStringBuilderW_Append(sbUrl,L"/");
CkStringBuilderW_Append(sbUrl,slug);
CkStringBuilderW_Append(sbUrl,L"?d=");
CkStringBuilderW_Append(sbUrl,CkCrypt2W_encodeString(crypt,CkJsonObjectW_emit(json),L"utf-8",L"url"));
CkStringBuilderW_Append(sbUrl,L"&s=");
CkStringBuilderW_Append(sbUrl,CkCrypt2W_encodeString(crypt,sig,L"utf-8",L"url"));
wprintf(L"Signed URL: %s\n",CkStringBuilderW_getAsString(sbUrl));
CkCrypt2W_Dispose(crypt);
CkJsonObjectW_Dispose(json);
CkStringBuilderW_Dispose(sbUrl);
}