a ‚oebã@sddlmZddlZddlZddlmZddlmZddlm Z m Z Gdd„dej d�Z d d d œd d „Z ddd ddœdd„Zdd dddœdd„Zddd ddœdd„Zdd dddœdd„ZGdd„dƒZGd d!„d!e ƒZGd"d#„d#e ƒZGd$d%„d%ƒZGd&d'„d'e ƒZGd(d)„d)e ƒZdS)*é)Ú annotationsN)Úutils)ÚAlreadyFinalized)Úcheck_ansix923_paddingÚcheck_pkcs7_paddingc@s6eZdZejdddœdd„ƒZejddœdd„ƒZdS) ÚPaddingContextÚbytes©ÚdataÚreturncCsdS)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.pyÚupdateszPaddingContext.update©r cCsdS)z6 Finalize the padding, returns bytes. Nr ©r r r rÚfinalizeszPaddingContext.finalizeN)Ú__name__Ú __module__Ú __qualname__ÚabcÚabstractmethodrrr r r rrsr)Ú metaclassÚintÚNone)Ú block_sizer cCs6d|krdksntdƒ‚|ddkr2tdƒ‚dS)Nriøz%block_size must be in range(0, 2041).éz#block_size must be a multiple of 8.)Ú ValueError©rr r rÚ_byte_padding_check s rútyping.Optional[bytes]rztyping.Tuple[bytes, bytes])Úbuffer_r rr cCsh|durtdƒ‚t d|¡|t|ƒ7}t|ƒ|d}|d||d…}|||dd…}||fS)NúContext was already finalized.r r)rrÚ_check_byteslikerÚlen©r!r rZfinished_blocksÚresultr 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|durtdƒ‚t d|¡|t|ƒ7}tt|ƒ|dddƒ}|d||d…}|||dd…}||fS)Nr"r rér)rrr#rÚmaxr$r%r r rÚ_byte_unpadding_updateFs  r-ztyping.Callable[[bytes], int])r!rÚcheckfnr cCsR|durtdƒ‚t|ƒ|dkr(tdƒ‚||ƒ}|sr4r r rr5”sz_PKCS7UnpaddingContext.__init__rr cCst|j||jƒ\|_}|Sr2©r-r;rr@r r rr™s ÿ z_PKCS7UnpaddingContext.updatercCst|j|jtƒ}d|_|Sr2)r0r;rrrGr r rrŸs  ÿz_PKCS7UnpaddingContext.finalizeN©rrrrIr5rrr r r rr8‘s r8c@s6eZdZddœdd„Zddœdd„Zddœd d „Zd S) ÚANSIX923rrcCst|ƒ||_dSr2r3r4r r rr5¨szANSIX923.__init__rrcCs t|jƒSr2)Ú_ANSIX923PaddingContextrrr r rr7¬szANSIX923.paddercCs t|jƒSr2)Ú_ANSIX923UnpaddingContextrrr r rr9¯szANSIX923.unpadderNr:r r r rrL§srLc@sReZdZUded<ddœdd„Zdddœd d „Zddd œd d „Zddœdd„ZdS)rMr r;rrcCs||_d|_dSr<r>r4r r rr5¶sz _ANSIX923PaddingContext.__init__rr cCst|j||jƒ\|_}|Sr2r?r@r r rr»s ÿ z_ANSIX923PaddingContext.updaterAcCstdgƒ|dt|gƒS)Nrr+rCrDr r rrEÁsz _ANSIX923PaddingContext._paddingrcCst|j|j|jƒ}d|_|Sr2rFrGr r rrÄs  ÿz _ANSIX923PaddingContext.finalizeNrHr r r rrM³s rMc@sBeZdZUded<ddœdd„Zdddœd d „Zdd œd d „ZdS)rNr r;rrcCs||_d|_dSr<r>r4r r rr5Ïsz"_ANSIX923UnpaddingContext.__init__rr cCst|j||jƒ\|_}|Sr2rJr@r r rrÔs ÿ z _ANSIX923UnpaddingContext.updatercCst|j|jtƒ}d|_|Sr2)r0r;rrrGr r rrÚsýz"_ANSIX923UnpaddingContext.finalizeNrKr r r rrNÌs rN)Z __future__rrÚtypingZ cryptographyrZcryptography.exceptionsrZ"cryptography.hazmat.bindings._rustrrÚABCMetarrr'r*r-r0r1r6r8rLrMrNr r r rÚs"