HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/buyercall/lib/__pycache__/util_crypto.cpython-310.pyc
o


�e/�@s�ddlZddlZddlmZddlmZddlZddlm	Z	ddl
mZddlm
ZddlmZddlmZd	Zd
d�Zdd
�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�de�ZGdd�d�ZdS)�N)�pad)�unpad)�Random)�AES)�current_app)�String)�
TypeDecorator�cCs(|tt|�tttt|�t�S�N)�BS�len�chr��s�r�;/home/arjun/projects/buyercall/buyercall/lib/util_crypto.pyrs(rcCs|d|d���S)Nr���)�decoderrrrrsrc@�$eZdZdd�Zdd�Zdd�ZdS)�	AESCiphercCs|�d�|_dS�N�utf8)�encode�key��selfrrrr�__init__szAESCipher.__init__cCsHt|�}t���tj�}t�|jtj|�}t�	||�
|�d�����Sr)
rr�new�readr�
block_sizer�MODE_CBC�base64�	b64encode�encryptrr�r�raw�iv�cipherrrrr#szAESCipher.encryptcCs>t�|�}|dd�}t�|jtj|�}t|�|dd���S)Nr	)r!�	b64decoderrrr r�decrypt)r�encr&r'rrrr)s
zAESCipher.decryptN)�__name__�
__module__�__qualname__rr#r)rrrrrsrc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
AESCipherDomez� 
        Change in the input data(encoded) for the encryption algorithm.
        Using AES's default block size for initialization vector. 
    cCs$t|t�r
||_dS|�d�|_dS�N�utf-8)�
isinstance�bytesrrrrrrr+s$zAESCipherDome.__init__c	CsDt�tj�}t�|jtj|�}t�||�	t
|�d�tj�����Sr/)
r�get_random_bytesrrrrr r!r"r#�paddingrrr$rrrr#.s&zAESCipherDome.encryptcCsFt�|�}t�|jtj|dtj��}t|�|tjd��tj��	�Sr
)
r!r(rrrr r�	unpaddingr)r)r�	encryptedr%r'rrrr)3s
 zAESCipherDome.decryptN)r+r,r-�__doc__rr#r)rrrrr.%s
r.c@r)�
SymEncryptioncCs>t|t�r
|�d�n||_t|t�r|�d�|_dS||_dSr)r1�strrr�nonce)rrr:rrrr>s$zSymEncryption.__init__cCsBtj|jtj|jd�}|ddt|�d}|�|�d����S)N�r:� r	r0)	rrr�MODE_EAXr:rr#r�hex�r�datar'rrr�sym_encryptBszSymEncryption.sym_encryptcCs:tj|jtj|jd�}|�d�}|�t�|���	d��
�S)Nr;r0)rrrr=r:rr)�binascii�	unhexlifyr�rstripr?rrr�sym_decryptGs
zSymEncryption.sym_decryptN)r+r,r-rrArErrrrr8<sr8c@s eZdZeZdd�Zdd�ZdS)�EncryptedValuecCs8t|�tkr|Stjd}tjd}t||�}|�|�S)N�SYM_CRYPTO_SECRET_KEY�SYM_CRYPTO_NONCE)�type�list�app�configr8rA�r�value�dialect�ec_key�ec_nonce�symrrr�process_bind_paramPs



z!EncryptedValue.process_bind_paramcCsR|r't|�dkr
|Sztjd}tjd}t||�}|�|�WS|YSdS)N� rGrH�)rrKrLr8rErMrrr�process_result_valueXs


z#EncryptedValue.process_result_valueN)r+r,r-r�implrSrVrrrrrFMsrFc@seZdZedd��ZdS)�SHAcCst�|�����}|Sr
)�hashlib�sha256r�	hexdigest)�hash_string�
sha_signaturerrrr#iszSHA.encryptN)r+r,r-�staticmethodr#rrrrrXhsrX)r!rY�Crypto.Util.Paddingrr4rr5rB�Cryptor�
Crypto.Cipherr�flaskrrK�
sqlalchemyrrrrr.r8rFrXrrrr�<module>s$