]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - PLD_Builder/gpg.py
Try to log gnupg verification/signing failures.
[projects/pld-builder.new.git] / PLD_Builder / gpg.py
CommitLineData
dfff8bd5
MM
1# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
c764c38b 3import log
f12b80ea
MM
4import popen2
5import re
94169186 6import StringIO
f12b80ea 7
4d9b6f71 8import util
3f446d8f 9import pipeutil
4d9b6f71 10
94169186 11def verify_sig(buf):
dfff8bd5
MM
12 """Check signature.
13
14 Given email as file-like object, return (signer-emails, signed-body).
15 where signer-emails is lists of strings, and signed-body is StringIO
16 object.
17 """
18 (gpg_out, gpg_in, gpg_err) = popen2.popen3("gpg --batch --no-tty --decrypt")
c764c38b
AM
19 try:
20 body = pipeutil.rw_pipe(buf, gpg_in, gpg_out)
21 except OSError:
22 log.error("gnupg signing failed; does gpg binary exist?")
23 raise
24
8fe263f9 25 rx = re.compile("^gpg: (Good signature from| aka) .*<([^>]+)>")
dfff8bd5
MM
26 emails = []
27 for l in gpg_err.xreadlines():
28 m = rx.match(l)
29 if m:
8fe263f9 30 emails.append(m.group(2))
dfff8bd5
MM
31 gpg_err.close()
32 return (emails, body)
94169186
MM
33
34def sign(buf):
dfff8bd5 35 (gpg_out, gpg_in, gpg_err) = popen2.popen3("gpg --batch --no-tty --clearsign")
c764c38b
AM
36 try:
37 body = pipeutil.rw_pipe(buf, gpg_in, gpg_out)
38 except OSError:
39 log.error("gnupg signing failed; does gpg binary exist?")
40 raise
41
dfff8bd5
MM
42 gpg_err.close()
43 return body
This page took 0.284075 seconds and 4 git commands to generate.