| #!/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 |