#!/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