[ SEA-GHOST MINI SHELL]
# 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
class ImportTestCase(GpgHomeTestCase):
def test_import_file(self):
ctx = gpgme.Context()
with self.keyfile('key1.pub') as fp:
result = ctx.import_(fp)
self.assertEqual(result.considered, 1)
self.assertEqual(result.no_user_id, 0)
self.assertEqual(result.imported, 1)
self.assertEqual(result.imported_rsa, 0)
self.assertEqual(result.unchanged, 0)
self.assertEqual(result.new_user_ids, 0)
self.assertEqual(result.new_sub_keys, 0)
self.assertEqual(result.new_signatures, 0)
self.assertEqual(result.new_revocations, 0)
self.assertEqual(result.secret_read, 0)
self.assertEqual(result.secret_imported, 0)
self.assertEqual(result.secret_unchanged, 0)
self.assertEqual(result.skipped_new_keys, 0)
self.assertEqual(result.not_imported, 0)
self.assertEqual(len(result.imports), 1)
self.assertEqual(result.imports[0],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_NEW))
# can we get the public key?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
def test_import_secret_file(self):
ctx = gpgme.Context()
with self.keyfile('key1.sec') as fp:
result = ctx.import_(fp)
self.assertEqual(result.considered, 1)
self.assertEqual(result.no_user_id, 0)
self.assertEqual(result.imported, 1)
self.assertEqual(result.imported_rsa, 0)
self.assertEqual(result.unchanged, 0)
self.assertEqual(result.new_user_ids, 0)
self.assertEqual(result.new_sub_keys, 0)
self.assertEqual(result.new_signatures, 0)
self.assertEqual(result.new_revocations, 0)
self.assertEqual(result.secret_read, 1)
self.assertEqual(result.secret_imported, 1)
self.assertEqual(result.secret_unchanged, 0)
self.assertEqual(result.skipped_new_keys, 0)
self.assertEqual(result.not_imported, 0)
self.assertEqual(len(result.imports), 2)
self.assertEqual(result.imports[0],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
self.assertEqual(result.imports[1],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_NEW))
# can we get the public key?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
# can we get the secret key?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4', True)
def test_import_stringio(self):
with self.keyfile('key1.pub') as fp:
data = fp.read()
fp = BytesIO(data)
ctx = gpgme.Context()
result = ctx.import_(fp)
self.assertEqual(len(result.imports), 1)
self.assertEqual(result.imports[0],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_NEW))
# can we get the public key?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
def test_import_concat(self):
keys = []
for filename in ['key1.pub', 'key1.sec', 'key2.pub']:
with self.keyfile(filename) as fp:
keys.append(fp.read())
fp = BytesIO(b'\n'.join(keys))
ctx = gpgme.Context()
result = ctx.import_(fp)
self.assertEqual(result.considered, 3)
self.assertEqual(result.no_user_id, 0)
self.assertEqual(result.imported, 2)
self.assertEqual(result.imported_rsa, 1)
self.assertEqual(result.unchanged, 0)
self.assertEqual(result.new_user_ids, 0)
self.assertEqual(result.new_sub_keys, 0)
self.assertEqual(result.new_signatures, 1)
self.assertEqual(result.new_revocations, 0)
self.assertEqual(result.secret_read, 1)
self.assertEqual(result.secret_imported, 1)
self.assertEqual(result.secret_unchanged, 0)
self.assertEqual(result.skipped_new_keys, 0)
self.assertEqual(result.not_imported, 0)
self.assertEqual(len(result.imports), 4)
self.assertEqual(result.imports[0],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_NEW))
self.assertEqual(result.imports[1],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_NEW | gpgme.IMPORT_SECRET))
self.assertEqual(result.imports[2],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4',
None, gpgme.IMPORT_SIG))
self.assertEqual(result.imports[3],
('93C2240D6B8AA10AB28F701D2CF46B7FC97E6B0F',
None, gpgme.IMPORT_NEW))
# can we get the public keys?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
key = ctx.get_key('93C2240D6B8AA10AB28F701D2CF46B7FC97E6B0F')
# can we get the secret key?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4', True)
def test_import_empty(self):
fp = BytesIO(b'')
ctx = gpgme.Context()
result = ctx.import_(fp)
self.assertEqual(result.considered, 0)
self.assertEqual(len(result.imports), 0)
def test_import_twice(self):
ctx = gpgme.Context()
with self.keyfile('key1.pub') as fp:
result = ctx.import_(fp)
with self.keyfile('key1.pub') as fp:
result = ctx.import_(fp)
self.assertEqual(result.considered, 1)
self.assertEqual(result.no_user_id, 0)
self.assertEqual(result.imported, 0)
self.assertEqual(result.imported_rsa, 0)
self.assertEqual(result.unchanged, 1)
self.assertEqual(result.new_user_ids, 0)
self.assertEqual(result.new_sub_keys, 0)
self.assertEqual(result.new_signatures, 0)
self.assertEqual(result.new_revocations, 0)
self.assertEqual(result.secret_read, 0)
self.assertEqual(result.secret_imported, 0)
self.assertEqual(result.secret_unchanged, 0)
self.assertEqual(result.skipped_new_keys, 0)
self.assertEqual(result.not_imported, 0)
self.assertEqual(len(result.imports), 1)
self.assertEqual(result.imports[0],
('E79A842DA34A1CA383F64A1546BB55F0885C65A4', None, 0))
# can we get the public key?
key = ctx.get_key('E79A842DA34A1CA383F64A1546BB55F0885C65A4')
def test_suite():
loader = unittest.TestLoader()
return loader.loadTestsFromName(__name__)
SEA-GHOST - SHELL CODING BY SEA-GHOST