3 lá˜_oã@sddlmZmZmZddlZddlZddlmZddlm Z ddl m Z ej ej ƒGdd„deƒƒZdd „Zd d „Zd d „Zdd„Zdd„ZGdd„deƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZGdd„deƒZejeƒGdd„deƒƒZejeƒGdd„deƒƒZdS)é)Úabsolute_importÚdivisionÚprint_functionN)Úutils)ÚAlreadyFinalized)Úlibc@s(eZdZejdd„ƒZejdd„ƒZdS)ÚPaddingContextcCsdS)zR Pads the provided bytes and returns any available data as bytes. N©)ÚselfÚdatar r ú/usr/lib64/python3.6/padding.pyÚupdateszPaddingContext.updatecCsdS)z6 Finalize the padding, returns bytes. Nr )r r r r ÚfinalizeszPaddingContext.finalizeN)Ú__name__Ú __module__Ú __qualname__ÚabcÚabstractmethodr rr r r r rsrcCs8d|kodkns tdƒ‚|ddkr4tdƒ‚dS)Nriøz%block_size must be in range(0, 2041).éz#block_size must be a multiple of 8.)Ú ValueError)Ú block_sizer r r Ú_byte_padding_checks rcCsh|dkrtdƒ‚tjd|ƒ|t|ƒ7}t|ƒ|d}|d||d…}|||dd…}||fS)NzContext was already finalized.r r)rrÚ_check_byteslikeÚbytesÚlen)Úbuffer_r rÚfinished_blocksÚresultr r r Ú_byte_padding_update's  rcCs,|dkrtdƒ‚|dt|ƒ}|||ƒS)NzContext was already finalized.r)rr)rrZ paddingfnÚpad_sizer r r Ú_byte_padding_pad7sr cCsr|dkrtdƒ‚tjd|ƒ|t|ƒ7}tt|ƒ|dddƒ}|d||d…}|||dd…}||fS)NzContext was already finalized.r rér)rrrrÚmaxr)rr rrrr r r Ú_byte_unpadding_update?s  r#cCs\|dkrtdƒ‚t|ƒ|dkr(tdƒ‚|||dƒ}|sBtdƒ‚tj|dƒ}|d| …S)NzContext was already finalized.rzInvalid padding bytes.r!éÿÿÿÿ)rrrÚsixZ indexbytes)rrZcheckfnZvalidrr r r Ú_byte_unpadding_checkOs r&c@s$eZdZdd„Zdd„Zdd„ZdS)ÚPKCS7cCst|ƒ||_dS)N)rr)r rr r r Ú__init__`szPKCS7.__init__cCs t|jƒS)N)Ú_PKCS7PaddingContextr)r r r r Úpadderdsz PKCS7.paddercCs t|jƒS)N)Ú_PKCS7UnpaddingContextr)r r r r ÚunpaddergszPKCS7.unpadderN)rrrr(r*r,r r r r r'_sr'c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) r)cCs||_d|_dS)Nó)rÚ_buffer)r rr r r r(msz_PKCS7PaddingContext.__init__cCst|j||jƒ\|_}|S)N)rr.r)r r rr r r r rsz_PKCS7PaddingContext.updatecCstj|ƒ|S)N)r%Úint2byte)r Úsizer r r Ú_paddingxsz_PKCS7PaddingContext._paddingcCst|j|j|jƒ}d|_|S)N)r r.rr1)r rr r r r{sz_PKCS7PaddingContext.finalizeN)rrrr(r r1rr r r r r)ksr)c@s$eZdZdd„Zdd„Zdd„ZdS)r+cCs||_d|_dS)Nr-)rr.)r rr r r r(…sz_PKCS7UnpaddingContext.__init__cCst|j||jƒ\|_}|S)N)r#r.r)r r rr r r r Šsz_PKCS7UnpaddingContext.updatecCst|j|jtjƒ}d|_|S)N)r&r.rrZ Cryptography_check_pkcs7_padding)r rr r r r�sz_PKCS7UnpaddingContext.finalizeN)rrrr(r rr r r r r+ƒsr+c@s$eZdZdd„Zdd„Zdd„ZdS)ÚANSIX923cCst|ƒ||_dS)N)rr)r rr r r r(™szANSIX923.__init__cCs t|jƒS)N)Ú_ANSIX923PaddingContextr)r r r r r*�szANSIX923.paddercCs t|jƒS)N)Ú_ANSIX923UnpaddingContextr)r r r r r, szANSIX923.unpadderN)rrrr(r*r,r r r r r2˜sr2c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) r3cCs||_d|_dS)Nr-)rr.)r rr r r r(¦sz _ANSIX923PaddingContext.__init__cCst|j||jƒ\|_}|S)N)rr.r)r r rr r r r «sz_ANSIX923PaddingContext.updatecCstjdƒ|dtj|ƒS)Nrr!)r%r/)r r0r r r r1±sz _ANSIX923PaddingContext._paddingcCst|j|j|jƒ}d|_|S)N)r r.rr1)r rr r r r´sz _ANSIX923PaddingContext.finalizeN)rrrr(r r1rr r r r r3¤sr3c@s$eZdZdd„Zdd„Zdd„ZdS)r4cCs||_d|_dS)Nr-)rr.)r rr r r r(¾sz"_ANSIX923UnpaddingContext.__init__cCst|j||jƒ\|_}|S)N)r#r.r)r r rr r r r Ãsz _ANSIX923UnpaddingContext.updatecCst|j|jtjƒ}d|_|S)N)r&r.rrZ#Cryptography_check_ansix923_padding)r rr r r rÉs z"_ANSIX923UnpaddingContext.finalizeN)rrrr(r rr r r r r4¼sr4)Z __future__rrrrr%Z cryptographyrZcryptography.exceptionsrZ%cryptography.hazmat.bindings._paddingrZ add_metaclassÚABCMetaÚobjectrrrr r#r&r'Zregister_interfacer)r+r2r3r4r r r r Ús,