pkesh -- Public Key Encryption SHell script
===========================================

Usage
-----
# pkesh gen priv.key pub.key
	Generates a public/private key pair.
# pkesh enc pub.key in out
	Encrypts "in" using the public key, writing to "out".
# pkesh dec priv.key in out
	Decrypts "in" using the private key, writing to "out".

Note: Temporary working space is used under $TMP (or /tmp); if this is not
a memory filesystem then keys or data may be leaked to permanent storage.
There must be sufficient temporary space to hold the entire message.

Encrypted format
----------------
Encrypted Message	= base64([Encrypted Header][Encrypted Data])
Encrypted Header	= RSA2048-OAEP([Header])
Header			= [AES256-CBC Key][AES256-CBC IV][Hash]
AES256-CBC Key		= 256 bits (random)
AES256-CBC IV		= 128 bits (random)
Hash			= SHA256(Encrypted Data)
Encrypted Data		= AES256-CBC(Data)
Data			= arbitrary length input "in"

Requirements
------------

openssl
POSIX utilities: sh, cat, cmp, dd, od, rm, tr, wc
non-POSIX but standard UNIX: mktemp
