§
    cÒ³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dS )é    )ÚannotationsN)Úutils)ÚAlreadyFinalizedÚ
InvalidKeyÚUnsupportedAlgorithmÚ_Reasons)ÚciphersÚcmacÚconstant_timeÚhashesÚhmac)ÚKeyDerivationFunctionc                  ó   — e Zd ZdZdS )ÚModeÚctrN)Ú__name__Ú
__module__Ú__qualname__ÚCounterMode© ó    úf/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/kdf/kbkdf.pyr   r      s   € € € € € Ø€K€K€Kr   r   c                  ó   — e Zd ZdZdZdZdS )ÚCounterLocationÚbefore_fixedÚafter_fixedÚmiddle_fixedN)r   r   r   ÚBeforeFixedÚ
AfterFixedÚMiddleFixedr   r   r   r   r      s   € € € € € Ø €KØ€JØ €K€K€Kr   r   c                  ó>   — e Zd Zdd„Zedd„¦   «         Zdd„Zdd„ZdS ) Ú_KBKDFDeriverÚprfútyping.CallableÚmoder   ÚlengthÚintÚrlenÚllenú
int | NoneÚlocationr   Úbreak_locationÚlabelúbytes | NoneÚcontextÚfixedc                óÂ  — t          |¦  «        sJ ‚t          |t          ¦  «        st          d¦  «        ‚t          |t          ¦  «        st          d¦  «        ‚|€|t          j        u rt          d¦  «        ‚|�|t          j        k    rt          d¦  «        ‚|�$t          |t          ¦  «        st          d¦  «        ‚|�|dk     rt          d¦  «        ‚|s|	r|
rt          d¦  «        ‚|�|                      |¦  «        st          d	¦  «        ‚|€|
€t          d
¦  «        ‚|�$t          |t          ¦  «        st          d¦  «        ‚|dk    rt          d¦  «        ‚|€d}|	€d}	t          j
        d|¦  «         t          j
        d|	¦  «         || _        || _        || _        || _        || _        || _        || _        || _        |	| _        d| _        |
| _        d S )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   r-   r/   F)ÚcallableÚ
isinstancer   Ú	TypeErrorr   r    Ú
ValueErrorr'   Ú_valid_byte_lengthr   Ú_check_bytesÚ_prfÚ_modeÚ_lengthÚ_rlenÚ_llenÚ	_locationÚ_break_locationÚ_labelÚ_contextÚ_usedÚ_fixed_data)Úselfr#   r%   r&   r(   r)   r+   r,   r-   r/   r0   s              r   Ú__init__z_KBKDFDeriver.__init__%   s#  € õ ˜‰}Œ}ÐÐÐå˜$¥Ñ%Ô%ð 	9ÝÐ7Ñ8Ô8Ð8å˜(¥OÑ4Ô4ð 	HÝÐFÑGÔGÐGàÐ! hµ/Ô2MÐ&MÐ&MÝÐ>Ñ?Ô?Ð?ð Ð&Ø�OÔ7Ò7Ð7åð/ñô ð ð
 Ð%­j¸ÍÑ.MÔ.MÐ%ÝÐ?Ñ@Ô@Ð@àÐ%¨.¸1Ò*<Ð*<ÝÐHÑIÔIÐIàð 	�Wð 	 %ð 	ÝØKñô ð ð ˆ<˜t×6Ò6°tÑ<Ô<ˆ<ÝÐ;Ñ<Ô<Ð<àˆ<˜E˜MÝÐ5Ñ6Ô6Ð6àÐ¥J¨tµSÑ$9Ô$9ÐÝÐ5Ñ6Ô6Ð6à�1Š9ˆ9ÝÐ4Ñ5Ô5Ð5àˆ=ØˆEàˆ?ØˆGåÔ˜7 EÑ*Ô*Ð*ÝÔ˜9 gÑ.Ô.Ð.ØˆŒ	ØˆŒ
ØˆŒØˆŒ
ØˆŒ
Ø!ˆŒØ-ˆÔØˆŒØˆŒØˆŒ
Ø ˆÔÐÐr   ÚvalueÚreturnÚboolc                ó´   — t          | t          ¦  «        st          d¦  «        ‚t          j        d| ¦  «        }dt          |¦  «        cxk    rdk    sn dS dS )Nzvalue must be of type inté   é   FT)r3   r'   r4   r   Úint_to_bytesÚlen)rE   Ú	value_bins     r   r6   z _KBKDFDeriver._valid_byte_lengthq   sd   € å˜%¥Ñ%Ô%ð 	9ÝÐ7Ñ8Ô8Ð8åÔ& q¨%Ñ0Ô0ˆ	Ø•C˜	‘N”NÐ'Ð'Ò'Ð' aÒ'Ð'Ð'Ð'Ø�5Øˆtr   Úkey_materialÚbytesÚprf_output_sizec                ó¸  — | j         rt          ‚t          j        d|¦  «         d| _         | j         |z   }dg}t          j        d| j        ¦  «        }|t          dt          |¦  «        dz  ¦  «        dz
  k    rt          d¦  «        ‚|  
                    ¦   «         }| j        t          j        k    rd}|}ny| j        t          j        k    r|}d}n_t          | j        t"          ¦  «        r'| j        t          |¦  «        k    rt          d¦  «        ‚|d | j        …         }|| j        d …         }t%          d|dz   ¦  «        D ]u}	|                      |¦  «        }
