Ë
    ýQµi#/  ã                  ó¸   — d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ  G d„ d«      Z G d	„ d
«      Z G d„ d«      Z G d„ d«      Z G d„ d«      Zy)é    )ÚannotationsN)Ú
exceptionsÚutils)Úaead)Úbackend)Ú	FixedPoolc                  óx   — e Zd ZdZd	d„Zed
d„«       Zd„ Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Z		 	 	 	 	 	 	 	 dd„Z
y)ÚChaCha20Poly1305éÿÿÿc                ó*  — t        j                  | «      s.t        j                  dt        j                  j
                  «      ‚t        j                  d|«       t        |«      dk7  rt        d«      ‚|| _
        t        | j                  «      | _        y )Nz<ChaCha20Poly1305 is not supported by this version of OpenSSLÚkeyé    z&ChaCha20Poly1305 key must be 32 bytes.)r   Úaead_cipher_supportedr   ÚUnsupportedAlgorithmÚ_ReasonsÚUNSUPPORTED_CIPHERr   Ú_check_byteslikeÚlenÚ
ValueErrorÚ_keyr   Ú
_create_fnÚ_pool©Úselfr   s     úM/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/ciphers/aead.pyÚ__init__zChaCha20Poly1305.__init__   su   € Ü×,Ñ,¨TÔ2Ü×1Ñ1ØNÜ×#Ñ#×6Ñ6óð ô 	×Ñ˜u cÔ*äˆs‹8�rŠ>ÜÐEÓFÐFàˆŒ	Ü˜tŸ™Ó/ˆ�
ó    c                ó,   — t        j                  d«      S )Nr   )ÚosÚurandom)Úclss    r   Úgenerate_keyzChaCha20Poly1305.generate_key!   s   € ä�z‰z˜"‹~Ðr   c                óL   — t        j                  t        | | j                  «      S ©N)r   Ú_aead_create_ctxr   r   )r   s    r   r   zChaCha20Poly1305._create_fn%   s   € Ü×$Ñ$¤W¨d°D·I±IÓ>Ð>r   c           
     óF  — |€d}t        |«      | j                  kD  st        |«      | j                  kD  rt        d«      ‚| j                  |||«       | j                  j                  «       5 }t        j                  t        | |||gd|«      cd d d «       S # 1 sw Y   y xY w©Nr   ú5Data or associated data too long. Max 2**31 - 1 bytesé   )	r   Ú	_MAX_SIZEÚOverflowErrorÚ_check_paramsr   Úacquirer   Ú_encryptr   ©r   ÚnonceÚdataÚassociated_dataÚctxs        r   ÚencryptzChaCha20Poly1305.encrypt(   s˜   € ð Ð"Ø!ˆOäˆt‹9�t—~‘~Ò%¬¨_Ó)=ÀÇÁÒ)NäØGóð ð 	×Ñ˜5 $¨Ô8Ø�Z‰Z×ÑÓ!ð 	 SÜ—=‘=Ü˜˜u d¨_Ð,=¸rÀ3ó÷	÷ 	ò 	ús   Á- BÂB c           
     óÐ   — |€d}| j                  |||«       | j                  j                  «       5 }t        j                  t
        | |||gd|«      cd d d «       S # 1 sw Y   y xY w©Nr   r)   )r,   r   r-   r   Ú_decryptr   r/   s        r   ÚdecryptzChaCha20Poly1305.decrypt=   sf   € ð Ð"Ø!ˆOà×Ñ˜5 $¨Ô8Ø�Z‰Z×ÑÓ!ð 	 SÜ—=‘=Ü˜˜u d¨_Ð,=¸rÀ3ó÷	÷ 	ò 	ús   ² AÁA%c                óº   — t        j                  d|«       t        j                  d|«       t        j                  d|«       t        |«      dk7  rt        d«      ‚y )Nr0   r1   r2   é   zNonce must be 12 bytes©r   r   r   r   ©r   r0   r1   r2   s       r   r,   zChaCha20Poly1305._check_paramsL   sR   € ô 	×Ñ˜w¨Ô.Ü×Ñ˜v tÔ,Ü×ÑÐ0°/ÔBÜˆu‹:˜ÒÜÐ5Ó6Ð6ð r   N©r   Úbytes)Úreturnr>   ©r0   r>   r1   r>   r2   ztyping.Optional[bytes]r?   r>   ©r0   r>   r1   r>   r2   r>   r?   ÚNone)Ú__name__Ú
__module__Ú__qualname__r*   r   Úclassmethodr"   r   r4   r8   r,   © r   r   r
   r
      s¦   „ Ø€Ió0ð òó ðò?ðàðð ðð 0ð	ð
 
