mblaze

Unix utilities to deal with Maildir - my mirror
git clone https://pi.duncano.de/git/mblaze.git
Log | Files | Refs | README | COPYING

commit e2679e44234f24d9a8c4cb4d64d531e9fc03d455
parent 7377f0dfc3a262e3110a046eafa1d61cbbd32bc7
Author: Christian Neukirchen <chneukirchen@gmail.com>
Date:   Sat,  6 Aug 2016 20:43:08 +0200

add contrib/mverify to verify a OpenPGP or SMIME message

Diffstat:
contrib/mverify | 33+++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+), 0 deletions(-)

diff --git a/contrib/mverify b/contrib/mverify @@ -0,0 +1,33 @@ +#!/bin/sh +# mverify MSG - verify a OpenPGP or SMIME message + +# Needs bash, gpg and openssl. + +[ "$#" -eq 0 ] && set -- . + +mshow -t "$1" | awk -v "msg=$1" ' +{ match($0, "^ *"); indent = RLENGTH } +$2 == "text/plain" { plain++ } +$2 == "multipart/signed" { signed = +$1; si = indent; next } +signed && !content && indent == si+2 { content = +$1; next } +signed && content && !signature && indent == si+2 { signature = +$1; type = $2 } +function q(a) { gsub("\\47", "\47\\\47\47", a); return "\47"a"\47" } +END { + if (type == "" && plain) { // guess plain text armored signature + exit(system("mshow -R " q(msg) " | gpg --verify")); + } else if (type == "") { + print("No signature found.") + exit(100) + } else if (type == "application/pgp-signature") { + exit(system("bash -c " q("mshow -r -O " q(msg) " " q(content) \ + " | sed 's/$/\\r/' | gpg --verify <(mshow -O " q(msg) \ + " " q(signature) " ) -"))) + } else if (type == "application/pkcs7-signature") { + exit(system("mshow -r -O " q(msg) " " q(signed) \ + " | openssl smime -verify")) + } else { + print("Cant verify signatures of type " type ".") + exit(2) + } +} +'