# -*-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 8 e < ../COPYING | ./pipetest 8 8 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 8 16 e < ../COPYING | ./pipetest 8 16 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 16 8 e < ../COPYING | ./pipetest 16 8 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 64 32 e < ../COPYING | ./pipetest 64 32 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 32 64 e < ../COPYING | ./pipetest 32 64 d | ./md5 expect = /$md5/ md5 = `./md5 ../COPYING` cmd = ./pipetest 64 64 e < ../COPYING | ./pipetest 64 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 = /usr/bin/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 = /for ${idbobby} successfully/ # bobbys part cmd = $pcp -V vb -K -I key-bobby-sec -x b expect = /${idbobby}/ 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}/ # # 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 -y expect = /encrypted: no/ 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 = /success/ 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/ 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/ 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/ # # 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 # # yaml export test cmd = $pcp -V va -y | perl -Ilib -MYAML -MData::Dumper -e "print Dumper(Load(join('',<>)))" expect = /VAR1/ # # 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/ # # test the c++ api cmd = ./cpptest 0 expect = /ok/ cmd = ./cpptest 1 expect = /ok/ cmd = ./cpptest 2 expect = /ok/ cmd = ./cpptest 3 expect = /ok/ cmd = ./cpptest 4 expect = /ok/