build() { . useve-runner useve syncbin python3 -m hatchling build cp qgpg/__init__.py dist/qgpg.py echo "copy dist/ to six9.net/py/qgpg/" } setup_useve() { set -e . useve-runner useve mk qgpg } install_useve() { set -e . useve-runner py-format . useve qgpg pip install ./ qgpg --help } test_encrypt() { # Prepare cd ~/tmp/ . useve-runner useve qgpg rm -fr key2* datadir datadir.encrypted sha1sum.txt @ mkdir -p datadir/folder{1,2} @ dd if=/dev/random of=datadir/testfile bs=3024 count=102400 for i in {1..10}; do dd if=/dev/random of=datadir/folder1/${i}testfile bs=1024 count=10240 &> /dev/null dd if=/dev/random of=datadir/folder2/${i}testfile bs=1024 count=10240 &> /dev/null done # Run encryption code set -e GPGPASS=secret @ qgpg -k --key key2 qgpg -i --key key2 @ qgpg -e --key key2.pub datadir/folder1/1testfile @ qgpg -e --key key2.pub datadir/folder1/1testfile datadir/1testfile.encrypted.gpg @ qgpg -e --key key2.pub -r datadir @ qgpg -e --key key2.pub -r datadir @ qgpg -e --key key2.pub -r $(pwd)/datadir/ datadir.encrypted/ GPGPASS=symmetric_password @ qgpg -e datadir/folder1/1testfile datadir/1testfile.encrypted.symmetric.gpg @ hash-update -t sha1 -f sha1sum.txt -r datadir } test_encrypt_no_phrase() { # Prepare cd ~/tmp/ . useve-runner useve qgpg rm -fr key2* datadir datadir.encrypted datadir.plain sha1sum.txt @ mkdir -p datadir @ dd if=/dev/random of=datadir/testfile bs=3024 count=102400 # Run encryption code set -e GPGPASS="" @ qgpg -k --key key2 qgpg -i --key key2 @ qgpg -e --key key2.pub -r datadir datadir.encrypted @ qgpg -d --key key2 -r datadir.encrypted datadir.plain @ hash-update -t sha1 -f sha1sum.txt -r datadir datadir.encrypted datadir.plain cat sha1sum.txt } test_decrypt() { cd ~/tmp/ . useve-runner useve qgpg set -e @ find datadir -type f -name '*testfile' | xargs -II rm -v I GPGPASS=secret @ qgpg -d --key key2 -r datadir GPGPASS=symmetric_password @ qgpg -d --force datadir/1testfile.encrypted.symmetric.gpg datadir/folder1/1testfile @ hash-update -t sha1 -f sha1sum.txt -c } test_gpg() { cd ~/tmp/ . useve-runner useve qgpg set -e mkdir -p ./gpghomedir chmod 700 ./gpghomedir # Simulate user creating keys with GPG, and person with qGPG encrypts for them. @ gpg --homedir ./gpghomedir -K cat < key-for-collaborator.pub @ qgpg -e --force --key key-for-collaborator.pub key-for-collaborator.pub key-for-collaborator.pub.gpg echo abc | @ gpg --homedir ./gpghomedir --pinentry-mode loopback --batch --yes --passphrase-fd 0 -d -o key-for-collaborator.pub.2 key-for-collaborator.pub.gpg @ diff key-for-collaborator.pub key-for-collaborator.pub.2 @ rm -rf ./gpghomedir # Simulate person creating keys with qGPG, while someone else with GPG encrypts for them GPGPASS=abc.2 @ qgpg -k --force --key qgpg.user --name qgpg@user mkdir -p ./gpghomedir chmod 700 ./gpghomedir @ gpg --homedir ./gpghomedir --import qgpg.user.pub @ gpg --homedir ./gpghomedir -e --trust-model always --yes -r qgpg@user -o qgpg.user.pub.gpg qgpg.user.pub GPGPASS=abc.2 @ qgpg -d --force --key qgpg.user qgpg.user.pub.gpg qgpg.user.pub.2 @ diff qgpg.user.pub qgpg.user.pub.2 @ rm -rf ./gpghomedir @ sha1sum * } install_without_tools() { python3 -m venv .local/share/qgpg .local/share/qgpg/bin/pip install -U pip https://six9.net/py/qgpg/qgpg-1.0.tar.gz mkdir -p .local/bin ln -sfT ~/.local/share/qgpg/bin/qgpg .local/bin/qgpg }