a b?@sPddlZddlZddlmZddlmZddlmZmZGdddej dZ e ddd d Z ej eee ejeefd d d Zej ee eje gefedddZej eee ejeefd ddZej ee ejege fedddZGdddZGddde ZGddde ZGdddZGddde ZGd d!d!e ZdS)"N)utils)AlreadyFinalized)check_ansix923_paddingcheck_pkcs7_paddingc@s6eZdZejeedddZejedddZdS)PaddingContextdatareturncCsdS)zR Pads the provided bytes and returns any available data as bytes. N)selfrr r M/tmp/pip-target-98j97qn4/lib/python/cryptography/hazmat/primitives/padding.pyupdateszPaddingContext.updater cCsdS)z6 Finalize the padding, returns bytes. Nr r r r r finalizeszPaddingContext.finalizeN)__name__ __module__ __qualname__abcabstractmethodbytesr rr r r r rsr) metaclass) block_sizer cCs6d|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_rrr cCsh|durtdtd||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 paddingfnr cCs,|durtd|dt|}|||S)Nrr)rr )rrr$pad_sizer r r _byte_padding_pad9sr&cCsr|durtdtd||t|7}tt||ddd}|d||d}|||dd}||fS)Nrrrr)rrrrmaxr r!r r r _byte_unpadding_updateEs  r))rrcheckfnr cCsR|durtdt||dkr(td||}|scCstdg|dt|gS)Nrr'r@rAr r r rBsz _ANSIX923PaddingContext._paddingrcCst|j|j|j}d|_|Sr.rCrDr r r rs  z _ANSIX923PaddingContext.finalizeNrEr r r r rLs rLc@sHeZdZUejeed<edddZeedddZ edd d Z d S) rMr8rcCs||_d|_dSr9r;r0r r r r1sz"_ANSIX923UnpaddingContext.__init__rcCst|j||j\|_}|Sr.rIr=r r r r s z _ANSIX923UnpaddingContext.updatercCst|j|jt}d|_|Sr.)r,r8rrrDr r r rsz"_ANSIX923UnpaddingContext.finalizeNrJr r r r rMs rM)rrFZ cryptographyrZcryptography.exceptionsrZ"cryptography.hazmat.bindings._rustrrABCMetarr7rrGrTupler#Callabler&r)r,r-r2r4rKrLrMr r r r s8