iVvy Developer API
  • API Documentation
  • Getting Started
    • Obtaining Keys
    • Creating the request
      • Method/URI Header
      • Request Headers
        • Standard Headers
        • Custom Headers
      • Signing the request
      • Query Parameters
    • Test Ping
    • Interpreting the response
      • Collections
      • Pagination
      • Filtering
      • Exceptions
      • Response Headers
      • Dates
    • Batch
      • Run
      • Progress
      • Result
      • Restart
      • Repost
    • Use Cases
      • CRM Systems
      • Financial Accounting Systems
      • Point Of Sale
      • Property Management Systems
  • Contacts & Companies
    • Get Contact List
    • Get Contact
    • Get Contact Note List
    • Add or Update Contact
    • Get Contact Custom Field Definition
    • Get Company Custom Field Definition
    • Get Subscription Group List
    • Add Contacts To Subscription Group
    • Remove Contacts From Subscription Group
    • Get Company List
    • Get Company
    • Get Company Note List
    • Add or Update Company
    • Add or Update Lead
    • Add or Update Contact Note
    • Add or Update Company Note
  • Event
    • Add or Update Event
    • Get Event List
    • Get Event
    • Get Registration
    • Get Registration List
    • Get Attendee
    • Get Attendee List
    • Get Invited Contact List
    • Invite Contacts
    • Get Sponsorship List
    • Get Speaker List
    • Get Session List
    • Create Login Token
  • Venue
    • Venue Setup Data
      • Get Venue
      • Get Venue List
      • Get Venue Room List
      • Get Venue Room Option List
      • Get Venue Rate Plan List
      • Get Venue Rate Plan Rate List
      • Get Venue Rate Plan Room Rate List
      • Get Resource List
      • Get Resource Availability
      • Get Menu List
      • Get Beverage Package List
      • Get Function Space List
      • Get Space Blockout List
      • Get Function Space Category List
      • Get Function Space Availability
      • Get Function Space Hire Plan Rate List
      • Get Function Space Hire Plan Rate
      • Get Cost Center List
      • Get Session Type List
      • Get Revenue Template List
      • Get Tax List
      • Add or Update Function Space
      • Get Event Type List
      • Add or Update Function Space Category
      • Add or Update Guest Room
      • Get Booking Custom Field List
      • Get Space Hire Plans
      • Get Venue Package List
      • Get Venue Package
    • Booking Data
      • Convert Lead To Opportunity
      • Add or Update Opportunity
      • Get Booking
      • Get Booking List
      • Get Booking List For Account
      • Get Booking Notes
      • Get Booking Session List
      • Get Booking Session Menu List
      • Get Booking Changelog List
      • Get Booking Attendee (By Hash)
      • Get Booking Attendee List
      • Get Booking Release Schedule
      • Add or Update Booking
      • Change Booking Status
      • Add Items To Booking
      • Add Payment To Booking
      • Add Refund To Booking
      • Add or Update Booking Attendee
      • Add or Update Booking Note
      • Add or Update Booking Session
      • Add or Update Booking Session Beverage
      • Add or Update Booking Session Menu
      • Add or Update Booking Session Resource
      • Remove Booking Session
      • Remove Booking Session Beverage
      • Remove Booking Session Menu
      • Remove Booking Session Resource
      • Get Space Blockout List
      • Add or Update Blockout Space
      • Remove Blockout Space
      • Get Booking Tax List
      • Add or Update Opportunity Note
      • Upload Booking Document
    • Booking Accommodation Data
      • Get Booking Accommodation List
      • Add or Update Booking Accommodation
      • Remove Booking Accommodation
      • Get Booking Room Reservation List
      • Add or Update Booking Room Reservation
      • Update Room Reservation Guest Contact
      • Remove Booking Room Reservation
      • Confirm Booking Room Reservation
      • Cancel Booking Room Reservation
      • Change Status of Booking Room Reservation
      • Add or Update Room Counts
      • Add or Update Room Dynamic Rates
      • Remove Room Dynamic Rates
      • Add or Update Rate Plan Booking Rules
  • Partner
    • Get Venue List
    • Get Venue
  • Invoice
    • Get Invoice List
    • Get Invoice
    • Get Options
    • Add Payment
    • Get Credit Note List
    • Get Credit Note
  • Account
    • Add or Update Cost Center
    • Get Cost Center List
    • Get Email Log List
    • Add Error Report
    • Get Account User List
  • CRM
    • Get Lead List
    • Get Opportunity List
    • Get Opportunity Note List
    • Get Task List
    • Get Activity List
    • Get Lead Stage List
    • Get Lead Type List
    • Get Lead Quality List
    • Get Lead Source List
    • Get Lead Channel List
    • Get Lead Note List
    • Add or Update Activity Purpose
    • Add or Update Activity
    • Add or Update Task
    • Add or Update Lead Quality
    • Add or Update Lead Stage
    • Add or Update Lead Channel
    • Add or Update Lead Type
    • Add or Update Lead Source
    • Add or Update Lead Note
  • Notifications
    • Company Endpoint
    • Contact Endpoint
    • CRM Endpoint
    • Invoice Endpoint
    • Booking Endpoint
    • Event Endpoint
  • Development Reference
    • Calculating md5
    • HMAC-SHA1
    • JSON Encoding
    • Timestamp Format
    • Date Format
    • Time Format
    • Address Format
    • URLEncoding
    • Timezone List
  • Announcements
    • Room Reservation Contact Changes
    • Contact Customfield Changes
    • Booking Accommodation API Changes
