<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
l_4'                 @   s   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZmZmZ dd Zd	d
 ZejeG dd deZejeG dd deZejejG dd deZejejG dd deZejejG dd deZdS )    )absolute_importdivisionprint_function)utils)InvalidSignature)_calculate_digest_and_algorithm_check_not_prehashed_warn_sign_verify_deprecated)hashes)AsymmetricSignatureContextAsymmetricVerificationContextdsac             C   sx   | j j|j}| jjd|}| jjd}| j jd|t||||j}| j|dk | j|d  | jj|d |d  S )Nzunsigned char[]zunsigned int *r      )	_libZDSA_size
_dsa_cdata_ffinewZDSA_signlenopenssl_assertbuffer)backendprivate_keydataZsig_buf_lenZsig_bufZbuflenres r   /usr/lib64/python3.6/dsa.py_dsa_sig_sign   s    r   c             C   s8   | j jd|t||t||j}|dkr4| j  td S )Nr   r   )r   Z
DSA_verifyr   r   Z_consume_errorsr   )r   
public_key	signaturer   r   r   r   r   _dsa_sig_verify&   s
    r   c               @   s$   e Zd Zdd Zdd Zdd ZdS )_DSAVerificationContextc             C   s.   || _ || _|| _|| _tj| j| j | _d S )N)_backend_public_key
_signature
_algorithmr
   Hash	_hash_ctx)selfr   r   r   	algorithmr   r   r   __init__4   s
    z _DSAVerificationContext.__init__c             C   s   | j j| d S )N)r&   update)r'   r   r   r   r   r*   <   s    z_DSAVerificationContext.updatec             C   s"   | j j }t| j| j| j| d S )N)r&   finalizer   r!   r"   r#   )r'   Zdata_to_verifyr   r   r   verify?   s    
z_DSAVerificationContext.verifyN)__name__
__module____qualname__r)   r*   r,   r   r   r   r   r    2   s   r    c               @   s$   e Zd Zdd Zdd Zdd ZdS )_DSASignatureContextc             C   s(   || _ || _|| _tj| j| j | _d S )N)r!   _private_keyr$   r
   r%   r&   )r'   r   r   r(   r   r   r   r)   I   s    z_DSASignatureContext.__init__c             C   s   | j j| d S )N)r&   r*   )r'   r   r   r   r   r*   O   s    z_DSASignatureContext.updatec             C   s   | j j }t| j| j|S )N)r&   r+   r   r!   r1   )r'   Zdata_to_signr   r   r   r+   R   s    
