a oeb@sddlmZddlZddlZddlmZddlmZddlm Z m Z Gdddej dZ d d d d d Z ddd ddddZdd dddddZddd ddddZdd dddddZGdddZGd d!d!e ZGd"d#d#e ZGd$d%d%ZGd&d'd'e ZGd(d)d)e ZdS)*) annotationsN)utils)AlreadyFinalized)check_ansix923_paddingcheck_pkcs7_paddingc@s6eZdZejdddddZejddddZdS) PaddingContextbytesdatareturncCsdS)zR Pads the provided bytes and returns any available data as bytes. N)selfr r r GC:\Program Files\Certbot\pkgs\cryptography\hazmat\primitives\padding.pyupdateszPaddingContext.updater cCsdS)z6 Finalize the padding, returns bytes. Nr r r r rfinalizeszPaddingContext.finalizeN)__name__ __module__ __qualname__abcabstractmethodrrr r r rrsr) metaclassintNone) 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_check s rtyping.Optional[bytes]rztyping.Tuple[bytes, bytes])buffer_r rr cCsh|durtdtd||t|7}t||d}|d||d}|||dd}||fS)NContext was already finalized.r r)rr_check_byteslikerlenr!r rZfinished_blocksresultr r r_byte_padding_update(s  r'ztyping.Callable[[int], bytes])r!r paddingfnr cCs,|durtd|dt|}|||S)Nr"r)rr$)r!rr(pad_sizer r r_byte_padding_pad:sr*cCsr|durtdtd||t|7}tt||ddd}|d||d}|||dd}||fS)Nr"r rr)rrr#rmaxr$r%r r r_byte_unpadding_updateFs  r-ztyping.Callable[[bytes], int])r!rcheckfnr cCsR|durtdt||dkr(td||}|sr4r r rr5sz_PKCS7UnpaddingContext.__init__rr cCst|j||j\|_}|Sr2r-r;rr@r r rrs z_PKCS7UnpaddingContext.updatercCst|j|jt}d|_|Sr2)r0r;rrrGr r rrs  z_PKCS7UnpaddingContext.finalizeNrrrrIr5rrr r r rr8s r8c@s6eZdZddddZddddZddd d Zd S) ANSIX923rrcCst|||_dSr2r3r4r r rr5szANSIX923.__init__rrcCs t|jSr2)_ANSIX923PaddingContextrrr r rr7szANSIX923.paddercCs t|jSr2)_ANSIX923UnpaddingContextrrr r rr9szANSIX923.unpadderNr:r r r rrLsrLc@sReZdZUded<ddddZdddd d Zddd d d ZddddZdS)rMr r;rrcCs||_d|_dSr<r>r4r r rr5sz _ANSIX923PaddingContext.__init__rr cCst|j||j\|_}|Sr2r?r@r r rrs z_ANSIX923PaddingContext.updaterAcCstdg|dt|gS)Nrr+rCrDr r rrEsz _ANSIX923PaddingContext._paddingrcCst|j|j|j}d|_|Sr2rFrGr r rrs  z _ANSIX923PaddingContext.finalizeNrHr r r rrMs rMc@sBeZdZUded<ddddZdddd d Zdd d d ZdS)rNr r;rrcCs||_d|_dSr<r>r4r r rr5sz"_ANSIX923UnpaddingContext.__init__rr cCst|j||j\|_}|Sr2rJr@r r rrs z _ANSIX923UnpaddingContext.updatercCst|j|jt}d|_|Sr2)r0r;rrrGr r rrsz"_ANSIX923UnpaddingContext.finalizeNrKr r r rrNs rN)Z __future__rrtypingZ cryptographyrZcryptography.exceptionsrZ"cryptography.hazmat.bindings._rustrrABCMetarrr'r*r-r0r1r6r8rLrMrNr r r rs"