# -*-html-*- # # This file is part of Pretty Curved Privacy (pcp1). # # Copyright (C) 2013 T.Linden. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # You can contact me by mail: . # pcp = ../src/pcp1 vault = v1 passwd = xxx md5msg = 66b8c4ca9e5d2a7e3c0559c3cdea3d50 mangle = ./mangle verbose = 1 include keys.cfg cmd = ls $pcp expect = /pcp/ md5 = `./md5 ../COPYING` cmd = ./pipetest 8 e < ../COPYING | ./pipetest 8 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 16 e < ../COPYING | ./pipetest 16 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 32 e < ../COPYING | ./pipetest 32 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 64 e < ../COPYING | ./pipetest 64 d | ./md5 expect = /$md5/ cmd = ./decodertest 1 expect = /ok/ cmd = ./decodertest 2 expect = /ok/ cmd = ./decodertest 3 expect = /ok/ cmd = ./decodertest 4 expect = /ok/ cmd = ./decodertest 5 expect = /ok/ cmd = $pcp -h expect = /export/ prepare = rm -f $vault cmd = $pcp -V $vault -l expect = /doesn't contain any keys so far/ cmd = $pcp -V $vault -k -x $passwd input = < cmd = $pcp -V $vault -l expect = /Dexter Morgan/ cmd = $pcp -V $vault -l | tail -1 | cut -d ' ' -f 1 | xargs $pcp -V $vault -t -i expect = /Serial Number/ cmd = $pcp -V $vault -l | tail -1 | cut -d ' ' -f 1 | xargs $pcp -V $vault -p -x $passwd -z -i expect = /PUBLIC KEY/ cmd = $pcp -V $vault -l | tail -1 | cut -d ' ' -f 1 | xargs $pcp -V $vault -p -x $passwd -O testkey-self -i expect-file = testkey-self cmd = true # file is already there expect-file-contains = testkey-self Dexter cmd = $pcp -V $vault -K -I bart.pub expect = /key $bartid added/ cmd = $pcp -V $vault -t -i $bartid expect = /Serial Number: $bartserial/ cmd = $pcp -V $vault -R -i $bartid expect = /Public key deleted/ cmd = $pcp -V $vault -t expect = /Vault version: 00000002/ cmd = $pcp -V $vault -t expect = /Public keys: 0/ # # test file determination /* doesnt work currently, disabled. cmd = $pcp -t -I unknown1 expect = /Niemand/ cmd = $pcp -t -I unknown2 expect = /secret key/ */ cmd = $pcp -t -I unknown3 expect = /empty/ /* temporarily disabled cmd = $pcp -t -I unknown4 expect = /encrypted/ */ # # encryption tests # alicias part prepare = echo ${md5msg} > testmessage cmd = $pcp -V va -K -I key-alicia-sec -x a expect = /${idalicia}/ cmd = $pcp -V va -K -I key-bobby-pub expect = /${idbobby}/ cmd = $pcp -V va -e -i ${idbobby} -I testmessage -O testencrypted -x a expect = /${idbobby} - Bobby/ cmd = $pcp -V va -e -A -i ${idbobby} -I testmessage -O testencryptedanon -x a expect = /${idbobby} - Bobby/ # bobbys part cmd = $pcp -V vb -K -I key-bobby-sec -x b expect = /${idbobby}/ # decrypt anon, without knowing alicias key cmd = $pcp -V vb -d -O testdecryptedanon -I testencryptedanon -x b expect = /successfully/ cmd = $pcp -V vb -K -I key-alicia-pub expect = /${idalicia}/ cmd = $pcp -V vb -d -O testdecrypted -I testencrypted -x b expect = /successfully/ cmd = cat testdecrypted expect = /${md5msg}/ cmd = $pcp -V va -e -M -I testmessage -O testencryptedself -x a expect = /Alicia/ cmd = $pcp -V va -d -I testencryptedself -O testdecrypted -x a expect = /successfully/ # # symetric encryption test # FIXME: we currently use -V ve, but this one has to work without a vault cmd = echo HELLOWORLD | $pcp -V ve -e -O testsymencrypted -x a expect = /symetrically/ cmd = $pcp -V ve -d -I testsymencrypted -x a expect = /HELLO/ # # check usage of unencrypted secret key prepare = rm -f vb2 vcl cmd = (echo dau; echo foo; echo yes) | $pcp -V vcl -k -x "n/a" expect = /added to/ cmd = $pcp -V vcl -I key-bobby-pub -K expect = /added/ cmd = $pcp -V vcl -p -O testkeyvcl expect = /exported/ cmd = $pcp -V vb2 -K -I key-bobby-sec -x b expect = /${idbobby}/ cmd = $pcp -V vb2 -K -I testkeyvcl expect = /added/ cmd = echo HALLO | $pcp -V vcl -e -O testencrypted -i ${idbobby} expect = /Bobby/ cmd = $pcp -V vb2 -d -I testencrypted -x b expect = /HALLO/ # # signature tests cmd = $pcp -V va -g -I README -f testsig -x a expect-file testsig cmd = $pcp -V vb -c -f testsig -I README -i $idalicia expect = /verified/ cmd = $pcp -V va -c -f testsig -I README expect = /verified/ prepare = rm -f testsig cmd = $pcp -V va -g -I README -O testsig -x a -z expect-file testsig cmd = $pcp -V vb -c -I testsig -i $idalicia -z expect = /verified/ cmd = $pcp -V va -c -I testsig -z expect = /verified/ prepare = rm -f testsig cmd = $pcp -V va -g -I README -O testsig -x a expect-file testsig cmd = $pcp -V vb -c -I testsig -i $idalicia expect = /verified/ cmd = $pcp -V va -c -I testsig expect = /verified/ # # sign+encrypt tests cmd = $pcp -V va -g -e -I README -O testsig -r Bobby -x a expect = /Encrypted/ cmd = $pcp -V vb -c -d -I testsig -x b expect = /Verified/s cmd = $pcp -V vb -d -I testsig -x b expect = /Verified/s # # raw C test with prepared keys, message and cipher cmd = ./statictest expect = /ok/ # # negative tests, check for error handling cmd = $pcp -V $vault -K -K expect = /invalid combination of commandline parameters/ cmd = $pcp -V $vault -I nonexist -K expect = /Could not open input file nonexist/ cmd = $pcp -V $vault -R expect = /You need to specify a key id/ cmd = $pcp -V $vault -R -i 0x1 expect = /is too short/ cmd = $pcp -V $vault -R -i 0x1111111111111111111111111 expect = /is too long/ cmd = $pcp -V $vault -R -i 11111111111111111 expect = /is too long/ cmd = $pcp -V $vault -R -i 0x0101010101010101 expect = /No key with id 0x010101/ cmd = $pcp -V $vault -s -i 0x0101010101010101 expect = /Could not find a secret key with id 0x010101/ prepare = $pcp -V v2 -l # so we've got just an empty vault cmd = $pcp -V v2 -s expect = /no primary secret key in the vault/ cmd = $pcp -V $vault -l | grep primary |cut -d ' ' -f 1 \ | xargs $pcp -V $vault -s -O nonexistentdir/keyfile -i expect = /Could not create output file nonexistentdir/ cmd = $pcp -V $vault -p -i 0x0101010101010101 expect = /Could not find a key with id 0x010101/ prepare = $pcp -V v3 -l # so we've got just an empty vault cmd = $pcp -V v3 -p expect = /no primary secret key in the vault/ prepare = $pcp -V $vault -K -I bart.pub cmd = $pcp -V $vault -l | grep public | cut -d ' ' -f 1 \ | tail -1 | xargs $pcp -V $vault -p -O nonexistentdir/keyfile expect = /Could not create output file nonexistentdir/ prepare = touch testfile-empty cmd = $pcp -V $vault -K -I testfile-empty expect = /file is empty/ prepare = perl -e 'print "X" x 5000; print "\n"' > testfile-toolong cmd = $pcp -V $vault -K -I testfile-toolong -x x expect = /failed/ /* * Currently disabled, because ZeroMQ's zmq_z85_decode() doesn't really * catch invalid z85, it only checks the input length and not the actual * encoding. Re-enable, once that bug is fixed. prepare = ./jot 30 | while read ignore; do \ echo XXXXXXXXXXXXXXXXXX; done > testfile-noz85 cmd = $pcp -V $vault -K -I testfile-noz85 expect = /could not decode input/ */ prepare = ./jot 30 | while read ignore; do echo XXXXX; done \ | $pcp -z > testfile-nokey cmd = $pcp -V $vault -K -I testfile-nokey -x x expect = /failed/ cmd = $pcp -V $vault -K -I bart.pub expect = /there already exists a key/ prepare = $pcp -V v3 -l cmd = $pcp -V v3 -l expect = /contain any keys so far/ prepare = ./invalidkeys cmd = $pcp -V $vault -K -I testkey-wrong-version -x xxx expect = /unknown key version/ cmd = $pcp -V $vault -K -I testkey-wrong-serial -x xxx expect = /invalid serial number/ cmd = $pcp -V $vault -K -I testkey-invalid-ctime -x xxx expect = /invalid creation timestamp/ /* cmd = $pcp -V $vault -K -I testpubkey-wrong-type expect = /key type is not PUBLIC/ cmd = $pcp -V $vault -K -I testpubkey-wrong-version expect = /unknown key version/ */ prepare = ./invalidkeys cmd = $pcp -V testvault-invalidheader -l expect = /Unexpected vault file format/ cmd = $pcp -V testvault-invalidversion -l expect = /Unexpected vault file format/ cmd = $pcp -V testvault-invaliditemtype -l expect = /invalid key type/ cmd = $pcp -V testvault-invalidkeytype -l expect = /contain any keys so far./ # # input handling tests cmd = (./jot 300 | while read m; do echo -n m; done; echo xxx) \ | $pcp -V $vault -k -x $passwd expect = /Generated new secret key/ # # fuzz tests prepare = (echo F; echo F) | $pcp -V vfz -k -x a; \ $pcp -V vfz -p -O testfuzzP.orig -x a; \ $pcp -V vfz -s -O testfuzzS.orig -x a; loop = 30 prepare = while :; do \ cp testfuzzP.orig testfuzzP.pub; \ $mangle testfuzzP.pub; \ if ! diff testfuzzP.* > /dev/null 2>&1; then \ break; \ fi; \ done cmd = echo no | $pcp -V vf -K -I testfuzzP.pub -x a expect = !/added/ loop = 30 prepare = while :; do \ cp testfuzzS.orig testfuzzS.sec; \ $mangle testfuzzS.sec; \ if ! diff testfuzzS.* > /dev/null 2>&1; then \ break; \ fi; \ done cmd = echo no | $pcp -V vf -K -I testfuzzS.sec -x a expect = !/added/ # checksum tests blake2 = 5baec1cad5bf54287028749d83f2bf3e3ed09f0ee38a233f35dbda1361c6a67fd824e17c86ee3a85181038eb44836c17c42e6beff17fdf997075417914056992 blake2auth = d7fff04bd63004f7a2ba914d9b2ccff22827230d3c546d97ebaa29cbe9fb2380b7948bc799486d512b4355c24f0cce423e746419098d4455af91898c4a06a5df key = 9U3Dk2s cmd = $pcp -C ../COPYING expect = /$blake2/ cmd = $pcp -x $key -C ../COPYING expect = /$blake2auth/ cmd = $pcp -C < ../COPYING expect = /$blake2/ cmd = $pcp -C ../COPYING ../README expect = /README/