Skip to content

Commit 4a2c02c

Browse files
reformatting the code
1 parent 80e74bc commit 4a2c02c

9 files changed

+52
-42
lines changed

client_encryption/api_encryption.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
1-
import json
21
import inspect
2+
import json
33
from enum import Enum
44
from functools import wraps
55
from warnings import warn
6-
from client_encryption.field_level_encryption_config import FieldLevelEncryptionConfig
7-
from client_encryption.jwe_encryption_config import JweEncryptionConfig
8-
from client_encryption.session_key_params import SessionKeyParams
6+
97
from client_encryption.field_level_encryption import encrypt_payload as encrypt_field_level, \
108
decrypt_payload as decrypt_field_level
9+
from client_encryption.field_level_encryption_config import FieldLevelEncryptionConfig
1110
from client_encryption.jwe_encryption import encrypt_payload as encrypt_jwe, decrypt_payload as decrypt_jwe
11+
from client_encryption.jwe_encryption_config import JweEncryptionConfig
12+
from client_encryption.session_key_params import SessionKeyParams
1213

1314

1415
class ApiEncryption(object):
@@ -34,7 +35,7 @@ def field_encryption_call_api(self, func):
3435

3536
@wraps(func)
3637
def call_api_function(*args, **kwargs):
37-
original_parameters = inspect.signature(func.__self__.call_api).parameters
38+
original_parameters = inspect.signature(func.__self__.call_api).parameters
3839
check_type_is_none = original_parameters.get("_check_type") is None
3940
preload_content_is_not_none = original_parameters.get("_preload_content") is not None
4041
if check_type_is_none and preload_content_is_not_none:
@@ -160,6 +161,7 @@ def encrypt_field_level_payload(headers, conf, body):
160161

161162
return encrypted_payload
162163

164+
163165
def _contains_param(param_name, headers): return param_name and param_name in headers
164166

165167

client_encryption/encoding_utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import base64
22
from enum import Enum
3+
34
from client_encryption.encryption_exception import EncodingError
45

56

client_encryption/encryption_utils.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
from Crypto.PublicKey import RSA
21
from Crypto.Hash import SHA1, SHA224, SHA256, SHA384, SHA512
3-
from client_encryption.encryption_exception import CertificateError, PrivateKeyError, HashAlgorithmError
2+
from Crypto.PublicKey import RSA
43
from cryptography import x509
5-
from cryptography.hazmat.primitives.serialization import pkcs12
64
from cryptography.hazmat.primitives import serialization
75
from cryptography.hazmat.primitives.serialization import Encoding
6+
from cryptography.hazmat.primitives.serialization import pkcs12
87
from enum import IntEnum
98

9+
from client_encryption.encryption_exception import CertificateError, PrivateKeyError, HashAlgorithmError
10+
1011
_SUPPORTED_HASH = {"SHA1": SHA1, "SHA224": SHA224, "SHA256": SHA256, "SHA384": SHA384, "SHA512": SHA512}
1112

13+
1214
class FileType(IntEnum):
1315
FILETYPE_PEM = 0
1416
FILETYPE_ASN1 = 1
@@ -18,15 +20,15 @@ class FileType(IntEnum):
1820
def load_encryption_certificate(certificate_path):
1921
"""Load X509 encryption certificate data at the given file path."""
2022

21-
try:
23+
try:
2224
with open(certificate_path, "rb") as cert_content:
2325
certificate = cert_content.read()
2426
except IOError:
25-
raise CertificateError ("Unable to load certificate.")
26-
27-
try:
27+
raise CertificateError("Unable to load certificate.")
28+
29+
try:
2830
cert_type = __get_crypto_file_type(certificate)
29-
31+
3032
if cert_type == FileType.FILETYPE_PEM:
3133
cert = x509.load_pem_x509_certificate(certificate)
3234
return cert, Encoding.PEM
@@ -36,7 +38,8 @@ def load_encryption_certificate(certificate_path):
3638
if cert_type == FileType.FILETYPE_INVALID:
3739
raise CertificateError("Wrong certificate format.")
3840
except ValueError:
39-
raise CertificateError ("Invalid certificate format.")
41+
raise CertificateError("Invalid certificate format.")
42+
4043

4144
def write_encryption_certificate(certificate_path, certificate, cert_type):
4245
with open(certificate_path, "wb") as f:
@@ -61,7 +64,8 @@ def load_decryption_key(key_file_path, decryption_key_password=None):
6164

