ó 9(Zc@`s¦ddlmZmZmZddlZddlmZddlmZddl m Z ddl m Z d„Z d„Zd „Zd „Zd efd „ƒYZdS( i(tabsolute_importtdivisiontprint_functionN(tCipher(tAES(tECB(tbytes_eqc C`sßtt|ƒtƒ|ƒjƒ}t|ƒ}x†tdƒD]x}xot|ƒD]a}|j|||ƒ}tjdtj d|d ƒd|||dAƒ}|d||Qiiiiøÿÿÿt( RRRt encryptortlentrangetupdatetstructtpacktunpacktfinalizetAssertionErrortjoin( t wrapping_keytatrtbackendRtntjtitb((sL/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/primitives/keywrap.pyt _wrap_cores! 0cC`s¶t|ƒd kr!tdƒ‚nt|ƒdkrBtdƒ‚nt|ƒddkrgtdƒ‚nd }gtdt|ƒdƒD]}|||d!^q†}t||||ƒS( Niii s/The wrapping key must be a valid AES key lengths)The key to wrap must be at least 16 bytesiis-The key to wrap must be a multiple of 8 bytess¦¦¦¦¦¦¦¦(iii (R t ValueErrorR R(Rt key_to_wrapRRRR((sL/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/primitives/keywrap.pyt aes_key_wrap$s6c C`sêtt|ƒtƒ|ƒjƒ}t|ƒ}x˜ttdƒƒD]„}x{tt|ƒƒD]g}tjdtj d|ƒd|||dAƒ||}|j |ƒ} | d }| d||QiiiiøÿÿÿR( RRRt decryptorR treversedR R R RR RR( RRRRRRRRtatrR((sL/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/primitives/keywrap.pyt _unwrap_core3s! )  cC`sõt|ƒdkr!tdƒ‚nt|ƒddkrFtdƒ‚nt|ƒd krgtdƒ‚nd }gtdt|ƒdƒD]}|||d!^q†}|jdƒ}t||||ƒ\}}t||ƒsètƒ‚nd j|ƒS( NisMust be at least 24 bytesiis-The wrapped key must be a multiple of 8 bytesii s/The wrapping key must be a valid AES key lengths¦¦¦¦¦¦¦¦R(iii (R RR tpopR!Rt InvalidUnwrapR(Rt wrapped_keyRtaivRRR((sL/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/primitives/keywrap.pytaes_key_unwrapGs6 R#cB`seZRS((t__name__t __module__(((sL/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/primitives/keywrap.pyR#[s(t __future__RRRR t&cryptography.hazmat.primitives.ciphersRt1cryptography.hazmat.primitives.ciphers.algorithmsRt,cryptography.hazmat.primitives.ciphers.modesRt,cryptography.hazmat.primitives.constant_timeRRRR!R&t ExceptionR#(((sL/tmp/pip-build-wDUJoH/cryptography/cryptography/hazmat/primitives/keywrap.pyts