§
    pïg¸"  ã            
       ó  — d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	m
Z e j        rd dlmZ ddd	d
dedefd„Zdddddededdf
d„Z G d„ de	j        ¦  «        Z G d„ d
e	j        ¦  «        Z G d„ de	j        ¦  «        ZdS )é    N)ÚInvalidSignature)Ú_calculate_digest_and_algorithm)ÚhashesÚserialization)ÚdsaÚutils)ÚBackendÚbackendr	   Úprivate_keyÚ_DSAPrivateKeyÚdataÚreturnc                 óÄ  — | j                              |j        ¦  «        }| j                             d|¦  «        }| j                             d¦  «        }| j                              d|t          |¦  «        |||j        ¦  «        }|                      |dk    ¦  «         |                      |d         ¦  «         | j                             |¦  «        d |d         …         S )Nzunsigned char[]zunsigned int *r   é   )	Ú_libÚDSA_sizeÚ
_dsa_cdataÚ_ffiÚnewÚDSA_signÚlenÚopenssl_assertÚbuffer)r
   r   r   Úsig_buf_lenÚsig_bufÚbuflenÚress          úJ/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/dsa.pyÚ_dsa_sig_signr      sÎ   € ð ”,×'Ò'¨Ô(>Ñ?Ô?€KØŒl×ÒÐ0°+Ñ>Ô>€GØŒ\×ÒÐ.Ñ/Ô/€Fð Œ,×
Ò
Ø	ˆ4•�T‘”˜G V¨[Ô-Cñô €Cð ×Ò˜3 !š8Ñ$Ô$Ð$Ø×Ò˜6 !œ9Ñ%Ô%Ð%àŒ<×Ò˜wÑ'Ô'¨¨&°¬)¨Ô4Ð4ó    Ú
public_keyÚ_DSAPublicKeyÚ	signaturec           	      óÄ   — | j                              d|t          |¦  «        |t          |¦  «        |j        ¦  «        }|dk    r|                      ¦   «          t
          ‚d S )Nr   r   )r   Ú
DSA_verifyr   r   Ú_consume_errorsr   )r
   r!   r#   r   r   s        r   Ú_dsa_sig_verifyr'   )   sa   € ð Œ,×
!Ò
!Ø	ˆ4•�T‘”˜I¥s¨9¡~¤~°zÔ7Lñô €Cð ˆa‚x€xØ×ÒÑ!Ô!Ð!ÝÐð €xr    c                   óB   — e Zd Zdd„Zdej        fd„Zdej        fd„ZdS )	Ú_DSAParametersr
   r	   c                 ó"   — || _         || _        d S ©N)Ú_backendr   )Úselfr
   Ú	dsa_cdatas      r   Ú__init__z_DSAParameters.__init__;   s   € ØˆŒØ#ˆŒˆˆr    r   c                 ó  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          j	        | j          
                    |d         ¦  «        | j          
                    |d         ¦  «        | j          
                    |d         ¦  «        ¬¦  «        S )Nú	BIGNUM **r   ©ÚpÚqÚg)r,   r   r   r   ÚDSA_get0_pqgr   r   ÚNULLr   ÚDSAParameterNumbersÚ
_bn_to_int)r-   r3   r4   r5   s       r   Úparameter_numbersz _DSAParameters.parameter_numbers?   s?  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×'Ò'¨¬¸¸A¸qÑAÔAÐAØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEÝÔ&ØŒm×&Ò& q¨¤tÑ,Ô,ØŒm×&Ò& q¨¤tÑ,Ô,ØŒm×&Ò& q¨¤tÑ,Ô,ð
ñ 
ô 
ð 	
r    c                 ó6   — | j                              | ¦  «        S r+   )r,   Úgenerate_dsa_private_key©r-   s    r   Úgenerate_private_keyz#_DSAParameters.generate_private_keyM   s   € ØŒ}×5Ò5°dÑ;Ô;Ð;r    N©r
   r	   )	Ú__name__Ú
__module__Ú__qualname__r/   r   r8   r:   ÚDSAPrivateKeyr>   © r    r   r)   r)   :   sd   € € € € € ð$ð $ð $ð $ð
 3Ô#:ð 