6265
def __load_pkcs12_private_key(pkcs_file, password):
6366
private_key, certs, addcerts = pkcs12.load_key_and_certificates(pkcs_file, password.encode("utf-8"))
64-
return private_key.private_bytes(serialization.Encoding.PEM, serialization.PrivateFormat.TraditionalOpenSSL, serialization.NoEncryption())
67+
return private_key.private_bytes(serialization.Encoding.PEM, serialization.PrivateFormat.TraditionalOpenSSL,
68+
serialization.NoEncryption())
6569

6670

6771
def __get_crypto_file_type(file_content):

client_encryption/field_level_encryption.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import json
21
import copy
2+
import json
33
from Crypto.Cipher import AES
44
from Crypto.Util.Padding import pad, unpad
5-
from client_encryption.session_key_params import SessionKeyParams
5+
66
from client_encryption.encoding_utils import encode_bytes, decode_value
7-
from client_encryption.json_path_utils import get_node, pop_node, update_node, cleanup_node
87
from client_encryption.encryption_exception import EncryptionError
8+
from client_encryption.json_path_utils import get_node, pop_node, update_node, cleanup_node
9+
from client_encryption.session_key_params import SessionKeyParams
910

1011

1112
def encrypt_payload(payload, config, _params=None):
@@ -119,4 +120,3 @@ def _remove_fingerprint_from_node(node, config):
119120
del node[config.encryption_certificate_fingerprint_field_name]
120121
if config.encryption_key_fingerprint_field_name in node:
121122
del node[config.encryption_key_fingerprint_field_name]
122-

client_encryption/field_level_encryption_config.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import json
22
from Crypto.Hash import SHA256
3-
from client_encryption import encoding_utils
4-
from client_encryption.encryption_utils import load_encryption_certificate, load_decryption_key, validate_hash_algorithm
53
from cryptography.hazmat.primitives.serialization import PublicFormat, Encoding
64

5+
from client_encryption import encoding_utils
6+
from client_encryption.encryption_utils import load_encryption_certificate, load_decryption_key, validate_hash_algorithm
77

88

99
class FieldLevelEncryptionConfig(object):
@@ -28,12 +28,14 @@ def __init__(self, conf):
2828
x509_cert, cert_type = load_encryption_certificate(json_config["encryptionCertificate"])
2929
self._encryption_certificate = x509_cert
3030
# Fixed encoding is required, regardless of initial certificate encoding to ensure correct calculation of fingerprint value
31-
self._encryption_certificate_type = Encoding.DER
31+
self._encryption_certificate_type = Encoding.DER
3232
self._encryption_key_fingerprint = \
33-
json_config.get("encryptionKeyFingerprint",self.__compute_fingerprint(x509_cert.public_key().public_bytes(Encoding.DER , PublicFormat.SubjectPublicKeyInfo)))
33+
json_config.get("encryptionKeyFingerprint", self.__compute_fingerprint(
34+
x509_cert.public_key().public_bytes(Encoding.DER, PublicFormat.SubjectPublicKeyInfo)))
3435
self._encryption_certificate_fingerprint = \
35-
json_config.get("encryptionCertificateFingerprint", self.__compute_fingerprint(x509_cert.public_bytes(Encoding.DER)))
36-
36+
json_config.get("encryptionCertificateFingerprint",
37+
self.__compute_fingerprint(x509_cert.public_bytes(Encoding.DER)))
38+
3739
else:
3840
self._encryption_certificate = None
3941
self._encryption_key_fingerprint = None
@@ -54,11 +56,11 @@ def __init__(self, conf):
5456
self._encrypted_key_field_name = json_config["encryptedKeyFieldName"]
5557
self._encrypted_value_field_name = json_config["encryptedValueFieldName"]
5658

57-
self._encryption_certificate_fingerprint_field_name =\
59+
self._encryption_certificate_fingerprint_field_name = \
5860
json_config.get("encryptionCertificateFingerprintFieldName", None)
59-
self._encryption_key_fingerprint_field_name =\
61+
self._encryption_key_fingerprint_field_name = \
6062
json_config.get("encryptionKeyFingerprintFieldName", None)
61-
self._oaep_padding_digest_algorithm_field_name =\
63+
self._oaep_padding_digest_algorithm_field_name = \
6264
json_config.get("oaepPaddingDigestAlgorithmFieldName", None)
6365

