keystone.common.fernet_utils module¶
- class keystone.common.fernet_utils.FernetUtils(key_repository, max_active_keys, config_group)[source]¶
- Bases: - object- create_key_directory(keystone_user_id=None, keystone_group_id=None)[source]¶
- Attempt to create the key directory if it doesn’t exist. 
 - initialize_key_repository(keystone_user_id=None, keystone_group_id=None)[source]¶
- Create a key repository and bootstrap it with a key. - Parameters:
- keystone_user_id – User ID of the Keystone user. 
- keystone_group_id – Group ID of the Keystone user. 
 
 
 - load_keys(use_null_key=False)[source]¶
- Load keys from disk into a list. - The first key in the list is the primary key used for encryption. All other keys are active secondary keys that can be used for decrypting tokens. - Parameters:
- use_null_key – If true, a known key containing null bytes will be appended to the list of returned keys. 
 
 - rotate_keys(keystone_user_id=None, keystone_group_id=None)[source]¶
- Create a new primary key and revoke excess active keys. - Parameters:
- keystone_user_id – User ID of the Keystone user. 
- keystone_group_id – Group ID of the Keystone user. 
 
 - Key rotation utilizes the following behaviors: - The highest key number is used as the primary key (used for encryption). 
- All keys can be used for decryption. 
- New keys are always created as key “0,” which serves as a placeholder before promoting it to be the primary key. 
 - This strategy allows you to safely perform rotation on one node in a cluster, before syncing the results of the rotation to all other nodes (during both key rotation and synchronization, all nodes must recognize all primary keys). 
 
