示例#1
0
    def test_import_ed25519_public_keys_from_files_as_dict(self):
        """Create and import multiple Ed25519 public keys and return KEYDICT. """
        name1 = "key4"
        name2 = "key5"
        generate_and_write_ed25519_keypair(name1, password=name1)
        generate_and_write_ed25519_keypair(name2, password=name2)

        # Succesfully import public keys as keydictionary
        key_dict = import_public_keys_from_files_as_dict(
            [name1 + ".pub", name2 + ".pub"], [KEY_TYPE_ED25519] * 2)
        securesystemslib.formats.KEYDICT_SCHEMA.check_match(key_dict)

        # Import with wrong number of key types raises an exception
        with self.assertRaises(securesystemslib.exceptions.Error):
            import_public_keys_from_files_as_dict(
                [name1 + ".pub", name2 + ".pub"], [KEY_TYPE_ED25519])

        # Import wrongly formatted key raises an exception
        not_an_ed25519 = "not_an_ed25519"
        with open(not_an_ed25519, "w") as f:
            f.write(not_an_ed25519)

        with self.assertRaises(securesystemslib.exceptions.Error):
            import_public_keys_from_files_as_dict(
                [name1 + ".pub", not_an_ed25519], [KEY_TYPE_ED25519] * 2)

        # Import private key raises an exception
        with self.assertRaises(securesystemslib.exceptions.Error):
            import_public_keys_from_files_as_dict([name1, name2],
                                                  [KEY_TYPE_ED25519] * 2)
示例#2
0
 def test_create_and_import_encrypted_ed25519_no_password(self):
     """Try import encrypted ed25519 key without or wrong pw, raises
 exception. """
     name = "key8"
     password = "******"
     generate_and_write_ed25519_keypair(name, password)
     with self.assertRaises(securesystemslib.exceptions.CryptoError):
         import_ed25519_privatekey_from_file(name)
     with self.assertRaises(securesystemslib.exceptions.CryptoError):
         import_ed25519_privatekey_from_file(name, "wrong-password")
示例#3
0
    def test_create_and_import_ed25519(self):
        """Create ed25519 key and import private and public key separately. """
        name = "key6"
        generate_and_write_ed25519_keypair(name)
        private_key = import_ed25519_privatekey_from_file(name)
        public_key = import_ed25519_publickey_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 generate_keys():
    keys = {'tuf': {}, 'in-toto': {}}
    os.chdir(KEYS)
    for role in TUF_ROLES:
        util.generate_and_write_ed25519_keypair(role, password='')
        keys['tuf'][role] = util.import_ed25519_publickey_from_file(role)

    for role in IN_TOTO_ROLES:
        util.generate_and_write_ed25519_keypair(role, password='')
        keys['in-toto'][role] = util.import_ed25519_publickey_from_file(role)
    os.chdir('..')

    return keys
示例#5
0
    def test_main_with_encrypted_ed25519_key(self):
        """Test CLI command with encrypted ed25519 key. """
        key_path = "test_key_ed25519_enc"
        password = "******"
        generate_and_write_ed25519_keypair(key_path, password)
        args = [
            "-n", self.test_step, "--key", key_path, "--key-type", "ed25519",
            "--", "ls"
        ]

        with mock.patch('in_toto.util.prompt_password', return_value=password):
            key = import_private_key_from_file(key_path, KEY_TYPE_ED25519)
            linkpath = FILENAME_FORMAT.format(step_name=self.test_step,
                                              keyid=key["keyid"])

            self.assert_cli_sys_exit(args, 0)
            self.assertTrue(os.path.exists(linkpath))
示例#6
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()
示例#7
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.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()
示例#8
0
 def test_in_toto_keygen_generate_and_write_ed25519_keypair(self):
     """in_toto_keygen_generate_and_write_ed25519_keypair run through. """
     generate_and_write_ed25519_keypair("bob")