#!/bin/bash
#
# This is a simplistic encryption demonstrating the principles
# of the protocol, while being quite usable.
#
# the first input line contains words, the first of which is the key,
# and additional arguments, which aren't used right now, so they are
# discarded.
#
# When the end of the line is reached, the rest of the input is to be
# read as binary input of the plaintext or cyphertext in _binary_ mode.
# What this means for plaintext is that the newline terminator won't
# be present.

function encrypt {
	( echo "$KEY" ; cat ) | gpg -c -z 9 --batch --passphrase-fd 0
}

function decrypt {
	( echo "$KEY" ; cat ) | gpg --batch --passphrase-fd 0
}

proto="$1"
shift 1

read KEY TRASH

case "$proto" in
encrypt) encrypt "$@" ;;
decrypt) decrypt "$@" ;;
*)	echo `basename $0` "{encrypt|decrypt} < text" 1>&2 ;;
esac
