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)
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")
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
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))
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()
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()
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")