HELP FILE

Data validation code samples

Sample Code – Static Chat Button

<!-- BoldChat Live Chat Button HTML v5.00 (Type=Web,ChatButton=7.1 T,Website=Trenton  --><div style="text-align: center; white-space: nowrap;"><script type="text/javascript">  var bccbId = Math.random(); document.write(unescape('%3Cdiv id=' + bccbId + '%3E%3C/div%3E'));  var _bcvma = _bcvma || [];  _bcvma.push(["setAccountID", "2307475884"]);  _bcvma.push(["setParameter", "WebsiteID", "665123557559499"]);  _bcvma.push(["setParameter", "SecureParameters", function(callback){ callback("61D2774599ABE6B36086DB65A32571F8D43F0D57170CFDE5A9CCF49AB38DD235FC151FD15F2F557163C73155E031C0B401D9124A5297746381791D589F7E6273Type=chat&ChatButtonDefID=58444531713309044&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ChatKey=Something unique to chat 1400085276518&VisitorKey=something unique to visitor&Expiration=1400085306518"); }]);  _bcvma.push(["addStatic", {type: "chat", bdid: "58444531713309044", id: bccbId}]);  var bcLoad = function(){    if(window.bcLoaded) return; window.bcLoaded = true;    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);  };  if(window.pageViewer && pageViewer.load) pageViewer.load();  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);  else window.attachEvent('onload', bcLoad);</script> <span style="font-family: Arial; font-size: 8pt; color: black;"><a href="http://www.boldchat.com" style="text-decoration: none; color: black;">Live chat</a> by BoldChat</span></div><!-- /BoldChat Live Chat Button HTML v5.00 -->

Sample Code – Text Chat Button

<!-- BoldChat Live Chat Button HTML v5.00 (Type=HTML,ChatWindow=7.1 T,Department=Billing,Website=Trenton 2 --><div style="text-align: center; white-space: nowrap;"><script type="text/javascript">  var bccbId = Math.random(); document.write(unescape('%3Cdiv id=' + bccbId + '%3E%3C/div%3E'));  window._bcvma = window._bcvma || [];  _bcvma.push(["setAccountID", "2307475884"]);  _bcvma.push(["setParameter", "WebsiteDefID", "665123557559499"]);  _bcvma.push(["setParameter", "SecureParameters", function(callback){ callback("61D2774599ABE6B36086DB65A32571F8D43F0D57170CFDE5A9CCF49AB38DD235FC151FD15F2F557163C73155E031C0B401D9124A5297746381791D589F7E6273Type=chat&DepartmentID=2401021351553992858&ChatWindowID=8972751348093551233&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ChatKey=Something unique to chat 1400085276518&VisitorKey=something unique to visitor&Expiration=1400085306518"); }]);  _bcvma.push(["addText", {type: "chat", department: "2401021351553992858", window: "8972751348093551233", available: "Chat is Available", unavailable: "Chat is Unavailable", id: bccbId}]);  var bcLoad = function(){    if(window.bcLoaded) return; window.bcLoaded = true;    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);  };  if(window.pageViewer && pageViewer.load) pageViewer.load();  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);  else window.attachEvent('onload', bcLoad);</script> <span style="font-family: Arial; font-size: 8pt; color: black;"><a href="http://www.boldchat.com" style="text-decoration: none; color: black;">Live chat</a> by BoldChat</span></div><!-- /BoldChat Live Chat Button HTML v5.00 -->

Sample Code - Visitor Monitoring and Floating Chat Button

