Ë
    ±éägº#  ã                  óø   — d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZmZmZmZmZ d dlmZ  G d„ dej$                  «      Z G d	„ d
ej$                  «      Z G d„ d«      Z G d„ de«      Z G d„ de«      Zy)é    )ÚannotationsN)Úutils)ÚAlreadyFinalizedÚ
InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)ÚciphersÚcmacÚconstant_timeÚhashesÚhmac)ÚKeyDerivationFunctionc                  ó   — e Zd ZdZy)ÚModeÚctrN)Ú__name__Ú
__module__Ú__qualname__ÚCounterMode© ó    úf/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.pyr   r      s   „ Ø�Kr   r   c                  ó   — e Zd ZdZdZdZy)ÚCounterLocationÚbefore_fixedÚafter_fixedÚmiddle_fixedN)r   r   r   ÚBeforeFixedÚ
AfterFixedÚMiddleFixedr   r   r   r   r      s   „ Ø €KØ€JØ �Kr   r   c                  ó^   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zedd„«       Zdd„Zd	d„Zy)
Ú_KBKDFDeriverc                ó>  — t        |«      sJ ‚t        |t        «      st        d«      ‚t        |t        «      st        d«      ‚|€|t        j
                  u rt        d«      ‚|�|t        j
                  k7  rt        d«      ‚|�t        |t        «      st        d«      ‚|�|dk  rt        d«      ‚|s|	r|
rt        d«      ‚|�| j                  |«      st        d	«      ‚|€|
€t        d
«      ‚|�t        |t        «      st        d«      ‚|dk(  rt        d«      ‚|€d}|	€d}	t        j                  d|«       t        j                  d|	«       || _        || _        || _        || _        || _        || _        || _        || _        |	| _        d| _        |
| _        y )Nzmode must be of type Modez(location must be of type CounterLocationzPlease specify a break_locationzJbreak_location is ignored when location is not CounterLocation.MiddleFixedz!break_location must be an integerr   z)break_location must be a positive integerz9When supplying fixed data, label and context are ignored.zrlen must be between 1 and 4zPlease specify an llenzllen must be an integerzllen must be non-zeror   ÚlabelÚcontextF)ÚcallableÚ
isinstancer   Ú	TypeErrorr   r    Ú
ValueErrorÚintÚ_valid_byte_lengthr   Ú_check_bytesÚ_prfÚ_modeÚ_lengthÚ_rlenÚ_llenÚ	_locationÚ_break_locationÚ_labelÚ_contextÚ_usedÚ_fixed_data)ÚselfÚprfÚmodeÚlengthÚrlenÚllenÚlocationÚbreak_locationr$   r%   Úfixeds              r   Ú__init__z_KBKDFDeriver.__init__%   s¶  € ô ˜Œ}Ðˆ}ä˜$¤Ô%ÜÐ7Ó8Ð8ä˜(¤OÔ4ÜÐFÓGÐGàÐ! h´/×2MÑ2MÑ&MÜÐ>Ó?Ð?ð Ð&ØœO×7Ñ7Ò7äð/óð ð
 Ð%¬j¸ÌÔ.MÜÐ?Ó@Ð@àÐ%¨.¸1Ò*<ÜÐHÓIÐIá‘W¡%ÜØKóð ð ˆ<˜t×6Ñ6°tÔ<ÜÐ;Ó<Ð<àˆ<˜E˜MÜÐ5Ó6Ð6àÐ¤J¨t´SÔ$9ÜÐ5Ó6Ð6à�1Š9ÜÐ4Ó5Ð5àˆ=ØˆEàˆ?ØˆGä×Ñ˜7 EÔ*Ü×Ñ˜9 gÔ.ØˆŒ	ØˆŒ
ØˆŒØˆŒ
ØˆŒ
Ø!ˆŒØ-ˆÔØˆŒØˆŒØˆŒ
Ø ˆÕr   c                ó”   — t        | t        «      st        d«      ‚t        j                  d| «      }dt        |«      cxk  rdk  sy yy)Nzvalue must be of type inté   é   FT)r'   r*   r(   r   Úint_to_bytesÚlen)ÚvalueÚ	value_bins     r   r+   z _KBKDFDeriver._valid_byte_lengthq   sI   € ä˜%¤Ô%ÜÐ7Ó8Ð8ä×&Ñ& q¨%Ó0ˆ	Ø”C˜	“NÔ' aÒ'Øð (ØØr   c                ó®  — | j                   rt        ‚t        j                  d|«       d| _         | j                   |z   }dg}t        j
                  d| j                  «      }|t        dt        |«      dz  «      dz
  kD  rt        d«      ‚| j                  «       }| j                  t        j                  k(  rd}|}n}| j                  t        j                  k(  r|}d}n[t        | j                   t"        «      r#| j                   t        |«      kD  rt        d«      ‚|d | j                    }|| j                   d  }t%        d|dz   «      D ]k  }	| j'                  |«      }
t        j
                  |	| j                  «      }||z   |z   }|
