From 96a7e78a9bdee5419f827f257a98e740369c7214 Mon Sep 17 00:00:00 2001 From: Jon Stanley Date: Mon, 20 Jul 2009 04:14:18 +0000 Subject: Intial commit --- key_checker | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 key_checker diff --git a/key_checker b/key_checker new file mode 100644 index 0000000..e7fdfc4 --- /dev/null +++ b/key_checker @@ -0,0 +1,61 @@ +#!/usr/bin/python +import rpm, rpmUtils.miscutils, sys + +ts=rpm.TransactionSet() +pubkeys={} +pubkeys['unknown'] = 'Unknown signing key' + +def buildKeyList(): + keys = ts.dbMatch(rpm.RPMTAG_NAME, 'gpg-pubkey') + for hdr in keys: + pubkeys[hdr[rpm.RPMTAG_VERSION]]=hdr[rpm.RPMTAG_SUMMARY][4:].rsplit('<',1)[0].rstrip() +def getPkgNevra(hdr): + if hdr[rpm.RPMTAG_EPOCH]: + return '%s-%s:%s-%s.%s' % ( hdr[rpm.RPMTAG_NAME], hdr[rpm.RPMTAG_EPOCH], + hdr[rpm.RPMTAG_VERSION], hdr[rpm.RPMTAG_RELEASE], + hdr[rpm.RPMTAG_ARCH]) + else: + return '%s-%s-%s.%s' % ( hdr[rpm.RPMTAG_NAME], hdr[rpm.RPMTAG_VERSION], + hdr[rpm.RPMTAG_RELEASE], hdr[rpm.RPMTAG_ARCH] ) +def getSig(hdr): + if hdr[rpm.RPMTAG_DSAHEADER]: + keyid = rpmUtils.miscutils.getSigInfo(hdr)[1][2][16:] + try: + return (getPkgNevra(hdr), pubkeys[keyid]) + except KeyError: + return (getPkgNevra(hdr), pubkeys['unknown']) + else: + return (getPkgNevra(hdr), 'unsigned') + +if __name__ == '__main__': + buildKeyList() + pkgs = {} + for keyname in pubkeys.itervalues(): + pkgs[keyname] = [] + pkgs['unsigned'] = [] + try: + foo = sys.argv[1] + for pkg in sys.argv[1:]: + mi=ts.dbMatch(rpm.RPMTAG_NAME, pkg) + exists = False + for hdr in mi: + exists = True + nevra, key=getSig(hdr) + pkgs[key].append(nevra) + if not exists: + sys.stderr.write('Package %s does not exist\n' % pkg) + except IndexError: + mi=ts.dbMatch() + for hdr in mi: + if hdr[rpm.RPMTAG_NAME] == 'gpg-pubkey': + continue + nevra, key = getSig(hdr) + pkgs[key].append(nevra) + for pkg in pkgs.iteritems(): + if pkg[1]: + print pkg[0] + print '-' * len(pkg[0]) + for pkginstance in pkg[1]: + print pkginstance + print + -- cgit