óð*àðð ðð 0ð	ð
 
óð
7àð
7ð ð
7ð ð	
7ð
 
ô
7r   r
   c                  ó|   — e Zd ZdZd	d
d„Zedd„«       Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z		 	 	 	 	 	 	 	 dd„Z
y)ÚAESCCMr   c                óV  — t        j                  d|«       t        |«      dvrt        d«      ‚|| _        t        |t        «      st        d«      ‚|dvrt        d«      ‚|| _        t        j                  | «      s.t        j                  dt        j                  j                  «      ‚y )Nr   ©r)   é   r   z)AESCCM key must be 128, 192, or 256 bits.ztag_length must be an integer)é   é   é   é
   r:   é   r)   zInvalid tag_lengthz2AESCCM is not supported by this version of OpenSSL)r   r   r   r   r   Ú
isinstanceÚintÚ	TypeErrorÚ_tag_lengthr   r   r   r   r   r   )r   r   Ú
tag_lengths      r   r   zAESCCM.__init__\   sœ   € Ü×Ñ˜u cÔ*Üˆs‹8˜<Ñ'ÜÐHÓIÐIàˆŒ	Ü˜*¤cÔ*ÜÐ;Ó<Ð<àÐ6Ñ6ÜÐ1Ó2Ð2à%ˆÔä×,Ñ,¨TÔ2Ü×1Ñ1ØDÜ×#Ñ#×6Ñ6óð ð 3r   c                ó†   — t        |t        «      st        d«      ‚|dvrt        d«      ‚t	        j
                  |dz  «      S ©Núbit_length must be an integer)é€   éÀ   é   z#bit_length must be 128, 192, or 256rO   ©rR   rS   rT   r   r   r    ©r!   Ú
bit_lengths     r   r"   zAESCCM.generate_keyp   ó?   € ä˜*¤cÔ*ÜÐ;Ó<Ð<à˜_Ñ,ÜÐBÓCÐCä�z‰z˜*¨™/Ó*Ð*r   c                ó.  — |€d}t        |«      | j                  kD  st        |«      | j                  kD  rt        d«      ‚| j                  |||«       | j	                  |t        |«      «       t        j                  t        | |||g| j                  «      S )Nr   r(   )	r   r*   r+   r,   Ú_validate_lengthsr   r.   r   rU   r<   s       r   r4   zAESCCM.encryptz   sŽ   € ð Ð"Ø!ˆOäˆt‹9�t—~‘~Ò%¬¨_Ó)=ÀÇÁÒ)NäØGóð ð 	×Ñ˜5 $¨Ô8Ø×Ñ˜u¤c¨$£iÔ0Ü�}‰}Ü�T˜5 $¨Ð(9¸4×;KÑ;Kó
ð 	
r   c                ó‚   — |€d}| j                  |||«       t        j                  t        | |||g| j                  «      S )Nr   )r,   r   r7   r   rU   r<   s       r   r8   zAESCCM.decrypt�   sH   € ð Ð"Ø!ˆOà×Ñ˜5 $¨Ô8Ü�}‰}Ü�T˜5 $¨Ð(9¸4×;KÑ;Kó
ð 	
r   c                óL   — dt        |«      z
  }dd|z  z  |k  rt        d«      ‚y )Né   é   rO   zData too long for nonce)r   r   )r   r0   Údata_lenÚl_vals       r   rb   zAESCCM._validate_lengths�   s3   € ð ”S˜“Z‘ˆØ��U‘Ñ˜hÒ&ÜÐ6Ó7Ð7ð 'r   c                óÞ   — t        j                  d|«       t        j                  d|«       t        j                  d|«       dt        |«      cxk  rdk  st        d«      ‚ t        d«      ‚y )Nr0   r1   r2   é   é   z$Nonce must be between 7 and 13 bytesr;   r<   s       r   r,   zAESCCM._check_params¤   sh   € ô 	×Ñ˜w¨Ô.Ü×Ñ˜v tÔ,Ü×ÑÐ0°/ÔBØ”C˜“JÔ$ "Ò$ÜÐCÓDÐDð %ÜÐCÓDÐDð %r   N)r)   )r   r>   rV   rS   ©r_   rS   r?   r>   r@   )r0   r>   rg   rS   r?   rB   rA   )rC   rD   rE   r*   r   rF   r"   r4   r8   rb   r,   rG   r   r   rI   rI   Y   s¥   „ Ø€Iôð( ò+ó ð+ð
àð
ð ð
ð 0ð	
ð
 
ó
ð*
àð
ð ð
ð 0ð	
ð
 