ð 
ð 
ð 
ð< cÔ&7ð <ð <ð <ð <ð <ð <r    r)   c                   óø   — e Zd ZU eed<   dd„Zedefd„¦   «         Zdej	        fd„Z
dej        fd„Zdej        fd	„Zd
ej        dej        dej        defd„Zdedej        ej        ej        f         defd„ZdS )r   Ú	_key_sizer
   r	   c                 óž  — || _         || _        || _        | j         j                             d¦  «        }| j         j                             ||| j         j        j        | j         j        j        ¦  «         | j                              |d         |j        j        k    ¦  «         | j         j         	                    |d         ¦  «        | _
        d S ©Nr1   r   ©r,   r   Ú	_evp_pkeyr   r   r   r6   r7   r   ÚBN_num_bitsrF   ©r-   r
   r.   Úevp_pkeyr3   s        r   r/   z_DSAPrivateKey.__init__T   s­   € ØˆŒØ#ˆŒØ!ˆŒàŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×'Ò'Ø�q˜$œ-Ô,Ô1°4´=Ô3EÔ3Jñ	
ô 	
ð 	
ð 	Œ×$Ò$ Q q¤T¨W¬\Ô->Ò%>Ñ?Ô?Ð?ØœÔ+×7Ò7¸¸!¼Ñ=Ô=ˆŒˆˆr    r   c                 ó   — | j         S r+   ©rF   r=   s    r   Úkey_sizez_DSAPrivateKey.key_size`   ó
   € àŒ~Ðr    c                 óz  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j         j                             | j        ||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          j
        t          j        t          j        | j                              |d         ¦  «        | j                              |d         ¦  «        | j                              |d         ¦  «        ¬¦  «        | j                              |d         ¦  «        ¬¦  «        | j                              |d         ¦  «        ¬¦  «        S )Nr1   r   r2   ©r:   Úy)Úpublic_numbersÚx)r,   r   r   r   r6   r   r   r7   ÚDSA_get0_keyr   ÚDSAPrivateNumbersÚDSAPublicNumbersr8   r9   )r-   r3   r4   r5   Úpub_keyÚpriv_keys         r   Úprivate_numbersz_DSAPrivateKey.private_numbersd   s8  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØ”-Ô$×(Ò(¨Ñ5Ô5ˆØ”=Ô%×)Ò)¨+Ñ6Ô6ˆØŒÔ×'Ò'¨¬¸¸A¸qÑAÔAÐAØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒÔ×'Ò'¨¬¸À(ÑKÔKÐKØŒ×$Ò$ W¨Q¤Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØŒ×$Ò$ X¨a¤[°D´MÔ4FÔ4KÒ%KÑLÔLÐLÝÔ$ÝÔ/Ý"%Ô"9Ø”m×.Ò.¨q°¬tÑ4Ô4Ø”m×.Ò.¨q°¬tÑ4Ô4Ø”m×.Ò.¨q°¬tÑ4Ô4ð#ñ #ô #ð
 ”-×*Ò*¨7°1¬:Ñ6Ô6ðñ ô ð Œm×&Ò& x°¤{Ñ3Ô3ð

ñ 

ô 

ð 
	
r    c                 óV  — | j         j                             | j        ¦  «        }| j                              || j         j        j        k    ¦  «         | j         j                             || j         j        j        ¦  «        }| j         j         	                    d¦  «        }| j         j         
                    | j        || j         j        j        ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j         j                             |d         ¦  «        }| j         j                             ||| j         j        j        ¦  «        }| j                              |dk    ¦  «         | j                              |¦  «        }t          | j         ||¦  «        S )Nr1   r   r   )r,   r   ÚDSAparams_dupr   r   r   r7   ÚgcÚDSA_freer   rW   ÚBN_dupÚDSA_set0_keyÚ_dsa_cdata_to_evp_pkeyr"   )r-   r.   rZ   Úpub_key_dupr   rM   s         r   r!   z_DSAPrivateKey.public_key}   sa  € Ø”MÔ&×4Ò4°T´_ÑEÔEˆ	ØŒ×$Ò$ Y°$´-Ô2DÔ2IÒ%IÑJÔJÐJØ”MÔ&×)Ò)Ø�t”}Ô)Ô2ñ
ô 
ˆ	ð ”-Ô$×(Ò(¨Ñ5Ô5ˆØŒÔ×'Ò'ØŒO˜W d¤mÔ&8Ô&=ñ	
ô 	
ð 	
ð 	Œ×$Ò$ W¨Q¤Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKØ”mÔ(×/Ò/°¸´
Ñ;Ô;ˆØŒmÔ ×-Ò-Ø�{ D¤MÔ$6Ô$;ñ
ô 
ˆð 	Œ×$Ò$ S¨A¢XÑ.Ô.Ð.Ø”=×7Ò7¸	ÑBÔBˆÝ˜Tœ]¨I°xÑ@Ô@Ð@r    c                 ó,  — | j         j                             | j        ¦  «        }| j                              || j         j        j        k    ¦  «         | j         j                             || j         j        j        ¦  «        }t          | j         |¦  «        S r+   )
r,   r   r^   r   r   r   r7   r_   r`   r)   ©r-   r.   s     r   Ú
parametersz_DSAPrivateKey.parameters�   sz   € Ø”MÔ&×4Ò4°T´_ÑEÔEˆ	ØŒ×$Ò$ Y°$´-Ô2DÔ2IÒ%IÑJÔJÐJØ”MÔ&×)Ò)Ø�t”}Ô)Ô2ñ
ô 
ˆ	õ ˜dœm¨YÑ7Ô7Ð7r    ÚencodingÚformatÚencryption_algorithmc                 óT   — | j                              |||| | j        | j        ¦  «        S r+   )r,   Ú_private_key_bytesrJ   r   )r-   rh   ri   rj   s       r   Úprivate_bytesz_DSAPrivateKey.private_bytes˜   s4   € ð Œ}×/Ò/ØØØ ØØŒNØŒOñ
ô 
ð 	
r    r   Ú	algorithmc                 óT   — t          ||¦  «        \  }}t          | j        | |¦  «        S r+   )r   r   r,   )r-   r   rn   Ú_s       r   Úsignz_DSAPrivateKey.sign§   s+   € õ
 2°$¸	ÑBÔB‰ˆˆaÝ˜Tœ]¨D°$Ñ7Ô7Ð7r    Nr?   )r@   rA   rB   ÚintÚ__annotations__r/   ÚpropertyrP   r   rX   r\   ÚDSAPublicKeyr!   ÚDSAParametersrg   r   ÚEncodingÚPrivateFormatÚKeySerializationEncryptionÚbytesrm   ÚtypingÚUnionÚ
