# HG changeset patch # User Bernhard Herzog # Date 1213973667 0 # Node ID 61fd2892b80bb2c63433755aa349f74868e9da68 # Parent c7ac6736649255b2dfc4209311f345839de1b7d3 Add a function to sign a debian .dsc or .control file diff -r c7ac67366492 -r 61fd2892b80b treepkg/debian.py --- a/treepkg/debian.py Fri Jun 20 14:40:29 2008 +0000 +++ b/treepkg/debian.py Fri Jun 20 14:54:27 2008 +0000 @@ -7,7 +7,10 @@ """Support code for debian packages""" +import os + from treepkg.util import extract_value_for_key +import treepkg.run class DebianControlFile(object): @@ -54,3 +57,20 @@ arch = extract_value_for_key(paragraph, "Architecture:") self.packages.append((package_name, arch)) + + +def sign_file(filename, keyid): + """Signs a debian .dsc or .control file""" + contents = open(filename).read() + + # make sure contents ends with an empty line. The signed files have + # to have an empty line before the OpenPGP signature block + if not contents.endswith("\n"): + contents += "\n" + contents += "\n" + + asc_file = filename + ".asc" + treepkg.run.call(["gpg", "--clearsign", "--armor", "--textmode", + "--local-user", keyid, "-o", asc_file, "-"], + inputdata=contents, suppress_output=True) + os.rename(asc_file, filename)