#!/bin/bash -e

# Version: 99994 K

# Required Public Keys to add to your PGP Keyring. These are used to verify V, rotor, buildroot, and trinque's patch:
# 0x17215D118B7239507FAFED98B98228A001ABFFC7
# 0x027A8D7C0FB8A16643720F40721705A8B71EADAF
# 0xFC66C0C5D98C42A1D4A98B6B42F9985AFAB953C4

ROTOR_HASH=e232c07238feb16ce055211fba68ed283c47753a8716681ac47c869c21936f48768fafaac678f64ee17cf2b62b669a0d2c481008b5ccaf76007f66501a02990d
BUILDROOT_HASH=c42fdd39cb2bc46804a86a7d7b2605bd3cd9ddcb365c4e5a1fb147eb02b234fc31a70c8140be2f4d27cd371c84e0c6701f8cb47697dd1c18dd0e0cce784aa07a
V_HASH=6a6ba79276bc2757f9f437947bfe65612c2b5f9f0b5748beec0fc17d140748d7b7cb1ad65fc5a2f1505eb35f8c8d0ae83936e49a666c780a293553c4fc753714
SSL_HASH=66ebbad3c8ad98a07b486d39d0c3ae62b00133f8f2877cf8b97c461e7c7f40b29cf9c3cae82cf73a92dcf1daa63d33aa76c910fbcbe60158589fc7cb48f41e6d
BDB_HASH=d1a3c52b0ab54ae3fd6792e6396c9f74d25f36b2eb9e853b67ef9c872508a58c784c7818108d06d184f59601b70cc877916e67dfea6f0ee1ca2b07468c1041f1
BOOST_HASH=fc512d3bfa6a39a60fee548775c97239271cf757587b8df7ed739c800844a819a359dca172be0e69ad7752753753139bf11f0813d650066d58386662fe32842d
BDB_CFG_PATCH_HASH=2c1152a88dd6d8e4b0f736dbf0ce2691c66fc592c1ef6c332a976ae7e9ca86850091032d23042558e3eabc0dc2b591f482566ef433606fb91a06dee9a0485063

mkdir -p rotor
mkdir -p rotor/toolchain
mkdir -p rotor/TEST2

curl -s http://thebitcoin.foundation/v/V-20160220.tar.gz -o V-20160220.tar.gz
curl -s http://thebitcoin.foundation/v/V-20160220.tar.gz.mod6.sig -o V-20160220.tar.gz.mod6.sig
V_SHA512=`sha512sum V-20160220.tar.gz | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$V_SHA512" != "$V_HASH" ]; then
  echo "V Hash did not match!"
  echo "Expected: $V_HASH"
  echo "   Found: $V_SHA512"
  exit 1;
fi

VERIFY_V_SIG=`gpg --logger-fd 1 --verify V-20160220.tar.gz.mod6.sig V-20160220.tar.gz | sed -n 's/^gpg: \(.*\) from .*$/\1/p;'`
if [ "$VERIFY_V_SIG" != "Good signature" ]; then
  echo "PGP Signature Verification of V failed!"
  exit 1;
fi

tar -xf V-20160220.tar.gz
chmod +x v.pl
./v.pl i http://thebitcoin.foundation
./v.pl p verbose rotor/TEST2 asciilifeform_maxint_locks_corrected.vpatch

cd rotor

curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150727/rotor_4c86b82236ebc4926a6ace8fb8310f37b948c8f1.tar.gz -o rotor.tar.gz
curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150727/rotor_b5a9f18591eff649d632065fc53ba5bc0c23d9ab.tar.gz.sig -o rotor.tar.gz.sig
ROTOR_SHA512=`sha512sum rotor.tar.gz | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$ROTOR_SHA512" != "$ROTOR_HASH" ]; then
  echo "Rotor Hash did not match!"
  echo "Expected: $ROTOR_HASH"
  echo "   Found: $ROTOR_SHA512"
  exit 1;
fi

VERIFY_ROTOR_SIG=`gpg --logger-fd 1 --verify rotor.tar.gz.sig | sed -n 's/^gpg: \(.*\) from .*$/\1/p;'`
if [ "$VERIFY_ROTOR_SIG" != "Good signature" ]; then
  echo "PGP Signature Verification of Rotor failed!"
  exit 1;
fi

curl -s http://deedbot.org/deed-422651-2.txt -o buildroot-2015.05.tar.gz.asc
VERIFY_BUILDROOT_DEED=`gpg --logger-fd 1 --verify buildroot-2015.05.tar.gz.asc | sed -n 's/^gpg: \(.*\) from .*$/\1/p;'`
if [ "$VERIFY_BUILDROOT_DEED" != "Good signature" ]; then
  echo "PGP Signature Verification of Buildroot failed!"
  exit 1;
fi

cat buildroot-2015.05.tar.gz.asc | sed -e '1,/begin-base64/d' -e '/====/,$d' | base64 -d > buildroot-2015.05.tar.gz

