52 lines
1.2 KiB
Bash
52 lines
1.2 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
#/pfrm2.0/opt/fw1/database/ca_bundle.pem
|
||
|
#/pfrm2.0/config2/fw1/database/ca_bundle.pem
|
||
|
|
||
|
CERT_FILE="$1"
|
||
|
CACERT_FILE="$2"
|
||
|
|
||
|
if [ ! -f "${CERT_FILE}" ];then
|
||
|
echo "${CERT_FILE} doesn't exist or not a file"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
|
||
|
if [ ! -f "${CACERT_FILE}" ];then
|
||
|
echo "${CACERT_FILE} doesn't exist or not a file"
|
||
|
exit 2
|
||
|
fi
|
||
|
|
||
|
CLEANED_CACERT=$( mktemp )
|
||
|
CLEANED_CERT_FILE=$( mktemp )
|
||
|
|
||
|
TMP_SINGLE_CERTS_DIR=$( mktemp -d )
|
||
|
|
||
|
cat "${CACERT_FILE}" | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > "${CLEANED_CACERT}"
|
||
|
cat "${CERT_FILE}" | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > "${CLEANED_CERT_FILE}"
|
||
|
|
||
|
cd ${TMP_SINGLE_CERTS_DIR} && \
|
||
|
awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < "${CLEANED_CERT_FILE}"
|
||
|
|
||
|
FOUND_MATCH="0"
|
||
|
|
||
|
for cert in $(find ${TMP_SINGLE_CERTS_DIR}/ -type f -regex '.*.pem$' )
|
||
|
do
|
||
|
diff -q "${CLEANED_CERT_FILE}" "${cert}" >/dev/null
|
||
|
if [ "$?" -eq "0" ];then
|
||
|
FOUND_MATCH="1"
|
||
|
echo "Eureka: ${cert}"
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
rm -v "${CLEANED_CACERT}"
|
||
|
rm -v "${CLEANED_CERT_FILE}"
|
||
|
rm -vf "${TMP_SINGLE_CERTS_DIR}"
|
||
|
|
||
|
if [ "${FOUND_MATCH}" -eq "1" ];then
|
||
|
exit 0
|
||
|
else
|
||
|
exit 1
|
||
|
fi
|