in src/aws_encryption_sdk/key_providers/base.py [0:0]
def __new__(cls, **kwargs):
"""Performs universal prep work for all MasterKeys."""
instance = super(MasterKey, cls).__new__(cls, **kwargs)
if not hasattr(instance.config, "provider_id"):
raise TypeError('MasterKey config classes must have a "provider_id" attribute defined.')
if instance.config.provider_id is not None:
# Only allow override if provider_id is NOT set to non-None for the class
if instance.provider_id is None:
instance.provider_id = instance.config.provider_id
elif instance.provider_id != instance.config.provider_id: # pylint: disable=comparison-with-callable
raise ConfigMismatchError(
"Config provider_id does not match MasterKey provider_id: {config} != {instance}".format(
config=instance.config.provider_id, instance=instance.provider_id
)
)
instance.key_id = instance.config.key_id
instance._encrypt_key_index = {instance.key_id: instance} # pylint: disable=protected-access
# We cannot make any general statements about key_info, so specifically enforce that decrypt index is empty.
instance._decrypt_key_index = {} # pylint: disable=protected-access
instance._members = [instance] # pylint: disable=protected-access
return instance