summaryrefslogtreecommitdiff
path: root/docs/_build/html/_modules
diff options
context:
space:
mode:
Diffstat (limited to 'docs/_build/html/_modules')
-rw-r--r--docs/_build/html/_modules/gnupg.html148
-rw-r--r--docs/_build/html/_modules/gnupg/_meta.html981
-rw-r--r--docs/_build/html/_modules/gnupg/_parsers.html1486
-rw-r--r--docs/_build/html/_modules/gnupg/_util.html718
-rw-r--r--docs/_build/html/_modules/index.html104
5 files changed, 0 insertions, 3437 deletions
diff --git a/docs/_build/html/_modules/gnupg.html b/docs/_build/html/_modules/gnupg.html
deleted file mode 100644
index 24c2170..0000000
--- a/docs/_build/html/_modules/gnupg.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>gnupg &mdash; gnupg unknown documentation</title>
-
- <link rel="stylesheet" href="../_static/agogo.css" type="text/css" />
- <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../',
- VERSION: 'unknown',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../_static/jquery.js"></script>
- <script type="text/javascript" src="../_static/underscore.js"></script>
- <script type="text/javascript" src="../_static/doctools.js"></script>
- <link rel="top" title="gnupg unknown documentation" href="../index.html" />
- <link rel="up" title="Module code" href="index.html" />
- </head>
- <body>
- <div class="header-wrapper">
- <div class="header">
- <div class="headertitle"><a
- href="../index.html">gnupg: Python Module Documentation</a></div>
- <div class="rel">
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../genindex.html" title="General Index"
- accesskey="I">index</a>
- </div>
- </div>
- </div>
-
- <div class="content-wrapper">
- <div class="content">
- <div class="document">
-
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for gnupg</h1><div class="highlight"><pre>
-<span class="c">#!/usr/bin/env python</span>
-<span class="c"># -*- coding: utf-8 -*-</span>
-<span class="c">#</span>
-<span class="c"># This file is part of python-gnupg, a Python interface to GnuPG.</span>
-<span class="c"># Copyright © 2013 Isis Lovecruft, &lt;isis@leap.se&gt; 0xA3ADB67A2CDB8B35</span>
-<span class="c"># © 2013 Andrej B.</span>
-<span class="c"># © 2013 LEAP Encryption Access Project</span>
-<span class="c"># © 2008-2012 Vinay Sajip</span>
-<span class="c"># © 2005 Steve Traugott</span>
-<span class="c"># © 2004 A.M. Kuchling</span>
-<span class="c">#</span>
-<span class="c"># This program is free software: you can redistribute it and/or modify it</span>
-<span class="c"># under the terms of the GNU General Public License as published by the Free</span>
-<span class="c"># Software Foundation, either version 3 of the License, or (at your option)</span>
-<span class="c"># any later version.</span>
-<span class="c">#</span>
-<span class="c"># This program is distributed in the hope that it will be useful, but WITHOUT</span>
-<span class="c"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span>
-<span class="c"># FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.</span>
-
-<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">gnupg</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">copyleft</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_ansistrm</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_logger</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_meta</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_parsers</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_util</span>
-<span class="kn">from</span> <span class="nn">.gnupg</span> <span class="kn">import</span> <span class="n">GPG</span>
-<span class="kn">from</span> <span class="nn">._version</span> <span class="kn">import</span> <span class="n">get_versions</span>
-
-<span class="n">__version__</span> <span class="o">=</span> <span class="n">get_versions</span><span class="p">()[</span><span class="s">&#39;version&#39;</span><span class="p">]</span>
-<span class="n">__authors__</span> <span class="o">=</span> <span class="n">copyleft</span><span class="o">.</span><span class="n">authors</span>
-<span class="n">__license__</span> <span class="o">=</span> <span class="n">copyleft</span><span class="o">.</span><span class="n">full_text</span>
-<span class="n">__copyleft__</span> <span class="o">=</span> <span class="n">copyleft</span><span class="o">.</span><span class="n">copyright</span>
-
-<span class="c">## do not set __package__ = &quot;gnupg&quot;, else we will end up with</span>
-<span class="c">## gnupg.&lt;*allofthethings*&gt;</span>
-<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s">&quot;GPG&quot;</span><span class="p">,</span> <span class="s">&quot;_util&quot;</span><span class="p">,</span> <span class="s">&quot;_parsers&quot;</span><span class="p">,</span> <span class="s">&quot;_meta&quot;</span><span class="p">,</span> <span class="s">&quot;_logger&quot;</span><span class="p">]</span>
-
-<span class="c">## avoid the &quot;from gnupg import gnupg&quot; idiom</span>
-<span class="k">del</span> <span class="n">gnupg</span>
-<span class="k">del</span> <span class="n">absolute_import</span>
-<span class="k">del</span> <span class="n">copyleft</span>
-<span class="k">del</span> <span class="n">get_versions</span>
-<span class="k">del</span> <span class="n">_version</span>
-</pre></div>
-
- </div>
- </div>
- </div>
- </div>
- <div class="sidebar">
- <h3>Table Of Contents</h3>
- <ul>
-<li class="toctree-l1"><a class="reference internal" href="../gnupg.html">gnupg package</a></li>
-</ul>
-
- <h3 style="margin-top: 1.5em;">Search</h3>
- <form class="search" action="../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- <div class="footer-wrapper">
- <div class="footer">
- <div class="left">
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../genindex.html" title="General Index"
- >index</a>
- </div>
-
- <div class="right">
-
- <div class="footer">
- &copy; Copyright 2013-2014, Isis Agora Lovecruft.
- Last updated on Saturday, 02 August 2014.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- </body>
-</html> \ No newline at end of file
diff --git a/docs/_build/html/_modules/gnupg/_meta.html b/docs/_build/html/_modules/gnupg/_meta.html
deleted file mode 100644
index 23ca880..0000000
--- a/docs/_build/html/_modules/gnupg/_meta.html
+++ /dev/null
@@ -1,981 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>gnupg._meta &mdash; gnupg unknown documentation</title>
-
- <link rel="stylesheet" href="../../_static/agogo.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../',
- VERSION: 'unknown',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="gnupg unknown documentation" href="../../index.html" />
- <link rel="up" title="gnupg" href="../gnupg.html" />
- </head>
- <body>
- <div class="header-wrapper">
- <div class="header">
- <div class="headertitle"><a
- href="../../index.html">gnupg: Python Module Documentation</a></div>
- <div class="rel">
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a>
- </div>
- </div>
- </div>
-
- <div class="content-wrapper">
- <div class="content">
- <div class="document">
-
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for gnupg._meta</h1><div class="highlight"><pre>
-<span class="c"># -*- coding: utf-8 -*-</span>
-<span class="c">#</span>
-<span class="c"># This file is part of python-gnupg, a Python interface to GnuPG.</span>
-<span class="c"># Copyright © 2013 Isis Lovecruft, &lt;isis@leap.se&gt; 0xA3ADB67A2CDB8B35</span>
-<span class="c"># © 2013 Andrej B.</span>
-<span class="c"># © 2013 LEAP Encryption Access Project</span>
-<span class="c"># © 2008-2012 Vinay Sajip</span>
-<span class="c"># © 2005 Steve Traugott</span>
-<span class="c"># © 2004 A.M. Kuchling</span>
-<span class="c">#</span>
-<span class="c"># This program is free software: you can redistribute it and/or modify it</span>
-<span class="c"># under the terms of the GNU General Public License as published by the Free</span>
-<span class="c"># Software Foundation, either version 3 of the License, or (at your option)</span>
-<span class="c"># any later version.</span>
-<span class="c">#</span>
-<span class="c"># This program is distributed in the hope that it will be useful, but WITHOUT</span>
-<span class="c"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span>
-<span class="c"># FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.</span>
-
-<span class="sd">&#39;&#39;&#39;Meta and base classes for hiding internal functions, and controlling</span>
-<span class="sd">attribute creation and handling.</span>
-<span class="sd">&#39;&#39;&#39;</span>
-
-<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-
-<span class="kn">import</span> <span class="nn">atexit</span>
-<span class="kn">import</span> <span class="nn">codecs</span>
-<span class="kn">import</span> <span class="nn">encodings</span>
-<span class="c">## For AOS, the locale module will need to point to a wrapper around the</span>
-<span class="c">## java.util.Locale class.</span>
-<span class="c">## See https://code.patternsinthevoid.net/?p=android-locale-hack.git</span>
-<span class="kn">import</span> <span class="nn">locale</span>
-<span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">import</span> <span class="nn">platform</span>
-<span class="kn">import</span> <span class="nn">psutil</span>
-<span class="kn">import</span> <span class="nn">shlex</span>
-<span class="kn">import</span> <span class="nn">subprocess</span>
-<span class="kn">import</span> <span class="nn">sys</span>
-<span class="kn">import</span> <span class="nn">threading</span>
-
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_parsers</span>
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_util</span>
-
-<span class="kn">from</span> <span class="nn">._parsers</span> <span class="kn">import</span> <span class="n">_check_preferences</span>
-<span class="kn">from</span> <span class="nn">._parsers</span> <span class="kn">import</span> <span class="n">_sanitise_list</span>
-<span class="kn">from</span> <span class="nn">._util</span> <span class="kn">import</span> <span class="n">log</span>
-
-
-<div class="viewcode-block" id="GPGMeta"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGMeta">[docs]</a><span class="k">class</span> <span class="nc">GPGMeta</span><span class="p">(</span><span class="nb">type</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Metaclass for changing the :meth:GPG.__init__ initialiser.</span>
-
-<span class="sd"> Detects running gpg-agent processes and the presence of a pinentry</span>
-<span class="sd"> program, and disables pinentry so that python-gnupg can write the</span>
-<span class="sd"> passphrase to the controlled GnuPG process without killing the agent.</span>
-
-<span class="sd"> :attr _agent_proc: If a :program:`gpg-agent` process is currently running</span>
-<span class="sd"> for the effective userid, then **_agent_proc** will be</span>
-<span class="sd"> set to a ``psutil.Process`` for that process.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
-
-<div class="viewcode-block" id="GPGMeta.__new__"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGMeta.__new__">[docs]</a> <span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Construct the initialiser for GPG&quot;&quot;&quot;</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Metaclass __new__ constructor called for </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">cls</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cls</span><span class="o">.</span><span class="n">_find_agent</span><span class="p">():</span>
- <span class="c">## call the normal GPG.__init__() initialiser:</span>
- <span class="n">attrs</span><span class="p">[</span><span class="s">&#39;init&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">cls</span><span class="o">.</span><span class="n">__init__</span>
- <span class="n">attrs</span><span class="p">[</span><span class="s">&#39;_remove_agent&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">GPGMeta</span><span class="p">,</span> <span class="n">cls</span><span class="p">)</span><span class="o">.</span><span class="n">__new__</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">bases</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span>
-</div>
- <span class="nd">@classmethod</span>
-<div class="viewcode-block" id="GPGMeta._find_agent"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGMeta._find_agent">[docs]</a> <span class="k">def</span> <span class="nf">_find_agent</span><span class="p">(</span><span class="n">cls</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Discover if a gpg-agent process for the current euid is running.</span>
-
-<span class="sd"> If there is a matching gpg-agent process, set a :class:`psutil.Process`</span>
-<span class="sd"> instance containing the gpg-agent process&#39; information to</span>
-<span class="sd"> ``cls._agent_proc``.</span>
-
-<span class="sd"> :returns: True if there exists a gpg-agent process running under the</span>
-<span class="sd"> same effective user ID as that of this program. Otherwise,</span>
-<span class="sd"> returns None.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">identity</span> <span class="o">=</span> <span class="n">psutil</span><span class="o">.</span><span class="n">Process</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">())</span><span class="o">.</span><span class="n">uids</span>
- <span class="k">for</span> <span class="n">proc</span> <span class="ow">in</span> <span class="n">psutil</span><span class="o">.</span><span class="n">process_iter</span><span class="p">():</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">proc</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s">&quot;gpg-agent&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">proc</span><span class="o">.</span><span class="n">is_running</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Found gpg-agent process with pid </span><span class="si">%d</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">proc</span><span class="o">.</span><span class="n">pid</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">proc</span><span class="o">.</span><span class="n">uids</span> <span class="o">==</span> <span class="n">identity</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span>
- <span class="s">&quot;Effective UIDs of this process and gpg-agent match&quot;</span><span class="p">)</span>
- <span class="nb">setattr</span><span class="p">(</span><span class="n">cls</span><span class="p">,</span> <span class="s">&#39;_agent_proc&#39;</span><span class="p">,</span> <span class="n">proc</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">True</span>
-
-</div></div>
-<div class="viewcode-block" id="GPGBase"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase">[docs]</a><span class="k">class</span> <span class="nc">GPGBase</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Base class for storing properties and controlling process initialisation.</span>
-
-<span class="sd"> :const _result_map: A *dict* containing classes from</span>
-<span class="sd"> :mod:`~gnupg._parsers`, used for parsing results</span>
-<span class="sd"> obtained from GnuPG commands.</span>
-<span class="sd"> :const _decode_errors: How to handle encoding errors.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">__metaclass__</span> <span class="o">=</span> <span class="n">GPGMeta</span>
- <span class="n">_decode_errors</span> <span class="o">=</span> <span class="s">&#39;strict&#39;</span>
- <span class="n">_result_map</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&#39;crypt&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">Crypt</span><span class="p">,</span>
- <span class="s">&#39;delete&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">DeleteResult</span><span class="p">,</span>
- <span class="s">&#39;generate&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">GenKey</span><span class="p">,</span>
- <span class="s">&#39;import&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">ImportResult</span><span class="p">,</span>
- <span class="s">&#39;list&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">ListKeys</span><span class="p">,</span>
- <span class="s">&#39;sign&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">Sign</span><span class="p">,</span>
- <span class="s">&#39;verify&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">Verify</span><span class="p">,</span>
- <span class="s">&#39;packets&#39;</span><span class="p">:</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">ListPackets</span> <span class="p">}</span>
-
-<div class="viewcode-block" id="GPGBase.__init__"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase.__init__">[docs]</a> <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">binary</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">home</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">keyring</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">secring</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">use_agent</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">default_preference_list</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">verbose</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Create a ``GPGBase``.</span>
-
-<span class="sd"> This class is used to set up properties for controlling the behaviour</span>
-<span class="sd"> of configuring various options for GnuPG, such as setting GnuPG&#39;s</span>
-<span class="sd"> **homedir** , and the paths to its **binary** and **keyring** .</span>
-
-<span class="sd"> :const binary: (:obj:`str`) The full path to the GnuPG binary.</span>
-
-<span class="sd"> :ivar homedir: (:class:`~gnupg._util.InheritableProperty`) The full</span>
-<span class="sd"> path to the current setting for the GnuPG</span>
-<span class="sd"> ``--homedir``.</span>
-
-<span class="sd"> :ivar _generated_keys: (:class:`~gnupg._util.InheritableProperty`)</span>
-<span class="sd"> Controls setting the directory for storing any</span>
-<span class="sd"> keys which are generated with</span>
-<span class="sd"> :meth:`~gnupg.GPG.gen_key`.</span>
-
-<span class="sd"> :ivar str keyring: The filename in **homedir** to use as the keyring</span>
-<span class="sd"> file for public keys.</span>
-<span class="sd"> :ivar str secring: The filename in **homedir** to use as the keyring</span>
-<span class="sd"> file for secret keys.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">binary</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_find_binary</span><span class="p">(</span><span class="n">binary</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">homedir</span> <span class="o">=</span> <span class="n">home</span> <span class="k">if</span> <span class="n">home</span> <span class="k">else</span> <span class="n">_util</span><span class="o">.</span><span class="n">_conf</span>
- <span class="n">pub</span> <span class="o">=</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">keyring</span><span class="p">)</span> <span class="k">if</span> <span class="n">keyring</span> <span class="k">else</span> <span class="s">&#39;pubring.gpg&#39;</span>
- <span class="n">sec</span> <span class="o">=</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">secring</span><span class="p">)</span> <span class="k">if</span> <span class="n">secring</span> <span class="k">else</span> <span class="s">&#39;secring.gpg&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">keyring</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_homedir</span><span class="p">,</span> <span class="n">pub</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">secring</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_homedir</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">_sanitise</span><span class="p">(</span><span class="n">options</span><span class="p">)</span> <span class="k">if</span> <span class="n">options</span> <span class="k">else</span> <span class="bp">None</span>
-
- <span class="k">if</span> <span class="n">default_preference_list</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_prefs</span> <span class="o">=</span> <span class="n">_check_preferences</span><span class="p">(</span><span class="n">default_preference_list</span><span class="p">,</span> <span class="s">&#39;all&#39;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_prefs</span> <span class="o">=</span> <span class="s">&#39;SHA512 SHA384 SHA256 AES256 CAMELLIA256 TWOFISH&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_prefs</span> <span class="o">+=</span> <span class="s">&#39; AES192 ZLIB ZIP Uncompressed&#39;</span>
-
- <span class="n">encoding</span> <span class="o">=</span> <span class="n">locale</span><span class="o">.</span><span class="n">getpreferredencoding</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">encoding</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="c"># This happens on Jython!</span>
- <span class="n">encoding</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">encoding</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_encoding</span> <span class="o">=</span> <span class="n">encoding</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;-&#39;</span><span class="p">,</span> <span class="s">&#39;_&#39;</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_filesystemencoding</span> <span class="o">=</span> <span class="n">encodings</span><span class="o">.</span><span class="n">normalize_encoding</span><span class="p">(</span>
- <span class="n">sys</span><span class="o">.</span><span class="n">getfilesystemencoding</span><span class="p">()</span><span class="o">.</span><span class="n">lower</span><span class="p">())</span>
-
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyserver</span> <span class="o">=</span> <span class="s">&#39;hkp://wwwkeys.pgp.net&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__generated_keys</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">homedir</span><span class="p">,</span> <span class="s">&#39;generated-keys&#39;</span><span class="p">)</span>
-
- <span class="k">try</span><span class="p">:</span>
- <span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">,</span> <span class="s">&quot;Could not find binary </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">binary</span>
- <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">verbose</span><span class="p">,</span> <span class="p">(</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="nb">int</span><span class="p">)),</span> \
- <span class="s">&quot;&#39;verbose&#39; must be boolean, string, or 0 &lt;= n &lt;= 9&quot;</span>
- <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">use_agent</span><span class="p">,</span> <span class="nb">bool</span><span class="p">),</span> <span class="s">&quot;&#39;use_agent&#39; must be boolean&quot;</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">,</span> <span class="nb">str</span><span class="p">),</span> <span class="s">&quot;options not string&quot;</span>
- <span class="k">except</span> <span class="p">(</span><span class="ne">AssertionError</span><span class="p">,</span> <span class="ne">AttributeError</span><span class="p">)</span> <span class="k">as</span> <span class="n">ae</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;GPGBase.__init__(): </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">verbose</span> <span class="ow">is</span> <span class="bp">True</span><span class="p">:</span>
- <span class="c"># The caller wants logging, but we need a valid --debug-level</span>
- <span class="c"># for gpg. Default to &quot;basic&quot;, and warn about the ambiguity.</span>
- <span class="c"># (garrettr)</span>
- <span class="n">verbose</span> <span class="o">=</span> <span class="s">&quot;basic&quot;</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s">&#39;GPG(verbose=True) is ambiguous, defaulting to &quot;basic&quot; logging&#39;</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">verbose</span> <span class="o">=</span> <span class="n">verbose</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">use_agent</span> <span class="o">=</span> <span class="n">use_agent</span>
-
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">&#39;_agent_proc&#39;</span><span class="p">)</span> \
- <span class="ow">and</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">&#39;_remove_agent&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">True</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s">&#39;__remove_path__&#39;</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__remove_path__</span><span class="p">(</span><span class="s">&#39;pinentry&#39;</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="GPGBase.__remove_path__"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase.__remove_path__">[docs]</a> <span class="k">def</span> <span class="nf">__remove_path__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prog</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">at_exit</span><span class="o">=</span><span class="bp">True</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Remove the directories containing a program from the system&#39;s</span>
-<span class="sd"> ``$PATH``. If ``GPGBase.binary`` is in a directory being removed, it</span>
-<span class="sd"> is linked to :file:&#39;./gpg&#39; in the current directory.</span>
-
-<span class="sd"> :param str prog: The program to remove from ``$PATH``.</span>
-<span class="sd"> :param bool at_exit: Add the program back into the ``$PATH`` when the</span>
-<span class="sd"> Python interpreter exits, and delete any symlinks</span>
-<span class="sd"> to ``GPGBase.binary`` which were created.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="c">#: A list of ``$PATH`` entries which were removed to disable pinentry.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_removed_path_entries</span> <span class="o">=</span> <span class="p">[]</span>
-
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Attempting to remove </span><span class="si">%s</span><span class="s"> from system PATH&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">prog</span><span class="p">))</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">prog</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span><span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prog</span><span class="p">,</span> <span class="nb">str</span><span class="p">)):</span> <span class="k">return</span>
-
- <span class="k">try</span><span class="p">:</span>
- <span class="n">program</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_which</span><span class="p">(</span><span class="n">prog</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">except</span> <span class="p">(</span><span class="ne">OSError</span><span class="p">,</span> <span class="ne">IOError</span><span class="p">,</span> <span class="ne">IndexError</span><span class="p">)</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">err</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">err</span><span class="p">))</span>
- <span class="n">log</span><span class="o">.</span><span class="n">err</span><span class="p">(</span><span class="s">&quot;Cannot find program &#39;</span><span class="si">%s</span><span class="s">&#39;, not changing PATH.&quot;</span> <span class="o">%</span> <span class="n">prog</span><span class="p">)</span>
- <span class="k">return</span>
-
- <span class="c">## __remove_path__ cannot be an @classmethod in GPGMeta, because</span>
- <span class="c">## the use_agent attribute must be set by the instance.</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_agent</span><span class="p">:</span>
- <span class="n">program_base</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="n">prog</span><span class="p">)</span>
- <span class="n">gnupg_base</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">dirname</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">)</span>
-
- <span class="c">## symlink our gpg binary into $PWD if the path we are removing is</span>
- <span class="c">## the one which contains our gpg executable:</span>
- <span class="n">new_gpg_location</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="s">&#39;gpg&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">gnupg_base</span> <span class="o">==</span> <span class="n">program_base</span><span class="p">:</span>
- <span class="n">os</span><span class="o">.</span><span class="n">symlink</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">,</span> <span class="n">new_gpg_location</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">binary</span> <span class="o">=</span> <span class="n">new_gpg_location</span>
-
- <span class="c">## copy the original environment so that we can put it back later:</span>
- <span class="n">env_copy</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span> <span class="c">## this one should not be touched</span>
- <span class="n">path_copy</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Created a copy of system PATH: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">path_copy</span><span class="p">)</span>
- <span class="k">assert</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">),</span> <span class="s">&quot;OS env kept $PATH anyway!&quot;</span>
-
- <span class="nd">@staticmethod</span>
- <span class="k">def</span> <span class="nf">remove_program_from_path</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">prog_base</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Remove all directories which contain a program from PATH.</span>
-
-<span class="sd"> :param str path: The contents of the system environment&#39;s</span>
-<span class="sd"> ``$PATH``.</span>
-
-<span class="sd"> :param str prog_base: The directory portion of a program&#39;s</span>
-<span class="sd"> location, without the trailing slash,</span>
-<span class="sd"> and without the program name. For</span>
-<span class="sd"> example, ``prog_base=&#39;/usr/bin&#39;``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">paths</span> <span class="o">=</span> <span class="n">path</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;:&#39;</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">directory</span> <span class="ow">in</span> <span class="n">paths</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">directory</span> <span class="o">==</span> <span class="n">prog_base</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Found directory with target program: </span><span class="si">%s</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
- <span class="n">path</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_removed_path_entries</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Deleted all found instance of </span><span class="si">%s</span><span class="s">.&quot;</span> <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;PATH is now:</span><span class="si">%s%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">linesep</span><span class="p">,</span> <span class="n">path</span><span class="p">))</span>
- <span class="n">new_path</span> <span class="o">=</span> <span class="s">&#39;:&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">path</span><span class="p">])</span>
- <span class="k">return</span> <span class="n">new_path</span>
-
- <span class="nd">@staticmethod</span>
- <span class="k">def</span> <span class="nf">update_path</span><span class="p">(</span><span class="n">environment</span><span class="p">,</span> <span class="n">path</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Add paths to the string at ``os.environ[&#39;PATH&#39;]``.</span>
-
-<span class="sd"> :param str environment: The environment mapping to update.</span>
-<span class="sd"> :param list path: A list of strings to update the PATH with.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Updating system path...&quot;</span><span class="p">)</span>
- <span class="n">os</span><span class="o">.</span><span class="n">environ</span> <span class="o">=</span> <span class="n">environment</span>
- <span class="n">new_path</span> <span class="o">=</span> <span class="s">&#39;:&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">p</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">path</span><span class="p">])</span>
- <span class="n">old</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
- <span class="k">if</span> <span class="s">&#39;PATH&#39;</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">:</span>
- <span class="n">new_path</span> <span class="o">=</span> <span class="s">&#39;:&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s">&#39;PATH&#39;</span><span class="p">],</span> <span class="n">new_path</span><span class="p">])</span>
- <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="s">&#39;PATH&#39;</span><span class="p">:</span> <span class="n">new_path</span><span class="p">})</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;System $PATH: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s">&#39;PATH&#39;</span><span class="p">])</span>
-
- <span class="n">modified_path</span> <span class="o">=</span> <span class="n">remove_program_from_path</span><span class="p">(</span><span class="n">path_copy</span><span class="p">,</span> <span class="n">program_base</span><span class="p">)</span>
- <span class="n">update_path</span><span class="p">(</span><span class="n">env_copy</span><span class="p">,</span> <span class="n">modified_path</span><span class="p">)</span>
-
- <span class="c">## register an _exithandler with the python interpreter:</span>
- <span class="n">atexit</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">update_path</span><span class="p">,</span> <span class="n">env_copy</span><span class="p">,</span> <span class="n">path_copy</span><span class="p">)</span>
-
- <span class="k">def</span> <span class="nf">remove_symlinked_binary</span><span class="p">(</span><span class="n">symlink</span><span class="p">):</span>
- <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">islink</span><span class="p">(</span><span class="n">symlink</span><span class="p">):</span>
- <span class="n">os</span><span class="o">.</span><span class="n">unlink</span><span class="p">(</span><span class="n">symlink</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Removed binary symlink &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">symlink</span><span class="p">)</span>
- <span class="n">atexit</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">remove_symlinked_binary</span><span class="p">,</span> <span class="n">new_gpg_location</span><span class="p">)</span>
-</div>
- <span class="nd">@property</span>
- <span class="k">def</span> <span class="nf">default_preference_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Get the default preference list.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_prefs</span>
-
- <span class="nd">@default_preference_list.setter</span>
- <span class="k">def</span> <span class="nf">default_preference_list</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">prefs</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Set the default preference list.</span>
-
-<span class="sd"> :param str prefs: A string containing the default preferences for</span>
-<span class="sd"> ciphers, digests, and compression algorithms.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">prefs</span> <span class="o">=</span> <span class="n">_check_preferences</span><span class="p">(</span><span class="n">prefs</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">prefs</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_prefs</span> <span class="o">=</span> <span class="n">prefs</span>
-
- <span class="nd">@default_preference_list.deleter</span>
-<div class="viewcode-block" id="GPGBase.default_preference_list"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase.default_preference_list">[docs]</a> <span class="k">def</span> <span class="nf">default_preference_list</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Reset the default preference list to its original state.</span>
-
-<span class="sd"> Note that &quot;original state&quot; does not mean the default preference</span>
-<span class="sd"> list for whichever version of GnuPG is being used. It means the</span>
-<span class="sd"> default preference list defined by :attr:`GPGBase._prefs`.</span>
-
-<span class="sd"> Using BZIP2 is avoided due to not interacting well with some versions</span>
-<span class="sd"> of GnuPG&gt;=2.0.0.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_prefs</span> <span class="o">=</span> <span class="s">&#39;SHA512 SHA384 SHA256 AES256 CAMELLIA256 TWOFISH ZLIB ZIP&#39;</span>
-</div>
- <span class="nd">@property</span>
- <span class="k">def</span> <span class="nf">keyserver</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Get the current keyserver setting.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_keyserver</span>
-
- <span class="nd">@keyserver.setter</span>
- <span class="k">def</span> <span class="nf">keyserver</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">location</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Set the default keyserver to use for sending and receiving keys.</span>
-
-<span class="sd"> The ``location`` is sent to :func:`_parsers._check_keyserver` when</span>
-<span class="sd"> option are parsed in :meth:`gnupg.GPG._make_options`.</span>
-
-<span class="sd"> :param str location: A string containing the default keyserver. This</span>
-<span class="sd"> should contain the desired keyserver protocol</span>
-<span class="sd"> which is supported by the keyserver, for example,</span>
-<span class="sd"> ``&#39;hkps://keys.mayfirst.org&#39;``. The default</span>
-<span class="sd"> keyserver is ``&#39;hkp://wwwkeys.pgp.net&#39;``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyserver</span> <span class="o">=</span> <span class="n">location</span>
-
- <span class="nd">@keyserver.deleter</span>
-<div class="viewcode-block" id="GPGBase.keyserver"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase.keyserver">[docs]</a> <span class="k">def</span> <span class="nf">keyserver</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Reset the keyserver to the default setting.&quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_keyserver</span> <span class="o">=</span> <span class="s">&#39;hkp://wwwkeys.pgp.net&#39;</span>
-</div>
-<div class="viewcode-block" id="GPGBase._homedir_getter"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._homedir_getter">[docs]</a> <span class="k">def</span> <span class="nf">_homedir_getter</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Get the directory currently being used as GnuPG&#39;s homedir.</span>
-
-<span class="sd"> If unspecified, use :file:`~/.config/python-gnupg/`</span>
-
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: The absolute path to the current GnuPG homedir.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_homedir</span>
-</div>
-<div class="viewcode-block" id="GPGBase._homedir_setter"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._homedir_setter">[docs]</a> <span class="k">def</span> <span class="nf">_homedir_setter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">directory</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Set the directory to use as GnuPG&#39;s homedir.</span>
-
-<span class="sd"> If unspecified, use $HOME/.config/python-gnupg. If specified, ensure</span>
-<span class="sd"> that the ``directory`` does not contain various shell escape</span>
-<span class="sd"> characters. If ``directory`` is not found, it will be automatically</span>
-<span class="sd"> created. Lastly, the ``direcory`` will be checked that the EUID has</span>
-<span class="sd"> read and write permissions for it.</span>
-
-<span class="sd"> :param str directory: A relative or absolute path to the directory to</span>
-<span class="sd"> use for storing/accessing GnuPG&#39;s files, including</span>
-<span class="sd"> keyrings and the trustdb.</span>
-<span class="sd"> :raises: :exc:`~exceptions.RuntimeError` if unable to find a suitable</span>
-<span class="sd"> directory to use.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">directory</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._homedir_setter(): Using default homedir: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="n">_util</span><span class="o">.</span><span class="n">_conf</span><span class="p">)</span>
- <span class="n">directory</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_conf</span>
-
- <span class="n">hd</span> <span class="o">=</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._homedir_setter(): got directory &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">hd</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">hd</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._homedir_setter(): Check existence of &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">hd</span><span class="p">)</span>
- <span class="n">_util</span><span class="o">.</span><span class="n">_create_if_necessary</span><span class="p">(</span><span class="n">hd</span><span class="p">)</span>
-
- <span class="k">try</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._homedir_setter(): checking permissions&quot;</span><span class="p">)</span>
- <span class="k">assert</span> <span class="n">_util</span><span class="o">.</span><span class="n">_has_readwrite</span><span class="p">(</span><span class="n">hd</span><span class="p">),</span> \
- <span class="s">&quot;Homedir &#39;</span><span class="si">%s</span><span class="s">&#39; needs read/write permissions&quot;</span> <span class="o">%</span> <span class="n">hd</span>
- <span class="k">except</span> <span class="ne">AssertionError</span> <span class="k">as</span> <span class="n">ae</span><span class="p">:</span>
- <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;Unable to set &#39;</span><span class="si">%s</span><span class="s">&#39; as GnuPG homedir&quot;</span> <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase.homedir.setter(): </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">msg</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Setting homedir to &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">hd</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_homedir</span> <span class="o">=</span> <span class="n">hd</span>
-</div>
- <span class="n">homedir</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">InheritableProperty</span><span class="p">(</span><span class="n">_homedir_getter</span><span class="p">,</span> <span class="n">_homedir_setter</span><span class="p">)</span>
-
-<div class="viewcode-block" id="GPGBase._generated_keys_getter"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._generated_keys_getter">[docs]</a> <span class="k">def</span> <span class="nf">_generated_keys_getter</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Get the ``homedir`` subdirectory for storing generated keys.</span>
-
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: The absolute path to the current GnuPG homedir.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">__generated_keys</span>
-</div>
-<div class="viewcode-block" id="GPGBase._generated_keys_setter"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._generated_keys_setter">[docs]</a> <span class="k">def</span> <span class="nf">_generated_keys_setter</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">directory</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Set the directory for storing generated keys.</span>
-
-<span class="sd"> If unspecified, use</span>
-<span class="sd"> :meth:`~gnupg._meta.GPGBase.homedir`/generated-keys. If specified,</span>
-<span class="sd"> ensure that the ``directory`` does not contain various shell escape</span>
-<span class="sd"> characters. If ``directory`` isn&#39;t found, it will be automatically</span>
-<span class="sd"> created. Lastly, the ``directory`` will be checked to ensure that the</span>
-<span class="sd"> current EUID has read and write permissions for it.</span>
-
-<span class="sd"> :param str directory: A relative or absolute path to the directory to</span>
-<span class="sd"> use for storing/accessing GnuPG&#39;s files, including keyrings and</span>
-<span class="sd"> the trustdb.</span>
-<span class="sd"> :raises: :exc:`~exceptions.RuntimeError` if unable to find a suitable</span>
-<span class="sd"> directory to use.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">directory</span><span class="p">:</span>
- <span class="n">directory</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">homedir</span><span class="p">,</span> <span class="s">&#39;generated-keys&#39;</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._generated_keys_setter(): Using &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
-
- <span class="n">hd</span> <span class="o">=</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._generated_keys_setter(): got directory &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">hd</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">hd</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._generated_keys_setter(): Check exists &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="n">hd</span><span class="p">)</span>
- <span class="n">_util</span><span class="o">.</span><span class="n">_create_if_necessary</span><span class="p">(</span><span class="n">hd</span><span class="p">)</span>
-
- <span class="k">try</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._generated_keys_setter(): check permissions&quot;</span><span class="p">)</span>
- <span class="k">assert</span> <span class="n">_util</span><span class="o">.</span><span class="n">_has_readwrite</span><span class="p">(</span><span class="n">hd</span><span class="p">),</span> \
- <span class="s">&quot;Keys dir &#39;</span><span class="si">%s</span><span class="s">&#39; needs read/write permissions&quot;</span> <span class="o">%</span> <span class="n">hd</span>
- <span class="k">except</span> <span class="ne">AssertionError</span> <span class="k">as</span> <span class="n">ae</span><span class="p">:</span>
- <span class="n">msg</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;Unable to set &#39;</span><span class="si">%s</span><span class="s">&#39; as generated keys dir&quot;</span> <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPGBase._generated_keys_setter(): </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">msg</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Setting homedir to &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">hd</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__generated_keys</span> <span class="o">=</span> <span class="n">hd</span>
-</div>
- <span class="n">_generated_keys</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">InheritableProperty</span><span class="p">(</span><span class="n">_generated_keys_getter</span><span class="p">,</span>
- <span class="n">_generated_keys_setter</span><span class="p">)</span>
-
-<div class="viewcode-block" id="GPGBase._make_args"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._make_args">[docs]</a> <span class="k">def</span> <span class="nf">_make_args</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">passphrase</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Make a list of command line elements for GPG.</span>
-
-<span class="sd"> The value of ``args`` will be appended only if it passes the checks in</span>
-<span class="sd"> :func:`gnupg._parsers._sanitise`. The ``passphrase`` argument needs to</span>
-<span class="sd"> be True if a passphrase will be sent to GnuPG, else False.</span>
-
-<span class="sd"> :param list args: A list of strings of options and flags to pass to</span>
-<span class="sd"> ``GPG.binary``. This is input safe, meaning that</span>
-<span class="sd"> these values go through strict checks (see</span>
-<span class="sd"> ``parsers._sanitise_list``) before being passed to to</span>
-<span class="sd"> the input file descriptor for the GnuPG process.</span>
-<span class="sd"> Each string should be given exactly as it would be on</span>
-<span class="sd"> the commandline interface to GnuPG,</span>
-<span class="sd"> e.g. [&quot;--cipher-algo AES256&quot;, &quot;--default-key</span>
-<span class="sd"> A3ADB67A2CDB8B35&quot;].</span>
-
-<span class="sd"> :param bool passphrase: If True, the passphrase will be sent to the</span>
-<span class="sd"> stdin file descriptor for the attached GnuPG</span>
-<span class="sd"> process.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="c">## see TODO file, tag :io:makeargs:</span>
- <span class="n">cmd</span> <span class="o">=</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">,</span>
- <span class="s">&#39;--no-options --no-emit-version --no-tty --status-fd 2&#39;</span><span class="p">]</span>
-
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">homedir</span><span class="p">:</span> <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--homedir &quot;</span><span class="si">%s</span><span class="s">&quot;&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">homedir</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyring</span><span class="p">:</span>
- <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--no-default-keyring --keyring </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyring</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">secring</span><span class="p">:</span>
- <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--secret-keyring </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">secring</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">passphrase</span><span class="p">:</span> <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--batch --passphrase-fd 0&#39;</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">use_agent</span><span class="p">:</span> <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--use-agent&#39;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span> <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--no-use-agent&#39;</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">:</span>
- <span class="p">[</span><span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">opt</span><span class="p">)</span> <span class="k">for</span> <span class="n">opt</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="n">_sanitise_list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">))]</span>
- <span class="k">if</span> <span class="n">args</span><span class="p">:</span>
- <span class="p">[</span><span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="nb">iter</span><span class="p">(</span><span class="n">_sanitise_list</span><span class="p">(</span><span class="n">args</span><span class="p">))]</span>
-
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">:</span>
- <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--debug-all&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="p">((</span><span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">verbose</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;basic&#39;</span><span class="p">,</span> <span class="s">&#39;advanced&#39;</span><span class="p">,</span> <span class="s">&#39;expert&#39;</span><span class="p">,</span> <span class="s">&#39;guru&#39;</span><span class="p">])</span>
- <span class="ow">or</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="mi">1</span><span class="o">&lt;=</span><span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="o">&lt;=</span><span class="mi">9</span><span class="p">))):</span>
- <span class="n">cmd</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--debug-level </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">)</span>
-
- <span class="k">return</span> <span class="n">cmd</span>
-</div>
-<div class="viewcode-block" id="GPGBase._open_subprocess"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._open_subprocess">[docs]</a> <span class="k">def</span> <span class="nf">_open_subprocess</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">passphrase</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Open a pipe to a GPG subprocess and return the file objects for</span>
-<span class="sd"> communicating with it.</span>
-
-<span class="sd"> :param list args: A list of strings of options and flags to pass to</span>
-<span class="sd"> ``GPG.binary``. This is input safe, meaning that</span>
-<span class="sd"> these values go through strict checks (see</span>
-<span class="sd"> ``parsers._sanitise_list``) before being passed to to</span>
-<span class="sd"> the input file descriptor for the GnuPG process.</span>
-<span class="sd"> Each string should be given exactly as it would be on</span>
-<span class="sd"> the commandline interface to GnuPG,</span>
-<span class="sd"> e.g. [&quot;--cipher-algo AES256&quot;, &quot;--default-key</span>
-<span class="sd"> A3ADB67A2CDB8B35&quot;].</span>
-
-<span class="sd"> :param bool passphrase: If True, the passphrase will be sent to the</span>
-<span class="sd"> stdin file descriptor for the attached GnuPG</span>
-<span class="sd"> process.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="c">## see http://docs.python.org/2/library/subprocess.html#converting-an\</span>
- <span class="c">## -argument-sequence-to-a-string-on-windows</span>
- <span class="n">cmd</span> <span class="o">=</span> <span class="n">shlex</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_make_args</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">passphrase</span><span class="p">)))</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Sending command to GnuPG process:</span><span class="si">%s%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">linesep</span><span class="p">,</span> <span class="n">cmd</span><span class="p">))</span>
-
- <span class="k">if</span> <span class="n">platform</span><span class="o">.</span><span class="n">system</span><span class="p">()</span> <span class="o">==</span> <span class="s">&quot;Windows&quot;</span><span class="p">:</span>
- <span class="c"># TODO figure out what the hell is going on there.</span>
- <span class="n">expand_shell</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">expand_shell</span> <span class="o">=</span> <span class="bp">False</span>
-
- <span class="k">return</span> <span class="n">subprocess</span><span class="o">.</span><span class="n">Popen</span><span class="p">(</span><span class="n">cmd</span><span class="p">,</span> <span class="n">shell</span><span class="o">=</span><span class="n">expand_shell</span><span class="p">,</span> <span class="n">stdin</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
- <span class="n">stdout</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span> <span class="n">stderr</span><span class="o">=</span><span class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span class="p">,</span>
- <span class="n">env</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;LANGUAGE&#39;</span><span class="p">:</span> <span class="s">&#39;en&#39;</span><span class="p">})</span>
-</div>
-<div class="viewcode-block" id="GPGBase._read_response"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._read_response">[docs]</a> <span class="k">def</span> <span class="nf">_read_response</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Reads all the stderr output from GPG, taking notice only of lines</span>
-<span class="sd"> that begin with the magic [GNUPG:] prefix.</span>
-
-<span class="sd"> Calls methods on the response object for each valid token found, with</span>
-<span class="sd"> the arg being the remainder of the status line.</span>
-
-<span class="sd"> :param stream: A byte-stream, file handle, or a</span>
-<span class="sd"> :data:`subprocess.PIPE` for parsing the status codes</span>
-<span class="sd"> from the GnuPG process.</span>
-
-<span class="sd"> :param result: The result parser class from :mod:`~gnupg._parsers` ―</span>
-<span class="sd"> the ``handle_status()`` method of that class will be</span>
-<span class="sd"> called in order to parse the output of ``stream``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
- <span class="n">line</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">readline</span><span class="p">()</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">line</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">break</span>
- <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
- <span class="n">line</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">rstrip</span><span class="p">()</span>
-
- <span class="k">if</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;[GNUPG:]&#39;</span><span class="p">):</span>
- <span class="n">line</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_deprefix</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s">&#39;[GNUPG:] &#39;</span><span class="p">,</span> <span class="n">log</span><span class="o">.</span><span class="n">status</span><span class="p">)</span>
- <span class="n">keyword</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_separate_keyword</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
- <span class="n">result</span><span class="o">.</span><span class="n">_handle_status</span><span class="p">(</span><span class="n">keyword</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">line</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;gpg:&#39;</span><span class="p">):</span>
- <span class="n">line</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_deprefix</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="s">&#39;gpg: &#39;</span><span class="p">)</span>
- <span class="n">keyword</span><span class="p">,</span> <span class="n">value</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_separate_keyword</span><span class="p">(</span><span class="n">line</span><span class="p">)</span>
-
- <span class="c"># Log gpg&#39;s userland messages at our own levels:</span>
- <span class="k">if</span> <span class="n">keyword</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&quot;WARNING&quot;</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">value</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">keyword</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&quot;FATAL&quot;</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">critical</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">value</span><span class="p">)</span>
- <span class="c"># Handle the gpg2 error where a missing trustdb.gpg is,</span>
- <span class="c"># for some stupid reason, considered fatal:</span>
- <span class="k">if</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;trustdb.gpg&quot;</span><span class="p">)</span> <span class="ow">and</span> <span class="n">value</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&quot;No such file&quot;</span><span class="p">):</span>
- <span class="n">result</span><span class="o">.</span><span class="n">_handle_status</span><span class="p">(</span><span class="s">&#39;NEED_TRUSTDB&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">verbose</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">line</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">line</span><span class="p">)</span>
- <span class="n">result</span><span class="o">.</span><span class="n">stderr</span> <span class="o">=</span> <span class="s">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">lines</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="GPGBase._read_data"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._read_data">[docs]</a> <span class="k">def</span> <span class="nf">_read_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Incrementally read from ``stream`` and store read data.</span>
-
-<span class="sd"> All data gathered from calling ``stream.read()`` will be concatenated</span>
-<span class="sd"> and stored as ``result.data``.</span>
-
-<span class="sd"> :param stream: An open file-like object to read() from.</span>
-<span class="sd"> :param result: An instance of one of the :ref:`result parsing classes</span>
-<span class="sd"> &lt;parsers&gt;` from :const:`~gnupg._meta.GPGBase._result_map`.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">chunks</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Reading data from stream </span><span class="si">%r</span><span class="s">...&quot;</span> <span class="o">%</span> <span class="n">stream</span><span class="o">.</span><span class="n">__repr__</span><span class="p">())</span>
-
- <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
- <span class="n">data</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1024</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">break</span>
- <span class="n">chunks</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Read </span><span class="si">%4d</span><span class="s"> bytes&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
-
- <span class="c"># Join using b&#39;&#39; or &#39;&#39;, as appropriate</span>
- <span class="n">result</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)()</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">chunks</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Finishing reading from stream </span><span class="si">%r</span><span class="s">...&quot;</span> <span class="o">%</span> <span class="n">stream</span><span class="o">.</span><span class="n">__repr__</span><span class="p">())</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Read </span><span class="si">%4d</span><span class="s"> bytes total&quot;</span> <span class="o">%</span> <span class="nb">len</span><span class="p">(</span><span class="n">result</span><span class="o">.</span><span class="n">data</span><span class="p">))</span>
-</div>
-<div class="viewcode-block" id="GPGBase._collect_output"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._collect_output">[docs]</a> <span class="k">def</span> <span class="nf">_collect_output</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">process</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">writer</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">stdin</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Drain the subprocesses output streams, writing the collected output</span>
-<span class="sd"> to the result. If a writer thread (writing to the subprocess) is given,</span>
-<span class="sd"> make sure it&#39;s joined before returning. If a stdin stream is given,</span>
-<span class="sd"> close it before returning.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">stderr</span> <span class="o">=</span> <span class="n">codecs</span><span class="o">.</span><span class="n">getreader</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_encoding</span><span class="p">)(</span><span class="n">process</span><span class="o">.</span><span class="n">stderr</span><span class="p">)</span>
- <span class="n">rr</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_read_response</span><span class="p">,</span>
- <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="n">stderr</span><span class="p">,</span> <span class="n">result</span><span class="p">))</span>
- <span class="n">rr</span><span class="o">.</span><span class="n">setDaemon</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;stderr reader: </span><span class="si">%r</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">rr</span><span class="p">)</span>
- <span class="n">rr</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
-
- <span class="n">stdout</span> <span class="o">=</span> <span class="n">process</span><span class="o">.</span><span class="n">stdout</span>
- <span class="n">dr</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_read_data</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="n">stdout</span><span class="p">,</span> <span class="n">result</span><span class="p">))</span>
- <span class="n">dr</span><span class="o">.</span><span class="n">setDaemon</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;stdout reader: </span><span class="si">%r</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">dr</span><span class="p">)</span>
- <span class="n">dr</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
-
- <span class="n">dr</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
- <span class="n">rr</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">writer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="n">writer</span><span class="o">.</span><span class="n">join</span><span class="p">()</span>
- <span class="n">process</span><span class="o">.</span><span class="n">wait</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">stdin</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">stdin</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
- <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
- <span class="k">pass</span>
- <span class="n">stderr</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
- <span class="n">stdout</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
-</div>
-<div class="viewcode-block" id="GPGBase._handle_io"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._handle_io">[docs]</a> <span class="k">def</span> <span class="nf">_handle_io</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">passphrase</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">binary</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Handle a call to GPG - pass input data, collect output data.&quot;&quot;&quot;</span>
- <span class="n">p</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_open_subprocess</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">passphrase</span><span class="p">)</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">binary</span><span class="p">:</span>
- <span class="n">stdin</span> <span class="o">=</span> <span class="n">codecs</span><span class="o">.</span><span class="n">getwriter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_encoding</span><span class="p">)(</span><span class="n">p</span><span class="o">.</span><span class="n">stdin</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">stdin</span> <span class="o">=</span> <span class="n">p</span><span class="o">.</span><span class="n">stdin</span>
- <span class="k">if</span> <span class="n">passphrase</span><span class="p">:</span>
- <span class="n">_util</span><span class="o">.</span><span class="n">_write_passphrase</span><span class="p">(</span><span class="n">stdin</span><span class="p">,</span> <span class="n">passphrase</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encoding</span><span class="p">)</span>
- <span class="n">writer</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_threaded_copy_data</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">stdin</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_collect_output</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">writer</span><span class="p">,</span> <span class="n">stdin</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">result</span>
-</div>
-<div class="viewcode-block" id="GPGBase._recv_keys"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._recv_keys">[docs]</a> <span class="k">def</span> <span class="nf">_recv_keys</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">keyids</span><span class="p">,</span> <span class="n">keyserver</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Import keys from a keyserver.</span>
-
-<span class="sd"> :param str keyids: A space-delimited string containing the keyids to</span>
-<span class="sd"> request.</span>
-<span class="sd"> :param str keyserver: The keyserver to request the ``keyids`` from;</span>
-<span class="sd"> defaults to `gnupg.GPG.keyserver`.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">keyserver</span><span class="p">:</span>
- <span class="n">keyserver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">keyserver</span>
-
- <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;--keyserver {0}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">keyserver</span><span class="p">),</span>
- <span class="s">&#39;--recv-keys {0}&#39;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">keyids</span><span class="p">)]</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&#39;Requesting keys from </span><span class="si">%s</span><span class="s">: </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="p">(</span><span class="n">keyserver</span><span class="p">,</span> <span class="n">keyids</span><span class="p">))</span>
-
- <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_result_map</span><span class="p">[</span><span class="s">&#39;import&#39;</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span>
- <span class="n">proc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_open_subprocess</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_collect_output</span><span class="p">(</span><span class="n">proc</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;recv_keys result: </span><span class="si">%r</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">result</span><span class="o">.</span><span class="n">__dict__</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">result</span>
-</div>
-<div class="viewcode-block" id="GPGBase._sign_file"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._sign_file">[docs]</a> <span class="k">def</span> <span class="nf">_sign_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">file</span><span class="p">,</span> <span class="n">default_key</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">passphrase</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">clearsign</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">detach</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="n">binary</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
- <span class="n">digest_algo</span><span class="o">=</span><span class="s">&#39;SHA512&#39;</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Create a signature for a file.</span>
-
-<span class="sd"> :param file: The file stream (i.e. it&#39;s already been open()&#39;d) to sign.</span>
-<span class="sd"> :param str default_key: The key to sign with.</span>
-<span class="sd"> :param str passphrase: The passphrase to pipe to stdin.</span>
-<span class="sd"> :param bool clearsign: If True, create a cleartext signature.</span>
-<span class="sd"> :param bool detach: If True, create a detached signature.</span>
-<span class="sd"> :param bool binary: If True, do not ascii armour the output.</span>
-<span class="sd"> :param str digest_algo: The hash digest to use. Again, to see which</span>
-<span class="sd"> hashes your GnuPG is capable of using, do:</span>
-<span class="sd"> ``$ gpg --with-colons --list-config</span>
-<span class="sd"> digestname``. The default, if unspecified, is</span>
-<span class="sd"> ``&#39;SHA512&#39;``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;_sign_file():&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">binary</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Creating binary signature for file </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">file</span><span class="p">)</span>
- <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;--sign&#39;</span><span class="p">]</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Creating ascii-armoured signature for file </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">file</span><span class="p">)</span>
- <span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;--sign --armor&#39;</span><span class="p">]</span>
-
- <span class="k">if</span> <span class="n">clearsign</span><span class="p">:</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;--clearsign&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">detach</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;Cannot use both --clearsign and --detach-sign.&quot;</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;Using default GPG behaviour: --clearsign only.&quot;</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">detach</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">clearsign</span><span class="p">:</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;--detach-sign&quot;</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">default_key</span><span class="p">:</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="s">&quot;--default-key </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">default_key</span><span class="p">))</span>
-
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="s">&quot;--digest-algo </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">digest_algo</span><span class="p">))</span>
-
- <span class="c">## We could use _handle_io here except for the fact that if the</span>
- <span class="c">## passphrase is bad, gpg bails and you can&#39;t write the message.</span>
- <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_result_map</span><span class="p">[</span><span class="s">&#39;sign&#39;</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span>
- <span class="n">proc</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_open_subprocess</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">passphrase</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">passphrase</span><span class="p">:</span>
- <span class="n">_util</span><span class="o">.</span><span class="n">_write_passphrase</span><span class="p">(</span><span class="n">proc</span><span class="o">.</span><span class="n">stdin</span><span class="p">,</span> <span class="n">passphrase</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_encoding</span><span class="p">)</span>
- <span class="n">writer</span> <span class="o">=</span> <span class="n">_util</span><span class="o">.</span><span class="n">_threaded_copy_data</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">proc</span><span class="o">.</span><span class="n">stdin</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">IOError</span> <span class="k">as</span> <span class="n">ioe</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">&quot;Error writing message: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">ioe</span><span class="p">))</span>
- <span class="n">writer</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_collect_output</span><span class="p">(</span><span class="n">proc</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">writer</span><span class="p">,</span> <span class="n">proc</span><span class="o">.</span><span class="n">stdin</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">result</span>
-</div>
-<div class="viewcode-block" id="GPGBase._encrypt"><a class="viewcode-back" href="../../gnupg.html#gnupg._meta.GPGBase._encrypt">[docs]</a> <span class="k">def</span> <span class="nf">_encrypt</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">recipients</span><span class="p">,</span>
- <span class="n">default_key</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">passphrase</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">armor</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
- <span class="n">encrypt</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
- <span class="n">symmetric</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
- <span class="n">always_trust</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
- <span class="n">output</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span>
- <span class="n">cipher_algo</span><span class="o">=</span><span class="s">&#39;AES256&#39;</span><span class="p">,</span>
- <span class="n">digest_algo</span><span class="o">=</span><span class="s">&#39;SHA512&#39;</span><span class="p">,</span>
- <span class="n">compress_algo</span><span class="o">=</span><span class="s">&#39;ZLIB&#39;</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Encrypt the message read from the file-like object **data**.</span>
-
-<span class="sd"> :param str data: The file or bytestream to encrypt.</span>
-
-<span class="sd"> :param str recipients: The recipients to encrypt to. Recipients must</span>
-<span class="sd"> be specified keyID/fingerprint.</span>
-
-<span class="sd"> .. warning:: Care should be taken in Python2 to make sure that the</span>
-<span class="sd"> given fingerprints for **recipients** are in fact strings</span>
-<span class="sd"> and not unicode objects.</span>
-
-<span class="sd"> :param str default_key: The keyID/fingerprint of the key to use for</span>
-<span class="sd"> signing. If given, **data** will be encrypted</span>
-<span class="sd"> *and* signed.</span>
-
-<span class="sd"> :param str passphrase: If given, and **default_key** is also given,</span>
-<span class="sd"> use this passphrase to unlock the secret</span>
-<span class="sd"> portion of the **default_key** to sign the</span>
-<span class="sd"> encrypted **data**. Otherwise, if</span>
-<span class="sd"> **default_key** is not given, but **symmetric**</span>
-<span class="sd"> is ``True``, then use this passphrase as the</span>
-<span class="sd"> passphrase for symmetric encryption. Signing</span>
-<span class="sd"> and symmetric encryption should *not* be</span>
-<span class="sd"> combined when sending the **data** to other</span>
-<span class="sd"> recipients, else the passphrase to the secret</span>
-<span class="sd"> key would be shared with them.</span>
-
-<span class="sd"> :param bool armor: If True, ascii armor the output; otherwise, the</span>
-<span class="sd"> output will be in binary format. (Default: True)</span>
-
-<span class="sd"> :param bool encrypt: If True, encrypt the **data** using the</span>
-<span class="sd"> **recipients** public keys. (Default: True)</span>
-
-<span class="sd"> :param bool symmetric: If True, encrypt the **data** to **recipients**</span>
-<span class="sd"> using a symmetric key. See the **passphrase**</span>
-<span class="sd"> parameter. Symmetric encryption and public key</span>
-<span class="sd"> encryption can be used simultaneously, and will</span>
-<span class="sd"> result in a ciphertext which is decryptable</span>
-<span class="sd"> with either the symmetric **passphrase** or one</span>
-<span class="sd"> of the corresponding private keys.</span>
-
-<span class="sd"> :param bool always_trust: If True, ignore trust warnings on</span>
-<span class="sd"> **recipients** keys. If False, display trust</span>
-<span class="sd"> warnings. (default: True)</span>
-
-<span class="sd"> :param str output: The output file to write to. If not specified, the</span>
-<span class="sd"> encrypted output is returned, and thus should be</span>
-<span class="sd"> stored as an object in Python. For example:</span>
-
-
-<span class="sd"> &gt;&gt;&gt; import shutil</span>
-<span class="sd"> &gt;&gt;&gt; import gnupg</span>
-<span class="sd"> &gt;&gt;&gt; if os.path.exists(&quot;doctests&quot;):</span>
-<span class="sd"> ... shutil.rmtree(&quot;doctests&quot;)</span>
-<span class="sd"> &gt;&gt;&gt; gpg = gnupg.GPG(homedir=&quot;doctests&quot;)</span>
-<span class="sd"> &gt;&gt;&gt; key_settings = gpg.gen_key_input(key_type=&#39;RSA&#39;,</span>
-<span class="sd"> ... key_length=1024,</span>
-<span class="sd"> ... key_usage=&#39;ESCA&#39;,</span>
-<span class="sd"> ... passphrase=&#39;foo&#39;)</span>
-<span class="sd"> &gt;&gt;&gt; key = gpg.gen_key(key_settings)</span>
-<span class="sd"> &gt;&gt;&gt; message = &quot;The crow flies at midnight.&quot;</span>
-<span class="sd"> &gt;&gt;&gt; encrypted = str(gpg.encrypt(message, key.printprint))</span>
-<span class="sd"> &gt;&gt;&gt; assert encrypted != message</span>
-<span class="sd"> &gt;&gt;&gt; assert not encrypted.isspace()</span>
-<span class="sd"> &gt;&gt;&gt; decrypted = str(gpg.decrypt(encrypted))</span>
-<span class="sd"> &gt;&gt;&gt; assert not decrypted.isspace()</span>
-<span class="sd"> &gt;&gt;&gt; decrypted</span>
-<span class="sd"> &#39;The crow flies at midnight.&#39;</span>
-
-<span class="sd"> :param str cipher_algo: The cipher algorithm to use. To see available</span>
-<span class="sd"> algorithms with your version of GnuPG, do:</span>
-<span class="sd"> :command:`$ gpg --with-colons --list-config</span>
-<span class="sd"> ciphername`. The default **cipher_algo**, if</span>
-<span class="sd"> unspecified, is ``&#39;AES256&#39;``.</span>
-
-<span class="sd"> :param str digest_algo: The hash digest to use. Again, to see which</span>
-<span class="sd"> hashes your GnuPG is capable of using, do:</span>
-<span class="sd"> :command:`$ gpg --with-colons --list-config</span>
-<span class="sd"> digestname`. The default, if unspecified, is</span>
-<span class="sd"> ``&#39;SHA512&#39;``.</span>
-
-<span class="sd"> :param str compress_algo: The compression algorithm to use. Can be one</span>
-<span class="sd"> of ``&#39;ZLIB&#39;``, ``&#39;BZIP2&#39;``, ``&#39;ZIP&#39;``, or</span>
-<span class="sd"> ``&#39;Uncompressed&#39;``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">args</span> <span class="o">=</span> <span class="p">[]</span>
-
- <span class="k">if</span> <span class="n">output</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s">&#39;fileno&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="c">## avoid overwrite confirmation message</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">output</span><span class="p">,</span> <span class="s">&#39;name&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">output</span><span class="p">):</span>
- <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">output</span><span class="p">)</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--output </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">output</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">name</span><span class="p">):</span>
- <span class="n">os</span><span class="o">.</span><span class="n">remove</span><span class="p">(</span><span class="n">output</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--output </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">output</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">armor</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--armor&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">always_trust</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--always-trust&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">cipher_algo</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--cipher-algo </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">cipher_algo</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">compress_algo</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--compress-algo </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">compress_algo</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">default_key</span><span class="p">:</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--sign&#39;</span><span class="p">)</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--default-key </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">default_key</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">digest_algo</span><span class="p">:</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--digest-algo </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">digest_algo</span><span class="p">)</span>
-
- <span class="c">## both can be used at the same time for an encrypted file which</span>
- <span class="c">## is decryptable with a passphrase or secretkey.</span>
- <span class="k">if</span> <span class="n">symmetric</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--symmetric&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">encrypt</span><span class="p">:</span> <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--encrypt&#39;</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">recipients</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;GPG.encrypt() called for recipients &#39;</span><span class="si">%s</span><span class="s">&#39; with type &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="p">(</span><span class="n">recipients</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">recipients</span><span class="p">)))</span>
-
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">recipients</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">)):</span>
- <span class="k">for</span> <span class="n">recp</span> <span class="ow">in</span> <span class="n">recipients</span><span class="p">:</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">recp</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">assert</span> <span class="n">_parsers</span><span class="o">.</span><span class="n">_is_hex</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">recp</span><span class="p">))</span>
- <span class="k">except</span> <span class="ne">AssertionError</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Can&#39;t accept recipient string: </span><span class="si">%s</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="n">recp</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--recipient </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">recp</span><span class="p">))</span>
- <span class="k">continue</span>
- <span class="c">## will give unicode in 2.x as &#39;\uXXXX\uXXXX&#39;</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--recipient </span><span class="si">%r</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">recp</span><span class="p">)</span>
- <span class="k">continue</span>
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">recp</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--recipient </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">recp</span><span class="p">)</span>
-
- <span class="k">elif</span> <span class="p">(</span><span class="ow">not</span> <span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">recp</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">):</span>
- <span class="k">for</span> <span class="n">recp</span> <span class="ow">in</span> <span class="n">recipients</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;</span><span class="se">\x20</span><span class="s">&#39;</span><span class="p">):</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--recipient </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">recp</span><span class="p">)</span>
-
- <span class="k">elif</span> <span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">recp</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
- <span class="k">for</span> <span class="n">recp</span> <span class="ow">in</span> <span class="n">recipients</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">):</span>
- <span class="n">args</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--recipient </span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">recp</span><span class="p">)</span>
- <span class="c">## ...and now that we&#39;ve proven py3k is better...</span>
-
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Don&#39;t know what to do with recipients: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="n">recipients</span><span class="p">)</span>
-
- <span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_result_map</span><span class="p">[</span><span class="s">&#39;crypt&#39;</span><span class="p">](</span><span class="bp">self</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got data &#39;</span><span class="si">%s</span><span class="s">&#39; with type &#39;</span><span class="si">%s</span><span class="s">&#39;.&quot;</span>
- <span class="o">%</span> <span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">data</span><span class="p">)))</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_handle_io</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span>
- <span class="n">passphrase</span><span class="o">=</span><span class="n">passphrase</span><span class="p">,</span> <span class="n">binary</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\n</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">result</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">result</span></div></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- </div>
- <div class="sidebar">
- <h3>Table Of Contents</h3>
- <ul>
-<li class="toctree-l1"><a class="reference internal" href="../../gnupg.html">gnupg package</a></li>
-</ul>
-
- <h3 style="margin-top: 1.5em;">Search</h3>
- <form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- <div class="footer-wrapper">
- <div class="footer">
- <div class="left">
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../../genindex.html" title="General Index"
- >index</a>
- </div>
-
- <div class="right">
-
- <div class="footer">
- &copy; Copyright 2013-2014, Isis Agora Lovecruft.
- Last updated on Saturday, 02 August 2014.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- </body>
-</html> \ No newline at end of file
diff --git a/docs/_build/html/_modules/gnupg/_parsers.html b/docs/_build/html/_modules/gnupg/_parsers.html
deleted file mode 100644
index a203f11..0000000
--- a/docs/_build/html/_modules/gnupg/_parsers.html
+++ /dev/null
@@ -1,1486 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>gnupg._parsers &mdash; gnupg unknown documentation</title>
-
- <link rel="stylesheet" href="../../_static/agogo.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../',
- VERSION: 'unknown',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="gnupg unknown documentation" href="../../index.html" />
- <link rel="up" title="gnupg" href="../gnupg.html" />
- </head>
- <body>
- <div class="header-wrapper">
- <div class="header">
- <div class="headertitle"><a
- href="../../index.html">gnupg: Python Module Documentation</a></div>
- <div class="rel">
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a>
- </div>
- </div>
- </div>
-
- <div class="content-wrapper">
- <div class="content">
- <div class="document">
-
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for gnupg._parsers</h1><div class="highlight"><pre>
-<span class="c"># -*- coding: utf-8 -*-</span>
-<span class="c">#</span>
-<span class="c"># This file is part of python-gnupg, a Python interface to GnuPG.</span>
-<span class="c"># Copyright © 2013 Isis Lovecruft, &lt;isis@leap.se&gt; 0xA3ADB67A2CDB8B35</span>
-<span class="c"># © 2013 Andrej B.</span>
-<span class="c"># © 2013 LEAP Encryption Access Project</span>
-<span class="c"># © 2008-2012 Vinay Sajip</span>
-<span class="c"># © 2005 Steve Traugott</span>
-<span class="c"># © 2004 A.M. Kuchling</span>
-<span class="c">#</span>
-<span class="c"># This program is free software: you can redistribute it and/or modify it</span>
-<span class="c"># under the terms of the GNU General Public License as published by the Free</span>
-<span class="c"># Software Foundation, either version 3 of the License, or (at your option)</span>
-<span class="c"># any later version.</span>
-<span class="c">#</span>
-<span class="c"># This program is distributed in the hope that it will be useful, but WITHOUT</span>
-<span class="c"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span>
-<span class="c"># FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.</span>
-
-<span class="sd">&#39;&#39;&#39;Classes for parsing GnuPG status messages and sanitising commandline</span>
-<span class="sd">options.</span>
-<span class="sd">&#39;&#39;&#39;</span>
-
-<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span>
-
-<span class="k">try</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">OrderedDict</span>
-<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">ordereddict</span> <span class="kn">import</span> <span class="n">OrderedDict</span>
-
-<span class="kn">import</span> <span class="nn">re</span>
-
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_util</span>
-<span class="kn">from</span> <span class="nn">._util</span> <span class="kn">import</span> <span class="n">log</span>
-
-
-<span class="n">ESCAPE_PATTERN</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">r&#39;</span><span class="se">\\</span><span class="s">x([0-9a-f][0-9a-f])&#39;</span><span class="p">,</span> <span class="n">re</span><span class="o">.</span><span class="n">I</span><span class="p">)</span>
-<span class="n">HEXIDECIMAL</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">&#39;([0-9A-Fa-f]{2})+&#39;</span><span class="p">)</span>
-
-
-<div class="viewcode-block" id="ProtectedOption"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ProtectedOption">[docs]</a><span class="k">class</span> <span class="nc">ProtectedOption</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Raised when the option passed to GPG is disallowed.&quot;&quot;&quot;</span>
-</div>
-<div class="viewcode-block" id="UsageError"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.UsageError">[docs]</a><span class="k">class</span> <span class="nc">UsageError</span><span class="p">(</span><span class="ne">Exception</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Raised when incorrect usage of the API occurs..&quot;&quot;&quot;</span>
-
-</div>
-<div class="viewcode-block" id="_check_keyserver"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._check_keyserver">[docs]</a><span class="k">def</span> <span class="nf">_check_keyserver</span><span class="p">(</span><span class="n">location</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that a given keyserver is a known protocol and does not contain</span>
-<span class="sd"> shell escape characters.</span>
-
-<span class="sd"> :param str location: A string containing the default keyserver. This</span>
-<span class="sd"> should contain the desired keyserver protocol which</span>
-<span class="sd"> is supported by the keyserver, for example, the</span>
-<span class="sd"> default is ``&#39;hkp://wwwkeys .pgp.net&#39;``.</span>
-<span class="sd"> :rtype: :obj:`str` or :obj:`None`</span>
-<span class="sd"> :returns: A string specifying the protocol and keyserver hostname, if the</span>
-<span class="sd"> checks passed. If not, returns None.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">protocols</span> <span class="o">=</span> <span class="p">[</span><span class="s">&#39;hkp://&#39;</span><span class="p">,</span> <span class="s">&#39;hkps://&#39;</span><span class="p">,</span> <span class="s">&#39;http://&#39;</span><span class="p">,</span> <span class="s">&#39;https://&#39;</span><span class="p">,</span> <span class="s">&#39;ldap://&#39;</span><span class="p">,</span>
- <span class="s">&#39;mailto:&#39;</span><span class="p">]</span> <span class="c">## xxx feels like i´m forgetting one...</span>
- <span class="k">for</span> <span class="n">proto</span> <span class="ow">in</span> <span class="n">protocols</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">location</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="n">proto</span><span class="p">):</span>
- <span class="n">url</span> <span class="o">=</span> <span class="n">location</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">proto</span><span class="p">,</span> <span class="nb">str</span><span class="p">())</span>
- <span class="n">host</span><span class="p">,</span> <span class="n">slash</span><span class="p">,</span> <span class="n">extra</span> <span class="o">=</span> <span class="n">url</span><span class="o">.</span><span class="n">partition</span><span class="p">(</span><span class="s">&#39;/&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">extra</span><span class="p">:</span> <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;URI text for </span><span class="si">%s</span><span class="s">: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">host</span><span class="p">,</span> <span class="n">extra</span><span class="p">))</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got host string for keyserver setting: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">host</span><span class="p">)</span>
-
- <span class="n">host</span> <span class="o">=</span> <span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">host</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">host</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Cleaned host string: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="n">host</span><span class="p">)</span>
- <span class="n">keyserver</span> <span class="o">=</span> <span class="n">proto</span> <span class="o">+</span> <span class="n">host</span>
- <span class="k">return</span> <span class="n">keyserver</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
-<div class="viewcode-block" id="_check_preferences"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._check_preferences">[docs]</a><span class="k">def</span> <span class="nf">_check_preferences</span><span class="p">(</span><span class="n">prefs</span><span class="p">,</span> <span class="n">pref_type</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check cipher, digest, and compression preference settings.</span>
-
-<span class="sd"> MD5 is not allowed. This is `not 1994`__. SHA1 is allowed_ grudgingly_.</span>
-
-<span class="sd"> __ http://www.cs.colorado.edu/~jrblack/papers/md5e-full.pdf</span>
-<span class="sd"> .. _allowed: http://eprint.iacr.org/2008/469.pdf</span>
-<span class="sd"> .. _grudgingly: https://www.schneier.com/blog/archives/2012/10/when_will_we_se.html</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">prefs</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span> <span class="k">return</span>
-
- <span class="n">cipher</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;AES256&#39;</span><span class="p">,</span> <span class="s">&#39;AES192&#39;</span><span class="p">,</span> <span class="s">&#39;AES128&#39;</span><span class="p">,</span>
- <span class="s">&#39;CAMELLIA256&#39;</span><span class="p">,</span> <span class="s">&#39;CAMELLIA192&#39;</span><span class="p">,</span>
- <span class="s">&#39;TWOFISH&#39;</span><span class="p">,</span> <span class="s">&#39;3DES&#39;</span><span class="p">])</span>
- <span class="n">digest</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;SHA512&#39;</span><span class="p">,</span> <span class="s">&#39;SHA384&#39;</span><span class="p">,</span> <span class="s">&#39;SHA256&#39;</span><span class="p">,</span> <span class="s">&#39;SHA224&#39;</span><span class="p">,</span> <span class="s">&#39;RMD160&#39;</span><span class="p">,</span>
- <span class="s">&#39;SHA1&#39;</span><span class="p">])</span>
- <span class="n">compress</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;BZIP2&#39;</span><span class="p">,</span> <span class="s">&#39;ZLIB&#39;</span><span class="p">,</span> <span class="s">&#39;ZIP&#39;</span><span class="p">,</span> <span class="s">&#39;Uncompressed&#39;</span><span class="p">])</span>
- <span class="nb">all</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="n">cipher</span><span class="p">,</span> <span class="n">digest</span><span class="p">,</span> <span class="n">compress</span><span class="p">])</span>
-
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prefs</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
- <span class="n">prefs</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">prefs</span><span class="o">.</span><span class="n">split</span><span class="p">())</span>
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prefs</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
- <span class="n">prefs</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">prefs</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;prefs must be list of strings, or space-separated string&quot;</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;parsers._check_preferences(): </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">message</span><span class="p">)</span>
- <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="n">message</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="ow">not</span> <span class="n">pref_type</span><span class="p">:</span>
- <span class="n">pref_type</span> <span class="o">=</span> <span class="s">&#39;all&#39;</span>
-
- <span class="n">allowed</span> <span class="o">=</span> <span class="nb">str</span><span class="p">()</span>
-
- <span class="k">if</span> <span class="n">pref_type</span> <span class="o">==</span> <span class="s">&#39;cipher&#39;</span><span class="p">:</span>
- <span class="n">allowed</span> <span class="o">+=</span> <span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefs</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">cipher</span><span class="p">))</span>
- <span class="k">if</span> <span class="n">pref_type</span> <span class="o">==</span> <span class="s">&#39;digest&#39;</span><span class="p">:</span>
- <span class="n">allowed</span> <span class="o">+=</span> <span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefs</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">digest</span><span class="p">))</span>
- <span class="k">if</span> <span class="n">pref_type</span> <span class="o">==</span> <span class="s">&#39;compress&#39;</span><span class="p">:</span>
- <span class="n">allowed</span> <span class="o">+=</span> <span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefs</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">compress</span><span class="p">))</span>
- <span class="k">if</span> <span class="n">pref_type</span> <span class="o">==</span> <span class="s">&#39;all&#39;</span><span class="p">:</span>
- <span class="n">allowed</span> <span class="o">+=</span> <span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefs</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="nb">all</span><span class="p">))</span>
-
- <span class="k">return</span> <span class="n">allowed</span>
-</div>
-<div class="viewcode-block" id="_fix_unsafe"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._fix_unsafe">[docs]</a><span class="k">def</span> <span class="nf">_fix_unsafe</span><span class="p">(</span><span class="n">shell_input</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Find characters used to escape from a string into a shell, and wrap them in</span>
-<span class="sd"> quotes if they exist. Regex pilfered from Python3 :mod:`shlex` module.</span>
-
-<span class="sd"> :param str shell_input: The input intended for the GnuPG process.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">_unsafe</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">r&#39;[^\w@%+=:,./-]&#39;</span><span class="p">,</span> <span class="mi">256</span><span class="p">)</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">_unsafe</span><span class="o">.</span><span class="n">findall</span><span class="p">(</span><span class="n">shell_input</span><span class="p">))</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">shell_input</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">clean</span> <span class="o">=</span> <span class="s">&quot;&#39;&quot;</span> <span class="o">+</span> <span class="n">shell_input</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s">&quot;&#39;</span><span class="se">\&quot;</span><span class="s">&#39;</span><span class="se">\&quot;</span><span class="s">&#39;&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;&#39;&quot;</span>
- <span class="k">return</span> <span class="n">clean</span>
- <span class="k">except</span> <span class="ne">TypeError</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
-<div class="viewcode-block" id="_hyphenate"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._hyphenate">[docs]</a><span class="k">def</span> <span class="nf">_hyphenate</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">add_prefix</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Change underscores to hyphens so that object attributes can be easily</span>
-<span class="sd"> tranlated to GPG option names.</span>
-
-<span class="sd"> :param str input: The attribute to hyphenate.</span>
-<span class="sd"> :param bool add_prefix: If True, add leading hyphens to the input.</span>
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :return: The ``input`` with underscores changed to hyphens.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">ret</span> <span class="o">=</span> <span class="s">&#39;--&#39;</span> <span class="k">if</span> <span class="n">add_prefix</span> <span class="k">else</span> <span class="s">&#39;&#39;</span>
- <span class="n">ret</span> <span class="o">+=</span> <span class="nb">input</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39;_&#39;</span><span class="p">,</span> <span class="s">&#39;-&#39;</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">ret</span>
-</div>
-<div class="viewcode-block" id="_is_allowed"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._is_allowed">[docs]</a><span class="k">def</span> <span class="nf">_is_allowed</span><span class="p">(</span><span class="nb">input</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that an option or argument given to GPG is in the set of allowed</span>
-<span class="sd"> options, the latter being a strict subset of the set of all options known</span>
-<span class="sd"> to GPG.</span>
-
-<span class="sd"> :param str input: An input meant to be parsed as an option or flag to the</span>
-<span class="sd"> GnuPG process. Should be formatted the same as an option</span>
-<span class="sd"> or flag to the commandline gpg, i.e. &quot;--encrypt-files&quot;.</span>
-
-<span class="sd"> :ivar frozenset gnupg_options: All known GPG options and flags.</span>
-
-<span class="sd"> :ivar frozenset allowed: All allowed GPG options and flags, e.g. all GPG</span>
-<span class="sd"> options and flags which we are willing to</span>
-<span class="sd"> acknowledge and parse. If we want to support a</span>
-<span class="sd"> new option, it will need to have its own parsing</span>
-<span class="sd"> class and its name will need to be added to this</span>
-<span class="sd"> set.</span>
-
-<span class="sd"> :raises: :exc:`UsageError` if **input** is not a subset of the hard-coded</span>
-<span class="sd"> set of all GnuPG options in :func:`_get_all_gnupg_options`.</span>
-
-<span class="sd"> :exc:`ProtectedOption` if **input** is not in the set of allowed</span>
-<span class="sd"> options.</span>
-
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :return: The original **input** parameter, unmodified and unsanitized, if</span>
-<span class="sd"> no errors occur.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">gnupg_options</span> <span class="o">=</span> <span class="n">_get_all_gnupg_options</span><span class="p">()</span>
- <span class="n">allowed</span> <span class="o">=</span> <span class="n">_get_options_group</span><span class="p">(</span><span class="s">&quot;allowed&quot;</span><span class="p">)</span>
-
- <span class="c">## these are the allowed options we will handle so far, all others should</span>
- <span class="c">## be dropped. this dance is so that when new options are added later, we</span>
- <span class="c">## merely add the to the _allowed list, and the `` _allowed.issubset``</span>
- <span class="c">## assertion will check that GPG will recognise them</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="c">## check that allowed is a subset of all gnupg_options</span>
- <span class="k">assert</span> <span class="n">allowed</span><span class="o">.</span><span class="n">issubset</span><span class="p">(</span><span class="n">gnupg_options</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">AssertionError</span><span class="p">:</span>
- <span class="k">raise</span> <span class="n">UsageError</span><span class="p">(</span><span class="s">&quot;&#39;allowed&#39; isn&#39;t a subset of known options, diff: </span><span class="si">%s</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="n">allowed</span><span class="o">.</span><span class="n">difference</span><span class="p">(</span><span class="n">gnupg_options</span><span class="p">))</span>
-
- <span class="c">## if we got a list of args, join them</span>
- <span class="c">##</span>
- <span class="c">## see TODO file, tag :cleanup:</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
- <span class="nb">input</span> <span class="o">=</span> <span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">input</span><span class="p">])</span>
-
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
- <span class="k">if</span> <span class="nb">input</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;_&#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="nb">input</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;--&#39;</span><span class="p">):</span>
- <span class="n">hyphenated</span> <span class="o">=</span> <span class="n">_hyphenate</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">add_prefix</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">hyphenated</span> <span class="o">=</span> <span class="n">_hyphenate</span><span class="p">(</span><span class="nb">input</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">hyphenated</span> <span class="o">=</span> <span class="nb">input</span>
- <span class="c">## xxx we probably want to use itertools.dropwhile here</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">assert</span> <span class="n">hyphenated</span> <span class="ow">in</span> <span class="n">allowed</span>
- <span class="k">except</span> <span class="ne">AssertionError</span> <span class="k">as</span> <span class="n">ae</span><span class="p">:</span>
- <span class="n">dropped</span> <span class="o">=</span> <span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">hyphenated</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;_is_allowed(): Dropping option &#39;</span><span class="si">%s</span><span class="s">&#39;...&quot;</span> <span class="o">%</span> <span class="n">dropped</span><span class="p">)</span>
- <span class="k">raise</span> <span class="n">ProtectedOption</span><span class="p">(</span><span class="s">&quot;Option &#39;</span><span class="si">%s</span><span class="s">&#39; not supported.&quot;</span> <span class="o">%</span> <span class="n">dropped</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="nb">input</span>
- <span class="k">return</span> <span class="bp">None</span>
-</div>
-<div class="viewcode-block" id="_is_hex"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._is_hex">[docs]</a><span class="k">def</span> <span class="nf">_is_hex</span><span class="p">(</span><span class="n">string</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that a string is hexidecimal, with alphabetic characters</span>
-<span class="sd"> capitalized and without whitespace.</span>
-
-<span class="sd"> :param str string: The string to check.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">matched</span> <span class="o">=</span> <span class="n">HEXIDECIMAL</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">string</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">matched</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="nb">len</span><span class="p">(</span><span class="n">matched</span><span class="o">.</span><span class="n">group</span><span class="p">())</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
-</div>
-<div class="viewcode-block" id="_is_string"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._is_string">[docs]</a><span class="k">def</span> <span class="nf">_is_string</span><span class="p">(</span><span class="n">thing</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Python character arrays are a mess.</span>
-
-<span class="sd"> If Python2, check if **thing** is an :obj:`unicode` or a :obj:`str`.</span>
-<span class="sd"> If Python3, check if **thing** is a :obj:`str`.</span>
-
-<span class="sd"> :param thing: The thing to check.</span>
-<span class="sd"> :returns: ``True`` if **thing** is a string according to whichever version</span>
-<span class="sd"> of Python we&#39;re running in.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span><span class="p">:</span> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span> <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">thing</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_sanitise"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._sanitise">[docs]</a><span class="k">def</span> <span class="nf">_sanitise</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Take an arg or the key portion of a kwarg and check that it is in the</span>
-<span class="sd"> set of allowed GPG options and flags, and that it has the correct</span>
-<span class="sd"> type. Then, attempt to escape any unsafe characters. If an option is not</span>
-<span class="sd"> allowed, drop it with a logged warning. Returns a dictionary of all</span>
-<span class="sd"> sanitised, allowed options.</span>
-
-<span class="sd"> Each new option that we support that is not a boolean, but instead has</span>
-<span class="sd"> some additional inputs following it, i.e. &quot;--encrypt-file foo.txt&quot;, will</span>
-<span class="sd"> need some basic safety checks added here.</span>
-
-<span class="sd"> GnuPG has three-hundred and eighteen commandline flags. Also, not all</span>
-<span class="sd"> implementations of OpenPGP parse PGP packets and headers in the same way,</span>
-<span class="sd"> so there is added potential there for messing with calls to GPG.</span>
-
-<span class="sd"> For information on the PGP message format specification, see</span>
-<span class="sd"> :rfc:`1991`.</span>
-
-<span class="sd"> If you&#39;re asking, &quot;Is this *really* necessary?&quot;: No, not really -- we could</span>
-<span class="sd"> just follow the security precautions recommended by `this xkcd`__.</span>
-
-<span class="sd"> __ https://xkcd.com/1181/</span>
-
-<span class="sd"> :param str args: (optional) The boolean arguments which will be passed to</span>
-<span class="sd"> the GnuPG process.</span>
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: ``sanitised``</span>
-<span class="sd"> &quot;&quot;&quot;</span>
-
- <span class="c">## see TODO file, tag :cleanup:sanitise:</span>
-
- <span class="k">def</span> <span class="nf">_check_option</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that a single ``arg`` is an allowed option.</span>
-
-<span class="sd"> If it is allowed, quote out any escape characters in ``value``, and</span>
-<span class="sd"> add the pair to :ivar:`sanitised`. Otherwise, drop them.</span>
-
-<span class="sd"> :param str arg: The arguments which will be passed to the GnuPG</span>
-<span class="sd"> process, and, optionally their corresponding values.</span>
-<span class="sd"> The values are any additional arguments following the</span>
-<span class="sd"> GnuPG option or flag. For example, if we wanted to</span>
-<span class="sd"> pass ``&quot;--encrypt --recipient isis@leap.se&quot;`` to</span>
-<span class="sd"> GnuPG, then ``&quot;--encrypt&quot;`` would be an arg without a</span>
-<span class="sd"> value, and ``&quot;--recipient&quot;`` would also be an arg,</span>
-<span class="sd"> with a value of ``&quot;isis@leap.se&quot;``.</span>
-
-<span class="sd"> :ivar list checked: The sanitised, allowed options and values.</span>
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: A string of the items in ``checked``, delimited by spaces.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">checked</span> <span class="o">=</span> <span class="nb">str</span><span class="p">()</span>
- <span class="n">none_options</span> <span class="o">=</span> <span class="n">_get_options_group</span><span class="p">(</span><span class="s">&quot;none_options&quot;</span><span class="p">)</span>
- <span class="n">hex_options</span> <span class="o">=</span> <span class="n">_get_options_group</span><span class="p">(</span><span class="s">&quot;hex_options&quot;</span><span class="p">)</span>
- <span class="n">hex_or_none_options</span> <span class="o">=</span> <span class="n">_get_options_group</span><span class="p">(</span><span class="s">&quot;hex_or_none_options&quot;</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="ow">not</span> <span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span><span class="p">:</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">list</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">unicode</span><span class="p">):</span>
- <span class="n">arg</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
-
- <span class="k">try</span><span class="p">:</span>
- <span class="n">flag</span> <span class="o">=</span> <span class="n">_is_allowed</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
- <span class="k">assert</span> <span class="n">flag</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">,</span> <span class="s">&quot;_check_option(): got None for flag&quot;</span>
- <span class="k">except</span> <span class="p">(</span><span class="ne">AssertionError</span><span class="p">,</span> <span class="n">ProtectedOption</span><span class="p">)</span> <span class="k">as</span> <span class="n">error</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;_check_option(): </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">str</span><span class="p">(</span><span class="n">error</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">flag</span> <span class="o">+</span> <span class="s">&#39; &#39;</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">_is_string</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
- <span class="n">values</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">values</span><span class="p">:</span>
- <span class="c">## these can be handled separately, without _fix_unsafe(),</span>
- <span class="c">## because they are only allowed if they pass the regex</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">flag</span> <span class="ow">in</span> <span class="n">none_options</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">):</span>
- <span class="k">continue</span>
-
- <span class="k">if</span> <span class="n">flag</span> <span class="ow">in</span> <span class="n">hex_options</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">_is_hex</span><span class="p">(</span><span class="n">v</span><span class="p">):</span> <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">v</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&#39; not hex.&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">flag</span><span class="p">,</span> <span class="n">v</span><span class="p">))</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">flag</span> <span class="ow">in</span> <span class="n">hex_or_none_options</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">v</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Allowing &#39;</span><span class="si">%s</span><span class="s">&#39; for all keys&quot;</span> <span class="o">%</span> <span class="n">flag</span><span class="p">)</span>
- <span class="k">continue</span>
-
- <span class="k">elif</span> <span class="n">flag</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;--keyserver&#39;</span><span class="p">]:</span>
- <span class="n">host</span> <span class="o">=</span> <span class="n">_check_keyserver</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">host</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Setting keyserver: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">host</span><span class="p">)</span>
- <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">v</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span> <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Dropping keyserver: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">v</span><span class="p">)</span>
- <span class="k">continue</span>
-
- <span class="c">## the rest are strings, filenames, etc, and should be</span>
- <span class="c">## shell escaped:</span>
- <span class="n">val</span> <span class="o">=</span> <span class="n">_fix_unsafe</span><span class="p">(</span><span class="n">v</span><span class="p">)</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">assert</span> <span class="ow">not</span> <span class="n">val</span> <span class="ow">is</span> <span class="bp">None</span>
- <span class="k">assert</span> <span class="ow">not</span> <span class="n">val</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span>
- <span class="k">assert</span> <span class="ow">not</span> <span class="n">v</span> <span class="ow">is</span> <span class="bp">None</span>
- <span class="k">assert</span> <span class="ow">not</span> <span class="n">v</span><span class="o">.</span><span class="n">isspace</span><span class="p">()</span>
- <span class="k">except</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Dropping </span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">flag</span><span class="p">,</span> <span class="n">v</span><span class="p">))</span>
- <span class="k">continue</span>
-
- <span class="k">if</span> <span class="n">flag</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;--encrypt&#39;</span><span class="p">,</span> <span class="s">&#39;--encrypt-files&#39;</span><span class="p">,</span> <span class="s">&#39;--decrypt&#39;</span><span class="p">,</span>
- <span class="s">&#39;--decrypt-files&#39;</span><span class="p">,</span> <span class="s">&#39;--import&#39;</span><span class="p">,</span> <span class="s">&#39;--verify&#39;</span><span class="p">]:</span>
- <span class="k">if</span> <span class="p">(</span> <span class="p">(</span><span class="n">_util</span><span class="o">.</span><span class="n">_is_file</span><span class="p">(</span><span class="n">val</span><span class="p">))</span>
- <span class="ow">or</span>
- <span class="p">((</span><span class="n">flag</span> <span class="o">==</span> <span class="s">&#39;--verify&#39;</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">val</span> <span class="o">==</span> <span class="s">&#39;-&#39;</span><span class="p">))</span> <span class="p">):</span>
- <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">val</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;</span><span class="si">%s</span><span class="s"> not file: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">flag</span><span class="p">,</span> <span class="n">val</span><span class="p">))</span>
-
- <span class="k">elif</span> <span class="n">flag</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;--cipher-algo&#39;</span><span class="p">,</span> <span class="s">&#39;--personal-cipher-prefs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-cipher-preferences&#39;</span><span class="p">]:</span>
- <span class="n">legit_algos</span> <span class="o">=</span> <span class="n">_check_preferences</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="s">&#39;cipher&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">legit_algos</span><span class="p">:</span> <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">legit_algos</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span> <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; is not cipher&quot;</span> <span class="o">%</span> <span class="n">val</span><span class="p">)</span>
-
- <span class="k">elif</span> <span class="n">flag</span> <span class="ow">in</span> <span class="p">[</span><span class="s">&#39;--compress-algo&#39;</span><span class="p">,</span> <span class="s">&#39;--compression-algo&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-compress-prefs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-compress-preferences&#39;</span><span class="p">]:</span>
- <span class="n">legit_algos</span> <span class="o">=</span> <span class="n">_check_preferences</span><span class="p">(</span><span class="n">val</span><span class="p">,</span> <span class="s">&#39;compress&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">legit_algos</span><span class="p">:</span> <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">legit_algos</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span> <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; not compress algo&quot;</span> <span class="o">%</span> <span class="n">val</span><span class="p">)</span>
-
- <span class="k">else</span><span class="p">:</span>
- <span class="n">checked</span> <span class="o">+=</span> <span class="p">(</span><span class="n">val</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;_check_option(): No checks for </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">val</span><span class="p">)</span>
-
- <span class="k">return</span> <span class="n">checked</span>
-
- <span class="n">is_flag</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">&#39;--&#39;</span><span class="p">)</span>
-
- <span class="k">def</span> <span class="nf">_make_filo</span><span class="p">(</span><span class="n">args_string</span><span class="p">):</span>
- <span class="n">filo</span> <span class="o">=</span> <span class="n">arg</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">)</span>
- <span class="n">filo</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;_make_filo(): Converted to reverse list: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">filo</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">filo</span>
-
- <span class="k">def</span> <span class="nf">_make_groups</span><span class="p">(</span><span class="n">filo</span><span class="p">):</span>
- <span class="n">groups</span> <span class="o">=</span> <span class="p">{}</span>
- <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">1</span><span class="p">:</span>
- <span class="n">last</span> <span class="o">=</span> <span class="n">filo</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
- <span class="k">if</span> <span class="n">is_flag</span><span class="p">(</span><span class="n">last</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got arg: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">last</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">last</span> <span class="o">==</span> <span class="s">&#39;--verify&#39;</span><span class="p">:</span>
- <span class="n">groups</span><span class="p">[</span><span class="n">last</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">filo</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span>
- <span class="c">## accept the read-from-stdin arg:</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span> <span class="o">&gt;=</span> <span class="mi">1</span> <span class="ow">and</span> <span class="n">filo</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span> <span class="o">==</span> <span class="s">&#39;-&#39;</span><span class="p">:</span>
- <span class="n">groups</span><span class="p">[</span><span class="n">last</span><span class="p">]</span> <span class="o">+=</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39; - &#39;</span><span class="p">)</span> <span class="c">## gross hack</span>
- <span class="n">filo</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">groups</span><span class="p">[</span><span class="n">last</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">()</span>
- <span class="k">while</span> <span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_flag</span><span class="p">(</span><span class="n">filo</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">]):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got value: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">filo</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
- <span class="n">groups</span><span class="p">[</span><span class="n">last</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="n">filo</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">+</span> <span class="s">&quot; &quot;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">filo</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_flag</span><span class="p">(</span><span class="n">filo</span><span class="p">[</span><span class="mi">0</span><span class="p">]):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got value: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">filo</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
- <span class="n">groups</span><span class="p">[</span><span class="n">last</span><span class="p">]</span> <span class="o">+=</span> <span class="n">filo</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;_make_groups(): Got solitary value: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">last</span><span class="p">)</span>
- <span class="n">groups</span><span class="p">[</span><span class="s">&quot;xxx&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">last</span>
- <span class="k">return</span> <span class="n">groups</span>
-
- <span class="k">def</span> <span class="nf">_check_groups</span><span class="p">(</span><span class="n">groups</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got groups: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">groups</span><span class="p">)</span>
- <span class="n">checked_groups</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="k">for</span> <span class="n">a</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="n">groups</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
- <span class="n">v</span> <span class="o">=</span> <span class="bp">None</span> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">v</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="k">else</span> <span class="n">v</span>
- <span class="n">safe</span> <span class="o">=</span> <span class="n">_check_option</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">safe</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">safe</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="o">==</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Appending option: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">safe</span><span class="p">)</span>
- <span class="n">checked_groups</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">safe</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;Dropped option: &#39;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&#39;&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">v</span><span class="p">))</span>
- <span class="k">return</span> <span class="n">checked_groups</span>
-
- <span class="k">if</span> <span class="n">args</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="n">option_groups</span> <span class="o">=</span> <span class="p">{}</span>
- <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">:</span>
- <span class="c">## if we&#39;re given a string with a bunch of options in it split</span>
- <span class="c">## them up and deal with them separately</span>
- <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">))</span> \
- <span class="ow">or</span> <span class="p">(</span><span class="n">_util</span><span class="o">.</span><span class="n">_py3k</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">str</span><span class="p">)):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got arg string: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">arg</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">arg</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
- <span class="n">filo</span> <span class="o">=</span> <span class="n">_make_filo</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
- <span class="n">option_groups</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">_make_groups</span><span class="p">(</span><span class="n">filo</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">option_groups</span><span class="o">.</span><span class="n">update</span><span class="p">({</span> <span class="n">arg</span><span class="p">:</span> <span class="s">&quot;&quot;</span> <span class="p">})</span>
- <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got arg list: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">arg</span><span class="p">)</span>
- <span class="n">arg</span><span class="o">.</span><span class="n">reverse</span><span class="p">()</span>
- <span class="n">option_groups</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">_make_groups</span><span class="p">(</span><span class="n">arg</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;Got non-str/list arg: &#39;</span><span class="si">%s</span><span class="s">&#39;, type &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">type</span><span class="p">(</span><span class="n">arg</span><span class="p">)))</span>
- <span class="n">checked</span> <span class="o">=</span> <span class="n">_check_groups</span><span class="p">(</span><span class="n">option_groups</span><span class="p">)</span>
- <span class="n">sanitised</span> <span class="o">=</span> <span class="s">&#39; &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">checked</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">sanitised</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got None for args&quot;</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_sanitise_list"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._sanitise_list">[docs]</a><span class="k">def</span> <span class="nf">_sanitise_list</span><span class="p">(</span><span class="n">arg_list</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;A generator for iterating through a list of gpg options and sanitising</span>
-<span class="sd"> them.</span>
-
-<span class="sd"> :param list arg_list: A list of options and flags for GnuPG.</span>
-<span class="sd"> :rtype: generator</span>
-<span class="sd"> :returns: A generator whose next() method returns each of the items in</span>
-<span class="sd"> ``arg_list`` after calling ``_sanitise()`` with that item as a</span>
-<span class="sd"> parameter.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg_list</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
- <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">arg_list</span><span class="p">:</span>
- <span class="n">safe_arg</span> <span class="o">=</span> <span class="n">_sanitise</span><span class="p">(</span><span class="n">arg</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">safe_arg</span> <span class="o">!=</span> <span class="s">&quot;&quot;</span><span class="p">:</span>
- <span class="k">yield</span> <span class="n">safe_arg</span>
-</div>
-<div class="viewcode-block" id="_get_options_group"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._get_options_group">[docs]</a><span class="k">def</span> <span class="nf">_get_options_group</span><span class="p">(</span><span class="n">group</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Get a specific group of options which are allowed.&quot;&quot;&quot;</span>
-
- <span class="c">#: These expect a hexidecimal keyid as their argument, and can be parsed</span>
- <span class="c">#: with :func:`_is_hex`.</span>
- <span class="n">hex_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--check-sigs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--default-key&#39;</span><span class="p">,</span>
- <span class="s">&#39;--default-recipient&#39;</span><span class="p">,</span>
- <span class="s">&#39;--delete-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--delete-secret-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--delete-secret-and-public-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--desig-revoke&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export-secret-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export-secret-subkeys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--fingerprint&#39;</span><span class="p">,</span>
- <span class="s">&#39;--gen-revoke&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-key&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-public-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-secret-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-sigs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--recipient&#39;</span><span class="p">,</span>
- <span class="s">&#39;--recv-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--send-keys&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These options expect value which are left unchecked, though still run</span>
- <span class="c">#: through :func:`_fix_unsafe`.</span>
- <span class="n">unchecked_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--list-options&#39;</span><span class="p">,</span>
- <span class="s">&#39;--passphrase-fd&#39;</span><span class="p">,</span>
- <span class="s">&#39;--status-fd&#39;</span><span class="p">,</span>
- <span class="s">&#39;--verify-options&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These have their own parsers and don&#39;t really fit into a group</span>
- <span class="n">other_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--debug-level&#39;</span><span class="p">,</span>
- <span class="s">&#39;--keyserver&#39;</span><span class="p">,</span>
-
- <span class="p">])</span>
- <span class="c">#: These should have a directory for an argument</span>
- <span class="n">dir_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--homedir&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These expect a keyring or keyfile as their argument</span>
- <span class="n">keyring_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--keyring&#39;</span><span class="p">,</span>
- <span class="s">&#39;--primary-keyring&#39;</span><span class="p">,</span>
- <span class="s">&#39;--secret-keyring&#39;</span><span class="p">,</span>
- <span class="s">&#39;--trustdb-name&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These expect a filename (or the contents of a file as a string) or None</span>
- <span class="c">#: (meaning that they read from stdin)</span>
- <span class="n">file_or_none_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--decrypt&#39;</span><span class="p">,</span>
- <span class="s">&#39;--decrypt-files&#39;</span><span class="p">,</span>
- <span class="s">&#39;--encrypt&#39;</span><span class="p">,</span>
- <span class="s">&#39;--encrypt-files&#39;</span><span class="p">,</span>
- <span class="s">&#39;--import&#39;</span><span class="p">,</span>
- <span class="s">&#39;--verify&#39;</span><span class="p">,</span>
- <span class="s">&#39;--verify-files&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These options expect a string. see :func:`_check_preferences`.</span>
- <span class="n">pref_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--digest-algo&#39;</span><span class="p">,</span>
- <span class="s">&#39;--cipher-algo&#39;</span><span class="p">,</span>
- <span class="s">&#39;--compress-algo&#39;</span><span class="p">,</span>
- <span class="s">&#39;--compression-algo&#39;</span><span class="p">,</span>
- <span class="s">&#39;--cert-digest-algo&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-digest-prefs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-digest-preferences&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-cipher-prefs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-cipher-preferences&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-compress-prefs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--personal-compress-preferences&#39;</span><span class="p">,</span>
- <span class="s">&#39;--print-md&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These options expect no arguments</span>
- <span class="n">none_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">([</span><span class="s">&#39;--always-trust&#39;</span><span class="p">,</span>
- <span class="s">&#39;--armor&#39;</span><span class="p">,</span>
- <span class="s">&#39;--armour&#39;</span><span class="p">,</span>
- <span class="s">&#39;--batch&#39;</span><span class="p">,</span>
- <span class="s">&#39;--check-sigs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--check-trustdb&#39;</span><span class="p">,</span>
- <span class="s">&#39;--clearsign&#39;</span><span class="p">,</span>
- <span class="s">&#39;--debug-all&#39;</span><span class="p">,</span>
- <span class="s">&#39;--default-recipient-self&#39;</span><span class="p">,</span>
- <span class="s">&#39;--detach-sign&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export-ownertrust&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export-secret-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--export-secret-subkeys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--fingerprint&#39;</span><span class="p">,</span>
- <span class="s">&#39;--fixed-list-mode&#39;</span><span class="p">,</span>
- <span class="s">&#39;--gen-key&#39;</span><span class="p">,</span>
- <span class="s">&#39;--import-ownertrust&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-config&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-key&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-packets&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-public-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-secret-keys&#39;</span><span class="p">,</span>
- <span class="s">&#39;--list-sigs&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-default-keyring&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-default-recipient&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-emit-version&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-options&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-tty&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-use-agent&#39;</span><span class="p">,</span>
- <span class="s">&#39;--no-verbose&#39;</span><span class="p">,</span>
- <span class="s">&#39;--print-mds&#39;</span><span class="p">,</span>
- <span class="s">&#39;--quiet&#39;</span><span class="p">,</span>
- <span class="s">&#39;--sign&#39;</span><span class="p">,</span>
- <span class="s">&#39;--symmetric&#39;</span><span class="p">,</span>
- <span class="s">&#39;--use-agent&#39;</span><span class="p">,</span>
- <span class="s">&#39;--verbose&#39;</span><span class="p">,</span>
- <span class="s">&#39;--version&#39;</span><span class="p">,</span>
- <span class="s">&#39;--with-colons&#39;</span><span class="p">,</span>
- <span class="s">&#39;--yes&#39;</span><span class="p">,</span>
- <span class="p">])</span>
- <span class="c">#: These options expect either None or a hex string</span>
- <span class="n">hex_or_none_options</span> <span class="o">=</span> <span class="n">hex_options</span><span class="o">.</span><span class="n">intersection</span><span class="p">(</span><span class="n">none_options</span><span class="p">)</span>
- <span class="n">allowed</span> <span class="o">=</span> <span class="n">hex_options</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">unchecked_options</span><span class="p">,</span> <span class="n">other_options</span><span class="p">,</span> <span class="n">dir_options</span><span class="p">,</span>
- <span class="n">keyring_options</span><span class="p">,</span> <span class="n">file_or_none_options</span><span class="p">,</span>
- <span class="n">pref_options</span><span class="p">,</span> <span class="n">none_options</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">group</span> <span class="ow">and</span> <span class="n">group</span> <span class="ow">in</span> <span class="nb">locals</span><span class="p">()</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
- <span class="k">return</span> <span class="nb">locals</span><span class="p">()[</span><span class="n">group</span><span class="p">]</span>
-</div>
-<div class="viewcode-block" id="_get_all_gnupg_options"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers._get_all_gnupg_options">[docs]</a><span class="k">def</span> <span class="nf">_get_all_gnupg_options</span><span class="p">():</span>
- <span class="sd">&quot;&quot;&quot;Get all GnuPG options and flags.</span>
-
-<span class="sd"> This is hardcoded within a local scope to reduce the chance of a tampered</span>
-<span class="sd"> GnuPG binary reporting falsified option sets, i.e. because certain options</span>
-<span class="sd"> (namedly the ``--no-options`` option, which prevents the usage of gpg.conf</span>
-<span class="sd"> files) are necessary and statically specified in</span>
-<span class="sd"> :meth:`gnupg._meta.GPGBase._make_args`, if the inputs into Python are</span>
-<span class="sd"> already controlled, and we were to summon the GnuPG binary to ask it for</span>
-<span class="sd"> its options, it would be possible to receive a falsified options set</span>
-<span class="sd"> missing the ``--no-options`` option in response. This seems unlikely, and</span>
-<span class="sd"> the method is stupid and ugly, but at least we&#39;ll never have to debug</span>
-<span class="sd"> whether or not an option *actually* disappeared in a different GnuPG</span>
-<span class="sd"> version, or some funny business is happening.</span>
-
-<span class="sd"> These are the options as of GnuPG 1.4.12; the current stable branch of the</span>
-<span class="sd"> 2.1.x tree contains a few more -- if you need them you&#39;ll have to add them</span>
-<span class="sd"> in here.</span>
-
-<span class="sd"> :type gnupg_options: frozenset</span>
-<span class="sd"> :ivar gnupg_options: All known GPG options and flags.</span>
-<span class="sd"> :rtype: frozenset</span>
-<span class="sd"> :returns: ``gnupg_options``</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">three_hundred_eighteen</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;&quot;&quot;</span>
-<span class="s">--allow-freeform-uid --multifile</span>
-<span class="s">--allow-multiple-messages --no</span>
-<span class="s">--allow-multisig-verification --no-allow-freeform-uid</span>
-<span class="s">--allow-non-selfsigned-uid --no-allow-multiple-messages</span>
-<span class="s">--allow-secret-key-import --no-allow-non-selfsigned-uid</span>
-<span class="s">--always-trust --no-armor</span>
-<span class="s">--armor --no-armour</span>
-<span class="s">--armour --no-ask-cert-expire</span>
-<span class="s">--ask-cert-expire --no-ask-cert-level</span>
-<span class="s">--ask-cert-level --no-ask-sig-expire</span>
-<span class="s">--ask-sig-expire --no-auto-check-trustdb</span>
-<span class="s">--attribute-fd --no-auto-key-locate</span>
-<span class="s">--attribute-file --no-auto-key-retrieve</span>
-<span class="s">--auto-check-trustdb --no-batch</span>
-<span class="s">--auto-key-locate --no-comments</span>
-<span class="s">--auto-key-retrieve --no-default-keyring</span>
-<span class="s">--batch --no-default-recipient</span>
-<span class="s">--bzip2-compress-level --no-disable-mdc</span>
-<span class="s">--bzip2-decompress-lowmem --no-emit-version</span>
-<span class="s">--card-edit --no-encrypt-to</span>
-<span class="s">--card-status --no-escape-from-lines</span>
-<span class="s">--cert-digest-algo --no-expensive-trust-checks</span>
-<span class="s">--cert-notation --no-expert</span>
-<span class="s">--cert-policy-url --no-force-mdc</span>
-<span class="s">--change-pin --no-force-v3-sigs</span>
-<span class="s">--charset --no-force-v4-certs</span>
-<span class="s">--check-sig --no-for-your-eyes-only</span>
-<span class="s">--check-sigs --no-greeting</span>
-<span class="s">--check-trustdb --no-groups</span>
-<span class="s">--cipher-algo --no-literal</span>
-<span class="s">--clearsign --no-mangle-dos-filenames</span>
-<span class="s">--command-fd --no-mdc-warning</span>
-<span class="s">--command-file --no-options</span>
-<span class="s">--comment --no-permission-warning</span>
-<span class="s">--completes-needed --no-pgp2</span>
-<span class="s">--compress-algo --no-pgp6</span>
-<span class="s">--compression-algo --no-pgp7</span>
-<span class="s">--compress-keys --no-pgp8</span>
-<span class="s">--compress-level --no-random-seed-file</span>
-<span class="s">--compress-sigs --no-require-backsigs</span>
-<span class="s">--ctapi-driver --no-require-cross-certification</span>
-<span class="s">--dearmor --no-require-secmem</span>
-<span class="s">--dearmour --no-rfc2440-text</span>
-<span class="s">--debug --no-secmem-warning</span>
-<span class="s">--debug-all --no-show-notation</span>
-<span class="s">--debug-ccid-driver --no-show-photos</span>
-<span class="s">--debug-level --no-show-policy-url</span>
-<span class="s">--decrypt --no-sig-cache</span>
-<span class="s">--decrypt-files --no-sig-create-check</span>
-<span class="s">--default-cert-check-level --no-sk-comments</span>
-<span class="s">--default-cert-expire --no-strict</span>
-<span class="s">--default-cert-level --notation-data</span>
-<span class="s">--default-comment --not-dash-escaped</span>
-<span class="s">--default-key --no-textmode</span>
-<span class="s">--default-keyserver-url --no-throw-keyid</span>
-<span class="s">--default-preference-list --no-throw-keyids</span>
-<span class="s">--default-recipient --no-tty</span>
-<span class="s">--default-recipient-self --no-use-agent</span>
-<span class="s">--default-sig-expire --no-use-embedded-filename</span>
-<span class="s">--delete-keys --no-utf8-strings</span>
-<span class="s">--delete-secret-and-public-keys --no-verbose</span>
-<span class="s">--delete-secret-keys --no-version</span>
-<span class="s">--desig-revoke --openpgp</span>
-<span class="s">--detach-sign --options</span>
-<span class="s">--digest-algo --output</span>
-<span class="s">--disable-ccid --override-session-key</span>
-<span class="s">--disable-cipher-algo --passphrase</span>
-<span class="s">--disable-dsa2 --passphrase-fd</span>
-<span class="s">--disable-mdc --passphrase-file</span>
-<span class="s">--disable-pubkey-algo --passphrase-repeat</span>
-<span class="s">--display --pcsc-driver</span>
-<span class="s">--display-charset --personal-cipher-preferences</span>
-<span class="s">--dry-run --personal-cipher-prefs</span>
-<span class="s">--dump-options --personal-compress-preferences</span>
-<span class="s">--edit-key --personal-compress-prefs</span>
-<span class="s">--emit-version --personal-digest-preferences</span>
-<span class="s">--enable-dsa2 --personal-digest-prefs</span>
-<span class="s">--enable-progress-filter --pgp2</span>
-<span class="s">--enable-special-filenames --pgp6</span>
-<span class="s">--enarmor --pgp7</span>
-<span class="s">--enarmour --pgp8</span>
-<span class="s">--encrypt --photo-viewer</span>
-<span class="s">--encrypt-files --pipemode</span>
-<span class="s">--encrypt-to --preserve-permissions</span>
-<span class="s">--escape-from-lines --primary-keyring</span>
-<span class="s">--exec-path --print-md</span>
-<span class="s">--exit-on-status-write-error --print-mds</span>
-<span class="s">--expert --quick-random</span>
-<span class="s">--export --quiet</span>
-<span class="s">--export-options --reader-port</span>
-<span class="s">--export-ownertrust --rebuild-keydb-caches</span>
-<span class="s">--export-secret-keys --recipient</span>
-<span class="s">--export-secret-subkeys --recv-keys</span>
-<span class="s">--fast-import --refresh-keys</span>
-<span class="s">--fast-list-mode --remote-user</span>
-<span class="s">--fetch-keys --require-backsigs</span>
-<span class="s">--fingerprint --require-cross-certification</span>
-<span class="s">--fixed-list-mode --require-secmem</span>
-<span class="s">--fix-trustdb --rfc1991</span>
-<span class="s">--force-mdc --rfc2440</span>
-<span class="s">--force-ownertrust --rfc2440-text</span>
-<span class="s">--force-v3-sigs --rfc4880</span>
-<span class="s">--force-v4-certs --run-as-shm-coprocess</span>
-<span class="s">--for-your-eyes-only --s2k-cipher-algo</span>
-<span class="s">--gen-key --s2k-count</span>
-<span class="s">--gen-prime --s2k-digest-algo</span>
-<span class="s">--gen-random --s2k-mode</span>
-<span class="s">--gen-revoke --search-keys</span>
-<span class="s">--gnupg --secret-keyring</span>
-<span class="s">--gpg-agent-info --send-keys</span>
-<span class="s">--gpgconf-list --set-filename</span>
-<span class="s">--gpgconf-test --set-filesize</span>
-<span class="s">--group --set-notation</span>
-<span class="s">--help --set-policy-url</span>
-<span class="s">--hidden-encrypt-to --show-keyring</span>
-<span class="s">--hidden-recipient --show-notation</span>
-<span class="s">--homedir --show-photos</span>
-<span class="s">--honor-http-proxy --show-policy-url</span>
-<span class="s">--ignore-crc-error --show-session-key</span>
-<span class="s">--ignore-mdc-error --sig-keyserver-url</span>
-<span class="s">--ignore-time-conflict --sign</span>
-<span class="s">--ignore-valid-from --sign-key</span>
-<span class="s">--import --sig-notation</span>
-<span class="s">--import-options --sign-with</span>
-<span class="s">--import-ownertrust --sig-policy-url</span>
-<span class="s">--interactive --simple-sk-checksum</span>
-<span class="s">--keyid-format --sk-comments</span>
-<span class="s">--keyring --skip-verify</span>
-<span class="s">--keyserver --status-fd</span>
-<span class="s">--keyserver-options --status-file</span>
-<span class="s">--lc-ctype --store</span>
-<span class="s">--lc-messages --strict</span>
-<span class="s">--limit-card-insert-tries --symmetric</span>
-<span class="s">--list-config --temp-directory</span>
-<span class="s">--list-key --textmode</span>
-<span class="s">--list-keys --throw-keyid</span>
-<span class="s">--list-only --throw-keyids</span>
-<span class="s">--list-options --trustdb-name</span>
-<span class="s">--list-ownertrust --trusted-key</span>
-<span class="s">--list-packets --trust-model</span>
-<span class="s">--list-public-keys --try-all-secrets</span>
-<span class="s">--list-secret-keys --ttyname</span>
-<span class="s">--list-sig --ttytype</span>
-<span class="s">--list-sigs --ungroup</span>
-<span class="s">--list-trustdb --update-trustdb</span>
-<span class="s">--load-extension --use-agent</span>
-<span class="s">--local-user --use-embedded-filename</span>
-<span class="s">--lock-multiple --user</span>
-<span class="s">--lock-never --utf8-strings</span>
-<span class="s">--lock-once --verbose</span>
-<span class="s">--logger-fd --verify</span>
-<span class="s">--logger-file --verify-files</span>
-<span class="s">--lsign-key --verify-options</span>
-<span class="s">--mangle-dos-filenames --version</span>
-<span class="s">--marginals-needed --warranty</span>
-<span class="s">--max-cert-depth --with-colons</span>
-<span class="s">--max-output --with-fingerprint</span>
-<span class="s">--merge-only --with-key-data</span>
-<span class="s">--min-cert-level --yes</span>
-<span class="s">&quot;&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
-
- <span class="c"># These are extra options which only exist for GnuPG&gt;=2.0.0</span>
- <span class="n">three_hundred_eighteen</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--export-ownertrust&#39;</span><span class="p">)</span>
- <span class="n">three_hundred_eighteen</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;--import-ownertrust&#39;</span><span class="p">)</span>
-
- <span class="n">gnupg_options</span> <span class="o">=</span> <span class="nb">frozenset</span><span class="p">(</span><span class="n">three_hundred_eighteen</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">gnupg_options</span>
-</div>
-<div class="viewcode-block" id="nodata"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.nodata">[docs]</a><span class="k">def</span> <span class="nf">nodata</span><span class="p">(</span><span class="n">status_code</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Translate NODATA status codes from GnuPG to messages.&quot;&quot;&quot;</span>
- <span class="n">lookup</span> <span class="o">=</span> <span class="p">{</span>
- <span class="s">&#39;1&#39;</span><span class="p">:</span> <span class="s">&#39;No armored data.&#39;</span><span class="p">,</span>
- <span class="s">&#39;2&#39;</span><span class="p">:</span> <span class="s">&#39;Expected a packet but did not find one.&#39;</span><span class="p">,</span>
- <span class="s">&#39;3&#39;</span><span class="p">:</span> <span class="s">&#39;Invalid packet found, this may indicate a non OpenPGP message.&#39;</span><span class="p">,</span>
- <span class="s">&#39;4&#39;</span><span class="p">:</span> <span class="s">&#39;Signature expected but not found.&#39;</span> <span class="p">}</span>
- <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">lookup</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
- <span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">status_code</span><span class="p">)</span> <span class="o">==</span> <span class="n">key</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">value</span>
-</div>
-<div class="viewcode-block" id="progress"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.progress">[docs]</a><span class="k">def</span> <span class="nf">progress</span><span class="p">(</span><span class="n">status_code</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Translate PROGRESS status codes from GnuPG to messages.&quot;&quot;&quot;</span>
- <span class="n">lookup</span> <span class="o">=</span> <span class="p">{</span>
- <span class="s">&#39;pk_dsa&#39;</span><span class="p">:</span> <span class="s">&#39;DSA key generation&#39;</span><span class="p">,</span>
- <span class="s">&#39;pk_elg&#39;</span><span class="p">:</span> <span class="s">&#39;Elgamal key generation&#39;</span><span class="p">,</span>
- <span class="s">&#39;primegen&#39;</span><span class="p">:</span> <span class="s">&#39;Prime generation&#39;</span><span class="p">,</span>
- <span class="s">&#39;need_entropy&#39;</span><span class="p">:</span> <span class="s">&#39;Waiting for new entropy in the RNG&#39;</span><span class="p">,</span>
- <span class="s">&#39;tick&#39;</span><span class="p">:</span> <span class="s">&#39;Generic tick without any special meaning - still working.&#39;</span><span class="p">,</span>
- <span class="s">&#39;starting_agent&#39;</span><span class="p">:</span> <span class="s">&#39;A gpg-agent was started.&#39;</span><span class="p">,</span>
- <span class="s">&#39;learncard&#39;</span><span class="p">:</span> <span class="s">&#39;gpg-agent or gpgsm is learning the smartcard data.&#39;</span><span class="p">,</span>
- <span class="s">&#39;card_busy&#39;</span><span class="p">:</span> <span class="s">&#39;A smartcard is still working.&#39;</span> <span class="p">}</span>
- <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">lookup</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
- <span class="k">if</span> <span class="nb">str</span><span class="p">(</span><span class="n">status_code</span><span class="p">)</span> <span class="o">==</span> <span class="n">key</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">value</span>
-
-</div>
-<div class="viewcode-block" id="GenKey"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.GenKey">[docs]</a><span class="k">class</span> <span class="nc">GenKey</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Handle status messages for key generation.</span>
-
-<span class="sd"> Calling the ``__str__()`` method of this class will return the generated</span>
-<span class="sd"> key&#39;s fingerprint, or a status string explaining the results.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="c">## this should get changed to something more useful, like &#39;key_type&#39;</span>
- <span class="c">#: &#39;P&#39;:= primary, &#39;S&#39;:= subkey, &#39;B&#39;:= both</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">subkey_created</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">primary_created</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="c">#: This will store the key&#39;s public keyring filename, if</span>
- <span class="c">#: :meth:`~gnupg.GPG.gen_key_input` was called with</span>
- <span class="c">#: ``separate_keyring=True``.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">keyring</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: This will store the key&#39;s secret keyring filename, if :</span>
- <span class="c">#: :meth:`~gnupg.GPG.gen_key_input` was called with</span>
- <span class="c">#: ``separate_keyring=True``.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">secring</span> <span class="o">=</span> <span class="bp">None</span>
-
- <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">:</span> <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
- <span class="n">__bool__</span> <span class="o">=</span> <span class="n">__nonzero__</span>
-
- <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">False</span>
-
-<div class="viewcode-block" id="GenKey._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.GenKey._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;GOOD_PASSPHRASE&quot;</span><span class="p">):</span>
- <span class="k">pass</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEY_NOT_CREATED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;key not created&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEY_CREATED&quot;</span><span class="p">:</span>
- <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">)</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;key created&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;NODATA&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">nodata</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;PROGRESS&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">progress</span><span class="p">(</span><span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;Unknown status message: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;B&#39;</span><span class="p">,</span> <span class="s">&#39;P&#39;</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">primary_created</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;B&#39;</span><span class="p">,</span> <span class="s">&#39;S&#39;</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">subkey_created</span> <span class="o">=</span> <span class="bp">True</span>
-</div></div>
-<div class="viewcode-block" id="DeleteResult"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.DeleteResult">[docs]</a><span class="k">class</span> <span class="nc">DeleteResult</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Handle status messages for --delete-keys and --delete-secret-keys&quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;ok&#39;</span>
-
- <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span>
-
- <span class="n">problem_reason</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&#39;1&#39;</span><span class="p">:</span> <span class="s">&#39;No such key&#39;</span><span class="p">,</span>
- <span class="s">&#39;2&#39;</span><span class="p">:</span> <span class="s">&#39;Must delete secret key first&#39;</span><span class="p">,</span>
- <span class="s">&#39;3&#39;</span><span class="p">:</span> <span class="s">&#39;Ambigious specification&#39;</span><span class="p">,</span> <span class="p">}</span>
-
-<div class="viewcode-block" id="DeleteResult._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.DeleteResult._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;DELETE_PROBLEM&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">problem_reason</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="s">&quot;Unknown error: </span><span class="si">%r</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="n">value</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;Unknown status message: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
-</div></div>
-<div class="viewcode-block" id="Sign"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.Sign">[docs]</a><span class="k">class</span> <span class="nc">Sign</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse GnuPG status messages for signing operations.</span>
-
-<span class="sd"> :param gpg: An instance of :class:`gnupg.GPG`.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
-
- <span class="c">#: The type of signature created.</span>
- <span class="n">sig_type</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The algorithm used to create the signature.</span>
- <span class="n">sig_algo</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The hash algorithm used to create the signature.</span>
- <span class="n">sig_hash_also</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The fingerprint of the signing keyid.</span>
- <span class="n">fingerprint</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The timestamp on the signature.</span>
- <span class="n">timestamp</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: xxx fill me in</span>
- <span class="n">what</span> <span class="o">=</span> <span class="bp">None</span>
-
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
-
- <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Override the determination for truthfulness evaluation.</span>
-
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if we have a valid signature, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span>
- <span class="n">__bool__</span> <span class="o">=</span> <span class="n">__nonzero__</span>
-
- <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span><span class="o">.</span><span class="n">_encoding</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span><span class="o">.</span><span class="n">_decode_errors</span><span class="p">)</span>
-
-<div class="viewcode-block" id="Sign._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.Sign._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;USERID_HINT&quot;</span><span class="p">,</span> <span class="s">&quot;NEED_PASSPHRASE&quot;</span><span class="p">,</span> <span class="s">&quot;BAD_PASSPHRASE&quot;</span><span class="p">,</span>
- <span class="s">&quot;GOOD_PASSPHRASE&quot;</span><span class="p">,</span> <span class="s">&quot;BEGIN_SIGNING&quot;</span><span class="p">,</span> <span class="s">&quot;CARDCTRL&quot;</span><span class="p">,</span>
- <span class="s">&quot;INV_SGNR&quot;</span><span class="p">,</span> <span class="s">&quot;SIGEXPIRED&quot;</span><span class="p">):</span>
- <span class="k">pass</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;SIG_CREATED&quot;</span><span class="p">:</span>
- <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sig_type</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sig_algo</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sig_hash_algo</span><span class="p">,</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">what</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">)</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEYEXPIRED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&quot;skipped signing key, key expired&quot;</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">+=</span> <span class="s">&quot; on {}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEYREVOKED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&quot;skipped signing key, key revoked&quot;</span>
- <span class="k">if</span> <span class="p">(</span><span class="n">value</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">+=</span> <span class="s">&quot; on {}&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;NODATA&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">nodata</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;Unknown status message: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
-</div></div>
-<div class="viewcode-block" id="ListKeys"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListKeys">[docs]</a><span class="k">class</span> <span class="nc">ListKeys</span><span class="p">(</span><span class="nb">list</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Handle status messages for --list-keys.</span>
-
-<span class="sd"> Handles pub and uid (relating the latter to the former). Don&#39;t care about</span>
-<span class="sd"> the following attributes/status messages (from doc/DETAILS):</span>
-
-<span class="sd"> | crt = X.509 certificate</span>
-<span class="sd"> | crs = X.509 certificate and private key available</span>
-<span class="sd"> | ssb = secret subkey (secondary key)</span>
-<span class="sd"> | uat = user attribute (same as user id except for field 10).</span>
-<span class="sd"> | sig = signature</span>
-<span class="sd"> | rev = revocation signature</span>
-<span class="sd"> | pkd = public key data (special field format, see below)</span>
-<span class="sd"> | grp = reserved for gpgsm</span>
-<span class="sd"> | rvk = revocation key</span>
-<span class="sd"> &quot;&quot;&quot;</span>
-
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="nb">super</span><span class="p">(</span><span class="n">ListKeys</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">__init__</span><span class="p">()</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fingerprints</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">uids</span> <span class="o">=</span> <span class="p">[]</span>
-
-<div class="viewcode-block" id="ListKeys.key"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListKeys.key">[docs]</a> <span class="k">def</span> <span class="nf">key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
- <span class="nb">vars</span> <span class="o">=</span> <span class="p">(</span><span class="s">&quot;&quot;&quot;</span>
-<span class="s"> type trust length algo keyid date expires dummy ownertrust uid</span>
-<span class="s"> &quot;&quot;&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span> <span class="o">=</span> <span class="p">{}</span>
- <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="nb">vars</span><span class="p">)):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="nb">vars</span><span class="p">[</span><span class="n">i</span><span class="p">]]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;uids&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;uid&#39;</span><span class="p">]:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;uids&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;uid&#39;</span><span class="p">])</span>
- <span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;uid&#39;</span><span class="p">]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;subkeys&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">)</span>
-</div>
- <span class="n">pub</span> <span class="o">=</span> <span class="n">sec</span> <span class="o">=</span> <span class="n">key</span>
-
-<div class="viewcode-block" id="ListKeys.fpr"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListKeys.fpr">[docs]</a> <span class="k">def</span> <span class="nf">fpr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;fingerprint&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">9</span><span class="p">]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fingerprints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">args</span><span class="p">[</span><span class="mi">9</span><span class="p">])</span>
-</div>
-<div class="viewcode-block" id="ListKeys.uid"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListKeys.uid">[docs]</a> <span class="k">def</span> <span class="nf">uid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
- <span class="n">uid</span> <span class="o">=</span> <span class="n">args</span><span class="p">[</span><span class="mi">9</span><span class="p">]</span>
- <span class="n">uid</span> <span class="o">=</span> <span class="n">ESCAPE_PATTERN</span><span class="o">.</span><span class="n">sub</span><span class="p">(</span><span class="k">lambda</span> <span class="n">m</span><span class="p">:</span> <span class="nb">chr</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="mi">16</span><span class="p">)),</span> <span class="n">uid</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;uids&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">uid</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">uids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">uid</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="ListKeys.sub"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListKeys.sub">[docs]</a> <span class="k">def</span> <span class="nf">sub</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
- <span class="n">subkey</span> <span class="o">=</span> <span class="p">[</span><span class="n">args</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">args</span><span class="p">[</span><span class="mi">11</span><span class="p">]]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">curkey</span><span class="p">[</span><span class="s">&#39;subkeys&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">subkey</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="ListKeys._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListKeys._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="k">pass</span>
-
-</div></div>
-<div class="viewcode-block" id="ImportResult"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ImportResult">[docs]</a><span class="k">class</span> <span class="nc">ImportResult</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse GnuPG status messages for key import operations.</span>
-
-<span class="sd"> :type gpg: :class:`gnupg.GPG`</span>
-<span class="sd"> :param gpg: An instance of :class:`gnupg.GPG`.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">_ok_reason</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;0&#39;</span><span class="p">:</span> <span class="s">&#39;Not actually changed&#39;</span><span class="p">,</span>
- <span class="s">&#39;1&#39;</span><span class="p">:</span> <span class="s">&#39;Entirely new key&#39;</span><span class="p">,</span>
- <span class="s">&#39;2&#39;</span><span class="p">:</span> <span class="s">&#39;New user IDs&#39;</span><span class="p">,</span>
- <span class="s">&#39;4&#39;</span><span class="p">:</span> <span class="s">&#39;New signatures&#39;</span><span class="p">,</span>
- <span class="s">&#39;8&#39;</span><span class="p">:</span> <span class="s">&#39;New subkeys&#39;</span><span class="p">,</span>
- <span class="s">&#39;16&#39;</span><span class="p">:</span> <span class="s">&#39;Contains private key&#39;</span><span class="p">,</span>
- <span class="s">&#39;17&#39;</span><span class="p">:</span> <span class="s">&#39;Contains private key&#39;</span><span class="p">,}</span>
-
- <span class="n">_problem_reason</span> <span class="o">=</span> <span class="p">{</span> <span class="s">&#39;0&#39;</span><span class="p">:</span> <span class="s">&#39;No specific reason given&#39;</span><span class="p">,</span>
- <span class="s">&#39;1&#39;</span><span class="p">:</span> <span class="s">&#39;Invalid Certificate&#39;</span><span class="p">,</span>
- <span class="s">&#39;2&#39;</span><span class="p">:</span> <span class="s">&#39;Issuer Certificate missing&#39;</span><span class="p">,</span>
- <span class="s">&#39;3&#39;</span><span class="p">:</span> <span class="s">&#39;Certificate Chain too long&#39;</span><span class="p">,</span>
- <span class="s">&#39;4&#39;</span><span class="p">:</span> <span class="s">&#39;Error storing certificate&#39;</span><span class="p">,</span> <span class="p">}</span>
-
- <span class="n">_fields</span> <span class="o">=</span> <span class="s">&#39;&#39;&#39;count no_user_id imported imported_rsa unchanged</span>
-<span class="s"> n_uids n_subk n_sigs n_revoc sec_read sec_imported sec_dups</span>
-<span class="s"> not_imported&#39;&#39;&#39;</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="n">_counts</span> <span class="o">=</span> <span class="n">OrderedDict</span><span class="p">(</span>
- <span class="nb">zip</span><span class="p">(</span><span class="n">_fields</span><span class="p">,</span> <span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">_fields</span><span class="p">))])</span> <span class="p">)</span>
-
- <span class="c">#: A list of strings containing the fingerprints of the GnuPG keyIDs</span>
- <span class="c">#: imported.</span>
- <span class="n">fingerprints</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-
- <span class="c">#: A list containing dictionaries with information gathered on keys</span>
- <span class="c">#: imported.</span>
- <span class="n">results</span> <span class="o">=</span> <span class="nb">list</span><span class="p">()</span>
-
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">counts</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_counts</span>
-
- <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Override the determination for truthfulness evaluation.</span>
-
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if we have immport some keys, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">counts</span><span class="o">.</span><span class="n">not_imported</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span> <span class="k">return</span> <span class="bp">False</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fingerprints</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span> <span class="k">return</span> <span class="bp">False</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="n">__bool__</span> <span class="o">=</span> <span class="n">__nonzero__</span>
-
-<div class="viewcode-block" id="ImportResult._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ImportResult._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;IMPORTED&quot;</span><span class="p">:</span>
- <span class="c"># this duplicates info we already see in import_ok &amp; import_problem</span>
- <span class="k">pass</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;NODATA&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">&#39;fingerprint&#39;</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
- <span class="s">&#39;status&#39;</span><span class="p">:</span> <span class="s">&#39;No valid data found&#39;</span><span class="p">})</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;IMPORT_OK&quot;</span><span class="p">:</span>
- <span class="n">reason</span><span class="p">,</span> <span class="n">fingerprint</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="n">reasons</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="k">for</span> <span class="n">code</span><span class="p">,</span> <span class="n">text</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ok_reason</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
- <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">reason</span><span class="p">)</span> <span class="o">==</span> <span class="nb">int</span><span class="p">(</span><span class="n">code</span><span class="p">):</span>
- <span class="n">reasons</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
- <span class="n">reasontext</span> <span class="o">=</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">reasons</span><span class="p">)</span> <span class="o">+</span> <span class="s">&quot;</span><span class="se">\n</span><span class="s">&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">&#39;fingerprint&#39;</span><span class="p">:</span> <span class="n">fingerprint</span><span class="p">,</span>
- <span class="s">&#39;status&#39;</span><span class="p">:</span> <span class="n">reasontext</span><span class="p">})</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fingerprints</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">fingerprint</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;IMPORT_PROBLEM&quot;</span><span class="p">:</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">reason</span><span class="p">,</span> <span class="n">fingerprint</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="k">except</span><span class="p">:</span>
- <span class="n">reason</span> <span class="o">=</span> <span class="n">value</span>
- <span class="n">fingerprint</span> <span class="o">=</span> <span class="s">&#39;&lt;unknown&gt;&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s">&#39;fingerprint&#39;</span><span class="p">:</span> <span class="n">fingerprint</span><span class="p">,</span>
- <span class="s">&#39;status&#39;</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_problem_reason</span><span class="p">[</span><span class="n">reason</span><span class="p">]})</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;IMPORT_RES&quot;</span><span class="p">:</span>
- <span class="n">import_res</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">counts</span><span class="o">.</span><span class="n">keys</span><span class="p">():</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">counts</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">import_res</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="mi">0</span><span class="p">))</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEYEXPIRED&quot;</span><span class="p">:</span>
- <span class="n">res</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;fingerprint&#39;</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
- <span class="s">&#39;status&#39;</span><span class="p">:</span> <span class="s">&#39;Key expired&#39;</span><span class="p">}</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
- <span class="c">## Accoring to docs/DETAILS L859, SIGEXPIRED is obsolete:</span>
- <span class="c">## &quot;Removed on 2011-02-04. This is deprecated in favor of KEYEXPIRED.&quot;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;SIGEXPIRED&quot;</span><span class="p">:</span>
- <span class="n">res</span> <span class="o">=</span> <span class="p">{</span><span class="s">&#39;fingerprint&#39;</span><span class="p">:</span> <span class="bp">None</span><span class="p">,</span>
- <span class="s">&#39;status&#39;</span><span class="p">:</span> <span class="s">&#39;Signature expired&#39;</span><span class="p">}</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">results</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;Unknown status message: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="ImportResult.summary"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ImportResult.summary">[docs]</a> <span class="k">def</span> <span class="nf">summary</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="n">l</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%d</span><span class="s"> imported&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">counts</span><span class="p">[</span><span class="s">&#39;imported&#39;</span><span class="p">])</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">counts</span><span class="p">[</span><span class="s">&#39;not_imported&#39;</span><span class="p">]:</span>
- <span class="n">l</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%d</span><span class="s"> not imported&#39;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">counts</span><span class="p">[</span><span class="s">&#39;not_imported&#39;</span><span class="p">])</span>
- <span class="k">return</span> <span class="s">&#39;, &#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">l</span><span class="p">)</span>
-
-</div></div>
-<div class="viewcode-block" id="Verify"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.Verify">[docs]</a><span class="k">class</span> <span class="nc">Verify</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parser for status messages from GnuPG for certifications and signature</span>
-<span class="sd"> verifications.</span>
-
-<span class="sd"> People often mix these up, or think that they are the same thing. While it</span>
-<span class="sd"> is true that certifications and signatures *are* the same cryptographic</span>
-<span class="sd"> operation -- and also true that both are the same as the decryption</span>
-<span class="sd"> operation -- a distinction is made for important reasons.</span>
-
-<span class="sd"> A certification:</span>
-<span class="sd"> * is made on a key,</span>
-<span class="sd"> * can help to validate or invalidate the key owner&#39;s identity,</span>
-<span class="sd"> * can assign trust levels to the key (or to uids and/or subkeys that</span>
-<span class="sd"> the key contains),</span>
-<span class="sd"> * and can be used in absense of in-person fingerprint checking to try</span>
-<span class="sd"> to build a path (through keys whose fingerprints have been checked)</span>
-<span class="sd"> to the key, so that the identity of the key&#39;s owner can be more</span>
-<span class="sd"> reliable without having to actually physically meet in person.</span>
-
-<span class="sd"> A signature:</span>
-<span class="sd"> * is created for a file or other piece of data,</span>
-<span class="sd"> * can help to prove that the data hasn&#39;t been altered,</span>
-<span class="sd"> * and can help to prove that the data was sent by the person(s) in</span>
-<span class="sd"> possession of the private key that created the signature, and for</span>
-<span class="sd"> parsing portions of status messages from decryption operations.</span>
-
-<span class="sd"> There are probably other things unique to each that have been</span>
-<span class="sd"> scatterbrainedly omitted due to the programmer sitting still and staring</span>
-<span class="sd"> at GnuPG debugging logs for too long without snacks, but that is the gist</span>
-<span class="sd"> of it.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
-
- <span class="n">TRUST_UNDEFINED</span> <span class="o">=</span> <span class="mi">0</span>
- <span class="n">TRUST_NEVER</span> <span class="o">=</span> <span class="mi">1</span>
- <span class="n">TRUST_MARGINAL</span> <span class="o">=</span> <span class="mi">2</span>
- <span class="n">TRUST_FULLY</span> <span class="o">=</span> <span class="mi">3</span>
- <span class="n">TRUST_ULTIMATE</span> <span class="o">=</span> <span class="mi">4</span>
-
- <span class="n">TRUST_LEVELS</span> <span class="o">=</span> <span class="p">{</span><span class="s">&quot;TRUST_UNDEFINED&quot;</span> <span class="p">:</span> <span class="n">TRUST_UNDEFINED</span><span class="p">,</span>
- <span class="s">&quot;TRUST_NEVER&quot;</span> <span class="p">:</span> <span class="n">TRUST_NEVER</span><span class="p">,</span>
- <span class="s">&quot;TRUST_MARGINAL&quot;</span> <span class="p">:</span> <span class="n">TRUST_MARGINAL</span><span class="p">,</span>
- <span class="s">&quot;TRUST_FULLY&quot;</span> <span class="p">:</span> <span class="n">TRUST_FULLY</span><span class="p">,</span>
- <span class="s">&quot;TRUST_ULTIMATE&quot;</span> <span class="p">:</span> <span class="n">TRUST_ULTIMATE</span><span class="p">,}</span>
-
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Create a parser for verification and certification commands.</span>
-
-<span class="sd"> :param gpg: An instance of :class:`gnupg.GPG`.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="c">#: True if the signature is valid, False otherwise.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="c">#: A string describing the status of the signature verification.</span>
- <span class="c">#: Can be one of ``signature bad``, ``signature good``,</span>
- <span class="c">#: ``signature valid``, ``signature error``, ``decryption failed``,</span>
- <span class="c">#: ``no public key``, ``key exp``, or ``key rev``.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The fingerprint of the signing keyid.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The fingerprint of the corresponding public key, which may be</span>
- <span class="c">#: different if the signature was created with a subkey.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">pubkey_fingerprint</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The keyid of the signing key.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key_id</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The id of the signature itself.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">signature_id</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The creation date of the signing key.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">creation_date</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The timestamp of the purported signature, if we are unable to parse</span>
- <span class="c">#: and/or validate it.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The timestamp for when the valid signature was created.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">sig_timestamp</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The userid of the signing key which was used to create the</span>
- <span class="c">#: signature.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: When the signing key is due to expire.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">expire_timestamp</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: An integer 0-4 describing the trust level of the signature.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">trust_level</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The string corresponding to the ``trust_level`` number.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">trust_text</span> <span class="o">=</span> <span class="bp">None</span>
-
- <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Override the determination for truthfulness evaluation.</span>
-
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if we have a valid signature, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">valid</span>
- <span class="n">__bool__</span> <span class="o">=</span> <span class="n">__nonzero__</span>
-
-<div class="viewcode-block" id="Verify._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.Verify._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRUST_LEVELS</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">trust_text</span> <span class="o">=</span> <span class="n">key</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">trust_level</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRUST_LEVELS</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;RSA_OR_IDEA&quot;</span><span class="p">,</span> <span class="s">&quot;NODATA&quot;</span><span class="p">,</span> <span class="s">&quot;IMPORT_RES&quot;</span><span class="p">,</span> <span class="s">&quot;PLAINTEXT&quot;</span><span class="p">,</span>
- <span class="s">&quot;PLAINTEXT_LENGTH&quot;</span><span class="p">,</span> <span class="s">&quot;POLICY_URL&quot;</span><span class="p">,</span> <span class="s">&quot;DECRYPTION_INFO&quot;</span><span class="p">,</span>
- <span class="s">&quot;DECRYPTION_OKAY&quot;</span><span class="p">,</span> <span class="s">&quot;INV_SGNR&quot;</span><span class="p">):</span>
- <span class="k">pass</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;BADSIG&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;signature bad&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;GOODSIG&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;signature good&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">username</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;VALIDSIG&quot;</span><span class="p">:</span>
- <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fingerprint</span><span class="p">,</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">creation_date</span><span class="p">,</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">sig_timestamp</span><span class="p">,</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">expire_timestamp</span><span class="p">)</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()[:</span><span class="mi">4</span><span class="p">]</span>
- <span class="c"># may be different if signature is made with a subkey</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">pubkey_fingerprint</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;signature valid&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;SIG_ID&quot;</span><span class="p">:</span>
- <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">signature_id</span><span class="p">,</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">creation_date</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;ERRSIG&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">key_id</span><span class="p">,</span>
- <span class="n">algo</span><span class="p">,</span> <span class="n">hash_algo</span><span class="p">,</span>
- <span class="n">cls</span><span class="p">,</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">timestamp</span><span class="p">)</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()[:</span><span class="mi">5</span><span class="p">]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;signature error&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;DECRYPTION_FAILED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key_id</span> <span class="o">=</span> <span class="n">value</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;decryption failed&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;NO_PUBKEY&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key_id</span> <span class="o">=</span> <span class="n">value</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;no public key&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;KEYEXPIRED&quot;</span><span class="p">,</span> <span class="s">&quot;SIGEXPIRED&quot;</span><span class="p">):</span>
- <span class="c"># these are useless in verify, since they are spit out for any</span>
- <span class="c"># pub/subkeys on the key, not just the one doing the signing.</span>
- <span class="c"># if we want to check for signatures with expired key,</span>
- <span class="c"># the relevant flag is EXPKEYSIG.</span>
- <span class="k">pass</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;EXPKEYSIG&quot;</span><span class="p">,</span> <span class="s">&quot;REVKEYSIG&quot;</span><span class="p">):</span>
- <span class="c"># signed with expired or revoked key</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">valid</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key_id</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()[</span><span class="mi">0</span><span class="p">]</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="p">((</span><span class="s">&#39;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&#39;</span><span class="p">)</span> <span class="o">%</span> <span class="p">(</span><span class="n">key</span><span class="p">[:</span><span class="mi">3</span><span class="p">],</span> <span class="n">key</span><span class="p">[</span><span class="mi">3</span><span class="p">:]))</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;Unknown status message: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span>
-
-</div></div>
-<div class="viewcode-block" id="Crypt"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.Crypt">[docs]</a><span class="k">class</span> <span class="nc">Crypt</span><span class="p">(</span><span class="n">Verify</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parser for internal status messages from GnuPG for ``--encrypt``,</span>
-<span class="sd"> ``--decrypt``, and ``--decrypt-files``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="n">Verify</span><span class="o">.</span><span class="n">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="c">#: A string containing the encrypted or decrypted data.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
- <span class="c">#: True if the decryption/encryption process turned out okay.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ok</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="c">#: A string describing the current processing status, or error, if one</span>
- <span class="c">#: has occurred.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data_format</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data_timestamp</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data_filename</span> <span class="o">=</span> <span class="bp">None</span>
-
- <span class="k">def</span> <span class="nf">__nonzero__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">ok</span><span class="p">:</span> <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
- <span class="n">__bool__</span> <span class="o">=</span> <span class="n">__nonzero__</span>
-
- <span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;The str() method for a :class:`Crypt` object will automatically return the</span>
-<span class="sd"> decoded data string, which stores the encryped or decrypted data.</span>
-
-<span class="sd"> In other words, these two statements are equivalent:</span>
-
-<span class="sd"> &gt;&gt;&gt; assert decrypted.data == str(decrypted)</span>
-
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span><span class="o">.</span><span class="n">_encoding</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span><span class="o">.</span><span class="n">_decode_errors</span><span class="p">)</span>
-
-<div class="viewcode-block" id="Crypt._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.Crypt._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;ENC_TO&quot;</span><span class="p">,</span> <span class="s">&quot;USERID_HINT&quot;</span><span class="p">,</span> <span class="s">&quot;GOODMDC&quot;</span><span class="p">,</span> <span class="s">&quot;END_DECRYPTION&quot;</span><span class="p">,</span>
- <span class="s">&quot;BEGIN_SIGNING&quot;</span><span class="p">,</span> <span class="s">&quot;NO_SECKEY&quot;</span><span class="p">,</span> <span class="s">&quot;ERROR&quot;</span><span class="p">,</span> <span class="s">&quot;NODATA&quot;</span><span class="p">,</span>
- <span class="s">&quot;CARDCTRL&quot;</span><span class="p">):</span>
- <span class="c"># in the case of ERROR, this is because a more specific error</span>
- <span class="c"># message will have come first</span>
- <span class="k">pass</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&quot;NEED_PASSPHRASE&quot;</span><span class="p">,</span> <span class="s">&quot;BAD_PASSPHRASE&quot;</span><span class="p">,</span> <span class="s">&quot;GOOD_PASSPHRASE&quot;</span><span class="p">,</span>
- <span class="s">&quot;MISSING_PASSPHRASE&quot;</span><span class="p">,</span> <span class="s">&quot;DECRYPTION_FAILED&quot;</span><span class="p">,</span>
- <span class="s">&quot;KEY_NOT_CREATED&quot;</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&quot;_&quot;</span><span class="p">,</span> <span class="s">&quot; &quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;NEED_TRUSTDB&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span><span class="o">.</span><span class="n">_create_trustdb</span><span class="p">()</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;NEED_PASSPHRASE_SYM&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;need symmetric passphrase&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;BEGIN_DECRYPTION&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;decryption incomplete&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;BEGIN_ENCRYPTION&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;encryption incomplete&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;DECRYPTION_OKAY&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;decryption ok&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ok</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;END_ENCRYPTION&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;encryption ok&#39;</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">ok</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;INV_RECP&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;invalid recipient&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEYEXPIRED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;key expired&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;KEYREVOKED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;key revoked&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;SIG_CREATED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;sig created&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;SIGEXPIRED&quot;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="s">&#39;sig expired&#39;</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&quot;PLAINTEXT&quot;</span><span class="p">:</span>
- <span class="n">fmt</span><span class="p">,</span> <span class="n">dts</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">dts</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data_timestamp</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_filename</span> <span class="o">=</span> <span class="n">dts</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data_timestamp</span> <span class="o">=</span> <span class="n">dts</span>
- <span class="c">## GnuPG gives us a hex byte for an ascii char corresponding to</span>
- <span class="c">## the data format of the resulting plaintext,</span>
- <span class="c">## i.e. &#39;62&#39;→&#39;b&#39;:= binary data</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">data_format</span> <span class="o">=</span> <span class="nb">chr</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">fmt</span><span class="p">),</span> <span class="mi">16</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="nb">super</span><span class="p">(</span><span class="n">Crypt</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">_handle_status</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
-</div></div>
-<div class="viewcode-block" id="ListPackets"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListPackets">[docs]</a><span class="k">class</span> <span class="nc">ListPackets</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Handle status messages for --list-packets.&quot;&quot;&quot;</span>
-
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gpg</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">_gpg</span> <span class="o">=</span> <span class="n">gpg</span>
- <span class="c">#: A string describing the current processing status, or error, if one</span>
- <span class="c">#: has occurred.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: True if the passphrase to a public/private keypair is required.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">need_passphrase</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: True if a passphrase for a symmetric key is required.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">need_passphrase_sym</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="c">#: The keyid and uid which this data is encrypted to.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">userid_hint</span> <span class="o">=</span> <span class="bp">None</span>
-
-<div class="viewcode-block" id="ListPackets._handle_status"><a class="viewcode-back" href="../../gnupg.html#gnupg._parsers.ListPackets._handle_status">[docs]</a> <span class="k">def</span> <span class="nf">_handle_status</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Parse a status code from the attached GnuPG process.</span>
-
-<span class="sd"> :raises: :exc:`~exceptions.ValueError` if the status message is unknown.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;NODATA&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">status</span> <span class="o">=</span> <span class="n">nodata</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;ENC_TO&#39;</span><span class="p">:</span>
- <span class="c"># This will only capture keys in our keyring. In the future we</span>
- <span class="c"># may want to include multiple unknown keys in this list.</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">key</span><span class="p">,</span> <span class="n">_</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;NEED_PASSPHRASE&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">need_passphrase</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;NEED_PASSPHRASE_SYM&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">need_passphrase_sym</span> <span class="o">=</span> <span class="bp">True</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="o">==</span> <span class="s">&#39;USERID_HINT&#39;</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">userid_hint</span> <span class="o">=</span> <span class="n">value</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="o">.</span><span class="n">split</span><span class="p">()</span>
- <span class="k">elif</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s">&#39;NO_SECKEY&#39;</span><span class="p">,</span> <span class="s">&#39;BEGIN_DECRYPTION&#39;</span><span class="p">,</span> <span class="s">&#39;DECRYPTION_FAILED&#39;</span><span class="p">,</span>
- <span class="s">&#39;END_DECRYPTION&#39;</span><span class="p">):</span>
- <span class="k">pass</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;Unknown status message: </span><span class="si">%r</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">key</span><span class="p">)</span></div></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- </div>
- <div class="sidebar">
- <h3>Table Of Contents</h3>
- <ul>
-<li class="toctree-l1"><a class="reference internal" href="../../gnupg.html">gnupg package</a></li>
-</ul>
-
- <h3 style="margin-top: 1.5em;">Search</h3>
- <form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- <div class="footer-wrapper">
- <div class="footer">
- <div class="left">
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../../genindex.html" title="General Index"
- >index</a>
- </div>
-
- <div class="right">
-
- <div class="footer">
- &copy; Copyright 2013-2014, Isis Agora Lovecruft.
- Last updated on Saturday, 02 August 2014.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- </body>
-</html> \ No newline at end of file
diff --git a/docs/_build/html/_modules/gnupg/_util.html b/docs/_build/html/_modules/gnupg/_util.html
deleted file mode 100644
index b6968c4..0000000
--- a/docs/_build/html/_modules/gnupg/_util.html
+++ /dev/null
@@ -1,718 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>gnupg._util &mdash; gnupg unknown documentation</title>
-
- <link rel="stylesheet" href="../../_static/agogo.css" type="text/css" />
- <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../../',
- VERSION: 'unknown',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../../_static/jquery.js"></script>
- <script type="text/javascript" src="../../_static/underscore.js"></script>
- <script type="text/javascript" src="../../_static/doctools.js"></script>
- <link rel="top" title="gnupg unknown documentation" href="../../index.html" />
- <link rel="up" title="gnupg" href="../gnupg.html" />
- </head>
- <body>
- <div class="header-wrapper">
- <div class="header">
- <div class="headertitle"><a
- href="../../index.html">gnupg: Python Module Documentation</a></div>
- <div class="rel">
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../../genindex.html" title="General Index"
- accesskey="I">index</a>
- </div>
- </div>
- </div>
-
- <div class="content-wrapper">
- <div class="content">
- <div class="document">
-
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>Source code for gnupg._util</h1><div class="highlight"><pre>
-<span class="c"># -*- coding: utf-8 -*-</span>
-<span class="c">#</span>
-<span class="c"># This file is part of python-gnupg, a Python interface to GnuPG.</span>
-<span class="c"># Copyright © 2013 Isis Lovecruft, &lt;isis@leap.se&gt; 0xA3ADB67A2CDB8B35</span>
-<span class="c"># © 2013 Andrej B.</span>
-<span class="c"># © 2013 LEAP Encryption Access Project</span>
-<span class="c"># © 2008-2012 Vinay Sajip</span>
-<span class="c"># © 2005 Steve Traugott</span>
-<span class="c"># © 2004 A.M. Kuchling</span>
-<span class="c">#</span>
-<span class="c"># This program is free software: you can redistribute it and/or modify it</span>
-<span class="c"># under the terms of the GNU General Public License as published by the Free</span>
-<span class="c"># Software Foundation, either version 3 of the License, or (at your option)</span>
-<span class="c"># any later version.</span>
-<span class="c">#</span>
-<span class="c"># This program is distributed in the hope that it will be useful, but WITHOUT</span>
-<span class="c"># ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or</span>
-<span class="c"># FITNESS FOR A PARTICULAR PURPOSE. See the included LICENSE file for details.</span>
-
-<span class="sd">&#39;&#39;&#39;Extra utilities for python-gnupg.&#39;&#39;&#39;</span>
-
-<span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">absolute_import</span>
-<span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
-<span class="kn">from</span> <span class="nn">socket</span> <span class="kn">import</span> <span class="n">gethostname</span>
-<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">localtime</span>
-<span class="kn">from</span> <span class="nn">time</span> <span class="kn">import</span> <span class="n">mktime</span>
-
-<span class="kn">import</span> <span class="nn">codecs</span>
-<span class="kn">import</span> <span class="nn">encodings</span>
-<span class="kn">import</span> <span class="nn">os</span>
-<span class="kn">import</span> <span class="nn">psutil</span>
-<span class="kn">import</span> <span class="nn">threading</span>
-<span class="kn">import</span> <span class="nn">random</span>
-<span class="kn">import</span> <span class="nn">re</span>
-<span class="kn">import</span> <span class="nn">string</span>
-<span class="kn">import</span> <span class="nn">sys</span>
-
-<span class="k">try</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">StringIO</span>
- <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span>
-<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
- <span class="kn">from</span> <span class="nn">cStringIO</span> <span class="kn">import</span> <span class="n">StringIO</span>
-
-<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">_logger</span>
-
-
-<span class="k">try</span><span class="p">:</span>
- <span class="nb">unicode</span>
- <span class="n">_py3k</span> <span class="o">=</span> <span class="bp">False</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="nb">isinstance</span><span class="p">(</span><span class="n">__name__</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
- <span class="n">msg</span> <span class="o">=</span> <span class="s">&quot;Sorry, python-gnupg requires a Python version with proper&quot;</span>
- <span class="n">msg</span> <span class="o">+=</span> <span class="s">&quot; unicode support. Please upgrade to Python&gt;=2.6.&quot;</span>
- <span class="k">raise</span> <span class="ne">SystemExit</span><span class="p">(</span><span class="n">msg</span><span class="p">)</span>
-<span class="k">except</span> <span class="ne">NameError</span><span class="p">:</span>
- <span class="n">_py3k</span> <span class="o">=</span> <span class="bp">True</span>
-
-
-<span class="c">## Directory shortcuts:</span>
-<span class="c">## we don&#39;t want to use this one because it writes to the install dir:</span>
-<span class="c">#_here = getabsfile(currentframe()).rsplit(os.path.sep, 1)[0]</span>
-<span class="n">_here</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="s">&#39;gnupg&#39;</span><span class="p">)</span> <span class="c">## current dir</span>
-<span class="n">_test</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_here</span><span class="p">,</span> <span class="s">&#39;test&#39;</span><span class="p">),</span> <span class="s">&#39;tmp&#39;</span><span class="p">)</span> <span class="c">## ./tests/tmp</span>
-<span class="n">_user</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;HOME&#39;</span><span class="p">)</span> <span class="c">## $HOME</span>
-<span class="n">_ugpg</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_user</span><span class="p">,</span> <span class="s">&#39;.gnupg&#39;</span><span class="p">)</span> <span class="c">## $HOME/.gnupg</span>
-<span class="n">_conf</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_user</span><span class="p">,</span> <span class="s">&#39;.config&#39;</span><span class="p">),</span> <span class="s">&#39;python-gnupg&#39;</span><span class="p">)</span>
- <span class="c">## $HOME/.config/python-gnupg</span>
-
-<span class="c">## Logger is disabled by default</span>
-<span class="n">log</span> <span class="o">=</span> <span class="n">_logger</span><span class="o">.</span><span class="n">create_logger</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
-
-
-<div class="viewcode-block" id="find_encodings"><a class="viewcode-back" href="../../gnupg.html#gnupg._util.find_encodings">[docs]</a><span class="k">def</span> <span class="nf">find_encodings</span><span class="p">(</span><span class="n">enc</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">system</span><span class="o">=</span><span class="bp">False</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Find functions for encoding translations for a specific codec.</span>
-
-<span class="sd"> :param str enc: The codec to find translation functions for. It will be</span>
-<span class="sd"> normalized by converting to lowercase, excluding</span>
-<span class="sd"> everything which is not ascii, and hyphens will be</span>
-<span class="sd"> converted to underscores.</span>
-
-<span class="sd"> :param bool system: If True, find encodings based on the system&#39;s stdin</span>
-<span class="sd"> encoding, otherwise assume utf-8.</span>
-
-<span class="sd"> :raises: :exc:LookupError if the normalized codec, ``enc``, cannot be</span>
-<span class="sd"> found in Python&#39;s encoding translation map.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">enc</span><span class="p">:</span>
- <span class="n">enc</span> <span class="o">=</span> <span class="s">&#39;utf-8&#39;</span>
-
- <span class="k">if</span> <span class="n">system</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="p">,</span> <span class="s">&#39;encoding&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="n">enc</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">stdin</span><span class="o">.</span><span class="n">encoding</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Obtained encoding from stdin: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">enc</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">enc</span> <span class="o">=</span> <span class="s">&#39;ascii&#39;</span>
-
- <span class="c">## have to have lowercase to work, see</span>
- <span class="c">## http://docs.python.org/dev/library/codecs.html#standard-encodings</span>
- <span class="n">enc</span> <span class="o">=</span> <span class="n">enc</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
- <span class="n">codec_alias</span> <span class="o">=</span> <span class="n">encodings</span><span class="o">.</span><span class="n">normalize_encoding</span><span class="p">(</span><span class="n">enc</span><span class="p">)</span>
-
- <span class="n">codecs</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">encodings</span><span class="o">.</span><span class="n">search_function</span><span class="p">)</span>
- <span class="n">coder</span> <span class="o">=</span> <span class="n">codecs</span><span class="o">.</span><span class="n">lookup</span><span class="p">(</span><span class="n">codec_alias</span><span class="p">)</span>
-
- <span class="k">return</span> <span class="n">coder</span>
-</div>
-<div class="viewcode-block" id="author_info"><a class="viewcode-back" href="../../gnupg.html#gnupg._util.author_info">[docs]</a><span class="k">def</span> <span class="nf">author_info</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">contact</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">public_key</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Easy object-oriented representation of contributor info.</span>
-
-<span class="sd"> :param str name: The contributor´s name.</span>
-<span class="sd"> :param str contact: The contributor´s email address or contact</span>
-<span class="sd"> information, if given.</span>
-<span class="sd"> :param str public_key: The contributor´s public keyid, if given.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">Storage</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">contact</span><span class="o">=</span><span class="n">contact</span><span class="p">,</span> <span class="n">public_key</span><span class="o">=</span><span class="n">public_key</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_copy_data"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._copy_data">[docs]</a><span class="k">def</span> <span class="nf">_copy_data</span><span class="p">(</span><span class="n">instream</span><span class="p">,</span> <span class="n">outstream</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Copy data from one stream to another.</span>
-
-<span class="sd"> :type instream: :class:`io.BytesIO` or :class:`io.StringIO` or file</span>
-<span class="sd"> :param instream: A byte stream or open file to read from.</span>
-<span class="sd"> :param file outstream: The file descriptor of a tmpfile to write to.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">sent</span> <span class="o">=</span> <span class="mi">0</span>
-
- <span class="n">coder</span> <span class="o">=</span> <span class="n">find_encodings</span><span class="p">()</span>
-
- <span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
- <span class="k">if</span> <span class="p">((</span><span class="n">_py3k</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">instream</span><span class="p">,</span> <span class="nb">str</span><span class="p">))</span> <span class="ow">or</span>
- <span class="p">(</span><span class="ow">not</span> <span class="n">_py3k</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">instream</span><span class="p">,</span> <span class="nb">basestring</span><span class="p">))):</span>
- <span class="n">data</span> <span class="o">=</span> <span class="n">instream</span><span class="p">[:</span><span class="mi">1024</span><span class="p">]</span>
- <span class="n">instream</span> <span class="o">=</span> <span class="n">instream</span><span class="p">[</span><span class="mi">1024</span><span class="p">:]</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">data</span> <span class="o">=</span> <span class="n">instream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">1024</span><span class="p">)</span>
- <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
- <span class="k">break</span>
- <span class="n">sent</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Sending chunk </span><span class="si">%d</span><span class="s"> bytes:</span><span class="se">\n</span><span class="si">%s</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="p">(</span><span class="n">sent</span><span class="p">,</span> <span class="n">data</span><span class="p">))</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">UnicodeError</span><span class="p">:</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">coder</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
- <span class="k">except</span> <span class="ne">IOError</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s">&quot;Error sending data: Broken pipe&quot;</span><span class="p">)</span>
- <span class="k">break</span>
- <span class="k">except</span> <span class="ne">IOError</span> <span class="k">as</span> <span class="n">ioe</span><span class="p">:</span>
- <span class="c"># Can get &#39;broken pipe&#39; errors even when all data was sent</span>
- <span class="k">if</span> <span class="s">&#39;Broken pipe&#39;</span> <span class="ow">in</span> <span class="nb">str</span><span class="p">(</span><span class="n">ioe</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&#39;Error sending data: Broken pipe&#39;</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="n">ioe</span><span class="p">)</span>
- <span class="k">break</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">outstream</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
- <span class="k">except</span> <span class="ne">IOError</span> <span class="k">as</span> <span class="n">ioe</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;Unable to close outstream </span><span class="si">%s</span><span class="s">:</span><span class="se">\r\t</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">outstream</span><span class="p">,</span> <span class="n">ioe</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Closed outstream: </span><span class="si">%d</span><span class="s"> bytes sent.&quot;</span> <span class="o">%</span> <span class="n">sent</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_create_if_necessary"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._create_if_necessary">[docs]</a><span class="k">def</span> <span class="nf">_create_if_necessary</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Create the specified directory, if necessary.</span>
-
-<span class="sd"> :param str directory: The directory to use.</span>
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if no errors occurred and the directory was created or</span>
-<span class="sd"> existed beforehand, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
-
- <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isabs</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got non-absolute path: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
- <span class="n">directory</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">abspath</span><span class="p">(</span><span class="n">directory</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">directory</span><span class="p">):</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Creating directory: </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="n">directory</span><span class="p">)</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">os</span><span class="o">.</span><span class="n">makedirs</span><span class="p">(</span><span class="n">directory</span><span class="p">,</span> <span class="mh">0x1C0</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">ose</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">ose</span><span class="p">,</span> <span class="n">exc_info</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">False</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Created directory.&quot;</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">True</span>
-</div>
-<div class="viewcode-block" id="create_uid_email"><a class="viewcode-back" href="../../gnupg.html#gnupg._util.create_uid_email">[docs]</a><span class="k">def</span> <span class="nf">create_uid_email</span><span class="p">(</span><span class="n">username</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">hostname</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Create an email address suitable for a UID on a GnuPG key.</span>
-
-<span class="sd"> :param str username: The username portion of an email address. If None,</span>
-<span class="sd"> defaults to the username of the running Python</span>
-<span class="sd"> process.</span>
-
-<span class="sd"> :param str hostname: The FQDN portion of an email address. If None, the</span>
-<span class="sd"> hostname is obtained from gethostname(2).</span>
-
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: A string formatted as &lt;username&gt;@&lt;hostname&gt;.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="n">hostname</span><span class="p">:</span>
- <span class="n">hostname</span> <span class="o">=</span> <span class="n">hostname</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="s">&#39;_&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">username</span><span class="p">:</span>
- <span class="k">try</span><span class="p">:</span> <span class="n">username</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s">&#39;LOGNAME&#39;</span><span class="p">]</span>
- <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span> <span class="n">username</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s">&#39;USERNAME&#39;</span><span class="p">]</span>
-
- <span class="k">if</span> <span class="ow">not</span> <span class="n">hostname</span><span class="p">:</span> <span class="n">hostname</span> <span class="o">=</span> <span class="n">gethostname</span><span class="p">()</span>
-
- <span class="n">uid</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">@</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">username</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="s">&#39;_&#39;</span><span class="p">),</span> <span class="n">hostname</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">username</span> <span class="o">=</span> <span class="n">username</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="s">&#39;_&#39;</span><span class="p">)</span>
- <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">hostname</span><span class="p">)</span> <span class="ow">and</span> <span class="p">(</span><span class="n">username</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">&#39;@&#39;</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">):</span>
- <span class="n">uid</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">@</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">gethostname</span><span class="p">())</span>
- <span class="k">elif</span> <span class="n">hostname</span><span class="p">:</span>
- <span class="n">uid</span> <span class="o">=</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s">@</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">username</span><span class="p">,</span> <span class="n">hostname</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">uid</span> <span class="o">=</span> <span class="n">username</span>
-
- <span class="k">return</span> <span class="n">uid</span>
-</div>
-<div class="viewcode-block" id="_deprefix"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._deprefix">[docs]</a><span class="k">def</span> <span class="nf">_deprefix</span><span class="p">(</span><span class="n">line</span><span class="p">,</span> <span class="n">prefix</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Remove the prefix string from the beginning of line, if it exists.</span>
-
-<span class="sd"> :param string line: A line, such as one output by GnuPG&#39;s status-fd.</span>
-<span class="sd"> :param string prefix: A substring to remove from the beginning of</span>
-<span class="sd"> ``line``. Case insensitive.</span>
-<span class="sd"> :type callback: callable</span>
-<span class="sd"> :param callback: Function to call if the prefix is found. The signature to</span>
-<span class="sd"> callback will be only one argument, the ``line`` without the ``prefix``, i.e.</span>
-<span class="sd"> ``callback(line)``.</span>
-<span class="sd"> :rtype: string</span>
-<span class="sd"> :returns: If the prefix was found, the ``line`` without the prefix is</span>
-<span class="sd"> returned. Otherwise, the original ``line`` is returned.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">assert</span> <span class="n">line</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s">u&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">prefix</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
- <span class="k">except</span> <span class="ne">AssertionError</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Line doesn&#39;t start with prefix &#39;</span><span class="si">%s</span><span class="s">&#39;:</span><span class="se">\n</span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">prefix</span><span class="p">,</span> <span class="n">line</span><span class="p">))</span>
- <span class="k">return</span> <span class="n">line</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="n">newline</span> <span class="o">=</span> <span class="n">line</span><span class="p">[</span><span class="nb">len</span><span class="p">(</span><span class="n">prefix</span><span class="p">):]</span>
- <span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">callback</span><span class="p">(</span><span class="n">newline</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">exc</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">newline</span>
-</div>
-<div class="viewcode-block" id="_find_binary"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._find_binary">[docs]</a><span class="k">def</span> <span class="nf">_find_binary</span><span class="p">(</span><span class="n">binary</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Find the absolute path to the GnuPG binary.</span>
-
-<span class="sd"> Also run checks that the binary is not a symlink, and check that</span>
-<span class="sd"> our process real uid has exec permissions.</span>
-
-<span class="sd"> :param str binary: The path to the GnuPG binary.</span>
-<span class="sd"> :raises: :exc:`~exceptions.RuntimeError` if it appears that GnuPG is not</span>
-<span class="sd"> installed.</span>
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: The absolute path to the GnuPG binary to use, if no exceptions</span>
-<span class="sd"> occur.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">found</span> <span class="o">=</span> <span class="bp">None</span>
- <span class="k">if</span> <span class="n">binary</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isabs</span><span class="p">(</span><span class="n">binary</span><span class="p">):</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">found</span> <span class="o">=</span> <span class="n">_which</span><span class="p">(</span><span class="n">binary</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Found potential binary paths: </span><span class="si">%s</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="s">&#39;</span><span class="se">\n</span><span class="s">&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="n">path</span> <span class="k">for</span> <span class="n">path</span> <span class="ow">in</span> <span class="n">found</span><span class="p">]))</span>
- <span class="n">found</span> <span class="o">=</span> <span class="n">found</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">except</span> <span class="ne">IndexError</span> <span class="k">as</span> <span class="n">ie</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">&quot;Could not determine absolute path of binary: &#39;</span><span class="si">%s</span><span class="s">&#39;&quot;</span>
- <span class="o">%</span> <span class="n">binary</span><span class="p">)</span>
- <span class="k">elif</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">binary</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">X_OK</span><span class="p">):</span>
- <span class="n">found</span> <span class="o">=</span> <span class="n">binary</span>
- <span class="k">if</span> <span class="n">found</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">try</span><span class="p">:</span> <span class="n">found</span> <span class="o">=</span> <span class="n">_which</span><span class="p">(</span><span class="s">&#39;gpg&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">except</span> <span class="ne">IndexError</span> <span class="k">as</span> <span class="n">ie</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;Could not find binary for &#39;gpg&#39;.&quot;</span><span class="p">)</span>
- <span class="k">try</span><span class="p">:</span> <span class="n">found</span> <span class="o">=</span> <span class="n">_which</span><span class="p">(</span><span class="s">&#39;gpg2&#39;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
- <span class="k">except</span> <span class="ne">IndexError</span> <span class="k">as</span> <span class="n">ie</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">&quot;Could not find binary for &#39;gpg2&#39;.&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">found</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s">&quot;GnuPG is not installed!&quot;</span><span class="p">)</span>
-
- <span class="k">try</span><span class="p">:</span>
- <span class="k">assert</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isabs</span><span class="p">(</span><span class="n">found</span><span class="p">),</span> <span class="s">&quot;Path to gpg binary not absolute&quot;</span>
- <span class="k">assert</span> <span class="ow">not</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">islink</span><span class="p">(</span><span class="n">found</span><span class="p">),</span> <span class="s">&quot;Path to gpg binary is symlink&quot;</span>
- <span class="k">assert</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">found</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">X_OK</span><span class="p">),</span> <span class="s">&quot;Lacking +x perms for gpg binary&quot;</span>
- <span class="k">except</span> <span class="p">(</span><span class="ne">AssertionError</span><span class="p">,</span> <span class="ne">AttributeError</span><span class="p">)</span> <span class="k">as</span> <span class="n">ae</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">ae</span><span class="p">))</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="n">found</span>
-</div>
-<div class="viewcode-block" id="_has_readwrite"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._has_readwrite">[docs]</a><span class="k">def</span> <span class="nf">_has_readwrite</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> Determine if the real uid/gid of the executing user has read and write</span>
-<span class="sd"> permissions for a directory or a file.</span>
-
-<span class="sd"> :param str path: The path to the directory or file to check permissions</span>
-<span class="sd"> for.</span>
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if real uid/gid has read+write permissions, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">R_OK</span> <span class="o">^</span> <span class="n">os</span><span class="o">.</span><span class="n">W_OK</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_is_file"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._is_file">[docs]</a><span class="k">def</span> <span class="nf">_is_file</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that the size of the thing which is supposed to be a filename has</span>
-<span class="sd"> size greater than zero, without following symbolic links or using</span>
-<span class="sd"> :func:os.path.isfile.</span>
-
-<span class="sd"> :param filename: An object to check.</span>
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if **filename** is file-like, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">statinfo</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">lstat</span><span class="p">(</span><span class="n">filename</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;lstat(</span><span class="si">%r</span><span class="s">) with type=</span><span class="si">%s</span><span class="s"> gave us </span><span class="si">%r</span><span class="s">&quot;</span>
- <span class="o">%</span> <span class="p">(</span><span class="nb">repr</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="nb">type</span><span class="p">(</span><span class="n">filename</span><span class="p">),</span> <span class="nb">repr</span><span class="p">(</span><span class="n">statinfo</span><span class="p">)))</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">statinfo</span><span class="o">.</span><span class="n">st_size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">):</span>
- <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s">&quot;&#39;</span><span class="si">%s</span><span class="s">&#39; appears to be an empty file!&quot;</span> <span class="o">%</span> <span class="n">filename</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">OSError</span> <span class="k">as</span> <span class="n">oserr</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">oserr</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">filename</span> <span class="o">==</span> <span class="s">&#39;-&#39;</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Got &#39;-&#39; for filename, assuming sys.stdin...&quot;</span><span class="p">)</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">,</span> <span class="ne">IOError</span><span class="p">)</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
- <span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="n">err</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
-</div>
-<div class="viewcode-block" id="_is_stream"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._is_stream">[docs]</a><span class="k">def</span> <span class="nf">_is_stream</span><span class="p">(</span><span class="nb">input</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that the input is a byte stream.</span>
-
-<span class="sd"> :param input: An object provided for reading from or writing to.</span>
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if :param:input is a stream, False if otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">BytesIO</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">input</span><span class="p">,</span> <span class="n">StringIO</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_is_list_or_tuple"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._is_list_or_tuple">[docs]</a><span class="k">def</span> <span class="nf">_is_list_or_tuple</span><span class="p">(</span><span class="n">instance</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Check that ``instance`` is a list or tuple.</span>
-
-<span class="sd"> :param instance: The object to type check.</span>
-<span class="sd"> :rtype: bool</span>
-<span class="sd"> :returns: True if ``instance`` is a list or tuple, False otherwise.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">instance</span><span class="p">,</span> <span class="p">(</span><span class="nb">list</span><span class="p">,</span> <span class="nb">tuple</span><span class="p">,))</span>
-</div>
-<div class="viewcode-block" id="_is_gpg1"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._is_gpg1">[docs]</a><span class="k">def</span> <span class="nf">_is_gpg1</span><span class="p">(</span><span class="n">version</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Returns True if using GnuPG version 1.x.</span>
-
-<span class="sd"> :param tuple version: A tuple of three integers indication major, minor,</span>
-<span class="sd"> and micro version numbers.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="p">(</span><span class="n">major</span><span class="p">,</span> <span class="n">minor</span><span class="p">,</span> <span class="n">micro</span><span class="p">)</span> <span class="o">=</span> <span class="n">_match_version_string</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">major</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
-</div>
-<div class="viewcode-block" id="_is_gpg2"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._is_gpg2">[docs]</a><span class="k">def</span> <span class="nf">_is_gpg2</span><span class="p">(</span><span class="n">version</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Returns True if using GnuPG version 2.x.</span>
-
-<span class="sd"> :param tuple version: A tuple of three integers indication major, minor,</span>
-<span class="sd"> and micro version numbers.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="p">(</span><span class="n">major</span><span class="p">,</span> <span class="n">minor</span><span class="p">,</span> <span class="n">micro</span><span class="p">)</span> <span class="o">=</span> <span class="n">_match_version_string</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">major</span> <span class="o">==</span> <span class="mi">2</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">True</span>
- <span class="k">return</span> <span class="bp">False</span>
-</div>
-<div class="viewcode-block" id="_make_binary_stream"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._make_binary_stream">[docs]</a><span class="k">def</span> <span class="nf">_make_binary_stream</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="n">encoding</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;</span>
-<span class="sd"> xxx fill me in</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">if</span> <span class="n">_py3k</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
- <span class="n">s</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">encoding</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">s</span><span class="p">)</span> <span class="ow">is</span> <span class="ow">not</span> <span class="nb">str</span><span class="p">:</span>
- <span class="n">s</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">encoding</span><span class="p">)</span>
- <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span>
- <span class="n">rv</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
- <span class="n">rv</span> <span class="o">=</span> <span class="n">StringIO</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">rv</span>
-</div>
-<div class="viewcode-block" id="_make_passphrase"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._make_passphrase">[docs]</a><span class="k">def</span> <span class="nf">_make_passphrase</span><span class="p">(</span><span class="n">length</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">save</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span> <span class="nb">file</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Create a passphrase and write it to a file that only the user can read.</span>
-
-<span class="sd"> This is not very secure, and should not be relied upon for actual key</span>
-<span class="sd"> passphrases.</span>
-
-<span class="sd"> :param int length: The length in bytes of the string to generate.</span>
-
-<span class="sd"> :param file file: The file to save the generated passphrase in. If not</span>
-<span class="sd"> given, defaults to &#39;passphrase-&lt;the real user id&gt;-&lt;seconds since</span>
-<span class="sd"> epoch&gt;&#39; in the top-level directory.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">if</span> <span class="ow">not</span> <span class="n">length</span><span class="p">:</span>
- <span class="n">length</span> <span class="o">=</span> <span class="mi">40</span>
-
- <span class="n">passphrase</span> <span class="o">=</span> <span class="n">_make_random_string</span><span class="p">(</span><span class="n">length</span><span class="p">)</span>
-
- <span class="k">if</span> <span class="n">save</span><span class="p">:</span>
- <span class="n">ruid</span><span class="p">,</span> <span class="n">euid</span><span class="p">,</span> <span class="n">suid</span> <span class="o">=</span> <span class="n">psutil</span><span class="o">.</span><span class="n">Process</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">())</span><span class="o">.</span><span class="n">uids</span>
- <span class="n">gid</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getgid</span><span class="p">()</span>
- <span class="n">now</span> <span class="o">=</span> <span class="n">mktime</span><span class="p">(</span><span class="n">localtime</span><span class="p">())</span>
-
- <span class="k">if</span> <span class="ow">not</span> <span class="nb">file</span><span class="p">:</span>
- <span class="n">filename</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="s">&#39;passphrase-</span><span class="si">%s</span><span class="s">-</span><span class="si">%s</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">uid</span><span class="p">,</span> <span class="n">now</span><span class="p">)</span>
- <span class="nb">file</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">_repo</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
-
- <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="s">&#39;a&#39;</span><span class="p">)</span> <span class="k">as</span> <span class="n">fh</span><span class="p">:</span>
- <span class="n">fh</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">passphrase</span><span class="p">)</span>
- <span class="n">fh</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
- <span class="n">fh</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
- <span class="n">os</span><span class="o">.</span><span class="n">chmod</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">stat</span><span class="o">.</span><span class="n">S_IRUSR</span> <span class="o">|</span> <span class="n">stat</span><span class="o">.</span><span class="n">S_IWUSR</span><span class="p">)</span>
- <span class="n">os</span><span class="o">.</span><span class="n">chown</span><span class="p">(</span><span class="nb">file</span><span class="p">,</span> <span class="n">ruid</span><span class="p">,</span> <span class="n">gid</span><span class="p">)</span>
-
- <span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s">&quot;Generated passphrase saved to </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="nb">file</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">passphrase</span>
-</div>
-<div class="viewcode-block" id="_make_random_string"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._make_random_string">[docs]</a><span class="k">def</span> <span class="nf">_make_random_string</span><span class="p">(</span><span class="n">length</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Returns a random lowercase, uppercase, alphanumerical string.</span>
-
-<span class="sd"> :param int length: The length in bytes of the string to generate.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">chars</span> <span class="o">=</span> <span class="n">string</span><span class="o">.</span><span class="n">ascii_lowercase</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">ascii_uppercase</span> <span class="o">+</span> <span class="n">string</span><span class="o">.</span><span class="n">digits</span>
- <span class="k">return</span> <span class="s">&#39;&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">chars</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">length</span><span class="p">))</span>
-</div>
-<div class="viewcode-block" id="_match_version_string"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._match_version_string">[docs]</a><span class="k">def</span> <span class="nf">_match_version_string</span><span class="p">(</span><span class="n">version</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Sort a binary version string into major, minor, and micro integers.</span>
-
-<span class="sd"> :param str version: A version string in the form x.x.x</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">regex</span> <span class="o">=</span> <span class="n">re</span><span class="o">.</span><span class="n">compile</span><span class="p">(</span><span class="s">&#39;(\d)*(\.)*(\d)*(\.)*(\d)*&#39;</span><span class="p">)</span>
- <span class="n">matched</span> <span class="o">=</span> <span class="n">regex</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">version</span><span class="p">)</span>
- <span class="n">g</span> <span class="o">=</span> <span class="n">matched</span><span class="o">.</span><span class="n">groups</span><span class="p">()</span>
- <span class="n">major</span><span class="p">,</span> <span class="n">minor</span><span class="p">,</span> <span class="n">micro</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="mi">0</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="mi">2</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="n">g</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
- <span class="k">return</span> <span class="p">(</span><span class="n">major</span><span class="p">,</span> <span class="n">minor</span><span class="p">,</span> <span class="n">micro</span><span class="p">)</span>
-</div>
-<div class="viewcode-block" id="_next_year"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._next_year">[docs]</a><span class="k">def</span> <span class="nf">_next_year</span><span class="p">():</span>
- <span class="sd">&quot;&quot;&quot;Get the date of today plus one year.</span>
-
-<span class="sd"> :rtype: str</span>
-<span class="sd"> :returns: The date of this day next year, in the format &#39;%Y-%m-%d&#39;.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">now</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span><span class="o">.</span><span class="n">__str__</span><span class="p">()</span>
- <span class="n">date</span> <span class="o">=</span> <span class="n">now</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39; &#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
- <span class="n">year</span><span class="p">,</span> <span class="n">month</span><span class="p">,</span> <span class="n">day</span> <span class="o">=</span> <span class="n">date</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s">&#39;-&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
- <span class="n">next_year</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="n">year</span><span class="p">)</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
- <span class="k">return</span> <span class="s">&#39;-&#39;</span><span class="o">.</span><span class="n">join</span><span class="p">((</span><span class="n">next_year</span><span class="p">,</span> <span class="n">month</span><span class="p">,</span> <span class="n">day</span><span class="p">))</span>
-</div>
-<div class="viewcode-block" id="_now"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._now">[docs]</a><span class="k">def</span> <span class="nf">_now</span><span class="p">():</span>
- <span class="sd">&quot;&quot;&quot;Get a timestamp for right now, formatted according to ISO 8601.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="n">datetime</span><span class="o">.</span><span class="n">isoformat</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">())</span>
-</div>
-<div class="viewcode-block" id="_separate_keyword"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._separate_keyword">[docs]</a><span class="k">def</span> <span class="nf">_separate_keyword</span><span class="p">(</span><span class="n">line</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Split the line, and return (first_word, the_rest).&quot;&quot;&quot;</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="n">first</span><span class="p">,</span> <span class="n">rest</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
- <span class="k">except</span> <span class="ne">ValueError</span><span class="p">:</span>
- <span class="n">first</span> <span class="o">=</span> <span class="n">line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
- <span class="n">rest</span> <span class="o">=</span> <span class="s">&#39;&#39;</span>
- <span class="k">return</span> <span class="n">first</span><span class="p">,</span> <span class="n">rest</span>
-</div>
-<div class="viewcode-block" id="_threaded_copy_data"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._threaded_copy_data">[docs]</a><span class="k">def</span> <span class="nf">_threaded_copy_data</span><span class="p">(</span><span class="n">instream</span><span class="p">,</span> <span class="n">outstream</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Copy data from one stream to another in a separate thread.</span>
-
-<span class="sd"> Wraps ``_copy_data()`` in a :class:`threading.Thread`.</span>
-
-<span class="sd"> :type instream: :class:`io.BytesIO` or :class:`io.StringIO`</span>
-<span class="sd"> :param instream: A byte stream to read from.</span>
-<span class="sd"> :param file outstream: The file descriptor of a tmpfile to write to.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">copy_thread</span> <span class="o">=</span> <span class="n">threading</span><span class="o">.</span><span class="n">Thread</span><span class="p">(</span><span class="n">target</span><span class="o">=</span><span class="n">_copy_data</span><span class="p">,</span>
- <span class="n">args</span><span class="o">=</span><span class="p">(</span><span class="n">instream</span><span class="p">,</span> <span class="n">outstream</span><span class="p">))</span>
- <span class="n">copy_thread</span><span class="o">.</span><span class="n">setDaemon</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&#39;</span><span class="si">%r</span><span class="s">, </span><span class="si">%r</span><span class="s">, </span><span class="si">%r</span><span class="s">&#39;</span><span class="p">,</span> <span class="n">copy_thread</span><span class="p">,</span> <span class="n">instream</span><span class="p">,</span> <span class="n">outstream</span><span class="p">)</span>
- <span class="n">copy_thread</span><span class="o">.</span><span class="n">start</span><span class="p">()</span>
- <span class="k">return</span> <span class="n">copy_thread</span>
-</div>
-<div class="viewcode-block" id="_utc_epoch"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._utc_epoch">[docs]</a><span class="k">def</span> <span class="nf">_utc_epoch</span><span class="p">():</span>
- <span class="sd">&quot;&quot;&quot;Get the seconds since epoch.&quot;&quot;&quot;</span>
- <span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="n">mktime</span><span class="p">(</span><span class="n">localtime</span><span class="p">()))</span>
-</div>
-<div class="viewcode-block" id="_which"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._which">[docs]</a><span class="k">def</span> <span class="nf">_which</span><span class="p">(</span><span class="n">executable</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">X_OK</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Borrowed from Twisted&#39;s :mod:twisted.python.proutils .</span>
-
-<span class="sd"> Search PATH for executable files with the given name.</span>
-
-<span class="sd"> On newer versions of MS-Windows, the PATHEXT environment variable will be</span>
-<span class="sd"> set to the list of file extensions for files considered executable. This</span>
-<span class="sd"> will normally include things like &quot;.EXE&quot;. This fuction will also find files</span>
-<span class="sd"> with the given name ending with any of these extensions.</span>
-
-<span class="sd"> On MS-Windows the only flag that has any meaning is os.F_OK. Any other</span>
-<span class="sd"> flags will be ignored.</span>
-
-<span class="sd"> Note: This function does not help us prevent an attacker who can already</span>
-<span class="sd"> manipulate the environment&#39;s PATH settings from placing malicious code</span>
-<span class="sd"> higher in the PATH. It also does happily follows links.</span>
-
-<span class="sd"> :param str name: The name for which to search.</span>
-<span class="sd"> :param int flags: Arguments to L{os.access}.</span>
-<span class="sd"> :rtype: list</span>
-<span class="sd"> :returns: A list of the full paths to files found, in the order in which</span>
-<span class="sd"> they were found.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
- <span class="n">exts</span> <span class="o">=</span> <span class="nb">filter</span><span class="p">(</span><span class="bp">None</span><span class="p">,</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;PATHEXT&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">))</span>
- <span class="n">path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">path</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="p">[]</span>
- <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">&#39;PATH&#39;</span><span class="p">,</span> <span class="s">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">pathsep</span><span class="p">):</span>
- <span class="n">p</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">executable</span><span class="p">)</span>
- <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
- <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
- <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">exts</span><span class="p">:</span>
- <span class="n">pext</span> <span class="o">=</span> <span class="n">p</span> <span class="o">+</span> <span class="n">e</span>
- <span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">access</span><span class="p">(</span><span class="n">pext</span><span class="p">,</span> <span class="n">flags</span><span class="p">):</span>
- <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">pext</span><span class="p">)</span>
- <span class="k">return</span> <span class="n">result</span>
-</div>
-<div class="viewcode-block" id="_write_passphrase"><a class="viewcode-back" href="../../gnupg.html#gnupg._util._write_passphrase">[docs]</a><span class="k">def</span> <span class="nf">_write_passphrase</span><span class="p">(</span><span class="n">stream</span><span class="p">,</span> <span class="n">passphrase</span><span class="p">,</span> <span class="n">encoding</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Write the passphrase from memory to the GnuPG process&#39; stdin.</span>
-
-<span class="sd"> :type stream: file, :class:`~io.BytesIO`, or :class:`~io.StringIO`</span>
-<span class="sd"> :param stream: The input file descriptor to write the password to.</span>
-<span class="sd"> :param str passphrase: The passphrase for the secret key material.</span>
-<span class="sd"> :param str encoding: The data encoding expected by GnuPG. Usually, this</span>
-<span class="sd"> is ``sys.getfilesystemencoding()``.</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="n">passphrase</span> <span class="o">=</span> <span class="s">&#39;</span><span class="si">%s</span><span class="se">\n</span><span class="s">&#39;</span> <span class="o">%</span> <span class="n">passphrase</span>
- <span class="n">passphrase</span> <span class="o">=</span> <span class="n">passphrase</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">encoding</span><span class="p">)</span>
- <span class="n">stream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">passphrase</span><span class="p">)</span>
- <span class="n">log</span><span class="o">.</span><span class="n">debug</span><span class="p">(</span><span class="s">&quot;Wrote passphrase on stdin.&quot;</span><span class="p">)</span>
-
-</div>
-<div class="viewcode-block" id="InheritableProperty"><a class="viewcode-back" href="../../gnupg.html#gnupg._util.InheritableProperty">[docs]</a><span class="k">class</span> <span class="nc">InheritableProperty</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;Based on the emulation of PyProperty_Type() in Objects/descrobject.c&quot;&quot;&quot;</span>
-
- <span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fget</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">fset</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">fdel</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">doc</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fget</span> <span class="o">=</span> <span class="n">fget</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fset</span> <span class="o">=</span> <span class="n">fset</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fdel</span> <span class="o">=</span> <span class="n">fdel</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">__doc__</span> <span class="o">=</span> <span class="n">doc</span>
-
- <span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">objtype</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
- <span class="k">if</span> <span class="n">obj</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fget</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">&quot;unreadable attribute&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fget</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;&lt;lambda&gt;&#39;</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">fget</span><span class="o">.</span><span class="n">__name__</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">fget</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fget</span><span class="o">.</span><span class="n">__name__</span><span class="p">)()</span>
-
- <span class="k">def</span> <span class="nf">__set__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fset</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">&quot;can&#39;t set attribute&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fset</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;&lt;lambda&gt;&#39;</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">fset</span><span class="o">.</span><span class="n">__name__</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fset</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fset</span><span class="o">.</span><span class="n">__name__</span><span class="p">)(</span><span class="n">value</span><span class="p">)</span>
-
- <span class="k">def</span> <span class="nf">__delete__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">):</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fdel</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="s">&quot;can&#39;t delete attribute&quot;</span><span class="p">)</span>
- <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">fdel</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="s">&#39;&lt;lambda&gt;&#39;</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">fdel</span><span class="o">.</span><span class="n">__name__</span><span class="p">:</span>
- <span class="bp">self</span><span class="o">.</span><span class="n">fdel</span><span class="p">(</span><span class="n">obj</span><span class="p">)</span>
- <span class="k">else</span><span class="p">:</span>
- <span class="nb">getattr</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fdel</span><span class="o">.</span><span class="n">__name__</span><span class="p">)()</span>
-
-</div>
-<div class="viewcode-block" id="Storage"><a class="viewcode-back" href="../../gnupg.html#gnupg._util.Storage">[docs]</a><span class="k">class</span> <span class="nc">Storage</span><span class="p">(</span><span class="nb">dict</span><span class="p">):</span>
- <span class="sd">&quot;&quot;&quot;A dictionary where keys are stored as class attributes.</span>
-
-<span class="sd"> For example, ``obj.foo`` can be used in addition to ``obj[&#39;foo&#39;]``:</span>
-
-<span class="sd"> &gt;&gt;&gt; o = Storage(a=1)</span>
-<span class="sd"> &gt;&gt;&gt; o.a</span>
-<span class="sd"> 1</span>
-<span class="sd"> &gt;&gt;&gt; o[&#39;a&#39;]</span>
-<span class="sd"> 1</span>
-<span class="sd"> &gt;&gt;&gt; o.a = 2</span>
-<span class="sd"> &gt;&gt;&gt; o[&#39;a&#39;]</span>
-<span class="sd"> 2</span>
-<span class="sd"> &gt;&gt;&gt; del o.a</span>
-<span class="sd"> &gt;&gt;&gt; o.a</span>
-<span class="sd"> None</span>
-<span class="sd"> &quot;&quot;&quot;</span>
- <span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
- <span class="k">except</span> <span class="ne">KeyError</span> <span class="k">as</span> <span class="n">k</span><span class="p">:</span>
- <span class="k">return</span> <span class="bp">None</span>
-
- <span class="k">def</span> <span class="nf">__setattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
-
- <span class="k">def</span> <span class="nf">__delattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
- <span class="k">try</span><span class="p">:</span>
- <span class="k">del</span> <span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
- <span class="k">except</span> <span class="ne">KeyError</span> <span class="k">as</span> <span class="n">k</span><span class="p">:</span>
- <span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="n">k</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
-
- <span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="s">&#39;&lt;Storage &#39;</span> <span class="o">+</span> <span class="nb">dict</span><span class="o">.</span><span class="n">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="s">&#39;&gt;&#39;</span>
-
- <span class="k">def</span> <span class="nf">__getstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
- <span class="k">return</span> <span class="nb">dict</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
-
- <span class="k">def</span> <span class="nf">__setstate__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
- <span class="k">for</span> <span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">v</span><span class="p">)</span> <span class="ow">in</span> <span class="n">value</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
- <span class="bp">self</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">=</span> <span class="n">v</span></div>
-</pre></div>
-
- </div>
- </div>
- </div>
- </div>
- <div class="sidebar">
- <h3>Table Of Contents</h3>
- <ul>
-<li class="toctree-l1"><a class="reference internal" href="../../gnupg.html">gnupg package</a></li>
-</ul>
-
- <h3 style="margin-top: 1.5em;">Search</h3>
- <form class="search" action="../../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- <div class="footer-wrapper">
- <div class="footer">
- <div class="left">
- <a href="../../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../../genindex.html" title="General Index"
- >index</a>
- </div>
-
- <div class="right">
-
- <div class="footer">
- &copy; Copyright 2013-2014, Isis Agora Lovecruft.
- Last updated on Saturday, 02 August 2014.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- </body>
-</html> \ No newline at end of file
diff --git a/docs/_build/html/_modules/index.html b/docs/_build/html/_modules/index.html
deleted file mode 100644
index d032746..0000000
--- a/docs/_build/html/_modules/index.html
+++ /dev/null
@@ -1,104 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-<html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-
- <title>Overview: module code &mdash; gnupg unknown documentation</title>
-
- <link rel="stylesheet" href="../_static/agogo.css" type="text/css" />
- <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
-
- <script type="text/javascript">
- var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '../',
- VERSION: 'unknown',
- COLLAPSE_INDEX: false,
- FILE_SUFFIX: '.html',
- HAS_SOURCE: true
- };
- </script>
- <script type="text/javascript" src="../_static/jquery.js"></script>
- <script type="text/javascript" src="../_static/underscore.js"></script>
- <script type="text/javascript" src="../_static/doctools.js"></script>
- <link rel="top" title="gnupg unknown documentation" href="../index.html" />
- </head>
- <body>
- <div class="header-wrapper">
- <div class="header">
- <div class="headertitle"><a
- href="../index.html">gnupg: Python Module Documentation</a></div>
- <div class="rel">
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../genindex.html" title="General Index"
- accesskey="I">index</a>
- </div>
- </div>
- </div>
-
- <div class="content-wrapper">
- <div class="content">
- <div class="document">
-
- <div class="documentwrapper">
- <div class="bodywrapper">
- <div class="body">
-
- <h1>All modules for which code is available</h1>
-<ul><li><a href="gnupg.html">gnupg</a></li>
-<ul><li><a href="gnupg/_meta.html">gnupg._meta</a></li>
-<li><a href="gnupg/_parsers.html">gnupg._parsers</a></li>
-<li><a href="gnupg/_util.html">gnupg._util</a></li>
-</ul></ul>
-
- </div>
- </div>
- </div>
- </div>
- <div class="sidebar">
- <h3>Table Of Contents</h3>
- <ul>
-<li class="toctree-l1"><a class="reference internal" href="../gnupg.html">gnupg package</a></li>
-</ul>
-
- <h3 style="margin-top: 1.5em;">Search</h3>
- <form class="search" action="../search.html" method="get">
- <input type="text" name="q" />
- <input type="submit" value="Go" />
- <input type="hidden" name="check_keywords" value="yes" />
- <input type="hidden" name="area" value="default" />
- </form>
- <p class="searchtip" style="font-size: 90%">
- Enter search terms or a module, class or function name.
- </p>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- <div class="footer-wrapper">
- <div class="footer">
- <div class="left">
- <a href="../py-modindex.html" title="Python Module Index"
- >modules</a> |
- <a href="../genindex.html" title="General Index"
- >index</a>
- </div>
-
- <div class="right">
-
- <div class="footer">
- &copy; Copyright 2013-2014, Isis Agora Lovecruft.
- Last updated on Saturday, 02 August 2014.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2.2.
- </div>
- </div>
- <div class="clearer"></div>
- </div>
- </div>
-
- </body>
-</html> \ No newline at end of file