
    .Ph                        d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
 ddZ	 dddZddZ	 dddZ	 dddZ	 dddZ G d de          ZdS )    )annotationsN)Cipher)AES)ECB)bytes_eqwrapping_keybytesarlist[bytes]returnc                "   t          t          |           t                                                                }t	          |          }t          d          D ]}t          |          D ]r}|                    |||         z             }t                              |d d         d          ||z  |z   dz   z  	                    dd          }|dd          ||<   s|
                                dk    sJ |d                    |          z   S )	N      big	byteorder   lengthr       )r   r   r   	encryptorlenrangeupdateint
from_bytesto_bytesfinalizejoin)r   r
   r   r   njibs           f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/cryptography/hazmat/primitives/keywrap.py
_wrap_corer'      s    s<((#%%00::<<IAA1XX 	 	q 	 	A   QqT**Aq!u661q5A+/Jha5h11  RSS6AaDD	 3&&&&sxx{{?r   key_to_wrapbackend
typing.Anyc                L   t          |           dvrt          d          t                    dk     rt          d          t                    dz  dk    rt          d          d}fd	t          dt                    d          D             }t          | ||          S )
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   c                *    g | ]}||d z            S r    .0r$   r(   s     r&   
<listcomp>z aes_key_wrap.<locals>.<listcomp>6   &    GGGAQQY	GGGr   )r   
ValueErrorr   r'   )r   r(   r)   r
   r   s    `   r&   aes_key_wrapr:   '   s    
 <,,JKKK
;"DEEE
;!q  HIII+AGGGGq#k2B2BA)F)FGGGAlAq)))r   tuple[bytes, list[bytes]]c                2   t          t          |           t                                                                }t	          |          }t          t          d                    D ]}t          t          |                    D ]t}t                              |d          ||z  |z   dz   z  	                    dd          ||         z   }|
                    |          }|d d         }|dd          ||<   u|                                dk    sJ ||fS )	Nr   r   r   r   r   r   r   r   )r   r   r   	decryptorr   reversedr   r   r   r   r   r    )	r   r
   r   r=   r"   r#   r$   atrr%   s	            r&   _unwrap_corer@   :   s    s<((#%%00::<<IAAeAhh 	 	%((## 	 	AqE22q1ukAoFha5h11AaD9C
   %%A"1"ARSS6AaDD	 3&&&&a4Kr   c                L   t          |           dvrt          d          dt                                        dd          z   }dt                    dz  z
  dz  }d|z  z   t                    dk    rot          t	          |           t                                                                }|                    |z             }|                                d	k    sJ |S fd
t          dt                    d          D             }t          | ||          S )Nr,   r0      YY   r   r   r       r   c                *    g | ]}||d z            S r3   r4   r5   s     r&   r7   z-aes_key_wrap_with_padding.<locals>.<listcomp>f   &    KKK[QU#KKKr   r   )r   r9   r   r   r   r   r   r   r    r   r'   )r   r(   r)   aivpadr   r%   r   s    `      r&   aes_key_wrap_with_paddingrI   Q   s4   
 <,,JKKK
K 0 0 9 9E !: ! ! C K  1$%
*C#-K
;13|,,cee44>>@@	S;.//!!##s****KKKKU1c+6F6F-J-JKKK,Q///r   wrapped_keyc                   t                    dk     rt          d          t          |           dvrt          d          t                    dk    rt          t	          |           t                                                                }|                              }|                                dk    sJ |d d         }|dd          }d}nwfdt          d	t                    d          D             }|
                    d	          }	t          |          }t          | |	|          \  }}d                    |          }t                              |d
d          d          }
d|z  |
z
  }t          |d d
         d          r;d|dz
  z  |
cxk     r	d|z  k    r%n n"|d	k    r*t          || d          d|z            st                      |d	k    r|S |d |          S )Nr-   zMust be at least 16 bytesr,   r0   r   r   r   c                *    g | ]}||d z            S r3   r4   r6   r$   rJ   s     r&   r7   z/aes_key_unwrap_with_padding.<locals>.<listcomp>~   rF   r   r   rC   r   r   rB   rD   )r   InvalidUnwrapr9   r   r   r   r=   r   r    r   popr@   r!   r   r   r   )r   rJ   r)   r=   outr
   datar"   r   encrypted_aivmlir%   s    `          r&   aes_key_unwrap_with_paddingrT   j   s   
 ;"7888
<,,JKKK
;23|,,cee44>>@@	{++!!##s****G122wKKKKU1c+6F6F-J-JKKKaFFL-;;1xx{{ ..122%.
0
0C	
Q#AQrrU/00AE{S))))AE)))))FF8D!Iw{;;FooAvvCaRCyr   c                   t                    dk     rt          d          t                    dz  dk    rt          d          t          |           dvrt          d          d}fd	t          dt                    d          D             }|                    d          }t          | ||          \  }}t          ||          st                      d
                    |          S )Nr.   zMust be at least 24 bytesr   r   z-The wrapped key must be a multiple of 8 bytesr,   r0   r1   c                *    g | ]}||d z            S r3   r4   rM   s     r&   r7   z"aes_key_unwrap.<locals>.<listcomp>   r8   r   r   )r   rN   r9   r   rO   r@   r   r!   )r   rJ   r)   rG   r   r
   s    `    r&   aes_key_unwraprW      s    
 ;"7888
;!q  KLLL
<,,JKKK
-CGGGGq#k2B2BA)F)FGGGA	aAa++DAqAs oo88A;;r   c                      e Zd ZdS )rN   N)__name__
__module____qualname__r4   r   r&   rN   rN      s        Dr   rN   )r   r	   r
   r	   r   r   r   r	   )N)r   r	   r(   r	   r)   r*   r   r	   )r   r	   r
   r	   r   r   r   r;   )r   r	   rJ   r	   r)   r*   r   r	   )
__future__r   typing&cryptography.hazmat.primitives.ciphersr   1cryptography.hazmat.primitives.ciphers.algorithmsr   ,cryptography.hazmat.primitives.ciphers.modesr   ,cryptography.hazmat.primitives.constant_timer   r'   r:   r@   rI   rT   rW   	ExceptionrN   r4   r   r&   <module>rc      s?  
 # " " " " "  9 9 9 9 9 9 A A A A A A < < < < < < A A A A A A   6 * * * * *&   4 0 0 0 0 08 + + + + +b     0	 	 	 	 	I 	 	 	 	 	r   