@@ -25,7 +25,7 @@ def call_api_function(*args, **kwargs):
2525 """Wrap call_api and add field encryption layer to it."""
2626
2727 in_body = kwargs .get ("body" , None )
28- kwargs ["body" ] = self ._encrypt_payload (kwargs . get ( "header_params" , None ) , in_body ) if in_body else in_body
28+ kwargs ["body" ] = self ._encrypt_payload (args [ 4 ] , in_body ) if in_body else in_body
2929 kwargs ["_preload_content" ] = False
3030
3131 response = func (* args , ** kwargs )
@@ -44,13 +44,20 @@ def _encrypt_payload(self, headers, body):
4444 if conf .use_http_headers :
4545 params = SessionKeyParams .generate (conf )
4646
47- headers [conf .iv_field_name ] = params .iv_value
48- headers [conf .encrypted_key_field_name ] = params .encrypted_key_value
49- headers [conf .encryption_certificate_fingerprint_field_name ] = conf .encryption_certificate_fingerprint
50- headers [conf .encryption_key_fingerprint_field_name ] = conf .encryption_key_fingerprint
51- headers [conf .oaep_padding_digest_algorithm_field_name ] = conf .oaep_padding_digest_algorithm
47+ encryption_params = {
48+ conf .iv_field_name : params .iv_value ,
49+ conf .encrypted_key_field_name : params .encrypted_key_value
50+ }
51+ if conf .encryption_certificate_fingerprint_field_name :
52+ encryption_params [conf .encryption_certificate_fingerprint_field_name ] = \
53+ conf .encryption_certificate_fingerprint
54+ if conf .encryption_key_fingerprint_field_name :
55+ encryption_params [conf .encryption_key_fingerprint_field_name ] = conf .encryption_key_fingerprint
56+ if conf .oaep_padding_digest_algorithm_field_name :
57+ encryption_params [conf .oaep_padding_digest_algorithm_field_name ] = conf .oaep_padding_digest_algorithm
5258
5359 encrypted_payload = encrypt_payload (body , conf , params )
60+ headers .update (encryption_params )
5461 else :
5562 encrypted_payload = encrypt_payload (body , conf )
5663
@@ -67,10 +74,10 @@ def _decrypt_payload(self, headers, body):
6774 iv = headers .pop (conf .iv_field_name )
6875 encrypted_key = headers .pop (conf .encrypted_key_field_name )
6976 oaep_digest_algo = headers .pop (conf .oaep_padding_digest_algorithm_field_name ) \
70- if conf .oaep_padding_digest_algorithm_field_name in headers else None
71- if conf .encryption_certificate_fingerprint_field_name in headers :
77+ if _contains_param ( conf .oaep_padding_digest_algorithm_field_name , headers ) else None
78+ if _contains_param ( conf .encryption_certificate_fingerprint_field_name , headers ) :
7279 del headers [conf .encryption_certificate_fingerprint_field_name ]
73- if conf .encryption_key_fingerprint_field_name in headers :
80+ if _contains_param ( conf .encryption_key_fingerprint_field_name , headers ) :
7481 del headers [conf .encryption_key_fingerprint_field_name ]
7582
7683 params = SessionKeyParams (conf , encrypted_key , iv , oaep_digest_algo )
@@ -84,6 +91,9 @@ def _decrypt_payload(self, headers, body):
8491 return payload
8592
8693
94+ def _contains_param (param_name , headers ): return param_name and param_name in headers
95+
96+
8797def add_encryption_layer (api_client , encryption_conf_file ):
8898 """Decorate APIClient.call_api with field level encryption"""
8999
0 commit comments