2018-02-23 11:04:39 +01:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
if [[ $(id -u) -eq 0 ]]; then
|
|
|
|
|
# Drop privileges by re-running this script.
|
|
|
|
|
# Note: this mangles arguments, better to avoid running scripts as root.
|
|
|
|
|
exec su worker -c "$0 $*"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
set -e -x -v
|
|
|
|
|
|
2026-06-29 21:29:25 +01:00
|
|
|
# The docker image this is running in has NSS sources.
|
|
|
|
|
# Get the HACL* source, containing a snapshot of the C code, extracted on the
|
|
|
|
|
# HACL CI.
|
|
|
|
|
git clone -q "https://github.com/hacl-star/hacl-star" ~/hacl-star
|
|
|
|
|
git -C ~/hacl-star checkout -q 51a72a953a4ee6f91e63b2816ae5c4e62edf35d6
|
|
|
|
|
|
|
|
|
|
# Format the C snapshot.
|
|
|
|
|
cd ~/hacl-star/dist/mozilla
|
|
|
|
|
cp ~/nss/.clang-format .
|
|
|
|
|
find . -type f -name '*.[ch]' -exec clang-format -i {} \+
|
|
|
|
|
cd ~/hacl-star/dist/karamel
|
2018-02-23 11:04:39 +01:00
|
|
|
cp ~/nss/.clang-format .
|
|
|
|
|
find . -type f -name '*.[ch]' -exec clang-format -i {} \+
|
|
|
|
|
|
|
|
|
|
# These diff commands will return 1 if there are differences and stop the script.
|
2026-06-29 21:29:25 +01:00
|
|
|
|
|
|
|
|
# We have two checks in the script.
|
|
|
|
|
# The first one only checks the files in the verified/internal folder; the second one does for all the rest
|
|
|
|
|
# It was implemented like this due to not uniqueness of the names in the verified folders
|
|
|
|
|
# For instance, the files Hacl_Chacha20.h are present in both directories, but the content differs.
|
|
|
|
|
|
|
|
|
|
files=($(find ~/nss/lib/freebl/verified/internal -type f -name '*.[ch]'))
|
2018-02-23 11:04:39 +01:00
|
|
|
for f in "${files[@]}"; do
|
2026-06-29 21:29:25 +01:00
|
|
|
file_name=$(basename "$f")
|
|
|
|
|
hacl_file=($(find ~/hacl-star/dist/mozilla/internal/ -type f -name $file_name))
|
|
|
|
|
diff $hacl_file $f
|
2018-02-23 11:04:39 +01:00
|
|
|
done
|
|
|
|
|
|
2026-06-29 21:29:25 +01:00
|
|
|
files=($(find ~/nss/lib/freebl/verified/ -type f -name '*.[ch]' -not -path "*/freebl/verified/internal/*" -not -path "*/freebl/verified/config.h"))
|
2018-02-23 11:04:39 +01:00
|
|
|
for f in "${files[@]}"; do
|
2026-06-29 21:29:25 +01:00
|
|
|
file_name=$(basename "$f")
|
|
|
|
|
hacl_file=($(find ~/hacl-star/dist/mozilla/ ~/hacl-star/dist/karamel/ -type f -name $file_name -not -path "*/hacl-star/dist/mozilla/internal/*"))
|
|
|
|
|
diff $hacl_file $f
|
2018-02-23 11:04:39 +01:00
|
|
|
done
|