key.init(keyBytes,"HmacSHA512")
Nearly. This UDF is hardcoded for use with the "HmacSHA512". Change it to "HmacSHA1" or, even better, make it a function parameter, such as "encoding".
Example:
<cfset action = "http://membersuite.com/contracts/IConciergeAPIService/WhoAmI"> <cfset associationId = "00000000-0000-0000-0000-000000000000"> <cfset sessionId = "11111111-1111-1111-1111-111111111111"> <cfset stringToSign = action & associationId & sessionId> <cfset key = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="> <cfset result = binaryEncode(hmacEncrypt(key, stringToSign, "US-ASCII"), "base64")> <cfset writeDump(result)>
Result:
2zsMYdHb/MJUeTjv5cQl5pBuIqU=
NB: As with CF10 +, HMAC is now the main function:
<cfset resultAsHex = hmac(stringToSign, binaryDecode(key, "base64"), "hmacsha1", "us-ascii")> <cfset resultAsBase64 = binaryEncode(binaryDecode(resultAsHex, "hex"), "base64")> <cfset writeDump(resultAsBase64)>
Leigh
source share