Current File : //lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/__pycache__/dsa.cpython-39.pyc
a

�a�)�@s�ddlZddlmZddlmZddlmZmZmZddl	m
Z
mZddlm
Z
mZmZmZdd�Zd	d
�ZGdd�de�ZGd
d�de
�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZdS)�N)�utils)�InvalidSignature)�_calculate_digest_and_algorithm�_check_not_prehashed�_warn_sign_verify_deprecated)�hashes�
serialization)�AsymmetricSignatureContext�AsymmetricVerificationContext�dsarcCsx|j�|j�}|j�d|�}|j�d�}|j�d|t|�|||j�}|�|dk�|�|d�|j�|�d|d�S)Nzunsigned char[]zunsigned int *r�)	�_libZDSA_size�
_dsa_cdata�_ffi�newZDSA_sign�len�openssl_assert�buffer)�backend�private_key�dataZsig_buf_lenZsig_buf�buflen�res�r�N/usr/lib64/python3.9/site-packages/cryptography/hazmat/backends/openssl/dsa.py�
_dsa_sig_signs�rcCs8|j�d|t|�|t|�|j�}|dkr4|��t�dS)Nrr)r
Z
DSA_verifyrrZ_consume_errorsr)r�
public_key�	signaturerrrrr�_dsa_sig_verify(s�rc@s0eZdZdd�Zed�dd�Zdd�dd	�ZdS)
�_DSAVerificationContextcCs.||_||_||_||_t�|j|j�|_dS�N)�_backend�_public_key�
_signature�
_algorithmr�Hash�	_hash_ctx)�selfrrr�	algorithmrrr�__init__5s
z _DSAVerificationContext.__init__)rcCs|j�|�dSr �r&�update�r'rrrrr+=sz_DSAVerificationContext.updateN��returncCs"|j��}t|j|j|j|�dSr )r&�finalizerr!r"r#)r'Zdata_to_verifyrrr�verify@s
�z_DSAVerificationContext.verify)�__name__�
__module__�__qualname__r)�bytesr+r0rrrrr4src@s>eZdZejejd�dd�Zedd�dd�Z	ed�d	d
�Z
dS)�_DSASignatureContext)rr(cCs(||_||_||_t�|j|j�|_dSr )r!�_private_keyr$rr%r&)r'rrr(rrrr)Isz_DSASignatureContext.__init__N)rr.cCs|j�|�dSr r*r,rrrr+Tsz_DSASignatureContext.updater-cCs|j��}t|j|j|�Sr )r&r/rr!r6)r'Zdata_to_signrrrr/Ws
z_DSASignatureContext.finalize)r1r2r3r�
DSAPrivateKeyr�
HashAlgorithmr)r4r+r/rrrrr5Hs
�r5c@s4eZdZdd�Zejd�dd�Zejd�dd�ZdS)	�_DSAParameterscCs||_||_dSr )r!r)r'r�	dsa_cdatarrrr)]sz_DSAParameters.__init__r-cCs�|jj�d�}|jj�d�}|jj�d�}|jj�|j|||�|j�|d|jjjk�|j�|d|jjjk�|j�|d|jjjk�tj	|j�
|d�|j�
|d�|j�
|d�d�S)N�	BIGNUM **r��p�q�g)r!rrr
�DSA_get0_pqgrr�NULLr�DSAParameterNumbers�
_bn_to_int)r'r=r>r?rrr�parameter_numbersas�z _DSAParameters.parameter_numberscCs|j�|�Sr )r!Zgenerate_dsa_private_key)r'rrr�generate_private_keyosz#_DSAParameters.generate_private_keyN)	r1r2r3r)rrBrDr7rErrrrr9\sr9c@s�eZdZdd�Ze�d�Zeje	d�dd�Z
ejd�dd	�Z
ejd�d
d�Zejd�dd
�Zejejejed�dd�Zeejejejfed�dd�ZdS)�_DSAPrivateKeycCsp||_||_||_|jj�d�}|jj�|||jjj|jjj�|j�|d|jjk�|jj�	|d�|_
dS�Nr;r�r!r�	_evp_pkeyrrr
r@rArZBN_num_bits�	_key_size�r'rr:�evp_pkeyr=rrrr)ts�z_DSAPrivateKey.__init__rJ)�signature_algorithmr.cCst�t|�t|j||�Sr )rrr5r!)r'rMrrr�signer�sz_DSAPrivateKey.signerr-c	CsR|jj�d�}|jj�d�}|jj�d�}|jj�d�}|jj�d�}|jj�|j|||�|j�|d|jjjk�|j�|d|jjjk�|j�|d|jjjk�|jj�|j||�|j�|d|jjjk�|j�|d|jjjk�t	j
t	jt	j|j�
|d�|j�
|d�|j�
|d�d�|j�
|d�d�|j�
|d�d�S)Nr;rr<�rD�y)�public_numbers�x)r!rrr
r@rrrA�DSA_get0_keyr�DSAPrivateNumbers�DSAPublicNumbersrBrC)r'r=r>r?�pub_keyZpriv_keyrrr�private_numbers�s.���z_DSAPrivateKey.private_numberscCs�|jj�|j�}|j�||jjjk�|jj�||jjj�}|jj�	d�}|jj�
|j||jjj�|j�|d|jjjk�|jj�|d�}|jj�|||jjj�}|j�|dk�|j�
|�}t|j||�S)Nr;rr)r!r
�
DSAparams_duprrrrA�gc�DSA_freerrSZBN_dupZDSA_set0_keyZ_dsa_cdata_to_evp_pkey�
_DSAPublicKey)r'r:rVZpub_key_duprrLrrrr�s"
���z_DSAPrivateKey.public_keycCsH|jj�|j�}|j�||jjjk�|jj�||jjj�}t	|j|�Sr )
r!r
rXrrrrArYrZr9�r'r:rrr�
parameters�s
�z_DSAPrivateKey.parameters)�encoding�format�encryption_algorithmr.cCs|j�|||||j|j�Sr )r!Z_private_key_bytesrIr)r'r^r_r`rrr�
private_bytes�s�z_DSAPrivateKey.private_bytes)rr(r.cCs t|j||�\}}t|j||�Sr )rr!r)r'rr(rrr�sign�s�z_DSAPrivateKey.signN)r1r2r3r)r�read_only_property�key_sizerr8r	rNrrTrW�DSAPublicKeyr�
DSAParametersr]r�EncodingZ
PrivateFormatZKeySerializationEncryptionr4ra�typing�Union�
asym_utils�	PrehashedrbrrrrrFss"
�
��rFc@s�eZdZdd�Ze�d�Zeej	e
d�dd�Zej
d�dd	�Zejd�d
d�Zejejed�d
d�Zeeejejej	fdd�dd�ZdS)r[cCsp||_||_||_|jj�d�}|jj�|||jjj|jjj�|j�|d|jjk�|jj�	|d�|_
dSrGrHrKrrrr)�s�z_DSAPublicKey.__init__rJ)rrMr.cCs*t�t�d|�t|�t|j|||�S)Nr)rr�_check_bytesrrr!)r'rrMrrr�verifier�s
�z_DSAPublicKey.verifierr-cCs|jj�d�}|jj�d�}|jj�d�}|jj�d�}|jj�|j|||�|j�|d|jjjk�|j�|d|jjjk�|j�|d|jjjk�|jj�|j||jjj�|j�|d|jjjk�t	j
t	j|j�|d�|j�|d�|j�|d�d�|j�|d�d�S)Nr;rr<rO)
r!rrr
r@rrrArSrrUrBrC)r'r=r>r?rVrrrrQ�s(���z_DSAPublicKey.public_numberscCs2|jj�|j�}|jj�||jjj�}t|j|�Sr )r!r
rXrrrYrZr9r\rrrr]s

�z_DSAPublicKey.parameters)r^r_r.cCs|j�||||jd�Sr )r!Z_public_key_bytesrI)r'r^r_rrr�public_bytess�z_DSAPublicKey.public_bytesN)rrr(r.cCs"t|j||�\}}t|j|||�Sr )rr!r)r'rrr(rrrr0s�z_DSAPublicKey.verify)r1r2r3r)rrcrdr4rr8r
rmrrUrQrfr]rrgZPublicFormatrnrhrirjrkr0rrrrr[�s"
�
	��r[)rhZcryptographyrZcryptography.exceptionsrZ*cryptography.hazmat.backends.openssl.utilsrrrZcryptography.hazmat.primitivesrrZ)cryptography.hazmat.primitives.asymmetricr	r
rrjrrrr5rfr9r7rFrer[rrrr�<module>sd