<!-- BoldChat Visitor Monitor HTML v5.00 (Website=Trenton ,Ruleset=7.1 My Custom Chat Invitation (Ryan),Floating Chat=7.1 (Ryan) floating,Floating Call=- None - --><script type="text/javascript">  var _bcvma = _bcvma || [];  _bcvma.push(["setAccountID", "2307475884"]);  _bcvma.push(["setParameter", "WebsiteID", "665123557559499"]);  _bcvma.push(["setParameter", "SecureParameters", function(callback){ callback("7F305427D701DB665E5A273F259C9B1E6EFED73B512CCB779E7D31FCA789FE8488AA179278ED2F0DF5845F209FD1CC6A0FF6E27BD2151F218F73F4BFF8BF375FType=chat&FloatingChatButtonDefID=660128588754890&VisitName=floating&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ChatKey=Something unique to chat 1400085276518&VisitorKey=something unique to visitor&Expiration=1400085306518"); }]);  _bcvma.push(["addFloat", {type: "chat", id: "660128588754890"}]);  _bcvma.push(["setParameter", "SecureParameters", "1AC03C6EF0B1C46A96DE1CD9250D40EB4DF5C105837162AA063FC2B2424DA4870B34F1FB17BC35EB60A6576B32E092F6153BD1F9219BBAB388571FFAA183EB64Type=visit&InvitationID=2076721744768832302&VisitName=invite&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=http://boldchat.com&ReferrerURL=https://google.com&VisitorKey=something unique to visitor&Expiration=1400085306518"]);  _bcvma.push(["pageViewed"]);  var bcLoad = function(){    if(window.bcLoaded) return; window.bcLoaded = true;    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);  };  if(window.pageViewer && pageViewer.load) pageViewer.load();  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);  else window.attachEvent('onload', bcLoad);</script><noscript><a href="http://www.boldchat.com" title="Live Chat Software" target="_blank"><img alt="Live Chat Software" src="https://vms.boldchat.com/aid/2307475884/bc.vmi?&amp;wdid=665123557559499&amp;secured=1AC03C6EF0B1C46A96DE1CD9250D40EB4DF5C105837162AA063FC2B2424DA4870B34F1FB17BC35EB60A6576B32E092F6153BD1F9219BBAB388571FFAA183EB64Type%3Dvisit%26InvitationID%3D2076721744768832302%26VisitName%3Dinvite%26VisitRef%3Da%20ref%26VisitInfo%3Dinfo%26VisitEmail%3Demail%40gmail.com%26VisitPhone%3D3166704000%26URL%3Dhttp%3A%2F%2Fboldchat.com%26ReferrerURL%3Dhttps%3A%2F%2Fgoogle.com%26VisitorKey%3Dsomething%20unique%20to%20visitor%26Expiration%3D1400085306518" border="0" width="1" height="1" /></a></noscript><!-- /BoldChat Visitor Monitor HTML v5.00 -->

Sample Code – Conversion Code

<!-- BoldChat Conversion Tracking HTML v5.00 (Website=Trenton ,ConversionCode=account) --><script type="text/javascript">  var _bcvma = _bcvma || [];  _bcvma.push(["setAccountID", "2307475884"]);  _bcvma.push(["addConversion", {    SecureParameters: "53D52AC941C774AB8A0D0F575D12FE873A2CB861D57172A4E54BE897583E294E3B6B665129AF19DEAD041C6975E84D160B2B4FD0EC825A69FE606729F1F81776Type=conversion&ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info&ConversionRef=123456&Expiration=1400085306518",    WebsiteDefID: "665123557559499"  }]);  if(window.pageViewer && pageViewer.conversion) pageViewer.conversion(_bcct[_bcct.length-1]);  var bcLoad = function(){    if(window.bcLoaded) return; window.bcLoaded = true;    var vms = document.createElement("script"); vms.type = "text/javascript"; vms.async = true;    vms.src = ('https:'==document.location.protocol?'https://':'http://') + "vmss.boldchat.com/aid/2307475884/bc.vms4/vms.js";    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(vms, s);  };  if(window.pageViewer && pageViewer.load) pageViewer.load();  else if(window.addEventListener) window.addEventListener('load', bcLoad, false);  else window.attachEvent('onload', bcLoad);</script><noscript><a href="http://www.boldchat.com" title="Live Chat Software" target="_blank"><img alt="Live Chat Software" src="https://vms.boldchat.com/aid/2307475884/bc.vci?wdid=665123557559499&amp;secured=53D52AC941C774AB8A0D0F575D12FE873A2CB861D57172A4E54BE897583E294E3B6B665129AF19DEAD041C6975E84D160B2B4FD0EC825A69FE606729F1F81776Type%3Dconversion%26ConversionCodeID%3D33221100%26ConversionAmount%3D100.0%26ConversionInfo%3Dconversion%20info%26ConversionRef%3D123456%26Expiration%3D1400085306518" border="0" width="1" height="1" /></a></noscript><!-- /BoldChat Conversion Tracking HTML v5.00 -->

Sample Encryption and Hashing Applications

Here we use the Bouncy Castle APIs for performing PGP encryption: https://www.bouncycastle.org/

