#!/bin/bash # Script to verify signatures, with both signature & data given in b64 # Args: # 1. data (base64 encoded) # 2. signature (base64 encoded) # The arg values can be taken from the debug log for SignedConfigService when verbose logging is # enabled. function verify() { D=${1} S=${2} K=${3} echo Trying ${K} openssl dgst -sha256 -verify $(dirname $0)/${K} -signature <(echo ${S} | base64 -d) <(echo ${D} | base64 -d) } PROD_KEY_NAME=prod_public.pem DEBUG_KEY_NAME=debug_public.pem SIGNATURE="$2" DATA="$1" echo DATA: ${DATA} echo SIGNATURE: ${SIGNATURE} if verify "${DATA}" "${SIGNATURE}" "${PROD_KEY_NAME}"; then echo Verified with ${PROD_KEY_NAME} exit 0 fi if verify "${DATA}" "${SIGNATURE}" "${DEBUG_KEY_NAME}"; then echo Verified with ${DEBUG_KEY_NAME} exit 0 fi exit 1