diff options
Diffstat (limited to 'ipatests/test_ipapython')
| -rw-r--r-- | ipatests/test_ipapython/test_dnssec.py | 41 | ||||
| -rw-r--r-- | ipatests/test_ipapython/test_ipap11helper.py | 277 | ||||
| -rw-r--r-- | ipatests/test_ipapython/test_secrets.py | 55 |
3 files changed, 0 insertions, 373 deletions
diff --git a/ipatests/test_ipapython/test_dnssec.py b/ipatests/test_ipapython/test_dnssec.py deleted file mode 100644 index c4b830e72..000000000 --- a/ipatests/test_ipapython/test_dnssec.py +++ /dev/null @@ -1,41 +0,0 @@ -# -# Copyright (C) 2016 FreeIPA Contributors see COPYING for license -# -""" -Test the `ipapython/dnssec` package. -""" -import dns.name - -from ipapython.dnssec.odsmgr import ODSZoneListReader - - -ZONELIST_XML = """<?xml version="1.0" encoding="UTF-8"?> -<ZoneList> - <Zone name="ipa.example"> - <Policy>default</Policy> - <Adapters> - <Input> - <Adapter type="File">/var/lib/ipa/dns/zone/entryUUID/12345</Adapter> - </Input> - <Output> - <Adapter type="File">/var/lib/ipa/dns/zone/entryUUID/12345</Adapter> - </Output> - </Adapters> - </Zone> -</ZoneList> -""" - - -def test_ods_zonelist_reader(): - uuid = '12345' - name = dns.name.from_text('ipa.example.') - - reader = ODSZoneListReader("<ZoneList/>") - assert reader.mapping == {} - assert reader.names == set() - assert reader.uuids == set() - - reader = ODSZoneListReader(ZONELIST_XML) - assert reader.mapping == {uuid: name} - assert reader.names == {name} - assert reader.uuids == {uuid} diff --git a/ipatests/test_ipapython/test_ipap11helper.py b/ipatests/test_ipapython/test_ipap11helper.py deleted file mode 100644 index 2c8fd2892..000000000 --- a/ipatests/test_ipapython/test_ipap11helper.py +++ /dev/null @@ -1,277 +0,0 @@ -# -*- coding: utf-8 -*- -# -# Copyright (C) 2015 FreeIPA Contributors see COPYING for license -# -""" -Test the `ipapython/ipap11helper/p11helper.c` module. -""" - - -from binascii import hexlify -import os -import os.path -import logging -import subprocess -import tempfile - -import pytest -from ipaplatform.paths import paths - -from ipapython import p11helper as _ipap11helper - -pytestmark = pytest.mark.tier0 - -CONFIG_DATA = """ -# SoftHSM v2 configuration file -directories.tokendir = %s/tokens -objectstore.backend = file -""" - -LIBSOFTHSM = paths.LIBSOFTHSM2_SO -SOFTHSM2_UTIL = paths.SOFTHSM2_UTIL - -logging.basicConfig(level=logging.INFO) -log = logging.getLogger('t') - - -master_key_label = u"master-ž" # random non-ascii character to test unicode -master_key_id = "m" -replica1_key_label = u"replica1" -replica1_key_id = "id1" -replica1_import_label = u"replica1-import" -replica1_import_id = "id1-import" -replica1_new_label = u"replica1-new-label-ž" -replica2_key_label = u"replica2" -replica2_key_id = "id2" -replica_non_existent_label = u"replica-nonexistent" - - -@pytest.fixture(scope="module") -def p11(request): - token_path = tempfile.mkdtemp(prefix='pytest_', suffix='_pkcs11') - os.chdir(token_path) - os.mkdir('tokens') - - with open('softhsm2.conf', 'w') as cfg: - cfg.write(CONFIG_DATA % token_path) - os.environ['SOFTHSM2_CONF'] = os.path.join(token_path, 'softhsm2.conf') - subprocess.check_call([SOFTHSM2_UTIL, '--init-token', '--slot', '0', - '--label', 'test', '--pin', '1234', '--so-pin', - '1234']) - - try: - p11 = _ipap11helper.P11_Helper(0, "1234", LIBSOFTHSM) - except _ipap11helper.Error: - pytest.fail('Failed to initialize the helper object.', pytrace=False) - - def fin(): - try: - p11.finalize() - except _ipap11helper.Error: - pytest.fail('Failed to finalize the helper object.', pytrace=False) - finally: - del os.environ['SOFTHSM2_CONF'] - - request.addfinalizer(fin) - - return p11 - - -class test_p11helper(object): - def test_generate_master_key(self, p11): - assert p11.generate_master_key(master_key_label, master_key_id, - key_length=16, cka_wrap=True, - cka_unwrap=True) - - def test_search_for_master_key(self, p11): - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label, id=master_key_id) - assert len(master_key) == 1, "The master key should exist." - - def test_generate_replica_key_pair(self, p11): - assert p11.generate_replica_key_pair(replica1_key_label, - replica1_key_id, - pub_cka_wrap=True, - priv_cka_unwrap=True) - - def test_find_key(self, p11): - rep1_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica1_key_label, cka_wrap=True) - assert len(rep1_pub) == 1, ("replica key pair has to contain " - "1 pub key instead of %s" % len(rep1_pub)) - - rep1_priv = p11.find_keys(_ipap11helper.KEY_CLASS_PRIVATE_KEY, - label=replica1_key_label, cka_unwrap=True) - assert len(rep1_priv) == 1, ("replica key pair has to contain 1 " - "private key instead of %s" % - len(rep1_priv)) - - def test_find_key_by_uri(self, p11): - rep1_pub = p11.find_keys(uri="pkcs11:object=replica1;objecttype=public") - assert len(rep1_pub) == 1, ("replica key pair has to contain 1 pub " - "key instead of %s" % len(rep1_pub)) - - def test_get_attribute_from_object(self, p11): - rep1_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica1_key_label, cka_wrap=True)[0] - - iswrap = p11.get_attribute(rep1_pub, _ipap11helper.CKA_WRAP) - assert iswrap is True, "replica public key has to have CKA_WRAP = TRUE" - - def test_generate_replica_keypair_with_extractable_private_key(self, p11): - assert p11.generate_replica_key_pair(replica2_key_label, - replica2_key_id, - pub_cka_wrap=True, - priv_cka_unwrap=True, - priv_cka_extractable=True) - - def test_find_key_on_nonexistent_key_pair(self, p11): - test_list = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica_non_existent_label) - assert len(test_list) == 0, ("list should be empty because label " - "'%s' should not exist" % - replica_non_existent_label) - - def test_export_import_of_public_key(self, p11): - rep1_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica1_key_label, cka_wrap=True)[0] - pub = p11.export_public_key(rep1_pub) - - log.debug("Exported public key %s", hexlify(pub)) - with open("public_key.asn1.der", "wb") as f: - f.write(pub) - - rep1_pub_import = p11.import_public_key(replica1_import_label, - replica1_import_id, - pub, - cka_wrap=True) - log.debug('imported replica 1 public key: %s', rep1_pub_import) - - # test public key import - rep1_modulus_orig = p11.get_attribute(rep1_pub, - _ipap11helper.CKA_MODULUS) - rep1_modulus_import = p11.get_attribute(rep1_pub_import, - _ipap11helper.CKA_MODULUS) - log.debug('rep1_modulus_orig = 0x%s', hexlify(rep1_modulus_orig)) - log.debug('rep1_modulus_import = 0x%s', hexlify(rep1_modulus_import)) - assert rep1_modulus_import == rep1_modulus_orig - - rep1_pub_exp_orig = p11.get_attribute( - rep1_pub, _ipap11helper.CKA_PUBLIC_EXPONENT) - rep1_pub_exp_import = p11.get_attribute( - rep1_pub_import, _ipap11helper.CKA_PUBLIC_EXPONENT) - log.debug('rep1_pub_exp_orig = 0x%s', hexlify(rep1_pub_exp_orig)) - log.debug('rep1_pub_exp_import = 0x%s', hexlify(rep1_pub_exp_import)) - assert rep1_pub_exp_import == rep1_pub_exp_orig - - def test_wrap_unwrap_key_by_master_key_with_AES(self, p11): - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label, id=master_key_id)[0] - rep2_priv = p11.find_keys(_ipap11helper.KEY_CLASS_PRIVATE_KEY, - label=replica2_key_label, cka_unwrap=True)[0] - - log.debug("wrapping dnssec priv key by master key") - wrapped_priv = p11.export_wrapped_key( - rep2_priv, master_key, _ipap11helper.MECH_AES_KEY_WRAP_PAD - ) - assert wrapped_priv - - log.debug("wrapped_dnssec priv key: %s", hexlify(wrapped_priv)) - with open("wrapped_priv.der", "wb") as f: - f.write(wrapped_priv) - - assert p11.import_wrapped_private_key( - u'test_import_wrapped_priv', - '1', - wrapped_priv, - master_key, - _ipap11helper.MECH_AES_KEY_WRAP_PAD, - _ipap11helper.KEY_TYPE_RSA - ) - - def test_wrap_unwrap_key_by_master_key_with_RSA_PKCS(self, p11): - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label, id=master_key_id)[0] - rep2_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica2_key_label, cka_wrap=True)[0] - rep2_priv = p11.find_keys(_ipap11helper.KEY_CLASS_PRIVATE_KEY, - label=replica2_key_label, cka_unwrap=True)[0] - - wrapped = p11.export_wrapped_key(master_key, - rep2_pub, - _ipap11helper.MECH_RSA_PKCS) - assert wrapped - - log.debug("wrapped key MECH_RSA_PKCS (secret master wrapped by pub " - "key): %s", hexlify(wrapped)) - assert p11.import_wrapped_secret_key(u'test_import_wrapped', - '2', - wrapped, - rep2_priv, - _ipap11helper.MECH_RSA_PKCS, - _ipap11helper.KEY_TYPE_AES) - - def test_wrap_unwrap_by_master_key_with_RSA_PKCS_OAEP(self, p11): - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label, id=master_key_id)[0] - rep2_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica2_key_label, cka_wrap=True)[0] - rep2_priv = p11.find_keys(_ipap11helper.KEY_CLASS_PRIVATE_KEY, - label=replica2_key_label, cka_unwrap=True)[0] - - wrapped = p11.export_wrapped_key(master_key, - rep2_pub, - _ipap11helper.MECH_RSA_PKCS_OAEP) - assert wrapped - - log.debug("wrapped key MECH_RSA_PKCS_OAEP (secret master wrapped by " - "pub key): %s", hexlify(wrapped)) - - assert p11.import_wrapped_secret_key(u'test_import_wrapped', - '3', - wrapped, - rep2_priv, - _ipap11helper.MECH_RSA_PKCS_OAEP, - _ipap11helper.KEY_TYPE_AES) - - def test_set_attribute_on_object(self, p11): - rep1_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica1_key_label, cka_wrap=True)[0] - test_label = replica1_new_label - - p11.set_attribute(rep1_pub, _ipap11helper.CKA_LABEL, test_label) - assert p11.get_attribute(rep1_pub, _ipap11helper.CKA_LABEL) \ - == test_label, "The labels do not match." - - def test_do_not_generate_identical_master_keys(self, p11): - with pytest.raises(_ipap11helper.DuplicationError): - p11.generate_master_key(master_key_label, master_key_id, - key_length=16) - - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label) - assert len(master_key) == 1, ("There shouldn't be multiple keys " - "with the same label.") - - def test_delete_key(self, p11): - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label, id=master_key_id)[0] - rep1_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica1_new_label, cka_wrap=True)[0] - rep2_priv = p11.find_keys(_ipap11helper.KEY_CLASS_PRIVATE_KEY, - label=replica2_key_label, cka_unwrap=True)[0] - - for key in (rep1_pub, rep2_priv, master_key): - p11.delete_key(key) - - master_key = p11.find_keys(_ipap11helper.KEY_CLASS_SECRET_KEY, - label=master_key_label, id=master_key_id) - assert len(master_key) == 0, "The master key should be deleted." - rep1_pub = p11.find_keys(_ipap11helper.KEY_CLASS_PUBLIC_KEY, - label=replica1_new_label, cka_wrap=True) - assert len(rep1_pub) == 0, ("The public key of replica1 pair should " - "be deleted.") - rep2_priv = p11.find_keys(_ipap11helper.KEY_CLASS_PRIVATE_KEY, - label=replica2_key_label, cka_unwrap=True) - assert len(rep2_priv) == 0, ("The private key of replica2 pair should" - " be deleted.") diff --git a/ipatests/test_ipapython/test_secrets.py b/ipatests/test_ipapython/test_secrets.py deleted file mode 100644 index 9fbf825d2..000000000 --- a/ipatests/test_ipapython/test_secrets.py +++ /dev/null @@ -1,55 +0,0 @@ -# Copyright (C) 2015 FreeIPA Project Contributors - see LICENSE file - -from __future__ import print_function -from ipapython.secrets.store import iSecStore, NAME_DB_MAP, NSSCertDB -import os -import shutil -import subprocess -import unittest - - -def _test_password_callback(): - with open('test-ipa-sec-store/pwfile') as f: - password = f.read() - return password - - -class TestiSecStore(unittest.TestCase): - @classmethod - def setUpClass(cls): - try: - shutil.rmtree('test-ipa-sec-store') - except Exception: # pylint: disable=broad-except - pass - testdir = 'test-ipa-sec-store' - pwfile = os.path.join(testdir, 'pwfile') - os.mkdir(testdir) - with open(pwfile, 'w') as f: - f.write('testpw') - cls.certdb = os.path.join(testdir, 'certdb') - os.mkdir(cls.certdb) - cls.cert2db = os.path.join(testdir, 'cert2db') - os.mkdir(cls.cert2db) - seedfile = os.path.join(testdir, 'seedfile') - with open(seedfile, 'wb') as f: - seed = os.urandom(1024) - f.write(seed) - subprocess.call(['certutil', '-d', cls.certdb, '-N', '-f', pwfile]) - subprocess.call(['certutil', '-d', cls.cert2db, '-N', '-f', pwfile]) - subprocess.call(['certutil', '-d', cls.certdb, '-S', '-f', pwfile, - '-s', 'CN=testCA', '-n', 'testCACert', '-x', - '-t', 'CT,C,C', '-m', '1', '-z', seedfile]) - - def test_iSecStore(self): - iss = iSecStore({}) - - NAME_DB_MAP['test'] = { - 'type': 'NSSDB', - 'path': self.certdb, - 'handler': NSSCertDB, - 'pwcallback': _test_password_callback, - } - value = iss.get('keys/test/testCACert') - - NAME_DB_MAP['test']['path'] = self.cert2db - iss.set('keys/test/testCACert', value) |