Powered by GitBook
On this page
  • Bash
  • C\
  • Javascript
  • NodeJS
  • Objective-C
  • PHP
  • Ruby
  1. Development Reference

HMAC-SHA1

PreviousCalculating md5NextJSON Encoding

Last updated 3 years ago

Bash

The openssl package available in most linux distributions include a way of creating the HMAC-SHA1 string from the command line…

echo -n "string to sign" | openssl dgst -sha1 -hmac "my secret key"
(stdin)= a993876ea1218921a1c8551923473da7b310dfae

C\

Encoding encoding = Encoding.UTF8;
byte[] secretBytes = encoding.GetBytes(“my secret key”);
HMACSHA1 hmacsha1 = new HMACSHA1(secretBytes);
hmacsha1.ComputeHash(encoding.GetBytes(“string to sign”));
byte[] data = hmacsha1.Hash;

Javascript

Cryptographic functions are available from the CryptJS libaray at .

var stringToSign = “string to sign”;
var secret = “my secret key”;
var signature = CryptoJS.HmacSHA1(stringToSign, secret);

NodeJS

This code assumes you have the crypto-js library installed (npm install crypto-js)

$ cat hmacsha1.js 
var CryptoJS = require('crypto-js'),
    message = "string to sign",
    secret = "my secret key",
    sig = CryptoJS.HmacSHA1(message, secret);
console.log("" + sig);

$ node hmacsha1.js 
a993876ea1218921a1c8551923473da7b310dfae

Objective-C

HMAC-SHA1 functionality can be be included in IOS code by first adding the CommonCrypto library to your target, and including the following function in your appDelegate (or appropriate class)

#import <CommonCrypto/CommonDigest.h>
...
+(NSString*) hmac_sha1:(NSString*)input usingSecret:(NSString*)key
{
    const char *cKey = [key UTF8String];
    const char *cInput = [input UTF8String];
    unsigned char digest[CC_SHA1_DIGEST_LENGTH];
    if (cKey == nil || cInput == nil) {
        return @"";
    }
    NSMutableString *output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2];
    CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cInput, strlen(cInput), digest);
    for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x", digest[i]];
    }
    return output;
}
...

PHP

Generating the HMAC-SHA1 in PHP can be done using the following code.

<?php 
$stringToSign = “string to sign”;
$keySecret = “my secret key”;
$signature = hash_hmac(”sha1”, $stringToSign, $keySecret);
echo $signature;’
?>

This will generate an encrypted hash of the string. In this case the string will be

a993876ea1218921a1c8551923473da7b310dfae

Ruby

Start up the ‘irb’ and try the following

irb(main):001:0> require('openssl')
=> true
irb(main):002:0> OpenSSL::HMAC.hexdigest('sha1', 'my secret key', 'string to sign')
=> "a993876ea1218921a1c8551923473da7b310dfae"
https://code.google.com/p/crypto-js/