j)                  |«       |j+                  |
j-                  «       «       Œm dj/                  |«      d | j                   S )	NÚkey_materialTr   rC   é   é   zThere are too many iterations.z"break_location offset > len(fixed))r6   r   r   Ú_check_bytesliker/   rE   r0   ÚpowrF   r)   Ú_generate_fixed_inputr2   r   r   r   r'   r3   r*   Úranger-   ÚupdateÚappendÚfinalizeÚjoin)r8   rJ   Úprf_output_sizeÚroundsÚoutputÚr_binr@   Údata_before_ctrÚdata_after_ctrÚiÚhÚcounterÚ
input_datas                r   Úderivez_KBKDFDeriver.derive{   s¦  € Ø�:Š:Ü"Ð"ä×Ñ˜~¨|Ô<ØˆŒ
ð —L‘L�= OÑ3Ð4ˆà�ˆô ×"Ñ" 1 d§j¡jÓ1ˆØ”C˜œ3˜u›:¨™>Ó*¨QÑ.Ò.ÜÐ=Ó>Ð>à×*Ñ*Ó,ˆà�>‰>œ_×8Ñ8Ò8Ø!ˆOØ"‰NØ�^‰^œ×9Ñ9Ò9Ø#ˆOØ ‰NäØ×$Ñ$¤côà×&Ñ&¬¨U«Ò3Ü Ð!EÓFÐFØ#Ð$: d×&:Ñ&:Ð;ˆOØ" 4×#7Ñ#7Ð#9Ð:ˆNä�q˜& 1™*Ó%ò 	(ˆAØ—	‘	˜,Ó'ˆAä×(Ñ(¨¨D¯J©JÓ7ˆGØ(¨7Ñ2°^ÑCˆJà�H‰H�ZÔ à�M‰M˜!Ÿ*™*›,Õ'ð	(ð �x‰x˜Ó  $§,¡,Ð/Ð/r   c                ó  — | j                   r&t        | j                   t        «      r| j                   S t        j                  | j
                  dz  | j                  «      }dj                  | j                  d| j                  |g«      S )NrL   r   ó    )
