
    #	h                    
   S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SK	J
r
          SS jr S       SS jjr        SS	 jr S       SS
 jjr S       SS jjr S       SS jjr " S S\5      rg)    )annotationsN)Cipher)AES)ECB)bytes_eqc                   [        [        U 5      [        5       5      R                  5       n[	        U5      n[        S5       Hb  n[        U5       HP  nUR                  XU   -   5      n[        R                  US S SS9XE-  U-   S-   -  R                  SSS9nUSS  X&'   MR     Md     UR                  5       S:X  d   eUSR                  U5      -   $ )	N      big	byteorder   lengthr       )r   r   r   	encryptorlenrangeupdateint
from_bytesto_bytesfinalizejoin)wrapping_keyarr   njibs           X/var/www/html/env/lib/python3.13/site-packages/cryptography/hazmat/primitives/keywrap.py
_wrap_corer$      s     s<(#%0::<IAA1XqA   qT*Aq!u615A+/Jha5h1  RS6AD   3&&&sxx{?r   c                   [        U 5      S;  a  [        S5      e[        U5      S:  a  [        S5      e[        U5      S-  S:w  a  [        S5      eSn[        S[        U5      S5       Vs/ s H	  oAXDS-    PM     nn[        XU5      $ s  snf )	N          /The wrapping key must be a valid AES key lengthr'   z)The key to wrap must be at least 16 bytesr
   r   z-The key to wrap must be a multiple of 8 bytes   )r   
ValueErrorr   r$   )r   key_to_wrapbackendr   r!   r   s         r#   aes_key_wrapr/   '   s    
 <,JKK
;"DEE
;!q HII+A).q#k2BA)FG)FAQQ	)FAGlq)) 	Hs   ,B
c                   [        [        U 5      [        5       5      R                  5       n[	        U5      n[        [        S5      5       Hm  n[        [        U5      5       HR  n[        R                  USS9XE-  U-   S-   -  R                  SSS9X&   -   nUR                  U5      nUS S nUSS  X&'   MT     Mo     UR                  5       S:X  d   eX4$ )	Nr	   r   r   r   r
   r   r   r   )r   r   r   	decryptorr   reversedr   r   r   r   r   r   )	r   r   r   r1   r   r    r!   atrr"   s	            r#   _unwrap_corer4   :   s     s<(#%0::<IAAeAh%(#AqE2qukAoFha5h1AD9C
   %A"1ARS6AD $   3&&&4Kr   c                   [        U 5      S;  a  [        S5      eS[        U5      R                  SSS9-   nS[        U5      S-  -
  S-  nUSU-  -   n[        U5      S:X  aV  [        [	        U 5      [        5       5      R                  5       nUR                  X1-   5      nUR                  5       S	:X  d   eU$ [        S
[        U5      S5       Vs/ s H	  oqXwS-    PM     nn[        XU5      $ s  snf )Nr&   r*      YY   r   r   r
       r   r   )r   r,   r   r   r   r   r   r   r   r   r$   )	r   r-   r.   aivpadr   r"   r!   r   s	            r#   aes_key_wrap_with_paddingr;   Q   s   
 <,JKK
K 0 9 9E !: ! C K 1$%
*C#-K
;13|,ce4>>@	S./!!#s***-21c+6F-JK-JU#-JK,Q// Ls   C.c                .   [        U5      S:  a  [        S5      e[        U 5      S;  a  [        S5      e[        U5      S:X  a_  [        [	        U 5      [        5       5      R                  5       nUR                  U5      nUR                  5       S:X  d   eUS S nUSS  nSnOe[        S[        U5      S5       Vs/ s H	  oXS-    PM     n	nU	R                  S5      n
[        U	5      n[        X
U	5      u  pYSR                  U	5      n[        R                  US	S  S
S9nSU-  U-
  n[        US S	 S5      (       a?  SUS-
  -  Us=:  a	  SU-  ::  a)  O  [        5       eUS:w  a!  [        Xl* S  SU-  5      (       d
  [        5       eUS:X  a  U$ US U*  $ s  snf )Nr'   zMust be at least 16 bytesr&   r*   r   r
   r   r   r7   r   r   r6   r8   )r   InvalidUnwrapr,   r   r   r   r1   r   r   r   popr4   r   r   r   r   )r   wrapped_keyr.   r1   outr   datar   r!   r   encrypted_aivmlir"   s                r#   aes_key_unwrap_with_paddingrD   j   s   
 ;"788
<,JKK
;23|,ce4>>@	{+!!#s***G12w-21c+6F-JK-JU#-JKaFL;xx{ ..12%.
0C	
Q#AQrU/00AE{S)AE) o F8DIw{;;oAvCaRy/ Ls   ;Fc                   [        U5      S:  a  [        S5      e[        U5      S-  S:w  a  [        S5      e[        U 5      S;  a  [        S5      eSn[        S[        U5      S5       Vs/ s H	  oAXDS-    PM     nnUR	                  S5      n[        XU5      u  pe[        Xc5      (       d
  [        5       eS	R                  U5      $ s  snf )
Nr(   zMust be at least 24 bytesr
   r   z-The wrapped key must be a multiple of 8 bytesr&   r*   r+   r   )r   r=   r,   r   r>   r4   r   r   )r   r?   r.   r9   r!   r   r   s          r#   aes_key_unwraprF      s    
 ;"788
;!q KLL
<,JKK
-C).q#k2BA)FG)FAQQ	)FAG	aA+DAAo88A; 	Hs   ,Cc                      \ rS rSrSrg)r=       N)__name__
__module____qualname____firstlineno____static_attributes__rI   r   r#   r=   r=      s    r   r=   )r   bytesr   rO   r   list[bytes]returnrO   )N)r   rO   r-   rO   r.   
typing.AnyrQ   rO   )r   rO   r   rO   r   rP   rQ   ztuple[bytes, list[bytes]])r   rO   r?   rO   r.   rR   rQ   rO   )
__future__r   typing&cryptography.hazmat.primitives.ciphersr   1cryptography.hazmat.primitives.ciphers.algorithmsr   ,cryptography.hazmat.primitives.ciphers.modesr   ,cryptography.hazmat.primitives.constant_timer   r$   r/   r4   r;   rD   rF   	Exceptionr=   rI   r   r#   <module>rZ      s0  
 #  9 A < A  	6 *** * 	*&  	4 000 0 	08 +++ + 	+b   	0	I 	r   