The methods illustrated in the samples below validate the parameter data by either encrypting it with the given PGP key or hashing it with the given hash key. The samples can be either embedded inline in jsp/asp.net or pulled out into utility classes/packages.

In the PGP examples that follow, the encryptionKey variable contains the public PGP key of the server, which is found in the Website setup. The signingKey variable contains your private PGP key.

Java PGP
import java.util.Date;import java.util.Iterator;import java.net.URLEncoder;import java.security.KeyPairGenerator;import java.security.SecureRandom;import java.security.Security;import java.security.MessageDigest;import org.bouncycastle.openpgp.*;import org.bouncycastle.openpgp.operator.*;import org.bouncycastle.openpgp.operator.bc.*;import org.bouncycastle.bcpg.*;import java.io.*;public class PGPUtil {	public static void main(String[] args) throws Exception {		Long accountID = 2307475884L;		Long websiteID = 665123557559499L;		Long chatButtonID = 58444531713309044L;		Long floatingChatButtonID = 660128588754890L;				String url = "http://boldchat.com";		String referrer = "http://google.com";		String chatKey = "Something unique to chat " + String.valueOf(System.currentTimeMillis());;		String visitorKey = "something unique to visitor";		String appendData =  "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + String.valueOf(System.currentTimeMillis()+30000);		String customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL="			+ URLEncoder.encode(url, "UTF-8") + "&ReferrerURL=" + URLEncoder.encode(referrer, "UTF-8");					String chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;		String invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;		String conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;						byte[] encryptionKey = "-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\nmQENBFNnvrgDCACe2sn+PAHxG/fhfHgFNu4ClODlvrduchKS49AsILEsgB+ie1Yf\r\n3gz1j2JrIcwsEg1AAVPOHJvoXBjLJMoA0TfJbtVXP9S/9Q6XGuQgtOb/HVP5mDTZ\r\nwEGDQH5l6Oxob/xWBD8SAjlQoHzPwEsJMigZiFdQMDCUMIlpcSje3Om2ZGhZ7Qc0\r\ncw0PgR9Wk3NWzX38RqMkxlL+l2UPHvRU3e3nPEDvJSbFORzsd7H/D6iAOG//fd0j\r\nU+dM+vZ7AI4XncFI/OcHxUPISEZK6whg0DjaOMGONZD3bO2RtaeOL+5DD+DMRscW\r\nlYwrGjA4PTQQ+Ba2fyaG73FEUlRdcdwmhmXbABEBAAG0CGJvbGRjaGF0iQE3BBAD\r\nCgAhBQJTZ765AhsDBAsJCAcGFQoIAgkLBAsJCAcGFQoIAgkLAAoJECe+KX41fF/C\r\nO/kIAIEfLLyT9v9vyzgqpuaBh6l+6db0nKmaXB9wlYMWVtCPJ4XtG3paJXuuNbjw\r\nq5R0P+zwa2j5jDhkOHYasAxRvevxuIHjnkU/UIUshJRsFANGQ8d+vZdF9yRLneKB\r\n933svbm9XT/dQtzGVFpP0IgdI8TVmxmzc+2n69AM4u8ScmyBvX9m1cRYEuS9v4tS\r\n13AAp/xgOg4qujno1tc158jOsGE27IxZXyCco2EwJVkz2ms4e0I/4LNOOaqWRvOF\r\n7Nxnj06zfT0Reg4ILk2ERNfG/qVpOwUuYvYc7mCvhJ8UBtHw50v9K01k9/RC61Mf\r\nrjFvV5ynRX259HTeqJl9h+hNeHy5AQ0EU2e+uQEIALVukl/lfWWgyi0ThGoiWwGy\r\nVnunONHiby7CAz6gDtlGdgv1za6IB5RqVbgrGNfDYHyH8gHovXw69tMUA/1ux0YS\r\nC9wE3sXY9iDkdpQMPPobtoQhkPtDm4kEYVb/MYKapdgWxfXA/HOra4br21xiY5zS\r\nCJ1dDMu71uL2xLFtZvDMZjAxVLrbuY/QODfNro6hKiwJZ5X7PnHzJ7VVowlhYq0v\r\n7f61stNC2EGKsjOSUlr22Iw0k6H055xfwLWMrOBcE8Bqqd3GsAD7QypINSSrgSdV\r\n4ebYDRzD41O2elrfElGAB4yhqwLEVYOZ4JuZxJ1q2kpPxZjmjyxfPv7tox7dgxUA\r\nEQEAAYkBHwQYAwoACQUCU2e+uQIbDAAKCRAnvil+NXxfwtUbB/4pmdAV7COUoXdC\r\nNlTj3cpxSxtV0iBdxjneJaNBiR7JIuL/3uoD7bMMMxpXDs5L9s1CLRLUMNarK8pj\r\nkwi3pVhET19r/6I8rEt+V4ddxODjggO6zuc5vMki8tlufna4cyhAyvbGPIZ0C/b0\r\nqGYNnDqactBpzuqT9QjMfUQSMt7acAZIBqK0UvCCwPsuNFz4HFPGoqW3BWmCN7CC\r\nVOCKwecCNCj0Y9SJdOZP8mvXubSeb3inWGuONLpuBF2ciIQCkRO2DtGwEMbdbyoY\r\nZUkdI7Rk793tfLd4mqT/BfikQo0Uyc8yYYbBkr6lPTT8J0mYyFL7SOkf10XoJ+ap\r\n7cLZwjou\r\n=pD7x\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n".getBytes("UTF-8");		byte[] signingKey = "-----BEGIN PGP PRIVATE KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\n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\r\n2sJmSsT9+mY=\r\n=tUYw\r\n-----END PGP PRIVATE KEY BLOCK-----\r\n".getBytes("UTF-8");		char[] password = "boldchat".toCharArray();				String encryptedChat = new String(PGPUtil.encrypt(chat.getBytes("UTF-8"), encryptionKey, signingKey, password), "UTF-8");		String encryptedInvite = new String(PGPUtil.encrypt(invite.getBytes("UTF-8"), encryptionKey, signingKey, password), "UTF-8");		String encryptedConversion = new String(PGPUtil.encrypt(conversion.getBytes("UTF-8"), encryptionKey, signingKey, password), "UTF-8");			System.out.println("Encrypted Chat SecureParameters: " + encryptedChat);		System.out.println("Encrypted Invite SecureParameters: " + encryptedInvite);		System.out.println("Encrypted Conversion SecureParameters: " + encryptedConversion);			}	    public static byte[] encrypt(byte[] data, byte[] publicKeyData, byte[] privateKeyData, char[] passwd) throws Exception    {    	ByteArrayOutputStream baos = new ByteArrayOutputStream();        OutputStream out = new ArmoredOutputStream(baos); 	    PGPPublicKey publicKey = null;        InputStream inputStream = org.bouncycastle.openpgp.PGPUtil.getDecoderStream(new ByteArrayInputStream(publicKeyData));        PGPPublicKeyRingCollection pgpPub = new PGPPublicKeyRingCollection(inputStream);        OUTER1: for (Iterator i=pgpPub.getKeyRings(); i.hasNext();){     	   for(Iterator j=((PGPPublicKeyRing)i.next()).getPublicKeys(); j.hasNext(); ){         	   PGPPublicKey k = (PGPPublicKey) j.next();         	   if(k.isEncryptionKey()) {         		   publicKey = k;         		   break OUTER1;         	   }     	   }        }        if(publicKey == null) throw new Exception("Can't find encryption key in key ring.");        PGPSecretKeyRingCollection pgpSec = new PGPSecretKeyRingCollection(org.bouncycastle.openpgp.PGPUtil.getDecoderStream(new ByteArrayInputStream(privateKeyData)));        PGPPrivateKey privateKey = null;        PGPSecretKey secretKey = null;        OUTER2: for(Iterator i=pgpSec.getKeyRings(); i.hasNext();){        	PGPSecretKeyRing keyRing = (PGPSecretKeyRing) i.next();        	for(Iterator j=keyRing.getSecretKeys(); j.hasNext();){        		secretKey = (PGPSecretKey) j.next();        		privateKey = secretKey.extractPrivateKey(new BcPBESecretKeyDecryptorBuilder(new BcPGPDigestCalculatorProvider()).build(passwd));        		break OUTER2;        	}        }        if(secretKey == null) throw new Exception("Can't find signature key in key ring.");                ByteArrayOutputStream cb = new ByteArrayOutputStream();        PGPCompressedDataGenerator compressedGenerator = new PGPCompressedDataGenerator(PGPCompressedData.ZIP);        OutputStream compressedOut = compressedGenerator.open(cb);        PGPSignatureGenerator signatureGenerator = new PGPSignatureGenerator(new BcPGPContentSignerBuilder(secretKey.getPublicKey().getAlgorithm(), HashAlgorithmTags.SHA512));        signatureGenerator.init(PGPSignature.BINARY_DOCUMENT, privateKey);        for(Iterator i=secretKey.getPublicKey().getUserIDs(); i.hasNext();){            PGPSignatureSubpacketGenerator spGen = new PGPSignatureSubpacketGenerator();            spGen.setSignerUserID(false, (String) i.next());            signatureGenerator.setHashedSubpackets(spGen.generate());        }        signatureGenerator.generateOnePassVersion(true).encode(compressedOut);        PGPLiteralDataGenerator lgen = new PGPLiteralDataGenerator();        OutputStream finalOut = lgen.open(compressedOut, PGPLiteralData.BINARY, "", new Date(), new byte[4096]);        finalOut.write(data);        signatureGenerator.update(data);        finalOut.close();        lgen.close();        signatureGenerator.generate().encode(compressedOut);        compressedGenerator.close();        compressedOut.close();                byte[] compressedData = cb.toByteArray();        PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(new BcPGPDataEncryptorBuilder(PGPEncryptedData.AES_256).setWithIntegrityPacket(true).setSecureRandom(new SecureRandom()));        encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(publicKey));        OutputStream encryptedOut = encryptedDataGenerator.open(out, compressedData.length);        encryptedOut.write(compressedData);        encryptedOut.close();        encryptedDataGenerator.close();        out.close();            	return baos.toByteArray();    }	}
Java SHA-512
import java.net.URLEncoder;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;public class SHA512Util {	public static void main(String[] args) throws Exception {		Long chatButtonID = 58444531713309044L;		Long floatingChatButtonID = 660128588754890L;		Long expiration = System.currentTimeMillis();		String url = "http://boldchat.com";		String referrer = "http://google.com";		String chatKey = "Something unique to chat " + expiration;		String visitorKey = "something unique to visitor";		String appendData = "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + expiration;		String customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL=" + URLEncoder.encode(url, "UTF-8") + "&ReferrerURL=" + URLEncoder.encode(referrer, "UTF-8");		String chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;		String invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;		String conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;		String hashKey = "uWalJOJ8sOqcVuobDSwBIr7+KofZAq0K9/b0h/JviTYFqjpS/d0uIeewf/kgQLEM";		String hashedChat = appendHash(chat, hashKey);		String hashedInvite = appendHash(invite, hashKey);		String hashedConversion = appendHash(conversion, hashKey);		System.out.println("Hashed Chat SecureParameters: " + hashedChat);		System.out.println("Hashed Invite SecureParameters: " + hashedInvite);		System.out.println("Hashed Conversion SecureParameters: " + hashedConversion);	}	final protected static String HMAC_SHA512 = "HmacSHA512";	public static String appendHash(String data, String hash) throws Exception {		SecretKeySpec keySpec = new SecretKeySpec(hash.getBytes("UTF-8"), HMAC_SHA512);		Mac hmac = Mac.getInstance(HMAC_SHA512);		hmac.init(keySpec);		byte[] hashBytes = hmac.doFinal(data.getBytes("UTF-8"));		String hashText = bytesToHex(hashBytes);		return hashText + data;	}	final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();	public static String bytesToHex(byte[] bytes) {		char[] hexChars = new char[bytes.length * 2];		for(int j = 0; j < bytes.length; j++) {			int v = bytes[j] & 0xFF;			hexChars[j * 2] = hexArray[v >>> 4];			hexChars[j * 2 + 1] = hexArray[v & 0x0F];		}		return new String(hexChars);	}}
C# PGP
using System;using System.Collections;using System.Linq;using System.Text;using System.IO;using System.Security.Cryptography;using Org.BouncyCastle.Bcpg;using Org.BouncyCastle.Bcpg.OpenPgp;class PgpUtil{	static void Main(string[] args)	{		long accountID = 2307475884L;		long websiteID = 665123557559499L;		long chatButtonID = 58444531713309044L;		long floatingChatButtonID = 660128588754890L;			long expiration = (long)((DateTime.Now - DateTime.Parse("1/1/1970 0:0:0 GMT", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None).ToUniversalTime()).TotalMilliseconds + 30000);		string url = "http://boldchat.com";		string referrer = "http://google.com";		string chatKey = "Something unique to chat";		string visitorKey = "something unique to visitor";		string appendData = "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + expiration;		string customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL="			+ Uri.EscapeUriString(url) + "&ReferrerURL=" + Uri.EscapeUriString(referrer);				string chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;		string invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;		string conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;				byte[] encryptionKey = Encoding.UTF8.GetBytes("-----BEGIN PGP PUBLIC KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\nmQENBFNnvrgDCACe2sn+PAHxG/fhfHgFNu4ClODlvrduchKS49AsILEsgB+ie1Yf\r\n3gz1j2JrIcwsEg1AAVPOHJvoXBjLJMoA0TfJbtVXP9S/9Q6XGuQgtOb/HVP5mDTZ\r\nwEGDQH5l6Oxob/xWBD8SAjlQoHzPwEsJMigZiFdQMDCUMIlpcSje3Om2ZGhZ7Qc0\r\ncw0PgR9Wk3NWzX38RqMkxlL+l2UPHvRU3e3nPEDvJSbFORzsd7H/D6iAOG//fd0j\r\nU+dM+vZ7AI4XncFI/OcHxUPISEZK6whg0DjaOMGONZD3bO2RtaeOL+5DD+DMRscW\r\nlYwrGjA4PTQQ+Ba2fyaG73FEUlRdcdwmhmXbABEBAAG0CGJvbGRjaGF0iQE3BBAD\r\nCgAhBQJTZ765AhsDBAsJCAcGFQoIAgkLBAsJCAcGFQoIAgkLAAoJECe+KX41fF/C\r\nO/kIAIEfLLyT9v9vyzgqpuaBh6l+6db0nKmaXB9wlYMWVtCPJ4XtG3paJXuuNbjw\r\nq5R0P+zwa2j5jDhkOHYasAxRvevxuIHjnkU/UIUshJRsFANGQ8d+vZdF9yRLneKB\r\n933svbm9XT/dQtzGVFpP0IgdI8TVmxmzc+2n69AM4u8ScmyBvX9m1cRYEuS9v4tS\r\n13AAp/xgOg4qujno1tc158jOsGE27IxZXyCco2EwJVkz2ms4e0I/4LNOOaqWRvOF\r\n7Nxnj06zfT0Reg4ILk2ERNfG/qVpOwUuYvYc7mCvhJ8UBtHw50v9K01k9/RC61Mf\r\nrjFvV5ynRX259HTeqJl9h+hNeHy5AQ0EU2e+uQEIALVukl/lfWWgyi0ThGoiWwGy\r\nVnunONHiby7CAz6gDtlGdgv1za6IB5RqVbgrGNfDYHyH8gHovXw69tMUA/1ux0YS\r\nC9wE3sXY9iDkdpQMPPobtoQhkPtDm4kEYVb/MYKapdgWxfXA/HOra4br21xiY5zS\r\nCJ1dDMu71uL2xLFtZvDMZjAxVLrbuY/QODfNro6hKiwJZ5X7PnHzJ7VVowlhYq0v\r\n7f61stNC2EGKsjOSUlr22Iw0k6H055xfwLWMrOBcE8Bqqd3GsAD7QypINSSrgSdV\r\n4ebYDRzD41O2elrfElGAB4yhqwLEVYOZ4JuZxJ1q2kpPxZjmjyxfPv7tox7dgxUA\r\nEQEAAYkBHwQYAwoACQUCU2e+uQIbDAAKCRAnvil+NXxfwtUbB/4pmdAV7COUoXdC\r\nNlTj3cpxSxtV0iBdxjneJaNBiR7JIuL/3uoD7bMMMxpXDs5L9s1CLRLUMNarK8pj\r\nkwi3pVhET19r/6I8rEt+V4ddxODjggO6zuc5vMki8tlufna4cyhAyvbGPIZ0C/b0\r\nqGYNnDqactBpzuqT9QjMfUQSMt7acAZIBqK0UvCCwPsuNFz4HFPGoqW3BWmCN7CC\r\nVOCKwecCNCj0Y9SJdOZP8mvXubSeb3inWGuONLpuBF2ciIQCkRO2DtGwEMbdbyoY\r\nZUkdI7Rk793tfLd4mqT/BfikQo0Uyc8yYYbBkr6lPTT8J0mYyFL7SOkf10XoJ+ap\r\n7cLZwjou\r\n=pD7x\r\n-----END PGP PUBLIC KEY BLOCK-----\r\n");		byte[] signingKey = Encoding.UTF8.GetBytes("-----BEGIN PGP PRIVATE KEY BLOCK-----\r\nVersion: BCPG v1.50\r\n\r\n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\r\n2sJmSsT9+mY=\r\n=tUYw\r\n-----END PGP PRIVATE KEY BLOCK-----\r\n");		char[] password = "boldchat".ToCharArray();				string encryptedChat = Encoding.UTF8.GetString(Encrypt(Encoding.UTF8.GetBytes(chat), encryptionKey, signingKey, password));		string encryptedInvite = Encoding.UTF8.GetString(Encrypt(Encoding.UTF8.GetBytes(invite), encryptionKey, signingKey, password));		string encryptedConversion = Encoding.UTF8.GetString(Encrypt(Encoding.UTF8.GetBytes(conversion), encryptionKey, signingKey, password));		Console.WriteLine("Encrypted Chat SecureParameters: " + encryptedChat);		Console.WriteLine("Encrypted Invite SecureParameters: " + encryptedInvite);		Console.WriteLine("Encrypted Conversion SecureParameters: " + encryptedConversion);		Console.ReadLine();	}	public static byte[] Encrypt(byte[] data, byte[] publicKeyData, byte[] privateKeyData, char[] passwd)	{		MemoryStream baos = new MemoryStream();		Stream o = new ArmoredOutputStream(baos);		PgpPublicKey publicKey = null;		Stream inputStream = Org.BouncyCastle.Bcpg.OpenPgp.PgpUtilities.GetDecoderStream(new MemoryStream(publicKeyData));		PgpPublicKeyRingBundle pgpPub = new PgpPublicKeyRingBundle(inputStream);		for (IEnumerator i = pgpPub.GetKeyRings().GetEnumerator(); i.MoveNext(); )		{			for (IEnumerator j = ((PgpPublicKeyRing)i.Current).GetPublicKeys().GetEnumerator(); publicKey == null && j.MoveNext(); )			{				PgpPublicKey k = (PgpPublicKey)j.Current;				if (k.IsEncryptionKey)				{					publicKey = k;				}			}		}		if (publicKey == null) throw new Exception("Can't find encryption key in key ring.");		PgpSecretKeyRingBundle pgpSec = new PgpSecretKeyRingBundle(Org.BouncyCastle.Bcpg.OpenPgp.PgpUtilities.GetDecoderStream(new MemoryStream(privateKeyData)));		PgpPrivateKey privateKey = null;		PgpSecretKey secretKey = null;		for (IEnumerator i = pgpSec.GetKeyRings().GetEnumerator(); privateKey == null && i.MoveNext(); )		{			PgpSecretKeyRing keyRing = (PgpSecretKeyRing)i.Current;			for (IEnumerator j = keyRing.GetSecretKeys().GetEnumerator(); j.MoveNext(); )			{				secretKey = (PgpSecretKey)j.Current;				privateKey = secretKey.ExtractPrivateKey(passwd);				break;			}		}		if (secretKey == null) throw new Exception("Can't find signature key in key ring.");		MemoryStream cb = new MemoryStream();		PgpCompressedDataGenerator compressedGenerator = new PgpCompressedDataGenerator(CompressionAlgorithmTag.Zip);		Stream compressedOut = compressedGenerator.Open(cb);		PgpSignatureGenerator signatureGenerator = new PgpSignatureGenerator(secretKey.PublicKey.Algorithm, HashAlgorithmTag.Sha512);		signatureGenerator.InitSign(PgpSignature.BinaryDocument, privateKey);		for (IEnumerator i = secretKey.PublicKey.GetUserIds().GetEnumerator(); i.MoveNext(); )		{			PgpSignatureSubpacketGenerator spGen = new PgpSignatureSubpacketGenerator();			spGen.SetSignerUserId(false, (String)i.Current);			signatureGenerator.SetHashedSubpackets(spGen.Generate());		}		signatureGenerator.GenerateOnePassVersion(true).Encode(compressedOut);		PgpLiteralDataGenerator lgen = new PgpLiteralDataGenerator();		Stream finalOut = lgen.Open(compressedOut, PgpLiteralData.Binary, "", DateTime.Now, new byte[4096]);		finalOut.Write(data, 0, data.Length);		signatureGenerator.Update(data);		finalOut.Close();		lgen.Close();		signatureGenerator.Generate().Encode(compressedOut);		compressedGenerator.Close();		compressedOut.Close();		byte[] compressedData = cb.ToArray();		PgpEncryptedDataGenerator encryptedDataGenerator = new PgpEncryptedDataGenerator(SymmetricKeyAlgorithmTag.Aes256, true, new Org.BouncyCastle.Security.SecureRandom());		encryptedDataGenerator.AddMethod(publicKey);		Stream encryptedOut = encryptedDataGenerator.Open(o, compressedData.Length);		encryptedOut.Write(compressedData, 0, compressedData.Length);		encryptedOut.Close();		encryptedDataGenerator.Close();		o.Close();		return baos.ToArray();	}}
C# SHA-512
using System;using System.Web;using System.Text;using System.Security.Cryptography;class Sha512Util{    static void Main(string[] args)    {        long chatButtonID = 58444531713309044L;        long floatingChatButtonID = 660128588754890L;        long expiration = (long)((DateTime.Now - DateTime.Parse("1/1/1970 0:0:0 GMT", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None).ToUniversalTime()).TotalMilliseconds + 30000);        string url = "http://boldchat.com";        string referrer = "http://google.com";        string chatKey = "Something unique to chat " + expiration;        string visitorKey = "something unique to visitor";        string appendData = "&ChatKey=" + chatKey + "&VisitorKey=" + visitorKey + "&Expiration=" + expiration;        string customData = "&CustomURL=http://boldchat.com&VisitRef=a ref&VisitInfo=info&VisitEmail=email@gmail.com&VisitPhone=3166704000&URL="            + EncodeUrl(url) + "&ReferrerURL=" + EncodeUrl(referrer);        string chat = "ChatButtonDefID=" + chatButtonID + customData + appendData;        string invite = "FloatingChatButtonDefID=" + floatingChatButtonID + "&InvitationDefID=2076721744768832302&VisitName=floating" + customData + appendData;        string conversion = "ConversionCodeID=33221100&ConversionAmount=100.0&ConversionInfo=conversion info" + appendData;        string hashKey = "uWalJOJ8sOqcVuobDSwBIr7+KofZAq0K9/b0h/JviTYFqjpS/d0uIeewf/kgQLEM";        string hashedChat = AppendHash(chat, hashKey);        string hashedInvite = AppendHash(invite, hashKey);        string hashedConversion = AppendHash(conversion, hashKey);        Console.WriteLine(String.Format("Hashed Chat SecureParameters: {0}\n",hashedChat));        Console.WriteLine(String.Format("Hashed Invite SecureParameters: {0}\n", hashedInvite));        Console.WriteLine(String.Format("Hashed Conversion SecureParameters: {0}\n", hashedConversion));        Console.ReadLine();    }    public static string AppendHash(string data, string hash)    {        byte[] hashBytes = new HMACSHA512(Encoding.UTF8.GetBytes(hash)).ComputeHash(Encoding.UTF8.GetBytes(data));        string hashText = BytesToHex(hashBytes);        return hashText + data;    }    protected static char[] hexArray = "0123456789ABCDEF".ToCharArray();    public static string BytesToHex(byte[] bytes)    {        char[] hexChars = new char[bytes.Length * 2];        for (int j = 0; j < bytes.Length; j++)        {            int v = bytes[j] & 0xFF;            hexChars[j * 2] = hexArray[v >> 4];            hexChars[j * 2 + 1] = hexArray[v & 0x0F];        }        return new string(hexChars);    }    public static string EncodeUrl(string url)    {        string encodedUrl = HttpUtility.UrlEncode(url, Encoding.UTF8);        return UpperCaseEncodedUrl(encodedUrl);    }    public static string UpperCaseEncodedUrl(string encodedUrl)    {        char[] temp = encodedUrl.ToCharArray();        for (int i = 0; i < temp.Length - 2; i++)        {            if (temp[i] == '%')            {                temp[i + 1] = char.ToUpper(temp[i + 1]);                temp[i + 2] = char.ToUpper(temp[i + 2]);            }        }        return new string(temp);    }}