3Tfv(ddlmZddlZddlmZmZmZddlmZddl m Z m Z ejrddl mZGddZy) ) annotationsN) InvalidTagUnsupportedAlgorithm_Reasons)ciphers) algorithmsmodes)BackendcZeZdZdZdZdZd dZd dZddZddZ ddZ dd Z e dd Z y )_CipherContextri?c||_||_||_||_d|_t |jt jr|jjdz|_ nd|_ |jjj}|jjj||jjj}|jj} |t!|t!|f}||j||}||jjj.k(rkd|j(d} || d|j(dz } | dj'|jj1z } t%| t*j,t |t2j4r0|jjj7|j8} nt |t2j:r0|jjj7|j<} nt |t2j>r0|jjj7|j@} njt |tBjDr0|jjj7|j@} n |jjj.} |jjjG|||jjj.|jjj.|jjj.|} |jjI| d k7|jjjK|tM|jN} |jjI| d k7t |t2jPr)|jjjS||jjjTtM| |jjj.} |jjI| d k7|jV|jjjS||jjjXtM|jV|jV} |jjI| d k7|jV|_|jjjG||jjj.|jjj.|jjj7|jN| |} |jj[} |jj} | d k(ru| j\s)| d j_| j`| jbs5| jdr4| d j_| jf| jhr tkd |jjI| d k7| |jjjm|d ||_7y#t"$rCt%dj'|j(|r |j(n|t*j,wxYw) Nr z6cipher {} in {} mode is not supported by this backend.zcipher  zin z mode z_is not supported by this backend (Your version of OpenSSL may be too old. Current version: {}.)rz+In XTS mode duplicated keys are not allowederrors)8_backend_cipher_mode _operation_tag isinstancerBlockCipherAlgorithm block_size_block_size_bytes_libEVP_CIPHER_CTX_new_ffigcEVP_CIPHER_CTX_free_cipher_registrytypeKeyErrorrformatnamerUNSUPPORTED_CIPHERNULLopenssl_version_textr ModeWithInitializationVector from_bufferinitialization_vector ModeWithTweaktweak ModeWithNoncenoncerChaCha20EVP_CipherInit_exopenssl_assertEVP_CIPHER_CTX_set_key_lengthlenkeyGCMEVP_CIPHER_CTX_ctrlEVP_CTRL_AEAD_SET_IVLENtagEVP_CTRL_AEAD_SET_TAG_consume_errorsCRYPTOGRAPHY_IS_LIBRESSL_lib_reason_match ERR_LIB_EVPEVP_R_XTS_DUPLICATED_KEYSCryptography_HAS_PROVIDERS ERR_LIB_PROVPROV_R_XTS_DUPLICATED_KEYS ValueErrorEVP_CIPHER_CTX_set_padding_ctx)selfbackendciphermode operationctxregistryadapter evp_ciphermsgiv_nonceresrlibs N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ciphers.py__init__z_CipherContext.__init__sG   #,0 dllG$@$@ A%)\\%<%<%AD "%&D "mm  335mm  ## ##77 ==11 tF|T$Z78GT]]FD9 ++00 0FKK=*CTYYKv.. 8fT]]779: ;C'sH,G,GH H dE>> ?}}))55**He11 2}}))55djjAH e11 2}}))55djjAH  3 3 4}}))55fllCH}}))..Hmm  22   MM   # # MM   # # MM   # #    $$SAX.mm  >> VZZ  $$SAX. dEII &--$$88 ""::H  ""'' C MM ( ( 2xx#mm((<<MM&&<<MHH   ,,SAX6 HH mm  22  MM   # # MM   # # MM   * *6:: 6    ..0mm   !8001I//OOS%B%B ..1I//$$c&D&D JK K $$SAXf$= 55c1= G &##)6KKd$++   s -Z88A \ctt||jzdz }|j||}t |d|S)Nr ) bytearrayr4r update_intobytes)rFdatabufns rSupdatez_CipherContext.updatesBD D$:$::Q>?   T3 'S!W~c\t|}t|||jzdz kr3tdjt||jzdz d}d}|jj j d}|jj j|d}|jj j|}||k7r||z} ||z} t|j||z } |jjj|j| || | } | dk(rIt|jtj r%|jj#td|jj%| dk7|| z }||dz }||k7r|S)Nr z1buffer must be at least {} bytes for this payloadrint *T)require_writablezeIn XTS mode you must supply at least a full block in the first update call. For AES this is 16 bytes.)r4rrCr$rrnewr*min_MAX_CHUNK_SIZErEVP_CipherUpdaterErrr XTSr;r2) rFrYrZtotal_data_lendata_processed total_outoutlen baseoutbuf baseinbufoutbufinbufinlenrQs rSrWz_CipherContext.update_intosT s8~(>(>>B C &TT-C-C!Ca!GH   ##''0]]''33C$3O MM&&2248 .)+F.E,,n~.MNE--$$55 665%CaxJtzz599= --/ C  ,,SAX6 e #N  "I#.&r]c|j|jk(r;t|jtj r|j td|jjjd|j}|jjjd}|jjj|j||}|dk(r|jj}|s*t|jtj rt"|jj}|jj%|dj'|j(|j*xsc|j,xr)|dj'|j.|j0xs*|j2xr|dj4|j6k(|tdt|jtj r|j|j8k(r|jjjd|j}|jjj;|j|jjj<|j|}|jj%|dk7|jjj?|dd|_ |jjjC|j}|jj%|dk(|jjj?|d|dS)Nz4Authentication tag must be provided when decrypting.zunsigned char[]r_rrzFThe length of the provided data is not a multiple of the block length.r )"r_DECRYPTrrr ModeWithAuthenticationTagr9rCrrrarrEVP_CipherFinal_exrEr;r6rr2r=r>'EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTHr@rAPROV_R_WRONG_FINAL_BLOCK_LENGTHCRYPTOGRAPHY_IS_BORINGSSLreason*CIPHER_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH_ENCRYPTr7EVP_CTRL_AEAD_GET_TAGbufferrEVP_CIPHER_CTX_reset)rFrZrirQrrRtag_bufs rSfinalizez_CipherContext.finalizes OOt}} ,4::u'F'FG F mm  $$%68N8NO##''0mm  33DIIsFK !8]]224FjUYY?  --$$C MM ( (q ++OO?? 22q 33((;; 11Fq ((EEF# ) &$  tzz599 -4==0mm((,,!4#9#9G--$$88  ""88&& C MM ( ( 2 **11':1=DImm  55dii@ $$SAX.}}!!((-kq ::r]c(t|}||jjkr.tdj |jj||j kDr$tdj |j |j jj|j|j jjt||}|j j|dk7||_ |jS)Nz.Authentication tag must be {} bytes or longer.z0Authentication tag cannot be more than {} bytes.r)r4r_min_tag_lengthrCr$rrrr7rEr:r2rr})rFr9tag_lenrQs rSfinalize_with_tagz _CipherContext.finalize_with_tagsc( TZZ// /@GGJJ..  t-- -BII**  mm  44 IIt}}))??S3  $$SAX. }}r]c |jjjd}|jjj |j |jjj ||jjj|t|}|jj|dk7y)Nr_r) rrrarrdrEr'r*r4r2)rFrYrirQs rSauthenticate_additional_dataz+_CipherContext.authenticate_additional_data s##''0mm  11 II MM   # #  MM   * *4 0 I   $$SAX.r]c|jS)N)r)rFs rSr9z_CipherContext.tags yyr]N)rGr rJintreturnNone)rYrXrrX)rYrXrZrXrr)rrX)r9rXrrX)rYrXrr)rztyping.Optional[bytes])__name__ __module__ __qualname__rxrprcrTr\rWr}rrpropertyr9r]rSr r sGHHOwr !F>;@* /r]r ) __future__rtypingcryptography.exceptionsrrrcryptography.hazmat.primitivesr&cryptography.hazmat.primitives.ciphersrr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr r rr]rSrs1 # NN2D DHHr]