U q`1@sRddlZddlZddlmZddlmZddlmZGdddejdZ e ddd d Z ej e e e eje e fd d d Zej e e eje ge fe dddZej e e e eje e fd ddZej e e eje e ge fe dddZGdddeZGddde ZGddde ZGdddeZGddde ZGd d!d!e ZdS)"N)utils)AlreadyFinalized)libc@s6eZdZejeedddZejedddZdS)PaddingContextdatareturncCsdS)zR Pads the provided bytes and returns any available data as bytes. N)selfrr r M/tmp/pip-target-nv4zd3e_/lib/python/cryptography/hazmat/primitives/padding.pyupdateszPaddingContext.updatercCsdS)z6 Finalize the padding, returns bytes. Nr r r r r finalizeszPaddingContext.finalizeN)__name__ __module__ __qualname__abcabstractmethodbytesr rr r r r rsr) metaclass) block_sizercCs6d|krdksntd|ddkr2tddS)Nriz%block_size must be in range(0, 2041).z#block_size must be a multiple of 8.) ValueErrorrr r r _byte_padding_checks r)buffer_rrrcCsh|dkrtdtd||t|7}t||d}|d||d}|||dd}||fS)NContext was already finalized.rr)rr_check_byteslikerlenrrrZfinished_blocksresultr r r _byte_padding_update$s  r")rr paddingfnrcCs,|dkrtd|dt|}|||S)Nrr)rr)rrr#pad_sizer r r _byte_padding_pad6sr%cCsr|dkrtdtd||t|7}tt||ddd}|d||d}|||dd}||fS)Nrrrr)rrrrmaxrr r r r _byte_unpadding_updateBs  r()rrcheckfnrcCsX|dkrtdt||dkr(td|||d}|sBtd|d}|d| S)NrrzInvalid padding bytes.)rrr)rrr)Zvalidr$r r r _byte_unpadding_checkTsr+c@s*eZdZedddZddZddZdS) PKCS7rcCst|||_dSNrrr rr r r __init__iszPKCS7.__init__cCs t|jSr-)_PKCS7PaddingContextrrr r r paddermsz PKCS7.paddercCs t|jSr-)_PKCS7UnpaddingContextrrr r r unpadderpszPKCS7.unpadderN)rrrintr0r2r4r r r r r,hsr,c@sXeZdZUejeed<edddZeedddZ eedd d Z ed d d Z dS)r1_bufferrcCs||_d|_dSNrr6r/r r r r0wsz_PKCS7PaddingContext.__init__rcCst|j||j\|_}|Sr-r"r6rr rr!r r r r |s  z_PKCS7PaddingContext.updatesizercCst|g|Sr-rr r=r r r _paddingsz_PKCS7PaddingContext._paddingr cCst|j|j|j}d|_|Sr-r%r6rr@r r!r r r rsz_PKCS7PaddingContext.finalizeN rrrtypingOptionalr__annotations__r5r0r r@rr r r r r1ts r1c@sHeZdZUejeed<edddZeedddZ edd d Z d S) r3r6rcCs||_d|_dSr7r9r/r r r r0sz_PKCS7UnpaddingContext.__init__rcCst|j||j\|_}|Sr-r(r6rr;r r r r s  z_PKCS7UnpaddingContext.updater cCst|j|jtj}d|_|Sr-)r+r6rrZ Cryptography_check_pkcs7_paddingrBr r r rsz_PKCS7UnpaddingContext.finalizeN rrrrDrErrFr5r0r rr r r r r3s r3c@s6eZdZedddZedddZedddZd S) ANSIX923rcCst|||_dSr-r.r/r r r r0szANSIX923.__init__r cCs t|jSr-)_ANSIX923PaddingContextrrr r r r2szANSIX923.paddercCs t|jSr-)_ANSIX923UnpaddingContextrrr r r r4szANSIX923.unpadderN)rrrr5r0rr2r4r r r r rIsrIc@sXeZdZUejeed<edddZeedddZ eedd d Z ed d d Z dS)rJr6rcCs||_d|_dSr7r9r/r r r r0sz _ANSIX923PaddingContext.__init__rcCst|j||j\|_}|Sr-r:r;r r r r s  z_ANSIX923PaddingContext.updater<cCstdg|dt|gS)Nrr&r>r?r r r r@sz _ANSIX923PaddingContext._paddingr cCst|j|j|j}d|_|Sr-rArBr r r rsz _ANSIX923PaddingContext.finalizeNrCr r r r rJs rJc@sHeZdZUejeed<edddZeedddZ edd d Z d S) rKr6rcCs||_d|_dSr7r9r/r r r r0sz"_ANSIX923UnpaddingContext.__init__rcCst|j||j\|_}|Sr-rGr;r r r r s  z _ANSIX923UnpaddingContext.updater cCst|j|jtj}d|_|Sr-)r+r6rrZ#Cryptography_check_ansix923_paddingrBr r r rsz"_ANSIX923UnpaddingContext.finalizeNrHr r r r rKs rK)rrDZ cryptographyrZcryptography.exceptionsrZ%cryptography.hazmat.bindings._paddingrABCMetarr5rrErTupler"Callabler%r(r+objectr,r1r3rIrJrKr r r r s@