asym_utilsÚ	Prehashedr   ÚHashAlgorithmrq   rD   r    r   r   r   Q   s>  € € € € € € Ø€N€N�Nð
>ð 
>ð 
>ð 
>ð ð˜#ð ð ð ñ „Xðð
 Ô!6ð 
ð 
ð 
ð 
ð2A˜CÔ,ð Að Að Að Að&8˜CÔ-ð 8ð 8ð 8ð 8ð
àÔ(ð
ð Ô+ð
ð ,ÔFð	
ð
 
ð
ð 
ð 
ð 
ð8àð8ð ”< 
Ô 4°fÔ6JÐ JÔKð8ð 
ð	8ð 8ð 8ð 8ð 8ð 8r    c                   óØ   — e Zd ZU eed<   dd„Zedefd„¦   «         Zdej	        fd„Z
dej        fd„Zd	ej        d
ej        defd„Zdededej        ej        ej        f         ddfd„ZdS )r"   rF   r
   r	   c                 óž  — || _         || _        || _        | j         j                             d¦  «        }| j         j                             ||| j         j        j        | j         j        j        ¦  «         | j                              |d         |j        j        k    ¦  «         | j         j         	                    |d         ¦  «        | _
        d S rH   rI   rL   s        r   r/   z_DSAPublicKey.__init__³   s­   € ØˆŒØ#ˆŒØ!ˆŒØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒÔ×'Ò'Ø�q˜$œ-Ô,Ô1°4´=Ô3EÔ3Jñ	
