a ‚oe.ã@sØddlmZddlZddlmZddlmZddlmZddl m Z ddddd œd d „Z dddd dd œdd„Z ddddd œdd„Z dddd dd œdd„Zdddd ddœdd„Zdddd ddœdd„ZGdd„deƒZdS) é)Ú annotationsN)ÚCipher)ÚAES)ÚECB)Úbytes_eqÚbytesztyping.List[bytes])Ú wrapping_keyÚaÚrÚreturncCs¨tt|ƒtƒƒ ¡}t|ƒ}tdƒD]d}t|ƒD]V}| |||¡}tj|dd…dd�|||dAj ddd�}|dd…||<q0q$|  ¡dksšJ‚|d  |¡S) NééÚbig©Ú byteorderé©Úlengthréøÿÿÿó) rrrÚ encryptorÚlenÚrangeÚupdateÚintÚ from_bytesÚto_bytesÚfinalizeÚjoin)rr r rÚnÚjÚiÚb©r#úGC:\Program Files\Certbot\pkgs\cryptography\hazmat\primitives\keywrap.pyÚ _wrap_cores  $ÿþr%z typing.Any)rÚ key_to_wrapÚbackendr csnt|ƒdvrtdƒ‚tˆƒdkr(tdƒ‚tˆƒddkr@tdƒ‚d}‡fd d „tdtˆƒ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 rz-The key to wrap must be a multiple of 8 bytes󦦦¦¦¦¦¦csg|]}ˆ||d…‘qS©r r#©Ú.0r!©r&r#r$Ú 6rz aes_key_wrap..)rÚ ValueErrorrr%)rr&r'r r r#r1r$Ú aes_key_wrap's  r4z'typing.Tuple[bytes, typing.List[bytes]]c Cs®tt|ƒtƒƒ ¡}t|ƒ}ttdƒƒD]l}tt|ƒƒD]Z}tj|dd�|||dAj ddd�||}|  |¡}|dd…}|dd…||<q8q(|  ¡dks¦J‚||fS) Nr rrrr rrr) rrrÚ decryptorrÚreversedrrrrrr) rr r r5rr r!Zatrr"r#r#r$Ú _unwrap_core:sÿþþ  r7csºt|ƒdvrtdƒ‚dtˆƒjddd�}dtˆƒdd}ˆd|‰tˆƒdkrŒtt|ƒtƒƒ ¡}| |ˆ¡}| ¡d ksˆJ‚|S‡fd d „t d tˆƒdƒDƒ}t |||ƒSdS) Nr(r,ó¦YY¦érrr órcsg|]}ˆ||d…‘qSr.r#r/r1r#r$r2frz-aes_key_wrap_with_padding..r) rr3rrrrrrrrr%)rr&r'ÚaivZpadrr"r r#r1r$Úaes_key_wrap_with_paddingQs  ÿ  r<)rÚ wrapped_keyr'r c srtˆƒdkrtdƒ‚t|ƒdvr(tdƒ‚tˆƒdkr€tt|ƒtƒƒ ¡}| ˆ¡}| ¡dksbJ‚|dd…}|dd…}d}nJ‡fdd „t d tˆƒdƒDƒ}|  d ¡} t|ƒ}t || |ƒ\}}d  |¡}t j|d d…d d �} d|| } t|dd …dƒ�rLd|d| k�r$d|k�rLnn$| d k�rRt|| d…d| ƒ�sRtƒ‚| d k�r`|S|d| …SdS)Nr)zMust be at least 16 bytesr(r,rr rcsg|]}ˆ||d…‘qSr.r#r/©r=r#r$r2~rz/aes_key_unwrap_with_padding..rr9rrr8r:)rÚ InvalidUnwrapr3rrrr5rrrÚpopr7rrrr) rr=r'r5Úoutr Údatarr Z encrypted_aivZmlir"r#r>r$Úaes_key_unwrap_with_paddingjs@         ÿ þ þ ýý rCcs–tˆƒdkrtdƒ‚tˆƒddkr,tdƒ‚t|ƒdvr@tdƒ‚d}‡fd d „tdtˆƒdƒDƒ}| d¡}t|||ƒ\}}t||ƒsŒtƒ‚d  |¡S) Nr*zMust be at least 24 bytesr rz-The wrapped key must be a multiple of 8 bytesr(r,r-csg|]}ˆ||d…‘qSr.r#r/r>r#r$r2§rz"aes_key_unwrap..r)rr?r3rr@r7rr)rr=r'r;r r r#r>r$Úaes_key_unwrap˜s    rDc@s eZdZdS)r?N)Ú__name__Ú __module__Ú __qualname__r#r#r#r$r?°sr?)N)N)N)N)Z __future__rÚtypingZ&cryptography.hazmat.primitives.ciphersrZ1cryptography.hazmat.primitives.ciphers.algorithmsrZ,cryptography.hazmat.primitives.ciphers.modesrZ,cryptography.hazmat.primitives.constant_timerr%r4r7r<rCrDÚ Exceptionr?r#r#r#r$Ús     ýýý1ý