Hi Paul.
I contributed the HMAC SHA256 to Community Commons as I had a similar problem to you with my app needing to authenticate to a third party service.
I would suggest you use a Java Action. The following should do the trick.
Create a module called “HMACSHA1” and add a Java Action called “GenerateHMAC_SHA1” that takes two string parameters, “key” and “valueToEncrypt”. Add the following code to the Java source for the action.
// This file was generated by Mendix Studio Pro.
//
// WARNING: Only the following code will be retained when actions are regenerated:
// - the import list
// - the code between BEGIN USER CODE and END USER CODE
// - the code between BEGIN EXTRA CODE and END EXTRA CODE
// Other code you write will be lost the next time you deploy the project.
// Special characters, e.g., é, ö, à, etc. are supported in comments.
package hmacsha1.actions;
import com.mendix.systemwideinterfaces.core.IContext;
import com.mendix.webui.CustomJavaAction;
import java.util.Formatter;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class GenerateHMAC_SHA1 extends CustomJavaAction<java.lang.String>
{
	private java.lang.String key;
	private java.lang.String valueToEncrypt;
	public GenerateHMAC_SHA1(IContext context, java.lang.String key, java.lang.String valueToEncrypt)
	{
		super(context);
		this.key = key;
		this.valueToEncrypt = valueToEncrypt;
	}
	@java.lang.Override
	public java.lang.String executeAction() throws Exception
	{
		// BEGIN USER CODE
		SecretKeySpec secretKey = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA1");
		Mac mac = Mac.getInstance("HmacSHA1");
		mac.init(secretKey);
		mac.update(valueToEncrypt.getBytes("UTF-8"));
		Formatter formatter = new Formatter();
		for (byte b : mac.doFinal()) {
			formatter.format("%02x", b);
		}
		return formatter.toString();
		// END USER CODE
	}
	/**
	 * Returns a string representation of this action
	 */
	@java.lang.Override
	public java.lang.String toString()
	{
		return "GenerateHMAC_SHA1";
	}
	// BEGIN EXTRA CODE
	// END EXTRA CODE
}
Hope this helps.