55from abc import ABCMeta , abstractmethod
66
77if t .TYPE_CHECKING :
8- import cryptography
98 import nacl
9+ from cryptography .fernet import Fernet
1010
1111
1212logger = logging .getLogger (__name__ )
1313
1414
15- def get_cryptography () -> cryptography : # type: ignore
15+ def get_fernet_class () -> t . Type [ Fernet ] : # type: ignore
1616 try :
17- import cryptography
17+ from cryptography . fernet import Fernet
1818 except ImportError as e :
1919 print (
2020 "Install pip install piccolo_api[cryptography] to use this "
2121 "feature."
2222 )
2323 raise e
2424
25- return cryptography
25+ return Fernet
2626
2727
2828class EncryptionProvider (metaclass = ABCMeta ):
@@ -108,14 +108,12 @@ def __init__(self, encryption_key: bytes):
108108
109109 @staticmethod
110110 def get_new_key () -> bytes :
111- cryptography = get_cryptography ()
112- return cryptography . fernet . Fernet .generate_key () # type: ignore
111+ Fernet = get_fernet_class ()
112+ return Fernet .generate_key () # type: ignore
113113
114114 def encrypt (self , value : str , add_prefix : bool = True ) -> str :
115- cryptography = get_cryptography ()
116- fernet = cryptography .fernet .Fernet ( # type: ignore
117- self .encryption_key
118- )
115+ Fernet = get_fernet_class ()
116+ fernet = Fernet (self .encryption_key ) # type: ignore
119117 encrypted_value = fernet .encrypt (value .encode ("utf-8" )).decode ("utf-8" )
120118 return (
121119 self .add_prefix (encrypted_value = encrypted_value )
@@ -127,11 +125,8 @@ def decrypt(self, encrypted_value: str, has_prefix: bool = True) -> str:
127125 if has_prefix :
128126 encrypted_value = self .remove_prefix (encrypted_value )
129127
130- cryptography = get_cryptography ()
131-
132- fernet = cryptography .fernet .Fernet ( # type: ignore
133- self .encryption_key
134- )
128+ Fernet = get_fernet_class ()
129+ fernet = Fernet (self .encryption_key ) # type: ignore
135130 return fernet .decrypt (encrypted_value .encode ("utf-8" )).decode ("utf-8" )
136131
137132
0 commit comments