bittensor.keyfile#
Module Contents#
Classes#
| The Mockkeyfile is a mock object representing a keyfile that does not exist on the device. | |
| Defines an interface for a substrate interface keypair stored on device. | 
Functions#
| Prompts the user to enter a password for key encryption. | |
| 
 | Decrypts the passed keyfile data using ansible vault. | 
| 
 | Deserializes Keypair object from passed keyfile data. | 
| 
 | Encrypts the passed keyfile data using ansible vault. | 
| 
 | Retrieves the cold key password from the environment variables. | 
| 
 | Returns  | 
| 
 | Returns  | 
| 
 | Returns true if the keyfile data is ansible encrypted. | 
| 
 | Returns true if the keyfile data is legacy encrypted. | 
| 
 | Returns true if the keyfile data is NaCl encrypted. | 
| 
 | |
| 
 | Serializes keypair object into keyfile data. | 
| 
 | Validates the password against a password policy. | 
Attributes#
- class bittensor.keyfile.Mockkeyfile(path)#
- The Mockkeyfile is a mock object representing a keyfile that does not exist on the device. - It is designed for use in testing scenarios and simulations where actual filesystem operations are not required. The keypair stored in the Mockkeyfile is treated as non-encrypted and the data is stored as a serialized string. - Parameters:
- path (str) – 
 - property data#
- Returns the serialized keypair data stored in the keyfile. - Returns:
- The serialized keypair data. 
- Return type:
 
 - property keypair#
- Returns the mock keypair stored in the keyfile. - Returns:
- The mock keypair. 
- Return type:
- bittensor.Keypair 
 
 - __repr__()#
- Returns a string representation of the Mockkeyfile, same as - __str__().- Returns:
- The string representation of the Mockkeyfile. 
- Return type:
 
 - __str__()#
- Returns a string representation of the Mockkeyfile. The representation will indicate if the keyfile is empty, encrypted, or decrypted. - Returns:
- The string representation of the Mockkeyfile. 
- Return type:
 
 - check_and_update_encryption(no_prompt=None, print_result=False)#
 - decrypt(password=None)#
- Returns without doing anything since the mock keyfile is not encrypted. - Parameters:
- password (str, optional) – Ignored in this context. Defaults to - None.
 
 - encrypt(password=None)#
- Raises a ValueError since encryption is not supported for the mock keyfile. - Parameters:
- password (str, optional) – Ignored in this context. Defaults to - None.
- Raises:
- ValueError – Always raises this exception for Mockkeyfile. 
 
 - exists_on_device()#
- Returns - Trueindicating that the mock keyfile exists on the device (although it is not created on the actual file system).- Returns:
- Always returns - Truefor Mockkeyfile.
- Return type:
 
 - get_keypair(password=None)#
- Returns the mock keypair stored in the keyfile. The - passwordparameter is ignored.- Parameters:
- password (str, optional) – Ignored in this context. Defaults to - None.
- Returns:
- The mock keypair stored in the keyfile. 
- Return type:
- bittensor.Keypair 
 
 - is_encrypted()#
- Returns - Falseindicating that the mock keyfile is not encrypted.- Returns:
- Always returns - Falsefor Mockkeyfile.
- Return type:
 
 - is_readable()#
- Returns - Trueindicating that the mock keyfile is readable (although it is not read from the actual file system).- Returns:
- Always returns - Truefor Mockkeyfile.
- Return type:
 
 - is_writable()#
- Returns - Trueindicating that the mock keyfile is writable (although it is not written to the actual file system).- Returns:
- Always returns - Truefor Mockkeyfile.
- Return type:
 
 - make_dirs()#
- Creates the directories for the mock keyfile. Does nothing in this class, since no actual filesystem operations are needed. 
 - set_keypair(keypair, encrypt=True, overwrite=False, password=None)#
- Sets the mock keypair in the keyfile. The - encryptand- overwriteparameters are ignored.
 
- bittensor.keyfile.NACL_SALT = b'\x13q\x83\xdf\xf1Z\t\xbc\x9c\x90\xb5Q\x879\xe9\xb1'#
- bittensor.keyfile.ask_password_to_encrypt()#
- Prompts the user to enter a password for key encryption. - Returns:
- The valid password entered by the user. 
- Return type:
- password (str) 
 
- bittensor.keyfile.decrypt_keyfile_data(keyfile_data, password=None, coldkey_name=None)#
- Decrypts the passed keyfile data using ansible vault. - Parameters:
- Returns:
- The decrypted data. 
- Return type:
- decrypted_data (bytes) 
- Raises:
- KeyFileError – Raised if the file is corrupted or if the password is incorrect. 
 
- bittensor.keyfile.deserialize_keypair_from_keyfile_data(keyfile_data)#
- Deserializes Keypair object from passed keyfile data. - Parameters:
- keyfile_data (bytes) – The keyfile data as bytes to be loaded. 
- Returns:
- The Keypair loaded from bytes. 
- Return type:
- keypair (bittensor.Keypair) 
- Raises:
- KeyFileError – Raised if the passed bytes cannot construct a keypair object. 
 
