Cryptography Hash Functions

Overview

This plug-in contains functions that can perform the following:

  • Create hex encoded hashes for md5, sha1, sha256, and sha512 algorithms
  • Generate hashes with secret key for HMAC
  • Generate hashes of documents
  • Generate a signature key

Key Features & Functionality

This listing currently represents version 2.3.0 of the plug-in.  The functions included are as follows:

  1. md5hash(Text)
  2. md5hashdocument(Document)
  3. sha1hash(Text)
  4. sha1hashdocument(Document)
  5. sha256hash(Text)
  6. sha256hashdocument(Document)
  7. sha512hash(Text)
  8. sha512hashdocument(Document)
  9. hmacmd5hash(Key, Text)
  10. hmacmd5hashdocument(Key, Document)
  11. hmacsha1hash(Key, Text
  12. hmacsha1hashdocument(Key, Document)
  13. hmacsha256hash(Key, Text)
  14. hmacsha256hashdocument(Key, Document)
  15. hmacsha512hash(Key, Text)
  16. hmacsha512hashdocument(Key, Document)
  17. getSignatureKey(key, dateStamp, regionName, serviceName)  
    • Added in version 2.0.0 to assist with AWS integrations
    • Added support for secure credentials store in version 2.1.0
  18. hmacsha256bytehash
  19. getAwsV4Signature
  20. hmacSHA256HexKeyBase64(Key, Text)

Example Use:

  • Rule Definition: md5Hash(ri!string)
  • Rule Output: 63b03e21a6f184cfd36247b5dc0e86cf
Anonymous
  • Hi  Could you please let me know how you generated Shared Access Signature in Appian using this plugin? Because I used this plugin to generate SAS for Azure BLOB using the below code but the authorization header fails. Can you debug below code and let me know what i miss

    local!sampleSign:"GET\n\n\n\n\n\n\n\n\n\n\n\nx-ms-date:Fri, 23 Feb 2024 16:10:38 GMT\nx-ms-version:2015-04-05\n/mystorageaccount/mycontainer/myfilenamewithext",
    local!base64Key: decodebase64string(/*Access Key of Storage Account*/),
    local!unicodeSign: code(local!sampleSign),/*UTF-8 conversion*/
    local!hashKey: hmacsha256bytehash(
    key: local!base64Key,
    scsValue:{""},
    string: local!unicodeSign,
    returnBase64: true
    ),
    { touniformstring(local!hashKey) }

  • v3.0.0 Release Notes
    • removed the usage of deprecated APIs in Appian 23.2 and above

  • Hi Raymond,

    While performing a health check check on Appian 20.3 I got following alert related to this plugin.

    Cryptographic Hash Functions (com.appiancorp.psshared) references deprecated Appian APIs
    [deprecated] com.appiancorp.suiteapi.common.exceptions.AppianException.<init>(java.lang.String)

    This plugin is working fine in 20.3. Will 20.4 upgrade has any impact on working of this plugin.

    Could you please comment on it.

    Thanks

    Amit Chaugule

  • Hi Stefan, did you ever find a solution? We're trying to do the same thing with Azure Storage API SAS, which also provides a base64 encoded key.

  • Hi Ed,

    Please try with just the id of the document; this documentId will be used in the class to load the document by the Id

  • I am having some issue using the sha1hashdocument function.  I can get a value with sha1hash(todocument(43763)) but is not the correct hash value.

    What am I missing?

    usage (where 43763 is the appian document id): 

      sha1hashdocument(todocument(43763))

    getting the following error:

    Expression evaluation error at function 'sha1hashdocument': The passed parameter(s) are of the wrong type. Received the type com.appiancorp.common.xml.JaxbConversionException: JAXB was not able to produce a value for typed value TypedValue[it=13,v=43763] as java class java.lang.Long.

  • Hi Eliot, this plugin was of great help when integrating to the Azure Service Bus. Now we need to talk to Azure Cosmos DB and they found, annoyingly, another way of building auth tokens The key itself is base64 encoded and must be decoded before usage. See https://docs.microsoft.com/de-de/rest/api/cosmos-db/access-control-on-cosmosdb-resources?redirectedfrom=MSDN. I did not find a way to do that in Appian. Any ideas? I almost don't dare to ask if you can add another function to the plugin.

  • Any chance of updating this to use scsField so the key can be stored in the Third Party Credentials store?

  • This is a very useful plugin and we have used some of its functions for creation of a Shared Access Signature token required for REST API Intergation with Azure Service Bus. Much appreciate Appian's support with this Plugin