6466
self._use_http_headers = json_config.get("useHttpHeaders", False)
@@ -74,6 +76,7 @@ def encryption_certificate(self):
7476
@property
7577
def encryption_certificate_type(self):
7678
return self._encryption_certificate_type
79+
7780
@property
7881
def encryption_key_fingerprint(self):
7982
return self._encryption_key_fingerprint

client_encryption/json_path_utils.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import json
22

3-
43
_SEPARATOR = "."
54
_ROOT_SYMBOL = "$"
65

client_encryption/jwe_encryption.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import copy
22
import json
3-
43
from Crypto.Cipher import AES
54

65
from client_encryption.encoding_utils import url_encode_bytes, decode_jwe

client_encryption/jwe_encryption_config.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import json
2-
32
from Crypto.Hash import SHA256
3+
from cryptography.hazmat.primitives.serialization import PublicFormat, Encoding
44

55
from client_encryption.encoding_utils import ClientEncoding
66
from client_encryption.encryption_utils import load_encryption_certificate, load_decryption_key
7-
from cryptography.hazmat.primitives.serialization import PublicFormat, Encoding
87

98

109
class JweEncryptionConfig(object):
@@ -29,9 +28,10 @@ def __init__(self, conf):
2928
x509_cert, cert_type = load_encryption_certificate(json_config["encryptionCertificate"])
3029
self._encryption_certificate = x509_cert
3130
# Fixed encoding is required, regardless of initial certificate encoding to ensure correct calculation of fingerprint value
32-
self._encryption_certificate_type = Encoding.DER
31+
self._encryption_certificate_type = Encoding.DER
3332
self._encryption_key_fingerprint = \
34-
json_config.get("encryptionKeyFingerprint",self.__compute_fingerprint(x509_cert.public_key().public_bytes(Encoding.DER, PublicFormat.SubjectPublicKeyInfo)))
33+
json_config.get("encryptionKeyFingerprint", self.__compute_fingerprint(
34+
x509_cert.public_key().public_bytes(Encoding.DER, PublicFormat.SubjectPublicKeyInfo)))
3535
else:
3636
self._encryption_certificate = None
3737
self._encryption_key_fingerprint = None
@@ -64,7 +64,7 @@ def oaep_padding_digest_algorithm(self):
6464
@property
6565
def encryption_certificate(self):
6666
return self._encryption_certificate
67-
67+
6868
@property
6969
def encryption_certificate_type(self):
7070
return self._encryption_certificate_type

client_encryption/session_key_params.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
from binascii import Error
21
from Crypto.Cipher import PKCS1_OAEP, AES
3-
from Crypto.Random import get_random_bytes
42
from Crypto.PublicKey import RSA
3+
from Crypto.Random import get_random_bytes
4+
from binascii import Error
5+
from cryptography.hazmat.primitives.serialization import PublicFormat
6+
57
from client_encryption.encoding_utils import encode_bytes, decode_value, url_encode_bytes
6-
from client_encryption.encryption_utils import load_hash_algorithm
78
from client_encryption.encryption_exception import KeyWrappingError
9+
from client_encryption.encryption_utils import load_hash_algorithm
810
from client_encryption.field_level_encryption_config import FieldLevelEncryptionConfig
9-
from cryptography.hazmat.primitives.serialization import PublicFormat
10-
1111

1212

1313
class SessionKeyParams(object):
1414
"""Class implementing private session key and its params. Provide key and iv random generation functionality"""
1515

16-
_JWE_KEY_SIZE = 256//8
16+
_JWE_KEY_SIZE = 256 // 8
1717
_MASTERCARD_KEY_SIZE = 128 // 8
1818
_BLOCK_SIZE = AES.block_size
1919

@@ -87,7 +87,9 @@ def generate(config):
8787
def __wrap_secret_key(plain_key, config):
8888
try:
8989
hash_algo = load_hash_algorithm(config.oaep_padding_digest_algorithm)
90-
_cipher = PKCS1_OAEP.new(key=RSA.import_key(config.encryption_certificate.public_key().public_bytes(config.encryption_certificate_type, PublicFormat.SubjectPublicKeyInfo)),
90+
_cipher = PKCS1_OAEP.new(key=RSA.import_key(
91+
config.encryption_certificate.public_key().public_bytes(config.encryption_certificate_type,
92+
PublicFormat.SubjectPublicKeyInfo)),
9193
hashAlgo=hash_algo)
9294

9395
encrypted_secret_key = _cipher.encrypt(plain_key)

0 commit comments

Comments
 (0)