Beispiel #1
0
    def setUpClass(self):
        """Create and change into temporary directory,
    generate key pair, dummy artifact and base arguments. """

        self.working_dir = os.getcwd()

        self.test_dir = tempfile.mkdtemp()

        # Copy gpg keyring
        self.default_gpg_keyid = "8465a1e2e0fb2b40adb2478e18fb3f537e0c8a17"
        self.default_gpg_subkeyid = "c5a0abe6ec19d0d65f85e2c39be9df5131d924e9"
        self.non_default_gpg_keyid = "8288ef560ed3795f9df2c0db56193089b285da58"
        gpg_keyring_path = os.path.join(
            os.path.dirname(os.path.realpath(__file__)), "gpg_keyrings", "rsa")
        self.gnupg_home = os.path.join(self.test_dir, "rsa")
        shutil.copytree(gpg_keyring_path, self.gnupg_home)

        os.chdir(self.test_dir)

        self.key_path = "test_key"
        generate_and_write_rsa_keypair(self.key_path)
        self.key = prompt_import_rsa_key_from_file(self.key_path)

        self.test_step = "test_step"
        self.test_link = FILENAME_FORMAT.format(step_name=self.test_step,
                                                keyid=self.key["keyid"])
        self.test_artifact = "test_artifact"
        open(self.test_artifact, "w").close()
Beispiel #2
0
 def test_create_and_import_encrypted_rsa_no_password(self):
     """Try import encrypted RSA key without or wrong pw, raises exception. """
     name = "key3"
     password = "******"
     bits = 3072
     generate_and_write_rsa_keypair(name, bits, password)
     with self.assertRaises(securesystemslib.exceptions.CryptoError):
         import_rsa_key_from_file(name)
     with self.assertRaises(securesystemslib.exceptions.CryptoError):
         import_rsa_key_from_file(name, "wrong-password")
Beispiel #3
0
    def test_create_and_import_rsa(self):
        """Create RS key and import private and public key separately. """
        name = "key1"
        generate_and_write_rsa_keypair(name)
        private_key = import_rsa_key_from_file(name)
        public_key = import_rsa_key_from_file(name + ".pub")

        securesystemslib.formats.KEY_SCHEMA.check_match(private_key)
        self.assertTrue(private_key["keyval"].get("private"))
        self.assertTrue(
            securesystemslib.formats.PUBLIC_KEY_SCHEMA.matches(public_key))
Beispiel #4
0
  def setUpClass(self):
    """Create and change into temporary directory,
    generate key pair, dummy artifact and base arguments. """
    self.test_dir = tempfile.mkdtemp()
    os.chdir(self.test_dir)

    self.key_path = "test_key"
    generate_and_write_rsa_keypair(self.key_path)
    self.key = prompt_import_rsa_key_from_file(self.key_path)

    self.test_artifact = "test_artifact"
    open(self.test_artifact, "w").close()
    def test_create_and_import_encrypted_rsa_nondefault_length(self):
        name = "key_encrypted_2"
        password = "******"
        bits = 2048
        generate_and_write_rsa_keypair(name, bits, password)
        private_key = import_rsa_key_from_file(name, password)
        public_key = import_rsa_key_from_file(name + ".pub")

        securesystemslib.formats.KEY_SCHEMA.check_match(private_key)
        self.assertTrue(private_key["keyval"].get("private"))
        self.assertTrue(
            securesystemslib.formats.PUBLIC_KEY_SCHEMA.matches(public_key))
    def test_create_and_import_encrypted_rsa(self):
        """Create ecrypted RSA key and import private and public key separately."""
        name = "key_encrypted"
        password = "******"
        bits = 3072
        generate_and_write_rsa_keypair(name, bits, password)
        private_key = import_rsa_key_from_file(name, password)
        public_key = import_rsa_key_from_file(name + ".pub")

        securesystemslib.formats.KEY_SCHEMA.check_match(private_key)
        self.assertTrue(private_key["keyval"].get("private"))
        self.assertTrue(
            securesystemslib.formats.PUBLIC_KEY_SCHEMA.matches(public_key))
Beispiel #7
0
    def setUpClass(self):
        """Create and change into temporary directory, generate key pair and dummy
    material, read key pair. """
        self.set_up_test_dir()

        self.step_name = "test_step"
        self.key_path = "test_key"
        generate_and_write_rsa_keypair(self.key_path)
        self.key = prompt_import_rsa_key_from_file(self.key_path)
        self.key_pub = prompt_import_rsa_key_from_file(self.key_path + ".pub")

        self.test_artifact = "test_artifact"
        open(self.test_artifact, "w").close()
Beispiel #8
0
    def setUpClass(self):
        """Create and change into temporary directory, generate key pair and dummy
    material, read key pair. """
        self.set_up_test_dir()

        self.key_path = "test_key"
        generate_and_write_rsa_keypair(self.key_path)
        self.key = prompt_import_rsa_key_from_file(self.key_path)

        self.step_name = "test_step"
        self.link_name_unfinished = UNFINISHED_FILENAME_FORMAT.format(
            step_name=self.step_name, keyid=self.key["keyid"])

        self.test_material = "test_material"
        open(self.test_material, "w").close()
