summaryrefslogtreecommitdiff
path: root/apt/auth.py
diff options
context:
space:
mode:
authorSebastian Heinlein <devel@glatzor.de>2012-06-05 15:07:49 +0200
committerSebastian Heinlein <devel@glatzor.de>2012-06-05 15:07:49 +0200
commit6dede8b69926de6c72ff9d21e39570081cba7b41 (patch)
treef0314c312e3428fe63180de588f59e7bb9552a72 /apt/auth.py
parent56be4293b0e639b58904d1d86dd46f8767d36728 (diff)
parenta8ec7c4c6430e69953ea8f8f3925d1b0fb4ac63a (diff)
downloadpython-apt-6dede8b69926de6c72ff9d21e39570081cba7b41.tar.gz
Merge mvos enhancements
Diffstat (limited to 'apt/auth.py')
-rw-r--r--apt/auth.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/apt/auth.py b/apt/auth.py
index 024f01da..d8c602fa 100644
--- a/apt/auth.py
+++ b/apt/auth.py
@@ -7,11 +7,11 @@
# Author: Michael Vogt <mvo@debian.org>
# Sebastian Heinlein <devel@glatzor.de>
#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
+# 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
@@ -36,8 +36,7 @@ from apt_pkg import gettext as _
# Create a temporary dir to store secret keying and trust database.
# APT doesn't use a secrect key ring but GnuPG fails without it.
-_TMPDIR = tempfile.mkdtemp()
-atexit.register(shutil.rmtree, _TMPDIR)
+_TMPDIR = None
class TrustedKey(object):
@@ -57,6 +56,10 @@ class TrustedKey(object):
def _get_gpg_command(keyring=None):
"""Return the gpg command"""
+ global _TMPDIR
+ if _TMPDIR is None:
+ _TMPDIR = tempfile.mkdtemp()
+ atexit.register(shutil.rmtree, _TMPDIR)
cmd = [apt_pkg.config.find_file("Dir::Bin::Gpg", "/usr/bin/gpg"),
"--ignore-time-conflict",
"--no-default-keyring",
@@ -84,6 +87,7 @@ def _get_gpg_command(keyring=None):
"--trustdb-name", os.path.join(_TMPDIR, "trustdb.gpg")])
return cmd
+
def _wait_and_raise(proc):
"""Wait until the given subprocess is completed and raise a
SystemError if it failed.
@@ -92,6 +96,7 @@ def _wait_and_raise(proc):
output = proc.stdout.read()
raise SystemError("GnuPG command failed: %s" % output)
+
def add_key_from_file(filename, wait=True):
"""Import a GnuPG key file to trust repositores signed by it.
@@ -115,6 +120,7 @@ def add_key_from_file(filename, wait=True):
else:
return proc
+
def add_key_from_keyserver(keyid, keyserver, wait=True):
"""Import a GnuPG key file to trust repositores signed by it.
@@ -137,6 +143,7 @@ def add_key_from_keyserver(keyid, keyserver, wait=True):
else:
return proc
+
def add_key(content, wait=True):
"""Import a GnuPG key to trust repositores signed by it.
@@ -159,6 +166,7 @@ def add_key(content, wait=True):
else:
return proc
+
def remove_key(fingerprint, wait=True):
"""Remove a GnuPG key to no longer trust repositores signed by it.
@@ -178,6 +186,7 @@ def remove_key(fingerprint, wait=True):
else:
return proc
+
def export_key(fingerprint, wait=True):
"""Return the GnuPG key in text format.
@@ -198,6 +207,7 @@ def export_key(fingerprint, wait=True):
else:
return proc
+
def list_keys():
"""Returns a list of TrustedKey instances for each key which is
used to trust repositories.
@@ -216,6 +226,7 @@ def list_keys():
res.append(key)
return res
+
if __name__ == "__main__":
# Add some known keys we would like to see translated so that they get
# picked up by gettext