diff options
author | JinWang An <jinwang.an@samsung.com> | 2021-12-01 16:54:36 +0900 |
---|---|---|
committer | JinWang An <jinwang.an@samsung.com> | 2021-12-01 16:54:36 +0900 |
commit | e158cb38f461261d019c653a5f5e0ca9ddab8d6d (patch) | |
tree | 3872a21bc5b5797ee3c705509aace3393b0de251 /lang/python/examples/verifydetails.py | |
parent | fd5caec0dccd1229c2b9dd5220c8e2b1ef966d0e (diff) | |
download | gpgme-e158cb38f461261d019c653a5f5e0ca9ddab8d6d.tar.gz gpgme-e158cb38f461261d019c653a5f5e0ca9ddab8d6d.tar.bz2 gpgme-e158cb38f461261d019c653a5f5e0ca9ddab8d6d.zip |
Imported Upstream version 1.7.0upstream/1.7.0
Diffstat (limited to 'lang/python/examples/verifydetails.py')
-rwxr-xr-x | lang/python/examples/verifydetails.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/lang/python/examples/verifydetails.py b/lang/python/examples/verifydetails.py new file mode 100755 index 0000000..fa34926 --- /dev/null +++ b/lang/python/examples/verifydetails.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python +# +# Copyright (C) 2016 g10 Code GmbH +# Copyright (C) 2004,2008 Igor Belyi <belyi@users.sourceforge.net> +# Copyright (c) 2008 Bernhard Reiter <bernhard@intevation.de> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see <http://www.gnu.org/licenses/>. + +from __future__ import absolute_import, print_function, unicode_literals +del absolute_import, print_function, unicode_literals + +import sys +from pyme import core +from pyme.constants import protocol + +def print_engine_infos(): + print("gpgme version:", core.check_version(None)) + print("engines:") + + for engine in core.get_engine_info(): + print(engine.file_name, engine.version) + + for proto in [protocol.OpenPGP, protocol.CMS]: + print("Have {}? {}".format(core.get_protocol_name(proto), + core.engine_check_version(proto))) + + +def verifyprintdetails(filename, detached_sig_filename=None): + """Verify a signature, print a lot of details.""" + with core.Context() as c: + + # Verify. + data, result = c.verify(open(filename), + open(detached_sig_filename) + if detached_sig_filename else None) + + # List results for all signatures. Status equal 0 means "Ok". + for index, sign in enumerate(result.signatures): + print("signature", index, ":") + print(" summary: %#0x" % (sign.summary)) + print(" status: %#0x" % (sign.status)) + print(" timestamp: ", sign.timestamp) + print(" fingerprint:", sign.fpr) + print(" uid: ", c.get_key(sign.fpr, 0).uids[0].uid) + + # Print "unsigned" text if inline signature + if data: + sys.stdout.buffer.write(data) + +def main(): + print_engine_infos() + print() + + argc = len(sys.argv) + if argc < 2 or argc > 3: + sys.exit( + "Usage: {} <filename>[ <detached_signature_filename>]".format( + sys.argv[0])) + + if argc == 2: + print("trying to verify file {}.".format(sys.argv[1])) + verifyprintdetails(sys.argv[1]) + if argc == 3: + print("trying to verify signature {1} for file {0}.".format(*sys.argv)) + verifyprintdetails(sys.argv[1], sys.argv[2]) + +if __name__ == "__main__": + main() |