-def save_keys_to_files(keys=None, pub_file_path=None, priv_file_path=None):
- """
- Saves the generated RSA generated keys to the filesystem
- :param keys: the keys to save generated by cryptography
- :param pub_file_path: the path to the public keys
- :param priv_file_path: the path to the private keys
- """
- if keys:
- if pub_file_path:
- # To support '~'
- pub_expand_file = os.path.expanduser(pub_file_path)
- pub_dir = os.path.dirname(pub_expand_file)
-
- if not os.path.isdir(pub_dir):
- os.mkdir(pub_dir)
-
- public_handle = None
- try:
- public_handle = open(pub_expand_file, 'wb')
- public_bytes = keys.public_key().public_bytes(
- serialization.Encoding.OpenSSH,
- serialization.PublicFormat.OpenSSH)
- public_handle.write(public_bytes)
- finally:
- if public_handle:
- public_handle.close()
-
- os.chmod(pub_expand_file, 0o400)
- logger.info("Saved public key to - " + pub_expand_file)
- if priv_file_path:
- # To support '~'
- priv_expand_file = os.path.expanduser(priv_file_path)
- priv_dir = os.path.dirname(priv_expand_file)
- if not os.path.isdir(priv_dir):
- os.mkdir(priv_dir)
-
- private_handle = None
- try:
- private_handle = open(priv_expand_file, 'wb')
- private_handle.write(
- keys.private_bytes(
- encoding=serialization.Encoding.PEM,
- format=serialization.PrivateFormat.TraditionalOpenSSL,
- encryption_algorithm=serialization.NoEncryption()))
- finally:
- if private_handle:
- private_handle.close()
-
- os.chmod(priv_expand_file, 0o400)
- logger.info("Saved private key to - " + priv_expand_file)
-
-