- bittensor.keyfile.encrypt_keyfile_data(keyfile_data, password=None)#
- Encrypts the passed keyfile data using ansible vault. 
- bittensor.keyfile.get_coldkey_password_from_environment(coldkey_name)#
- Retrieves the cold key password from the environment variables. 
- class bittensor.keyfile.keyfile(path)#
- Defines an interface for a substrate interface keypair stored on device. - Parameters:
- path (str) – 
 - property data: bytes#
- Returns the keyfile data under path. - Returns:
- The keyfile data stored under the path. 
- Return type:
- keyfile_data (bytes) 
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, or writable. 
 
 - property keyfile_data: bytes#
- Returns the keyfile data under path. - Returns:
- The keyfile data stored under the path. 
- Return type:
- keyfile_data (bytes) 
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, or writable. 
 
 - property keypair: bittensor.Keypair#
- Returns the keypair from path, decrypts data if the file is encrypted. - Returns:
- The keypair stored under the path. 
- Return type:
- keypair (bittensor.Keypair) 
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, writable, corrupted, or if the password is incorrect. 
 
 - __repr__()#
- Return repr(self). 
 - __str__()#
- Return str(self). 
 - _may_overwrite()#
- Asks the user if it is okay to overwrite the file. - Returns:
- Trueif the user allows overwriting the file.
- Return type:
- may_overwrite (bool) 
 
 - _read_keyfile_data_from_file()#
- Reads the keyfile data from the file. - Returns:
- The keyfile data stored under the path. 
- Return type:
- keyfile_data (bytes) 
- Raises:
- KeyFileError – Raised if the file does not exist or is not readable. 
 
 - _write_keyfile_data_to_file(keyfile_data, overwrite=False)#
- Writes the keyfile data to the file. - Parameters:
- Raises:
- KeyFileError – Raised if the file is not writable or the user responds No to the overwrite prompt. 
 
 - check_and_update_encryption(print_result=True, no_prompt=False)#
- Check the version of keyfile and update if needed. - Parameters:
- Raises:
- KeyFileError – Raised if the file does not exists, is not readable, writable. 
- Returns:
- Return - Trueif the keyfile is the most updated with nacl, else- False.
- Return type:
- result (bool) 
 
 - decrypt(password=None)#
- Decrypts the file under the path. - Parameters:
- password (str, optional) – The password for decryption. If - None, asks for user input.
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, writable, corrupted, or if the password is incorrect. 
 
 - encrypt(password=None)#
- Encrypts the file under the path. - Parameters:
- password (str, optional) – The password for encryption. If - None, asks for user input.
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, or writable. 
 
 - exists_on_device()#
- Returns - Trueif the file exists on the device.- Returns:
- Trueif the file is on the device.
- Return type:
- on_device (bool) 
 
 - get_keypair(password=None)#
- Returns the keypair from the path, decrypts data if the file is encrypted. - Parameters:
- password (str, optional) – The password used to decrypt the file. If - None, asks for user input.
- Returns:
- The keypair stored under the path. 
- Return type:
- keypair (bittensor.Keypair) 
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, writable, corrupted, or if the password is incorrect. 
 
 - is_encrypted()#
- Returns - Trueif the file under path is encrypted.- Returns:
- Trueif the file is encrypted.
- Return type:
- encrypted (bool) 
 
 - is_readable()#
- Returns - Trueif the file under path is readable.- Returns:
- Trueif the file is readable.
- Return type:
- readable (bool) 
 
 - is_writable()#
- Returns - Trueif the file under path is writable.- Returns:
- Trueif the file is writable.
- Return type:
- writable (bool) 
 
 - make_dirs()#
- Creates directories for the path if they do not exist. 
 - set_keypair(keypair, encrypt=True, overwrite=False, password=None)#
- Writes the keypair to the file and optionally encrypts data. - Parameters:
- keypair (bittensor.Keypair) – The keypair to store under the path. 
- encrypt (bool, optional) – If - True, encrypts the file under the path. Default is- True.
- overwrite (bool, optional) – If - True, forces overwrite of the current file. Default is- False.
- password (str, optional) – The password used to encrypt the file. If - None, asks for user input.
 
- Raises:
- KeyFileError – Raised if the file does not exist, is not readable, writable, or if the password is incorrect. 
 
 
- bittensor.keyfile.keyfile_data_encryption_method(keyfile_data)#
- Returns - trueif the keyfile data is encrypted.
- bittensor.keyfile.keyfile_data_is_encrypted(keyfile_data)#
- Returns - trueif the keyfile data is encrypted.
- bittensor.keyfile.keyfile_data_is_encrypted_ansible(keyfile_data)#
- Returns true if the keyfile data is ansible encrypted. 
- bittensor.keyfile.keyfile_data_is_encrypted_legacy(keyfile_data)#
- Returns true if the keyfile data is legacy encrypted. :param keyfile_data: The bytes to validate. :type keyfile_data: bytes 
- bittensor.keyfile.keyfile_data_is_encrypted_nacl(keyfile_data)#
- Returns true if the keyfile data is NaCl encrypted. 
- bittensor.keyfile.legacy_encrypt_keyfile_data(keyfile_data, password=None)#