61 lines
1.3 KiB
Bash
Executable File
61 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
dir=$(dirname "$(which "$0")")
|
|
url='https://raw.githubusercontent.com/nodejs/node/master/src/node_root_certs.h'
|
|
json=$(curl -s "$url")
|
|
|
|
sha256() {
|
|
cat | openssl dgst -sha256 -hex | sed 's/^(stdin)= //'
|
|
}
|
|
|
|
getcerts() {
|
|
local buf=''
|
|
echo "$json" | sed 's/\\/\\\\/g' | while read line; do
|
|
if echo "$line" | grep 'BEGIN CERT' > /dev/null; then
|
|
buf="$line"
|
|
continue
|
|
fi
|
|
if echo "$line" | grep 'END CERT' > /dev/null; then
|
|
buf="$buf$line"
|
|
echo "$buf" | sed 's/"//g' | sed 's/,//g'
|
|
continue
|
|
fi
|
|
buf="$buf$line"
|
|
done
|
|
}
|
|
|
|
gethashes() {
|
|
local buf=''
|
|
echo "$json" | sed 's/\\n/:/g' | while read line; do
|
|
if echo "$line" | grep 'BEGIN CERT' > /dev/null; then
|
|
buf="$line"
|
|
continue
|
|
fi
|
|
if echo "$line" | grep 'END CERT' > /dev/null; then
|
|
buf="$buf$line"
|
|
echo "$buf" \
|
|
| sed 's/"//g' \
|
|
| sed 's/,//g' \
|
|
| tr ':' '\n' \
|
|
| openssl x509 -outform DER \
|
|
| sha256
|
|
continue
|
|
fi
|
|
buf="$buf$line"
|
|
done
|
|
}
|
|
|
|
tojs() {
|
|
local data=$(cat)
|
|
local body=$(echo "$data" | head -n -1)
|
|
local last=$(echo "$data" | tail -n 1)
|
|
echo 'module.exports = ['
|
|
echo "$body" | while read line; do
|
|
echo " '${line}',"
|
|
done
|
|
echo " '${last}'"
|
|
echo '];'
|
|
}
|
|
|
|
gethashes | tojs > "${dir}/../lib/bip70/certs.js"
|