mirror of https://github.com/google/oss-fuzz.git
[cryptofuzz] Add Noble libraries (#5966)
This commit is contained in:
parent
01765e6f2b
commit
35cc81a473
|
@ -42,7 +42,6 @@ RUN hg clone https://hg.mozilla.org/projects/nss
|
||||||
RUN git clone --depth 1 https://github.com/jedisct1/libsodium.git
|
RUN git clone --depth 1 https://github.com/jedisct1/libsodium.git
|
||||||
RUN git clone --depth 1 https://github.com/libtom/libtomcrypt.git
|
RUN git clone --depth 1 https://github.com/libtom/libtomcrypt.git
|
||||||
RUN git clone --depth 1 https://github.com/microsoft/SymCrypt.git
|
RUN git clone --depth 1 https://github.com/microsoft/SymCrypt.git
|
||||||
RUN git clone --depth 1 https://git.lysator.liu.se/nettle/nettle
|
|
||||||
RUN hg clone https://gmplib.org/repo/gmp/ libgmp/
|
RUN hg clone https://gmplib.org/repo/gmp/ libgmp/
|
||||||
RUN wget https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz
|
RUN wget https://www.bytereef.org/software/mpdecimal/releases/mpdecimal-2.5.1.tar.gz
|
||||||
RUN git clone --depth 1 https://github.com/indutny/bn.js.git
|
RUN git clone --depth 1 https://github.com/indutny/bn.js.git
|
||||||
|
@ -52,8 +51,14 @@ RUN git clone --depth 1 https://github.com/brix/crypto-js.git
|
||||||
RUN git clone --depth 1 https://github.com/LoupVaillant/Monocypher.git
|
RUN git clone --depth 1 https://github.com/LoupVaillant/Monocypher.git
|
||||||
RUN git clone --depth 1 https://github.com/trezor/trezor-firmware.git
|
RUN git clone --depth 1 https://github.com/trezor/trezor-firmware.git
|
||||||
RUN git clone --depth 1 https://github.com/Cyan4973/xxHash.git
|
RUN git clone --depth 1 https://github.com/Cyan4973/xxHash.git
|
||||||
|
RUN git clone --depth 1 https://github.com/paulmillr/noble-ed25519.git
|
||||||
|
RUN git clone --depth 1 https://github.com/paulmillr/noble-bls12-381.git
|
||||||
|
RUN git clone --depth 1 https://github.com/paulmillr/noble-secp256k1.git
|
||||||
|
RUN git clone --depth 1 https://github.com/supranational/blst.git
|
||||||
|
RUN git clone --depth 1 https://github.com/bitcoin-core/secp256k1.git
|
||||||
RUN apt-get remove -y libunwind8
|
RUN apt-get remove -y libunwind8
|
||||||
RUN apt-get install -y libssl-dev
|
RUN apt-get install -y libssl-dev
|
||||||
RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.bz2
|
RUN wget https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.bz2
|
||||||
|
RUN wget https://nodejs.org/dist/v14.17.1/node-v14.17.1-linux-x64.tar.xz
|
||||||
|
|
||||||
COPY build.sh xxd.c $SRC/
|
COPY build.sh xxd.c $SRC/
|
||||||
|
|
|
@ -20,6 +20,15 @@
|
||||||
|
|
||||||
export GO111MODULE=off
|
export GO111MODULE=off
|
||||||
|
|
||||||
|
if [[ $CFLAGS != *sanitize=memory* && $CFLAGS != *-m32* ]]
|
||||||
|
then
|
||||||
|
# Install nodejs/npm
|
||||||
|
# It is required for building noble-bls12-381
|
||||||
|
cd $SRC/
|
||||||
|
tar Jxf node-v14.17.1-linux-x64.tar.xz
|
||||||
|
export PATH="$PATH:$SRC/node-v14.17.1-linux-x64/bin/"
|
||||||
|
fi
|
||||||
|
|
||||||
# Compile xxd
|
# Compile xxd
|
||||||
$CC $SRC/xxd.c -o /usr/bin/xxd
|
$CC $SRC/xxd.c -o /usr/bin/xxd
|
||||||
|
|
||||||
|
@ -138,6 +147,72 @@ then
|
||||||
make -B
|
make -B
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Build blst
|
||||||
|
cd $SRC/blst/
|
||||||
|
# Patch to disable assembly
|
||||||
|
# This is to prevent false positives, see:
|
||||||
|
# https://github.com/google/oss-fuzz/issues/5914
|
||||||
|
touch new_no_asm.h
|
||||||
|
echo "#if LIMB_T_BITS==32" >>new_no_asm.h
|
||||||
|
echo "typedef unsigned long long llimb_t;" >>new_no_asm.h
|
||||||
|
echo "#else" >>new_no_asm.h
|
||||||
|
echo "typedef __uint128_t llimb_t;" >>new_no_asm.h
|
||||||
|
echo "#endif" >>new_no_asm.h
|
||||||
|
cat src/no_asm.h >>new_no_asm.h
|
||||||
|
mv new_no_asm.h src/no_asm.h
|
||||||
|
CFLAGS="$CFLAGS -D__BLST_NO_ASM__ -D__BLST_PORTABLE__" ./build.sh
|
||||||
|
export BLST_LIBBLST_A_PATH=$(realpath libblst.a)
|
||||||
|
export BLST_INCLUDE_PATH=$(realpath bindings/)
|
||||||
|
export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_BLST"
|
||||||
|
|
||||||
|
# Compile Cryptofuzz blst module
|
||||||
|
cd $SRC/cryptofuzz/modules/blst/
|
||||||
|
make -B -j$(nproc)
|
||||||
|
|
||||||
|
# Build libsecp256k1
|
||||||
|
cd $SRC/secp256k1/
|
||||||
|
autoreconf -ivf
|
||||||
|
export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_SECP256K1"
|
||||||
|
if [[ $CFLAGS = *sanitize=memory* ]]
|
||||||
|
then
|
||||||
|
./configure --enable-static --disable-tests --disable-benchmark --disable-exhaustive-tests --enable-module-recovery --enable-experimental --enable-module-schnorrsig --enable-module-ecdh --with-asm=no
|
||||||
|
else
|
||||||
|
./configure --enable-static --disable-tests --disable-benchmark --disable-exhaustive-tests --enable-module-recovery --enable-experimental --enable-module-schnorrsig --enable-module-ecdh
|
||||||
|
fi
|
||||||
|
make
|
||||||
|
export SECP256K1_INCLUDE_PATH=$(realpath include)
|
||||||
|
export LIBSECP256K1_A_PATH=$(realpath .libs/libsecp256k1.a)
|
||||||
|
|
||||||
|
# Compile Cryptofuzz libsecp256k1 module
|
||||||
|
cd $SRC/cryptofuzz/modules/secp256k1/
|
||||||
|
make -B -j$(nproc)
|
||||||
|
|
||||||
|
if [[ $CFLAGS != *sanitize=memory* && $CFLAGS != *-m32* ]]
|
||||||
|
then
|
||||||
|
# noble-secp256k1
|
||||||
|
cd $SRC/cryptofuzz/modules/noble-secp256k1/
|
||||||
|
export NOBLE_SECP256K1_PATH="$SRC/noble-secp256k1/index.js"
|
||||||
|
export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NOBLE_SECP256K1"
|
||||||
|
make -B
|
||||||
|
|
||||||
|
# noble-bls12-381
|
||||||
|
cd $SRC/noble-bls12-381/
|
||||||
|
cp math.ts new_index.ts
|
||||||
|
$(awk '/^export/ {print "tail -n +"FNR+1" index.ts"; exit}' index.ts) >>new_index.ts
|
||||||
|
mv new_index.ts index.ts
|
||||||
|
npm install && npm run build
|
||||||
|
export NOBLE_BLS12_381_PATH=$(realpath index.js)
|
||||||
|
export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NOBLE_BLS12_381"
|
||||||
|
cd $SRC/cryptofuzz/modules/noble-bls12-381/
|
||||||
|
make -B
|
||||||
|
|
||||||
|
# noble-ed25519
|
||||||
|
cd $SRC/cryptofuzz/modules/noble-ed25519/
|
||||||
|
export NOBLE_ED25519_PATH="$SRC/noble-ed25519/index.js"
|
||||||
|
export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NOBLE_ED25519"
|
||||||
|
make -B
|
||||||
|
fi
|
||||||
|
|
||||||
# Compile SymCrypt
|
# Compile SymCrypt
|
||||||
cd $SRC/SymCrypt/
|
cd $SRC/SymCrypt/
|
||||||
if [[ $CFLAGS != *sanitize=array-bounds* ]]
|
if [[ $CFLAGS != *sanitize=array-bounds* ]]
|
||||||
|
@ -160,32 +235,6 @@ then
|
||||||
make -B
|
make -B
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Compile Nettle
|
|
||||||
mkdir $SRC/nettle-install/
|
|
||||||
cd $SRC/nettle/
|
|
||||||
bash .bootstrap
|
|
||||||
if [[ $CFLAGS != *sanitize=memory* ]]
|
|
||||||
then
|
|
||||||
./configure --disable-documentation --disable-openssl --prefix=`realpath ../nettle-install`
|
|
||||||
else
|
|
||||||
./configure --disable-documentation --disable-openssl --disable-assembler --prefix=`realpath ../nettle-install`
|
|
||||||
fi
|
|
||||||
make -j$(nproc)
|
|
||||||
make install
|
|
||||||
if [[ $CFLAGS != *-m32* ]]
|
|
||||||
then
|
|
||||||
export LIBNETTLE_A_PATH=`realpath ../nettle-install/lib/libnettle.a`
|
|
||||||
export LIBHOGWEED_A_PATH=`realpath ../nettle-install/lib/libhogweed.a`
|
|
||||||
else
|
|
||||||
export LIBNETTLE_A_PATH=`realpath ../nettle-install/lib32/libnettle.a`
|
|
||||||
export LIBHOGWEED_A_PATH=`realpath ../nettle-install/lib32/libhogweed.a`
|
|
||||||
fi
|
|
||||||
export NETTLE_INCLUDE_PATH=`realpath ../nettle-install/include`
|
|
||||||
export CXXFLAGS="$CXXFLAGS -DCRYPTOFUZZ_NETTLE"
|
|
||||||
# Compile Cryptofuzz Nettle module
|
|
||||||
cd $SRC/cryptofuzz/modules/nettle
|
|
||||||
make -B
|
|
||||||
|
|
||||||
# Compile libgmp
|
# Compile libgmp
|
||||||
if [[ $CFLAGS != *sanitize=memory* ]]
|
if [[ $CFLAGS != *sanitize=memory* ]]
|
||||||
then
|
then
|
||||||
|
|
Loading…
Reference in New Issue