}
+#Usage: hashalg secret [outputhex]
+#Output Base64-encoded hmac
+_hmac() {
+ alg="$1"
+ hmac_sec="$2"
+ outputhex="$3"
+
+ if [ -z "$hmac_sec" ] ; then
+ _usage "Usage: _hmac hashalg secret [outputhex]"
+ return 1
+ fi
+
+ if [ "$alg" = "sha256" ] || [ "$alg" = "sha1" ]; then
+ if [ "$outputhex" ] ; then
+ openssl dgst -$alg -hmac "$hmac_sec" | cut -d = -f 2 | tr -d ' '
+ else
+ openssl dgst -$alg -hmac "$hmac_sec" -binary | _base64
+ fi
+ else
+ _err "$alg is not supported yet"
+ return 1
+ fi
+
+}
+
#Usage: keyfile hashalg
#Output: Base64-encoded signature value
_sign() {