BUILDROOT_SHA512=`sha512sum buildroot-2015.05.tar.gz | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$BUILDROOT_SHA512" != "$BUILDROOT_HASH" ]; then
  echo "BuildRoot Hash did not match!"
  echo "Expected: $BUILDROOT_HASH"
  echo "   Found: $BUILDROOT_SHA512"
  exit 1;
fi

cd TEST2
mkdir distfiles
cd distfiles

curl -s http://deedbot.org/deed-422651-4.txt -o openssl-1.0.1g.tar.gz.asc
VERIFY_OPENSSL_DEED=`gpg --logger-fd 1 --verify openssl-1.0.1g.tar.gz.asc | sed -n 's/^gpg: \(.*\) from .*$/\1/p;'`
if [ "$VERIFY_OPENSSL_DEED" != "Good signature" ]; then
  echo "PGP Signature Verification of OpenSSL Deed failed!"
  exit 1;
fi

cat openssl-1.0.1g.tar.gz.asc | sed -e '1,/begin-base64/d' -e '/====/,$d' | base64 -d > openssl-1.0.1g.tar.gz

SSL_SHA512=`sha512sum openssl-1.0.1g.tar.gz | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$SSL_SHA512" != "$SSL_HASH" ]; then
  echo "OpenSSL Hash did not match!"
  echo "Expected: $SSL_HASH"
  echo "   Found: $SSL_SHA512"
  exit 1;
fi

curl -s http://deedbot.org/deed-422651-3.txt -o db-4.8.30.tar.gz.asc
VERIFY_BDB_DEED=`gpg --logger-fd 1 --verify db-4.8.30.tar.gz.asc | sed -n 's/^gpg: \(.*\) from .*$/\1/p;'`
if [ "$VERIFY_BDB_DEED" != "Good signature" ]; then
  echo "PGP Signature Verification of BDB Deed failed!"
  exit 1;
fi

cat db-4.8.30.tar.gz.asc | sed -e '1,/begin-base64/d' -e '/====/,$d' | base64 -d > db-4.8.30.tar.gz

BDB_SHA512=`sha512sum db-4.8.30.tar.gz | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$BDB_SHA512" != "$BDB_HASH" ]; then
  echo "BDB Hash did not match!"
  echo "Expected: $BDB_HASH"
  echo "   Found: $BDB_SHA512"
  exit 1;
fi

curl -s http://deedbot.org/deed-422651-1.txt -o boost_1_52_0.tar.bz2.asc
VERIFY_BOOST_DEED=`gpg --logger-fd 1 --verify boost_1_52_0.tar.bz2.asc | sed -n 's/^gpg: \(.*\) from .*$/\1/p;'`
if [ "$VERIFY_BOOST_DEED" != "Good signature" ]; then
  echo "PGP Signature Verification of Boost Deed failed!"
  exit 1;
fi

cat boost_1_52_0.tar.bz2.asc | sed -e '1,/begin-base64/d' -e '/====/,$d' | base64 -d > boost_1_52_0.tar.bz2

BOOST_SHA512=`sha512sum boost_1_52_0.tar.bz2 | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$BOOST_SHA512" != "$BOOST_HASH" ]; then
  echo "Boost Hash did not match!"
  echo "Expected: $BOOST_HASH"
  echo "   Found: $BOOST_SHA512"
  exit 1;
fi

cd ../..

tar -xvzf buildroot-2015.05.tar.gz
tar -xvzf rotor.tar.gz

cp rotor_buildroot_dot_config buildroot-2015.05/.config

cd buildroot-2015.05
make
cd ..

cp openssl-004-musl-termios.patch TEST2
cp rotor.sh TEST2

cd TEST2
curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150808/rotor-db-configure-fix_a955ba9174ccb17790dc9d7c1e2a61794a1c803d.patch -o rotor-db-configure-fix.patch
curl -s http://therealbitcoin.org/ml/btc-dev/attachments/20150808/rotor-db-configure-fix_22fa8bc88ce65d4b3dcf58ffd7611586d96aba15.patch.sig -o rotor-db-configure-fix.patch.sig
BDB_CFG_PATCH_SHA512=`sha512sum rotor-db-configure-fix.patch | sed -n 's/^\(.*\)  .*$/\1/p;'`
if [ "$BDB_CFG_PATCH_SHA512" != "$BDB_CFG_PATCH_HASH" ]; then
  echo "BDB Config Patch Hash did not match!"
  echo "Expected: $BDB_CFG_PATCH_HASH"
  echo "   Found: $BDB_CFG_PATCH_SHA512"
  exit 1;
fi
gpg --verify rotor-db-configure-fix.patch.sig
patch -p1 < rotor-db-configure-fix.patch
sed -i 's/bitcoin\/bitcoin\/src/bitcoin\/src/' rotor.sh

chmod 0755 rotor.sh
./rotor.sh