t          j        |	| j        ¦  «        }||z   |z   }|
                     |¦  «         |                     |
                     ¦   «         ¦  «         Œvd                     |¦  «        d | j        …         S )	NrN   Tr   rI   é   é   zThere are too many iterations.z"break_location offset > len(fixed))rA   r   r   Ú_check_bytesliker:   rK   r;   ÚpowrL   r5   Ú_generate_fixed_inputr=   r   r   r   r3   r>   r'   Úranger8   ÚupdateÚappendÚfinalizeÚjoin)rC   rN   rP   ÚroundsÚoutputÚr_binr0   Údata_before_ctrÚdata_after_ctrÚiÚhÚcounterÚ
input_datas                r   Úderivez_KBKDFDeriver.derive{   sÙ  € ØŒ:ð 	#Ý"Ð"åÔ˜~¨|Ñ<Ô<Ð<ØˆŒ
ð ”L�= OÑ3Ð4ˆà�ˆõ Ô" 1 d¤jÑ1Ô1ˆØ•C˜�3˜u™:œ:¨™>Ñ*Ô*¨QÑ.Ò.Ð.ÝÐ=Ñ>Ô>Ð>à×*Ò*Ñ,Ô,ˆàŒ>�_Ô8Ò8Ð8Ø!ˆOØ"ˆNˆNØŒ^�Ô9Ò9Ð9Ø#ˆOØ ˆNˆNåØÔ$¥cñô ð GàÔ&­¨U©¬Ò3Ð3Ý Ð!EÑFÔFÐFØ#Ð$: dÔ&:Ð$:Ô;ˆOØ" 4Ô#7Ð#9Ð#9Ô:ˆNå�q˜& 1™*Ñ%Ô%ð 	(ð 	(ˆAØ—	’	˜,Ñ'Ô'ˆAåÔ(¨¨D¬JÑ7Ô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        d| j	        |g¦  «        S )NrS   r   ó    )
rB   r3   rO   r   rK   r:   r<   r[   r?   r@   )rC   Úl_vals     r   rV   z#_KBKDFDeriver._generate_fixed_input«   sd   € ØÔð 	$¥
¨4Ô+;½UÑ CÔ Cð 	$ØÔ#Ð#åÔ" 4¤<°!Ñ#3°T´ZÑ@Ô@ˆà�xŠx˜œ g¨t¬}¸eÐDÑEÔEÐEr   N)r#   r$   r%   r   r&   r'   r(   r'   r)   r*   r+   r   r,   r*   r-   r.   r/   r.   r0   r.   )rE   r'   rF   rG   )rN   rO   rP   r'   rF   rO   )rF   rO   )r   r   r   rD   Ústaticmethodr6   re   rV   r   r   r   r"   r"   $   s|   € € € € € ðJ!ð J!ð J!ð J!ðX ðð ð ñ „\ðð.0ð .0ð .0ð .0ð`Fð Fð Fð Fð Fð Fr   r"   c                  ó8   — e Zd Z	 dddœd d„Zd!d„Zd"d„Zd#d„ZdS )$Ú	KBKDFHMACN©r,   Ú	algorithmúhashes.HashAlgorithmr%   r   r&   r'   r(   r)   r*   r+   r   r-   r.   r/   r0   Úbackendú
typing.Anyr,   c               ó*  — t          |t          j        ¦  «        st          dt          j        ¦  «        ‚ddlm} |                     |¦  «        st          dt          j        ¦  «        ‚|| _	        t          | j        |||||||||	¦
  «
        | _        d S )Nz5Algorithm supplied is not a supported hash algorithm.r   ©ro   z5Algorithm supplied is not a supported hmac algorithm.)r3   r   ÚHashAlgorithmr   r   ÚUNSUPPORTED_HASHÚ,cryptography.hazmat.backends.openssl.backendro   Úhmac_supportedÚ
_algorithmr"   r8   Ú_deriver)rC   rm   r%   r&   r(   r)   r+   r-   r/   r0   ro   r,   Úossls                r   rD   zKBKDFHMAC.__init__µ   sÃ   € õ ˜)¥VÔ%9Ñ:Ô:ð 	Ý&ØGÝÔ)ñô ð ð
	
ð 	
ð 	
ð 	
ð 	
ð 	
ð ×"Ò" 9Ñ-Ô-ð 	Ý&ØGÝÔ)ñô ð ð
 $ˆŒå%ØŒIØØØØØØØØØñ
