@@ -488,36 +488,6 @@ def _create_collection(self, model):
488
488
# Unencrypted path
489
489
db .create_collection (db_table )
490
490
491
- def _get_data_key (
492
- self ,
493
- client_encryption ,
494
- key_vault_collection ,
495
- create_data_keys ,
496
- kms_provider ,
497
- master_key ,
498
- key_alt_name ,
499
- ):
500
- """Return an existing or newly-created data key ID for a field."""
501
- if create_data_keys :
502
- if not client_encryption :
503
- raise ImproperlyConfigured ("client_encryption is not configured." )
504
- return client_encryption .create_data_key (
505
- kms_provider = kms_provider ,
506
- master_key = master_key ,
507
- key_alt_names = [key_alt_name ],
508
- )
509
- if key_vault_collection is None :
510
- raise ImproperlyConfigured (
511
- f"Encrypted field { key_alt_name } detected but no key vault configured"
512
- )
513
- key = key_vault_collection .find_one ({"keyAltNames" : key_alt_name })
514
- if not key :
515
- raise ValueError (
516
- f"No key found in keyvault for keyAltName={ key_alt_name } . "
517
- "Run with '--create-data-keys' to create missing keys."
518
- )
519
- return key ["_id" ]
520
-
521
491
def _get_encrypted_fields (
522
492
self , model , create_data_keys = False , key_alt_name = None , path_prefix = None
523
493
):
@@ -532,12 +502,10 @@ def _get_encrypted_fields(
532
502
path_prefix = path_prefix or ""
533
503
534
504
options = client ._options
535
- auto_encryption_opts = getattr ( options , " auto_encryption_opts" , None )
505
+ auto_encryption_opts = options . auto_encryption_opts
536
506
537
- key_vault_collection = None
538
- if auto_encryption_opts :
539
- key_vault_db , key_vault_coll = auto_encryption_opts ._key_vault_namespace .split ("." , 1 )
540
- key_vault_collection = client [key_vault_db ][key_vault_coll ]
507
+ key_vault_db , key_vault_coll = auto_encryption_opts ._key_vault_namespace .split ("." , 1 )
508
+ key_vault_collection = client [key_vault_db ][key_vault_coll ]
541
509
542
510
kms_provider = router .kms_provider (model )
543
511
master_key = connection .settings_dict .get ("KMS_CREDENTIALS" , {}).get (kms_provider )
@@ -564,14 +532,15 @@ def _get_encrypted_fields(
564
532
565
533
if getattr (field , "encrypted" , False ):
566
534
bson_type = field .db_type (connection )
567
- data_key = self ._get_data_key (
568
- client_encryption ,
569
- key_vault_collection ,
570
- create_data_keys ,
571
- kms_provider ,
572
- master_key ,
573
- new_key_alt_name ,
574
- )
535
+ if create_data_keys :
536
+ data_key = client_encryption .create_data_key (
537
+ kms_provider = kms_provider ,
538
+ master_key = master_key ,
539
+ key_alt_names = [new_key_alt_name ],
540
+ )
541
+ else :
542
+ key = key_vault_collection .find_one ({"keyAltNames" : new_key_alt_name })
543
+ data_key = key ["_id" ]
575
544
field_dict = {
576
545
"bsonType" : bson_type ,
577
546
"path" : path ,
0 commit comments