o )%a1 @slddlZddlZddlmZddlmZddlmZGdddejdZ de d dfd d Z d ej e d e de d eje e ffddZd ej e de deje ge fd e fddZd ej e d e de d eje e ffddZd ej e de deje e ge fd e fddZGdddeZGddde ZGddde ZGdddeZGd d!d!e ZGd"d#d#e ZdS)$N)utils)AlreadyFinalized)libc@s8eZdZejdedefddZejdefddZdS)PaddingContextdatareturncCdS)zR Pads the provided bytes and returns any available data as bytes. N)selfrr r H/usr/lib/python3/dist-packages/cryptography/hazmat/primitives/padding.pyupdatezPaddingContext.updatecCr)z6 Finalize the padding, returns bytes. Nr r r r r finalizer zPaddingContext.finalizeN)__name__ __module__ __qualname__abcabstractmethodbytesr rr r r r rs r) metaclass block_sizercCs<d|kr dkstdtd|ddkrtddS)Nriz%block_size must be in range(0, 2041).z#block_size must be a multiple of 8.) ValueError)rr r r _byte_padding_checks rbuffer_rcCsh|durtdtd||t|7}t||d}|d||d}|||dd}||fS)NContext was already finalized.rr)rr_check_byteslikerlenrrrfinished_blocksresultr r r _byte_padding_update$s  r" paddingfncCs,|durtd|dt|}|||S)Nrr)rr)rrr#pad_sizer r r _byte_padding_pad6s r%cCsr|durtdtd||t|7}tt||ddd}|d||d}|||dd}||fS)Nrrrr)rrrrmaxrrr r r _byte_unpadding_updateBs  r(checkfncCsX|durtdt||dkrtd|||d}|s!td|d}|d| S)NrrzInvalid padding bytes.)rrr)rrr)validr$r r r _byte_unpadding_checkTsr,c@s*eZdZdefddZddZddZdS) PKCS7rcCt|||_dSNrrr rr r r __init__i zPKCS7.__init__cC t|jSr/)_PKCS7PaddingContextrrr r r padderm z PKCS7.paddercCr4r/)_PKCS7UnpaddingContextrrr r r unpadderpr7zPKCS7.unpadderN)rrrintr2r6r9r r r r r-hs r-c@\eZdZUejeed<defddZdedefddZ d edefd d Z defd d Z dS)r5_bufferrcC||_d|_dSNrr<r1r r r r2w z_PKCS7PaddingContext.__init__rrcCt|j||j\|_}|Sr/r"r<rr rr!r r r r |  z_PKCS7PaddingContext.updatesizecCst|g|Sr/rr rFr r r _paddingsz_PKCS7PaddingContext._paddingcCt|j|j|j}d|_|Sr/r%r<rrIr r!r r r r  z_PKCS7PaddingContext.finalizeN rrrtypingOptionalr__annotations__r:r2r rIrr r r r r5t r5c@JeZdZUejeed<defddZdedefddZ defd d Z d S) r8r<rcCr=r>r@r1r r r r2rAz_PKCS7UnpaddingContext.__init__rrcCrBr/r(r<rrDr r r r rEz_PKCS7UnpaddingContext.updatecCt|j|jtj}d|_|Sr/)r,r<rr Cryptography_check_pkcs7_paddingrLr r r rrMz_PKCS7UnpaddingContext.finalizeN rrrrOrPrrQr:r2r rr r r r r8 r8c@s6eZdZdefddZdefddZdefddZd S) ANSIX923rcCr.r/r0r1r r r r2r3zANSIX923.__init__rcCr4r/)_ANSIX923PaddingContextrrr r r r6r7zANSIX923.paddercCr4r/)_ANSIX923UnpaddingContextrrr r r r9r7zANSIX923.unpadderN)rrrr:r2rr6r9r r r r rYsrYc@r;)rZr<rcCr=r>r@r1r r r r2rAz _ANSIX923PaddingContext.__init__rrcCrBr/rCrDr r r r rEz_ANSIX923PaddingContext.updaterFcCstdg|dt|gS)Nrr&rGrHr r r rIsz _ANSIX923PaddingContext._paddingcCrJr/rKrLr r r rrMz _ANSIX923PaddingContext.finalizeNrNr r r r rZrRrZc@rS) r[r<rcCr=r>r@r1r r r r2rAz"_ANSIX923UnpaddingContext.__init__rrcCrBr/rTrDr r r r rEz _ANSIX923UnpaddingContext.updatecCrUr/)r,r<rr#Cryptography_check_ansix923_paddingrLr r r rsz"_ANSIX923UnpaddingContext.finalizeNrWr r r r r[rXr[)rrO cryptographyrcryptography.exceptionsr%cryptography.hazmat.bindings._paddingrABCMetarr:rrPrTupler"Callabler%r(r,objectr-r5r8rYrZr[r r r r sb