Code based heavily on g10code's "PAM Poldi".