ó
ó8ðEØðEØ"'ðEØ:?ðEà	ôEr   rI   c                  ór   — e Zd ZdZdd„Zed	d„«       Z	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 dd„Z	y)ÚAESGCMr   c                ón   — t        j                  d|«       t        |«      dvrt        d«      ‚|| _        y )Nr   rK   z)AESGCM key must be 128, 192, or 256 bits.)r   r   r   r   r   r   s     r   r   zAESGCM.__init__±   s1   € Ü×Ñ˜u cÔ*Üˆs‹8˜<Ñ'ÜÐHÓIÐIàˆ�	r   c                ó†   — t        |t        «      st        d«      ‚|dvrt        d«      ‚t	        j
                  |dz  «      S rX   r]   r^   s     r   r"   zAESGCM.generate_key¸   r`   r   c                óä   — |€d}t        |«      | j                  kD  st        |«      | j                  kD  rt        d«      ‚| j                  |||«       t	        j
                  t        | |||gd«      S r'   ©r   r*   r+   r,   r   r.   r   r<   s       r   r4   zAESGCM.encryptÂ   óo   € ð Ð"Ø!ˆOäˆt‹9�t—~‘~Ò%¬¨_Ó)=ÀÇÁÒ)NäØGóð ð 	×Ñ˜5 $¨Ô8Ü�}‰}œW d¨E°4¸/Ð9JÈBÓOÐOr   c                ón   — |€d}| j                  |||«       t        j                  t        | |||gd«      S r6   ©r,   r   r7   r   r<   s       r   r8   zAESGCM.decryptÔ   ó=   € ð Ð"Ø!ˆOà×Ñ˜5 $¨Ô8Ü�}‰}œW d¨E°4¸/Ð9JÈBÓOÐOr   c                óÖ   — t        j                  d|«       t        j                  d|«       t        j                  d|«       t        |«      dk  st        |«      dkD  rt        d«      ‚y )Nr0   r1   r2   rO   rZ   z%Nonce must be between 8 and 128 bytesr;   r<   s       r   r,   zAESGCM._check_paramsà   s\   € ô 	×Ñ˜w¨Ô.Ü×Ñ˜v tÔ,Ü×ÑÐ0°/ÔBÜˆu‹:˜Š>œS ›Z¨#Ò-ÜÐDÓEÐEð .r   Nr=   rl   r@   rA   ©
rC   rD   rE   r*   r   rF   r"   r4   r8   r,   rG   r   r   rn   rn   ®   s°   „ Ø€Ióð ò+ó ð+ðPàðPð ðPð 0ð	Pð
 
óPð$
Pàð
Pð ð
Pð 0ð	
Pð
 
ó
Pð
Fàð
Fð ð
Fð ð	
Fð
 
ô
Fr   rn   c                  ór   — e Zd ZdZdd„Zed	d„«       Z	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 dd„Z	y)ÚAESOCB3r   c                óô   — t        j                  d|«       t        |«      dvrt        d«      ‚|| _        t        j                  | «      s.t        j                  dt        j                  j                  «      ‚y )Nr   rK   z*AESOCB3 key must be 128, 192, or 256 bits.z0OCB3 is not supported by this version of OpenSSL©r   r   r   r   r   r   r   r   r   r   r   r   s     r   r   zAESOCB3.__init__ð   si   € Ü×Ñ˜u cÔ*Üˆs‹8˜<Ñ'ÜÐIÓJÐJàˆŒ	ä×,Ñ,¨TÔ2Ü×1Ñ1ØBÜ×#Ñ#×6Ñ6óð ð 3r   c                ó†   — t        |t        «      st        d«      ‚|dvrt        d«      ‚t	        j
                  |dz  «      S rX   r]   r^   s     r   r"   zAESOCB3.generate_keyý   r`   r   c                óä   — |€d}t        |«      | j                  kD  st        |«      | j                  kD  rt        d«      ‚| j                  |||«       t	        j
                  t        | |||gd«      S r'   rr   r<   s       r   r4   zAESOCB3.encrypt  rs   r   c                ón   — |€d}| j                  |||«       t        j                  t        | |||gd«      S r6   ru   r<   s       r   r8   zAESOCB3.decrypt  rv   r   c                óÖ   — t        j                  d|«       t        j                  d|«       t        j                  d|«       t        |«      dk  st        |«      dkD  rt        d«      ‚y )Nr0   r1   r2   r:   re   z%Nonce must be between 12 and 15 bytesr;   r<   s       r   r,   zAESOCB3._check_params%  s[   € ô 	×Ñ˜w¨Ô.Ü×Ñ˜v tÔ,Ü×ÑÐ0°/ÔBÜˆu‹:˜Š?œc %›j¨2šoÜÐDÓEÐEð .r   Nr=   rl   r@   rA   rx   rG   r   r   rz   rz   í   s°   „ Ø€Ióð ò+ó ð+ðPàðPð ðPð 0ð	Pð
 
