1212from logging import getLogger
1313from typing import IO , TYPE_CHECKING
1414
15- from Cryptodome .Cipher import AES
1615from cryptography .hazmat .backends import default_backend
1716from cryptography .hazmat .primitives .ciphers import Cipher , algorithms , modes
1817
@@ -69,7 +68,6 @@ def encrypt_stream(
6968 The encryption metadata.
7069 """
7170 logger = getLogger (__name__ )
72- use_openssl_only = os .getenv ("SF_USE_OPENSSL_ONLY" , "False" ) == "True"
7371 decoded_key = base64 .standard_b64decode (
7472 encryption_material .query_stage_master_key
7573 )
@@ -79,14 +77,9 @@ def encrypt_stream(
7977 # Generate key for data encryption
8078 iv_data = SnowflakeEncryptionUtil .get_secure_random (block_size )
8179 file_key = SnowflakeEncryptionUtil .get_secure_random (key_size )
82- if not use_openssl_only :
83- data_cipher = AES .new (key = file_key , mode = AES .MODE_CBC , IV = iv_data )
84- else :
85- backend = default_backend ()
86- cipher = Cipher (
87- algorithms .AES (file_key ), modes .CBC (iv_data ), backend = backend
88- )
89- encryptor = cipher .encryptor ()
80+ backend = default_backend ()
81+ cipher = Cipher (algorithms .AES (file_key ), modes .CBC (iv_data ), backend = backend )
82+ encryptor = cipher .encryptor ()
9083
9184 padded = False
9285 while True :
@@ -96,30 +89,17 @@ def encrypt_stream(
9689 elif len (chunk ) % block_size != 0 :
9790 chunk = PKCS5_PAD (chunk , block_size )
9891 padded = True
99- if not use_openssl_only :
100- out .write (data_cipher .encrypt (chunk ))
101- else :
102- out .write (encryptor .update (chunk ))
92+ out .write (encryptor .update (chunk ))
10393 if not padded :
104- if not use_openssl_only :
105- out .write (
106- data_cipher .encrypt (block_size * chr (block_size ).encode (UTF8 ))
107- )
108- else :
109- out .write (encryptor .update (block_size * chr (block_size ).encode (UTF8 )))
110- if use_openssl_only :
111- out .write (encryptor .finalize ())
94+ out .write (encryptor .update (block_size * chr (block_size ).encode (UTF8 )))
95+ out .write (encryptor .finalize ())
11296
11397 # encrypt key with QRMK
114- if not use_openssl_only :
115- key_cipher = AES .new (key = decoded_key , mode = AES .MODE_ECB )
116- enc_kek = key_cipher .encrypt (PKCS5_PAD (file_key , block_size ))
117- else :
118- cipher = Cipher (algorithms .AES (decoded_key ), modes .ECB (), backend = backend )
119- encryptor = cipher .encryptor ()
120- enc_kek = (
121- encryptor .update (PKCS5_PAD (file_key , block_size )) + encryptor .finalize ()
122- )
98+ cipher = Cipher (algorithms .AES (decoded_key ), modes .ECB (), backend = backend )
99+ encryptor = cipher .encryptor ()
100+ enc_kek = (
101+ encryptor .update (PKCS5_PAD (file_key , block_size )) + encryptor .finalize ()
102+ )
123103
124104 mat_desc = MaterialDescriptor (
125105 smk_id = encryption_material .smk_id ,
@@ -178,7 +158,6 @@ def decrypt_stream(
178158 ) -> None :
179159 """To read from `src` stream then decrypt to `out` stream."""
180160
181- use_openssl_only = os .getenv ("SF_USE_OPENSSL_ONLY" , "False" ) == "True"
182161 key_base64 = metadata .key
183162 iv_base64 = metadata .iv
184163 decoded_key = base64 .standard_b64decode (
@@ -187,37 +166,26 @@ def decrypt_stream(
187166 key_bytes = base64 .standard_b64decode (key_base64 )
188167 iv_bytes = base64 .standard_b64decode (iv_base64 )
189168
190- if not use_openssl_only :
191- key_cipher = AES .new (key = decoded_key , mode = AES .MODE_ECB )
192- file_key = PKCS5_UNPAD (key_cipher .decrypt (key_bytes ))
193- data_cipher = AES .new (key = file_key , mode = AES .MODE_CBC , IV = iv_bytes )
194- else :
195- backend = default_backend ()
196- cipher = Cipher (algorithms .AES (decoded_key ), modes .ECB (), backend = backend )
197- decryptor = cipher .decryptor ()
198- file_key = PKCS5_UNPAD (decryptor .update (key_bytes ) + decryptor .finalize ())
199- cipher = Cipher (
200- algorithms .AES (file_key ), modes .CBC (iv_bytes ), backend = backend
201- )
202- decryptor = cipher .decryptor ()
169+ backend = default_backend ()
170+ cipher = Cipher (algorithms .AES (decoded_key ), modes .ECB (), backend = backend )
171+ decryptor = cipher .decryptor ()
172+ file_key = PKCS5_UNPAD (decryptor .update (key_bytes ) + decryptor .finalize ())
173+ cipher = Cipher (algorithms .AES (file_key ), modes .CBC (iv_bytes ), backend = backend )
174+ decryptor = cipher .decryptor ()
203175
204176 last_decrypted_chunk = None
205177 chunk = src .read (chunk_size )
206178 while len (chunk ) != 0 :
207179 if last_decrypted_chunk is not None :
208180 out .write (last_decrypted_chunk )
209- if not use_openssl_only :
210- d = data_cipher .decrypt (chunk )
211- else :
212- d = decryptor .update (chunk )
181+ d = decryptor .update (chunk )
213182 last_decrypted_chunk = d
214183 chunk = src .read (chunk_size )
215184
216185 if last_decrypted_chunk is not None :
217186 offset = PKCS5_OFFSET (last_decrypted_chunk )
218187 out .write (last_decrypted_chunk [:- offset ])
219- if use_openssl_only :
220- out .write (decryptor .finalize ())
188+ out .write (decryptor .finalize ())
221189
222190 @staticmethod
223191 def decrypt_file (
0 commit comments