#!/usr/bin/bash # create a unix (shell) user create_unix_user() { # name adduser --quiet --shell /bin/bash --disabled-password --gecos "" $1 > /dev/null 2>&1 } # delete a unix user, plus remove $HOME and mails delete_unix_user() { # name deluser --remove-home $1 } # send a mail and wait for delivery send_test_mail() { # email_address echo "send test mail to $1" >&2 USER=$(echo $1 | cut -f 1 -d '@') # create an empty mailbox file touch /var/mail/$USER chown $USER:mail /var/mail/$USER chmod 600 /var/mail/$USER echo -e "To: $1\nSubject: testmail\n\ntest mail" | sendmail -t inotifywait -qq -t 3 -e close_write /var/mail/$USER } # test header test_header() { # text echo "##############################################" echo $1 echo "Workdir: $WORKDIR" echo "----------------------------------------------" } # Generate a key outside the key store. The key will not be # authenticated. gen_key() { # email FILE=$(echo $1 | cut -f 1 -d '@') FPR=$(sq key generate --home none --shared-key --without-password \ --email $1 \ --output $WORKDIR/${FILE}_sk.pgp \ --rev-cert $WORKDIR/${FILE}.rev |& grep "Fingerprint:" | cut -d ':' -f 2) echo $FPR } # Generate a key outside the key store. The key will not be # authenticated. Import the certificate of the key. gen_cert() { # email FILE=$(echo $1 | cut -f 1 -d '@') FPR=$(sq key generate --home none --shared-key --without-password \ --email $1 \ --output $WORKDIR/${FILE}_sk.pgp \ --rev-cert $WORKDIR/${FILE}.rev |& grep "Fingerprint:" | cut -d ':' -f 2) sq cert import $WORKDIR/${FILE}_sk.pgp > /dev/null 2>&1 echo $FPR } authenticate() { # Fingerprint sq pki link add --cert $1 --all > /dev/null 2>&1 } expect_mail() { # unix_user mode [signature_fpr] if [ -f /var/mail/$1 ] ; then case $2 in encrypted) if grep -q "BEGIN PGP MESSAGE" /var/mail/$1 ; then echo "GOOD: found expected encrypted mail" >&2 R=0 if [ "$3" != "" ] ; then FOUND_FPR=$(sq packet dump /var/mail/$1 | grep "Issuer Fingerprint:" | cut -d ':' -f 2 | tr -d ' ') if [ "$3" != "$FOUND_FPR" ] ; then echo "BAD: Found wrong signature '$FOUND_FPR' - expected '$3'" >&2 R=1 else echo "GOOD: found right signature" >&2 fi fi else echo "BAD: encryped mail expected but not found" >&2 R=1 fi ;; unencrypted) if grep -q "BEGIN PGP MESSAGE" /var/mail/$1 ; then echo "BAD: expected unencrypted mail for $1" >&2 R=1 else echo "GOOD: found expected unencrypted mail" >&2 R=0 fi ;; delivered) echo "GOOD: mail delivery worked" >&2 R=0 ;; esac else echo "BAD: no mail for $1" >&2 R=1 fi echo $R }