Beispiel #9
0
    def setUpClass(self):
        """Create and change into temporary directory,
    generate key pair, dummy artifact and base arguments. """

        self.working_dir = os.getcwd()

        self.test_dir = tempfile.mkdtemp()
        os.chdir(self.test_dir)

        self.key_path = "test_key"
        generate_and_write_rsa_keypair(self.key_path)
        self.key = prompt_import_rsa_key_from_file(self.key_path)

        self.test_step = "test_step"
        self.test_link = FILENAME_FORMAT.format(step_name=self.test_step,
                                                keyid=self.key["keyid"])
        self.test_artifact = "test_artifact"
        open(self.test_artifact, "w").close()
Beispiel #10
0
    def setUpClass(self):
        """Create and change into temporary directory, generate two key pairs
    and dummy product. """
        self.set_up_test_dir()

        self.key_path = "test-key"
        self.key_path2 = "test-key2"
        generate_and_write_rsa_keypair(self.key_path)
        generate_and_write_rsa_keypair(self.key_path2)
        self.key = prompt_import_rsa_key_from_file(self.key_path)
        self.key2 = prompt_import_rsa_key_from_file(self.key_path2)

        self.step_name = "test-step"
        self.link_name = "{}.{:.8}.link".format(self.step_name,
                                                self.key["keyid"])
        self.link_name_unfinished = UNFINISHED_FILENAME_FORMAT.format(
            step_name=self.step_name, keyid=self.key["keyid"])

        self.test_product = "test_product"
        open(self.test_product, "w").close()
Beispiel #11
0
  def test_import_rsa_public_keys_from_files_as_dict(self):
    """Create and import multiple rsa public keys and return KEYDICT. """
    name1 = "key4"
    name2 = "key5"
    generate_and_write_rsa_keypair(name1)
    generate_and_write_rsa_keypair(name2)

    # Succefully import public keys as keydictionary
    key_dict = import_rsa_public_keys_from_files_as_dict([name1 + ".pub",
        name2 + ".pub"])
    securesystemslib.formats.KEYDICT_SCHEMA.check_match(key_dict)

    # Import wrongly formatted key raises an exception
    not_an_rsa = "not_an_rsa"
    open(not_an_rsa, "w").write(not_an_rsa)
    with self.assertRaises(securesystemslib.exceptions.FormatError):
      import_rsa_public_keys_from_files_as_dict([name1 + ".pub", not_an_rsa])

    # Import private key raises an exception
    with self.assertRaises(securesystemslib.exceptions.FormatError):
      import_rsa_public_keys_from_files_as_dict([name1, name2])
Beispiel #12
0
    def setUpClass(self):
        """Create and change into temporary directory,
    generate key pair, dummy artifact and base arguments. """
        self.set_up_test_dir()
        self.set_up_gpg_keys()

        self.rsa_key_path = "test_key_rsa"
        generate_and_write_rsa_keypair(self.rsa_key_path)
        self.rsa_key = import_private_key_from_file(self.rsa_key_path,
                                                    KEY_TYPE_RSA)

        self.ed25519_key_path = "test_key_ed25519"
        generate_and_write_ed25519_keypair(self.ed25519_key_path)
        self.ed25519_key = import_private_key_from_file(
            self.ed25519_key_path, KEY_TYPE_ED25519)

        self.test_step = "test_step"
        self.test_link_rsa = FILENAME_FORMAT.format(
            step_name=self.test_step, keyid=self.rsa_key["keyid"])
        self.test_link_ed25519 = FILENAME_FORMAT.format(
            step_name=self.test_step, keyid=self.ed25519_key["keyid"])
        self.test_artifact = "test_artifact"
        open(self.test_artifact, "w").close()
Beispiel #13
0
#!/usr/bin/python

from in_toto.models.layout import Layout, Step
from in_toto.models.metadata import Metablock
from in_toto.util import generate_and_write_rsa_keypair, import_rsa_key_from_file

generate_and_write_rsa_keypair("build_key")
build_key = import_rsa_key_from_file("build_key.pub")

layout = Layout()
build = Step(name="build")
build.expected_materials.append(['ALLOW', 'package.json'])
build.expected_materials.append(['ALLOW', 'index.js'])
build.expected_command = ['npm', 'install']
layout.steps.append(build)
layout.add_functionary_key(build_key)

build.pubkeys.append(build_key['keyid'])

generate_and_write_rsa_keypair("root_key")
root_key = import_rsa_key_from_file("root_key")

metablock = Metablock(signed=layout)
metablock.sign(root_key)
metablock.dump("root.layout")
 def test_in_toto_keygen_generate_and_write_rsa_keypair(self):
     """in_toto_keygen_generate_and_write_rsa_keypair run through. """
     bits = 3072
     generate_and_write_rsa_keypair("bob", bits)