1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #! /usr/bin/env python
- # encoding: utf-8
- # Thomas Nagy, 2014-2015
- """
- A simple file for verifying signatures in signed waf files
- This script is meant for Python >= 2.6 and the encoding is bytes - latin-1
- Distributing detached signatures is boring
- """
- import sys, os, re, subprocess
- if __name__ == '__main__':
- try:
- infile = sys.argv[1]
- except IndexError:
- infile = 'waf'
- try:
- outfile1 = sys.argv[2]
- except IndexError:
- outfile1 = infile + '-sig'
- try:
- outfile2 = sys.argv[3]
- except IndexError:
- outfile2 = outfile1 + '.asc'
- f1 = open(outfile1, 'wb')
- f2 = open(outfile2, 'wb')
- f = open(infile, 'rb')
- try:
- txt = f.read()
- lastline = txt.decode('latin-1').splitlines()[-1] # just the last line
- if not lastline.startswith('#-----BEGIN PGP SIGNATURE-----'):
- print("ERROR: there is no signature to verify in %r :-/" % infile)
- sys.exit(1)
- sigtext = lastline.replace('\\n', '\n') # convert newlines
- sigtext = sigtext[1:] # omit the '# character'
- sigtext = sigtext.encode('latin-1') # python3
- f2.write(sigtext)
- f1.write(txt[:-len(lastline) - 1]) # one newline character was eaten from splitlines()
- finally:
- f.close()
- f1.close()
- f2.close()
- cmd = 'gpg --verify %s' % outfile2
- print("-> %r" % cmd)
- ret = subprocess.Popen(cmd, shell=True).wait()
- sys.exit(ret)
|