z_DSASignatureContext.finalizeN)r-   r.   r/   r)   r*   r+   r   r   r   r   r0   G   s   r0   c               @   s$   e Zd Zdd Zdd Zdd ZdS )_DSAParametersc             C   s   || _ || _d S )N)r!   r   )r'   r   	dsa_cdatar   r   r   r)   Y   s    z_DSAParameters.__init__c             C   s   | j jjd}| j jjd}| j jjd}| j jj| j||| | j j|d | j jjk | j j|d | j jjk | j j|d | j jjk tj	| j j
|d | j j
|d | j j
|d dS )Nz	BIGNUM **r   )pqg)r!   r   r   r   DSA_get0_pqgr   r   NULLr   DSAParameterNumbers
_bn_to_int)r'   r4   r5   r6   r   r   r   parameter_numbers]   s    z _DSAParameters.parameter_numbersc             C   s   | j j| S )N)r!   Zgenerate_dsa_private_key)r'   r   r   r   generate_private_keyk   s    z#_DSAParameters.generate_private_keyN)r-   r.   r/   r)   r;   r<   r   r   r   r   r2   W   s   r2   c               @   sN   e Zd Zdd ZejdZdd Zdd Zdd	 Z	d
d Z
dd Zdd ZdS )_DSAPrivateKeyc             C   sp   || _ || _|| _| j jjd}| j jj||| j jj| j jj | j j|d |jjk | j jj	|d | _
d S )Nz	BIGNUM **r   )r!   r   	_evp_pkeyr   r   r   r7   r8   r   BN_num_bits	_key_size)r'   r   r3   evp_pkeyr4   r   r   r   r)   q   s    z_DSAPrivateKey.__init__r@   c             C   s   t   t| t| j| |S )N)r	   r   r0   r!   )r'   signature_algorithmr   r   r   signer   s    z_DSAPrivateKey.signerc             C   sR  | j jjd}| j jjd}| j jjd}| j jjd}| j jjd}| j jj| j||| | j j|d | j jjk | j j|d | j jjk | j j|d | j jjk | j jj| j|| | j j|d | j jjk | j j|d | j jjk t	j
t	jt	j| j j|d | j j|d | j j|d d| j j|d d| j j|d dS )Nz	BIGNUM **r   )r4   r5   r6   )r;   y)public_numbersx)r!   r   r   r   r7   r   r   r8   DSA_get0_keyr   ZDSAPrivateNumbersDSAPublicNumbersr9   r:   )r'   r4   r5   r6   pub_keyZpriv_keyr   r   r   private_numbers   s(    z_DSAPrivateKey.private_numbersc             C   s   | j jj| j}| j j|| j jjk | j jj|| j jj}| j jj	d}| j jj
| j|| j jj | j j|d | j jjk | j jj|d }| j jj||| j jj}| j j|dk | j j|}t| j ||S )Nz	BIGNUM **r   r   )r!   r   DSAparams_dupr   r   r   r8   gcDSA_freer   rG   ZBN_dupZDSA_set0_keyZ_dsa_cdata_to_evp_pkey_DSAPublicKey)r'   r3   rI   Zpub_key_dupr   rA   r   r   r   r      s    z_DSAPrivateKey.public_keyc             C   sH   | j jj| j}| j j|| j jjk | j jj|| j jj}t	| j |S )N)
r!   r   rK   r   r   r   r8   rL   rM   r2   )r'   r3   r   r   r   
parameters   s
    z_DSAPrivateKey.parametersc             C   s   | j j|||| | j| jS )N)r!   Z_private_key_bytesr>   r   )r'   encodingformatZencryption_algorithmr   r   r   private_bytes   s    z_DSAPrivateKey.private_bytesc             C   s    t | j||\}}t| j| |S )N)r   r!   r   )r'   r   r(   r   r   r   sign   s    z_DSAPrivateKey.signN)r-   r.   r/   r)   r   read_only_propertykey_sizerC   rJ   r   rO   rR   rS   r   r   r   r   r=   o   s   

r=   c               @   sF   e Zd Zdd ZejdZdd Zdd Zdd	 Z	d
d Z
dd ZdS )rN   c             C   sp   || _ || _|| _| j jjd}| j jj||| j jj| j jj | j j|d |jjk | j jj	|d | _
d S )Nz	BIGNUM **r   )r!   r   r>   r   r   r   r7   r8   r   r?   r@   )r'   r   r3   rA   r4   r   r   r   r)      s    z_DSAPublicKey.__init__r@   c             C   s*   t   tjd| t| t| j| ||S )Nr   )r	   r   _check_bytesr   r    r!   )r'   r   rB   r   r   r   verifier   s
    z_DSAPublicKey.verifierc             C   s  | j jjd}| j jjd}| j jjd}| j jjd}| j jj| j||| | j j|d | j jjk | j j|d | j jjk | j j|d | j jjk | j jj| j|| j jj | j j|d | j jjk t	j
t	j| j j|d | j j|d | j j|d d| j j|d dS )Nz	BIGNUM **r   )r4   r5   r6   )r;   rD   )r!   r   r   r   r7   r   r   r8   rG   r   rH   r9   r:   )r'   r4   r5   r6   rI   r   r   r   rE      s"    z_DSAPublicKey.public_numbersc             C   s2   | j jj| j}| j jj|| j jj}t| j |S )N)r!   r   rK   r   r   rL   rM   r2   )r'   r3   r   r   r   rO      s    z_DSAPublicKey.parametersc             C   s   | j j||| | jd S )N)r!   Z_public_key_bytesr>   )r'   rP   rQ   r   r   r   public_bytes   s    z_DSAPublicKey.public_bytesc             C   s"   t | j||\}}t| j| ||S )N)r   r!   r   )r'   r   r   r(   r   r   r   r,     s    z_DSAPublicKey.verifyN)r-   r.   r/   r)   r   rT   rU   rW   rE   rO   rX   r,   r   r   r   r   rN      s   
	rN   N)Z
__future__r   r   r   Zcryptographyr   Zcryptography.exceptionsr   Z*cryptography.hazmat.backends.openssl.utilsr   r   r	   Zcryptography.hazmat.primitivesr
   Z)cryptography.hazmat.primitives.asymmetricr   r   r   r   r   Zregister_interfaceobjectr    r0   ZDSAParametersWithNumbersr2   ZDSAPrivateKeyWithSerializationr=   ZDSAPublicKeyWithSerializationrN   r   r   r   r   <module>   s"   Y