ô 	
ð 	
ð 	Œ×$Ò$ Q q¤T¨W¬\Ô->Ò%>Ñ?Ô?Ð?ØœÔ+×7Ò7¸¸!¼Ñ=Ô=ˆŒˆˆr    r   c                 ó   — | j         S r+   rO   r=   s    r   rP   z_DSAPublicKey.key_size¾   rQ   r    c           
      ó�  — | j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             d¦  «        }| j         j                             | j        |||¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j                              |d         | j         j        j        k    ¦  «         | j         j                             | j        || j         j        j        ¦  «         | j                              |d         | j         j        j        k    ¦  «         t          j
        t          j        | j                              |d         ¦  «        | j                              |d         ¦  «        | j                              |d         ¦  «        ¬¦  «        | j                              |d         ¦  «        ¬¦  «        S )Nr1   r   r2   rS   )r,   r   r   r   r6   r   r   r7   rW   r   rY   r8   r9   )r-   r3   r4   r5   rZ   s        r   rU   z_DSAPublicKey.public_numbersÂ   sÜ  € ØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØŒMÔ×"Ò" ;Ñ/Ô/ˆØ”-Ô$×(Ò(¨Ñ5Ô5ˆØŒÔ×'Ò'¨¬¸¸A¸qÑAÔAÐAØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒ×$Ò$ Q q¤T¨T¬]Ô-?Ô-DÒ%DÑEÔEÐEØŒÔ×'Ò'ØŒO˜W d¤mÔ&8Ô&=ñ	
ô 	
ð 	
ð 	Œ×$Ò$ W¨Q¤Z°4´=Ô3EÔ3JÒ%JÑKÔKÐKÝÔ#Ý!Ô5Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0Ø”-×*Ò*¨1¨Q¬4Ñ0Ô0ðñ ô ð
 Œm×&Ò& w¨q¤zÑ2Ô2ð
ñ 
ô 
ð 	
r    c                 óÒ   — | j         j                             | j        ¦  «        }| j         j                             || j         j        j        ¦  «        }t          | j         |¦  «        S r+   )r,   r   r^   r   r   r_   r`   r)   rf   s     r   rg   z_DSAPublicKey.parametersØ   sW   € Ø”MÔ&×4Ò4°T´_ÑEÔEˆ	Ø”MÔ&×)Ò)Ø�t”}Ô)Ô2ñ
ô 
ˆ	õ ˜dœm¨YÑ7Ô7Ð7r    rh   ri   c                 óH   — | j                              ||| | j        d ¦  «        S r+   )r,   Ú_public_key_bytesrJ   )r-   rh   ri   s      r   Úpublic_bytesz_DSAPublicKey.public_bytesß   s+   € ð
 Œ}×.Ò.Ø�f˜d D¤N°Dñ
ô 
ð 	
r    r#   r   rn   Nc                 óV   — t          ||¦  «        \  }}t          | j        | ||¦  «        S r+   )r   r'   r,   )r-   r#   r   rn   rp   s        r   Úverifyz_DSAPublicKey.verifyè   s-   € õ 2°$¸	ÑBÔB‰ˆˆaÝ˜tœ}¨d°I¸tÑDÔDÐDr    r?   )r@   rA   rB   rr   rs   r/   rt   rP   r   rY   rU   rv   rg   r   rw   ÚPublicFormatrz   r‡   r{   r|   r}   r~   r   r   r‰   rD   r    r   r"   r"   °   s"  € € € € € € Ø€N€N�Nð	>ð 	>ð 	>ð 	>ð ð˜#ð ð ð ñ „Xðð
 Ô 4ð 
ð 
ð 
ð 
ð,8˜CÔ-ð 8ð 8ð 8ð 8ð
àÔ(ð
ð Ô*ð
ð 
ð	
ð 
ð 
ð 
ðEàðEð ðEð ”< 
Ô 4°fÔ6JÐ JÔKð	Eð
 
ðEð Eð Eð Eð Eð Er    )r{   Úcryptography.exceptionsr   Ú*cryptography.hazmat.backends.openssl.utilsr   Úcryptography.hazmat.primitivesr   r   Ú)cryptography.hazmat.primitives.asymmetricr   r   r}   ÚTYPE_CHECKINGÚ,cryptography.hazmat.backends.openssl.backendr	   rz   r   r'   rv   r)   rC   r   ru   r"   rD   r    r   ú<module>r‘      s½  ðð €€€à 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð AÐ @Ð @Ð @Ð @Ð @Ð @Ð @ðð ð ð ð ð ð ð ð 
Ôð EØDÐDÐDÐDÐDÐDð5Øð5Ø%5ð5Ø=Bð5à
ð5ð 5ð 5ð 5ð$Øðàðð ðð ð	ð
 
ðð ð ð ð"<ð <ð <ð <ð <�SÔ&ñ <ô <ð <ð.\8ð \8ð \8ð \8ð \8�SÔ&ñ \8ô \8ð \8ð~?Eð ?Eð ?Eð ?Eð ?E�CÔ$ñ ?Eô ?Eð ?Eð ?Eð ?Er    