óPð$
Pàð
Pð ð
Pð 0ð	
Pð
 
ó
Pð
Fàð
Fð ð
Fð ð	
Fð
 
ô
Fr   rz   c                  óf   — e Zd ZdZdd„Zed	d„«       Z	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 dd„Z	y)ÚAESSIVr   c                óô   — t        j                  d|«       t        |«      dvrt        d«      ‚|| _        t        j                  | «      s.t        j                  dt        j                  j                  «      ‚y )Nr   )r   é0   é@   z)AESSIV key must be 256, 384, or 512 bits.z3AES-SIV is not supported by this version of OpenSSLr|   r   s     r   r   zAESSIV.__init__5  si   € Ü×Ñ˜u cÔ*Üˆs‹8˜<Ñ'ÜÐHÓIÐIàˆŒ	ä×,Ñ,¨TÔ2Ü×1Ñ1ØEÜ×#Ñ#×6Ñ6óð ð 3r   c                ó†   — t        |t        «      st        d«      ‚|dvrt        d«      ‚t	        j
                  |dz  «      S )NrY   )r\   i€  i   z#bit_length must be 256, 384, or 512rO   r]   r^   s     r   r"   zAESSIV.generate_keyB  r`   r   c                óÚ   ‡ — |€g }‰ j                  ||«       t        |«      ‰ j                  kD  st        ˆ fd„|D «       «      rt	        d«      ‚t        j                  t        ‰ d||d«      S )Nc              3  óN   •K  — | ]  }t        |«      ‰j                  kD  –— Œ y ­wr$   )r   r*   )Ú.0Úadr   s     €r   ú	<genexpr>z!AESSIV.encrypt.<locals>.<genexpr>V  s#   øè ø€ ò -
Ø)+ŒC�‹G�d—n‘nÕ$ñ-
ùs   ƒ"%r(   r   r)   )r,   r   r*   Úanyr+   r   r.   r   ©r   r1   r2   s   `  r   r4   zAESSIV.encryptL  sq   ø€ ð
 Ð"Ø ˆOà×Ñ˜4 Ô1äˆt‹9�t—~‘~Ò%¬ó -
Ø/>ô-
ô *
ô  ØGóð ô �}‰}œW d¨C°°ÈÓKÐKr   c                ój   — |€g }| j                  ||«       t        j                  t        | d||d«      S r6   ru   r�   s      r   r8   zAESSIV.decrypt`  s8   € ð
 Ð"Ø ˆOà×Ñ˜4 Ô1ä�}‰}œW d¨C°°ÈÓKÐKr   c                óÒ   — t        j                  d|«       t        |«      dk(  rt        d«      ‚t	        |t
        «      st        d«      ‚|D ]  }t        j                  d|«       Œ y )Nr1   r   zdata must not be zero lengthz<associated_data must be a list of bytes-like objects or Nonezassociated_data elements)r   r   r   r   rR   ÚlistrT   )r   r1   r2   Úxs       r   r,   zAESSIV._check_paramsl  si   € ô
 	×Ñ˜v tÔ,Üˆt‹9˜Š>ÜÐ;Ó<Ð<ä˜/¬4Ô0ÜØNóð ð !ò 	BˆAÜ×"Ñ"Ð#=¸qÕAñ	Br   Nr=   rl   )r1   r>   r2   z#typing.Optional[typing.List[bytes]]r?   r>   )r1   r>   r2   ztyping.List[bytes]r?   rB   rx   rG   r   r   r‚   r‚   2  s�   „ Ø€Ióð ò+ó ð+ðLàðLð =ðLð 
ó	Lð(
Làð
Lð =ð
Lð 
ó	
LðBàðBð ,ðBð 
ô	Br   r‚   )Ú
__future__r   r   ÚtypingÚcryptographyr   r   Ú$cryptography.hazmat.backends.opensslr   Ú,cryptography.hazmat.backends.openssl.backendr   Ú"cryptography.hazmat.bindings._rustr   r
   rI   rn   rz   r‚   rG   r   r   ú<module>r˜      sb   ðõ
 #ã 	Û ç *Ý 5Ý @Ý 8÷F7ñ F7÷RREñ RE÷j<Fñ <F÷~BFñ BF÷JHBò HBr   