Code snippets for generating an API signature
The topic provides the code snippets covering the process to generate GFI HelpDesk API Signature in various programming languages.
Following is the process to generate GFI HelpDesk API Signature, in various programming languages:
<?php
$apiKey = "apikey";
$secretKey = "secretkey";
// Generates a random string of ten digits
$salt = mt_rand();
// Computes the signature by hashing the salt with the secret key as the key
$signature = hash_hmac('sha256', $salt, $secretKey, true);
// base64 encode...
$encodedSignature = base64_encode($signature);
// urlencode...
$encodedSignature = urlencode($encodedSignature);
echo "Voila! A signature: " . $encodedSignature;
?>
namespace GFI HelpDeskIntegration
{
class Program
{
static void Main()
{
var apiKey = "apikey";
var secretKey = "secretkey";
// Generate a new globally unique identifier for the salt
var salt = System.Guid.NewGuid().ToString();
// Initialize the keyed hash object using the secret key as the key
HMACSHA256 hashObject = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey));
// Computes the signature by hashing the salt with the secret key as the key
var signature = hashObject.ComputeHash(Encoding.UTF8.GetBytes(salt));
// Base 64 Encode
var encodedSignature = Convert.ToBase64String(signature);
// URLEncode
encodedSignature = System.Web.HttpUtility.UrlEncode(encodedSignature);
Console.WriteLine("Voila! A signature: " + encodedSignature);
Console.ReadKey();
}
}
}
# Required Libraries
require 'openssl'
require 'base64'
require 'URI'
api_key = "apikey"
secret_key = "secretkey"
# URLUniform Resource Locator is the address of a web page on the world wide web. encode
def urlncode(string)
URI.escape(string, Regexp.new("[Generating an API Signature^#{URI::PATTERN::UNRESERVED}]"))
end
# Generates a random string salt
salt = rand(10000000000).to_s
# Computes the signature by hashing the salt with the secret key as the key
hash = OpenSSL::HMAC.digest('sha256', secret_key, salt)
# base64 encode...
signature = urlncode(Base64.encode64(hash));
import hashlib
import random
import base64
import urllib
import hmac
apikey = "apikey"
secretkey = "secretkey"
# Generates a random string of ten digits
salt = str(random.getrandbits(32))
# Computes the signature by hashing the salt with the secret key as the key
signature = hmac.new(secretkey, msg=salt, digestmod=hashlib.sha256).digest()
# base64 encode...
encodedSignature = base64.encodestring(signature).replace('\n', '')
# urlencode...
encodedSignature = urllib.quote(encodedSignature)
print "Voila! A signature: " + encodedSignature
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.security.GeneralSecurityException;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.util.encoders.Base64Encoder;
public class GFI HelpDeskapi {
public static void main(String[] args) throws GeneralSecurityException, IOException {
String secretKey = "secretKey";
String salt = "0123456789";
String generateHmacSHA256Signature = generateHmacSHA256Signature(salt, secretKey);
System.out.println("Signature: " + generateHmacSHA256Signature);
String urlEncodedSign = URLEncoder.encode(generateHmacSHA256Signature, "UTF-8");
System.out.println("Url encoded value: " + urlEncodedSign);
}
public static String generateHmacSHA256Signature(String data, String key) throws GeneralSecurityException {
byte[] hmacData = null;
try {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(secretKey);
hmacData = mac.doFinal(data.getBytes("UTF-8"));
return new Base64Encoder().encode(hmacData);
} catch (UnsupportedEncodingException e) {
throw new GeneralSecurityException(e);
}
}
}