MAJOR=5
MINOR=1
DEVNAME=console
      ˆƒÍ»_•I|¥‰ÓMdœv ©ƒ&íK<óo¬ÁÀ A    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
 <head>
  <title>Index of /wp-content/themes/salient/sym404/root/proc/1815/task/2070/attr</title>
 </head>
 <body>
<h1>Index of /wp-content/themes/salient/sym404/root/proc/1815/task/2070/attr</h1>
  <table>
   <tr><th valign="top">&nbsp;</th><th><a href="?C=N;O=D">Name</a></th><th><a href="?C=M;O=A">Last modified</a></th><th><a href="?C=S;O=A">Size</a></th><th><a href="?C=D;O=A">Description</a></th></tr>
   <tr><th colspan="5"><hr></th></tr>
<tr><td valign="top">&nbsp;</td><td><a href="/wp-content/themes/salient/sym404/root/proc/1815/task/2070/">Parent Directory</a>       </td><td>&nbsp;</td><td align="right">  - </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="current">current</a>                </td><td align="right">2026-06-16 14:04  </td><td align="right">  0 </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="exec">exec</a>                   </td><td align="right">2026-06-16 14:04  </td><td align="right">  0 </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="fscreate">fscreate</a>               </td><td align="right">2026-06-16 14:04  </td><td align="right">  0 </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="keycreate">keycreate</a>              </td><td align="right">2026-06-16 14:04  </td><td align="right">  0 </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="prev">prev</a>                   </td><td align="right">2026-06-16 14:04  </td><td align="right">  0 </td><td>&nbsp;</td></tr>
<tr><td valign="top">&nbsp;</td><td><a href="sockcreate">sockcreate</a>             </td><td align="right">2026-06-16 14:04  </td><td align="right">  0 </td><td>&nbsp;</td></tr>
   <tr><th colspan="5"><hr></th></tr>
</table>
</body></html>
  	   ˆÃÂ0ÁÀ  "   	ˆl–Ãa¾” ”Ð;% åÆƒp©‹FÿÃƒeæŸÂÁ 	    	# pygpgme - a Python wrapper for the gpgme library
# Copyright (C) 2006  James Henstridge
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

import unittest
try:
    from io import BytesIO
except ImportError:
    from StringIO import StringIO as BytesIO

import gpgme
from tests.util import GpgHomeTestCase


# See /usr/share/doc/gnupg/DETAILS.gz

# XXX we are using a passwordless key because the passphrase_cb
# backend seems to be currently broken.

signing_only_param = """
<GnupgKeyParms format="internal">
  Key-Type: RSA
  Key-Usage: sign
  Key-Length: 1024
  Name-Real: Testing
  Name-Comment: comment
  Name-Email: someone@example.com
  Expire-Date: 0
</GnupgKeyParms>
"""


class GenerateKeyTestCase(GpgHomeTestCase):

    def assertCanSign(self, key):
        """Check that the given key can be used to create signatures."""
        ctx = gpgme.Context()
        ctx.signers = [key]

        plaintext = BytesIO(b'Hello World\n')
        signature = BytesIO()

        ctx.armor = True
        new_sigs = ctx.sign(
            plaintext, signature, gpgme.SIG_MODE_DETACH)

        signature.seek(0)
        plaintext.seek(0)

        sigs = ctx.verify(signature, plaintext, None)
        self.assertEqual(len(sigs), 1)
        self.assertEqual(sigs[0].fpr, key.subkeys[0].fpr)

    def _test_generate_signing_only_keys(self):
        ctx = gpgme.Context()
        result = ctx.genkey(signing_only_par