ô 
ˆŒˆˆr   rN   rO   rF   ú	hmac.HMACc                ó6   — t          j        || j        ¦  «        S ©N)r   ÚHMACrw   ©rC   rN   s     r   r8   zKBKDFHMAC._prfã   s   € ÝŒy˜ t¤Ñ7Ô7Ð7r   c                óL   — | j                              || j        j        ¦  «        S r|   )rx   re   rw   Údigest_sizer~   s     r   re   zKBKDFHMAC.deriveæ   s   € ØŒ}×#Ò# L°$´/Ô2MÑNÔNÐNr   Úexpected_keyÚNonec                ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S r|   ©r   Úbytes_eqre   r   ©rC   rN   r�   s      r   ÚverifyzKBKDFHMAC.verifyé   ó3   € ÝÔ% d§k¢k°,Ñ&?Ô&?ÀÑNÔNð 	ÝÐð	ð 	r   r|   )rm   rn   r%   r   r&   r'   r(   r'   r)   r*   r+   r   r-   r.   r/   r.   r0   r.   ro   rp   r,   r*   )rN   rO   rF   rz   ©rN   rO   rF   rO   ©rN   rO   r�   rO   rF   r‚   ©r   r   r   rD   r8   re   r‡   r   r   r   rk   rk   ´   s‚   € € € € € ð #ð,
ð &*ð,
ð ,
ð ,
ð ,
ð ,
ð ,
ð\8ð 8ð 8ð 8ðOð Oð Oð Oðð ð ð ð ð r   rk   c                  ó8   — e Zd Z	 dddœdd„Zd d„Zd!d„Zd"d„ZdS )#Ú	KBKDFCMACNrl   r%   r   r&   r'   r(   r)   r*   r+   r   r-   r.   r/   r0   ro   rp   r,   c               ó  — t          |t          j        ¦  «        rt          |t          j        ¦  «        st	          dt
          j        ¦  «        ‚|| _        d | _        t          | j
        |||||||||	¦
  «
        | _        d S )Nú7Algorithm supplied is not a supported cipher algorithm.)Ú
issubclassr	   ÚBlockCipherAlgorithmÚCipherAlgorithmr   r   ÚUNSUPPORTED_CIPHERrw   Ú_cipherr"   r8   rx   )rC   rm   r%   r&   r(   r)   r+   r-   r/   r0   ro   r,   s               r   rD   zKBKDFCMAC.__init__ï   s•   € õ Ø•wÔ3ñ
ô 
ð 	å˜I¥wÔ'>Ñ?Ô?ð	õ 'ØIÝÔ+ñô ð ð
 $ˆŒØ<@ˆŒå%ØŒIØØØØØØØØØñ
ô 
ˆŒˆˆr   Ú_rO   rF   ú	cmac.CMACc                óF   — | j         €J ‚t          j        | j         ¦  «        S r|   )r”   r
   ÚCMAC)rC   r•   s     r   r8   zKBKDFCMAC._prf  s"   € ØŒ|Ð'Ð'Ð'åŒy˜œÑ&Ô&Ð&r   rN   c                ó  — |                       |¦  «        | _        | j        €J ‚ddlm} |                     | j        ¦  «        st          dt          j        ¦  «        ‚| j         	                    || j        j
        dz  ¦  «        S )Nr   rr   r�   rS   )rw   r”   ru   ro   Úcmac_algorithm_supportedr   r   r“   rx   re   Ú
block_size)rC   rN   ry   s      r   re   zKBKDFCMAC.derive  sš   € Ø—’ |Ñ4Ô4ˆŒàŒ|Ð'Ð'Ð'ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð ×,Ò,¨T¬\Ñ:Ô:ð 	Ý&ØIÝÔ+ñô ð ð
 Œ}×#Ò# L°$´,Ô2IÈQÑ2NÑOÔOÐOr   r�   r‚   c                ód   — t          j        |                      |¦  «        |¦  «        st          ‚d S r|   r„   r†   s      r   r‡   zKBKDFCMAC.verify,  rˆ   r   r|   )r%   r   r&   r'   r(   r'   r)   r*   r+   r   r-   r.   r/   r.   r0   r.   ro   rp   r,   r*   )r•   rO   rF   r–   r‰   rŠ   r‹   r   r   r   r�   r�   î   s‚   € € € € € ð #ð%
ð &*ð%
ð %
ð %
ð %
ð %
ð %
ðN'ð 'ð 'ð 'ð
Pð Pð Pð 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"   rk   r�   r   r   r   ú<module>r¤      sÇ  ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð EÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ˆ5Œ:ñ ô ð ð!ð !ð !ð !ð !�e”jñ !ô !ð !ðMFð MFð MFð MFð MFñ MFô MFð MFð`7ð 7ð 7ð 7ð 7Ð%ñ 7ô 7ð 7ðt@ð @ð @ð @ð @Ð%ñ @ô @ð @ð @ð @r   