r7   r'   Úbytesr   rE   r/   r1   rT   r4   r5   )r8   Úl_vals     r   rO   z#_KBKDFDeriver._generate_fixed_input«   se   € Ø×Ò¤
¨4×+;Ñ+;¼UÔ CØ×#Ñ#Ð#ä×"Ñ" 4§<¡<°!Ñ#3°T·Z±ZÓ@ˆà�x‰x˜Ÿ™ g¨t¯}©}¸eÐDÓEÐEr   N)r9   ztyping.Callabler:   r   r;   r*   r<   r*   r=   ú
int | Noner>   r   r?   rd   r$   úbytes | Noner%   re   r@   re   )rG   r*   ÚreturnÚbool)rJ   rb   rU   r*   rf   rb   )rf   rb   )r   r   r   rA   Ústaticmethodr+   r_   rO   r   r   r   r"   r"   $   s•   „ ðJ!àðJ!ð ðJ!ð ð	J!ð
 ðJ!ð ðJ!ð "ðJ!ð #ðJ!ð ðJ!ð ðJ!ð óJ!ðX òó ðó.0ô`Fr   r"   c                  ó`   — e Zd Z	 dddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd	d„Zd
d„Zdd„Zy)Ú	KBKDFHMACN©r?   c               ó"  — t        |t        j                  «      st        dt        j
                  «      ‚ddlm} |j                  |«      st        dt        j
                  «      ‚|| _	        t        | j                  |||||||||	«
      | _        y )Nz5Algorithm supplied is not a supported hash algorithm.r   ©Úbackendz5Algorithm supplied is not a supported hmac algorithm.)r'   r   ÚHashAlgorithmr   r   ÚUNSUPPORTED_HASHÚ,cryptography.hazmat.backends.openssl.backendrn   Úhmac_supportedÚ
_algorithmr"   r-   Ú_deriver)r8   Ú	algorithmr:   r;   r<   r=   r>   r$   r%   r@   rn   r?   Úossls                r   rA   zKBKDFHMAC.__init__µ   s’   € ô ˜)¤V×%9Ñ%9Ô:Ü&ØGÜ×)Ñ)óð õ
	
ð ×"Ñ" 9Ô-Ü&ØGÜ×)Ñ)óð ð
 $ˆŒä%Ø�I‰IØØØØØØØØØó
ˆ�r   c                óB   — t        j                  || j                  «      S ©N)r   ÚHMACrs   ©r8   rJ   s     r   r-   zKBKDFHMAC._prfã   s   € Ü�y‰y˜ t§¡Ó7Ð7r   c                ób   — | j                   j                  || j                  j                  «      S rx   )rt   r_   rs   Údigest_sizerz   s     r   r_   zKBKDFHMAC.deriveæ   s#   € Ø�}‰}×#Ñ# L°$·/±/×2MÑ2MÓNÐNr   c                óZ   — t        j                  | j                  |«      |«      st        ‚y rx   ©r   Úbytes_eqr_   r   ©r8   rJ   Úexpected_keys      r   ÚverifyzKBKDFHMAC.verifyé   ó'   € Ü×%Ñ% d§k¡k°,Ó&?ÀÔNÜÐð Or   rx   )ru   zhashes.HashAlgorithmr:   r   r;   r*   r<   r*   r=   rd   r>   r   r$   re   r%   re   r@   re   rn   ú
typing.Anyr?   rd   )rJ   rb   rf   z	hmac.HMAC©rJ   rb   rf   rb   ©rJ   rb   r�   rb   rf   ÚNone©r   r   r   rA   r-   r_   r‚   r   r   r   rj   rj   ´   s“   „ ð #ð,
ð &*ñ,
à'ð,
ð ð,
ð ð	,
ð
 ð,
ð ð,
ð "ð,
ð ð,
ð ð,
ð ð,
ð ð,
ð #ó,
ó\8óOôr   rj   c                  ó\   — e Zd Z	 dddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd	d„Zd
d„Zdd„Zy)Ú	KBKDFCMACNrk   c               ó  — t        |t        j                  «      rt        |t        j                  «      st	        dt
        j                  «      ‚|| _        d | _        t        | j                  |||||||||	«
      | _        y )Nú7Algorithm supplied is not a supported cipher algorithm.)Ú
issubclassr	   ÚBlockCipherAlgorithmÚCipherAlgorithmr   r   ÚUNSUPPORTED_CIPHERrs   Ú_cipherr"   r-   rt   )r8   ru   r:   r;   r<   r=   r>   r$   r%   r@   rn   r?   s               r   rA   zKBKDFCMAC.__init__ï   s~   € ô Ø”w×3Ñ3ô
ä˜I¤w×'>Ñ'>Ô?Ü&ØIÜ×+Ñ+óð ð
 $ˆŒØ<@ˆŒä%Ø�I‰IØØØØØØØØØó
ˆ�r   c                ó\   — | j                   €J ‚t        j                  | j                   «      S rx   )r‘   r
   ÚCMAC)r8   Ú_s     r   r-   zKBKDFCMAC._prf  s%   € Ø�|‰|Ð'Ð'Ð'ä�y‰y˜Ÿ™Ó&Ð&r   c                ó&  — | j                  |«      | _        | j                  €J ‚ddlm} |j	                  | j                  «      st        dt        j                  «      ‚| j                  j                  || j                  j                  dz  «      S )Nr   rm   rŒ   rL   )rs   r‘   rq   rn   Úcmac_algorithm_supportedr   r   r�   rt   r_   Ú
block_size)r8   rJ   rv   s      r   r_   zKBKDFCMAC.derive  s|   € Ø—‘ |Ó4ˆŒà�|‰|Ð'Ð'Ð'õ	
ð ×,Ñ,¨T¯\©\Ô:Ü&ØIÜ×+Ñ+óð ð
 �}‰}×#Ñ# L°$·,±,×2IÑ2IÈQÑ2NÓOÐOr   c                óZ   — t        j                  | j                  |«      |«      st        ‚y rx   r~   r€   s      r   r‚   zKBKDFCMAC.verify,  rƒ   r   rx   )r:   r   r;   r*   r<   r*   r=   rd   r>   r   r$   re   r%   re   r@   re   rn   r„   r?   rd   )r”   rb   rf   z	cmac.CMACr…   r†   rˆ   r   r   r   rŠ   rŠ   î   s‹   „ ð #ð%
ð &*ñ%
ð ð%
ð ð	%
ð
 ð%
ð ð%
ð "ð%
ð ð%
ð ð%
ð ð%
ð ð%
ð #ó%
óN'ó
Pô"r   rŠ   )Ú
__future__r   ÚtypingÚcryptographyr   Úcryptography.exceptionsr   r   r   r   Úcryptography.hazmat.primitivesr	   r
   r   r   r   Ú"cryptography.hazmat.primitives.kdfr   ÚEnumr   r   r"   rj   rŠ   r   r   r   ú<module>r       sv   ðõ
 #ã å ÷ó ÷õ õ Eôˆ5�:‰:ô ô!�e—j‘jô !÷MFñ MFô`7Ð%ô 7ôt@Ð%õ @r   