pg}(rddlZddlmZmZmZddlmZddlmZm Z ej rddl m Z GddZ dS)N) InvalidTagUnsupportedAlgorithm_Reasons)ciphers) algorithmsmodes)BackendceZdZdZdZdZdddeddfd Zd edefd Z d ed edefd Z defdZ dedefdZ d eddfdZ edejefdZdS)_CipherContextri?backendr operationreturnNc ||_||_||_||_d|_t |jt jr|jjdz|_ nd|_ |jj }|jj ||jj j}|jj} |t!|t!|f}nJ#t"$r=t%d|j|r|jn|t*jwxYw||j||}||jj jkrxd|} || d|z } | d|jz } t%| t*jt |t2jr%|jj |j} nt |t2jr%|jj |j} nt |t2jr%|jj |j } nPt |tBj"r%|jj |j } n|jj j} |jj #|||jj j|jj j|jj j|} |j$| dk|jj %|tM|j'} |j$| dkt |t2j(r|jj )||jj j*tM| |jj j} |j$| dk|j+r|jj )||jj j,tM|j+|j+} |j$| dk|j+|_|jj #||jj j|jj j|jj |j'| |} |j-} |jj } | dkri| j.r&| d/| j0| j1s-| j2r5| d/| j3| j4rtkd|j$| dk| |jj 6|d||_7dS) Nr z6cipher {} in {} mode is not supported by this backend.zcipher {0.name} zin {0.name} 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_textrModeWithInitializationVector 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_errors$CRYPTOGRAPHY_OPENSSL_111D_OR_GREATER_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)selfr ciphermoderctxregistryadapter evp_ciphermsgiv_nonceresrlibs N/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/ciphers.py__init__z_CipherContext.__init__sE    #,0 dlG$@ A A '%)\%<%AD " "%&D "m 3355m ## #7  =1 tF||T$ZZ78GG   &##)6Kd!<$$+   WT]FD99 +0 0 0$++F33C*11$777 8fT]7799:: ;C'sH,GHH H dE> ? ? /})55*HHe1 2 2 /})55djAAHH e1 2 2 /})55djAAHH  3 4 4 /})55flCCHH}).Hm 22   M  # M  # M  #     $$SAX...m >> VZ   $$SAX... dEI & & %-$88 ":H  "' C M ( ( 2 2 2x#m(<<M&<MMH   ,,SAX666 H m 22  M  # M  # M  * *6: 6 6     ..00m  !888 1I//OS%B . 1I//$c&D JKK K $$SAXf$=== 55c1=== s 9$CAD%datactt||jzdz }|||}t |d|S)Nr ) bytearrayr5r update_intobytes)rGrTbufns rRupdatez_CipherContext.updatesKD D$::Q>??   T3 ' 'S!W~~rYc<t|}t|||jzdz kr:tdt||jzdz d}d}|jjd}|jj|d}|jj|}||kr||z} ||z} t|j ||z } |jj |j | || | } | dkrGt|jtjr(|jtd|j| dk|| z }||dz }||k|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.)r5rrDr%rrnewr+min_MAX_CHUNK_SIZErEVP_CipherUpdaterFrrrXTSr<r3) rGrTrYtotal_data_lendata_processed total_outoutlen baseoutbuf baseinbufoutbufinbufinlenrPs rRrWz_CipherContext.update_intosT s88~(>>B C C &TT-C!Ca!GHH   #''00]'33C$3OO M&22488 ..)+F.E,n~.MNNE-$55 665%CaxxJtz59==x --/// C  ,,SAX666 e #N  "I#..&r\c|j|jkr5t|jtjr|jtd|jj d|j }|jj d}|jj |j||}|dkr|j}|s&t|jtjrt"|jj }|j|d|j|jpI|jo%|d|j|jp|jo|dj|jk|tdt|jtjr|j|jkr|jj d|j }|jj |j|jj j|j |}|j|dk|jj |dd|_ |jj !|j}|j|dk|jj |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_DECRYPTrrrModeWithAuthenticationTagr:rDrrr`rrEVP_CipherFinal_exrFr<r7rr3r>r?'EVP_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTHrArBPROV_R_WRONG_FINAL_BLOCK_LENGTHCRYPTOGRAPHY_IS_BORINGSSLreason*CIPHER_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH_ENCRYPTr8EVP_CTRL_AEAD_GET_TAGbufferrEVP_CIPHER_CTX_reset)rGrYrhrPrrQtag_bufs rRfinalizez_CipherContext.finalizes Ot} , ,4:u'FGG - F m $$%68NOO#''00m 33DIsFKK !88]2244F !jUY?? !  -$C M ( (q ++O? 2q 33(; 1Fq (EF# )   &$  tz59 - - >4=00m(,,!4#9G-$88  "8& C M ( ( 2 2 2 *11'::111=DIm 55di@@ $$SAX...}!((--kq k::r\r:ct|}||jjkr,td|jj||jkr'td|j|jj|j |jjj t||}|j |dk||_ | S)Nz.Authentication tag must be {} bytes or longer.z0Authentication tag cannot be more than {} bytes.r)r5r_min_tag_lengthrDr%rrrr8rFr;r3rr|)rGr:tag_lenrPs rRfinalize_with_tagz _CipherContext.finalize_with_tagsc(( TZ/ / /@GGJ.  t- - -BII*  m 44 It})?S3   $$SAX... }}r\c B|jjd}|jj|j|jjj||jj|t|}|j |dkdS)Nr^r) rrr`rrcrFr(r+r5r3)rGrTrhrPs rRauthenticate_additional_dataz+_CipherContext.authenticate_additional_data s#''00m 11 I M  #  M  * *4 0 0 II    $$SAX.....r\c|jS)N)r)rGs rRr:z_CipherContext.tags yr\)__name__ __module__ __qualname__rwrorbintrSrXr[rWr|rrpropertytypingOptionalr:r\rRr r s1HHOy y;>y yyyyv5U !!E!c!!!!F>;%>;>;>;>;@Uu* / /4 / / / /V_U+Xr\r )rcryptography.exceptionsrrrcryptography.hazmat.primitivesr&cryptography.hazmat.primitives.ciphersrr TYPE_CHECKING,cryptography.hazmat.backends.openssl.backendr r rr\rRrs  NNNNNNNNNN222222DDDDDDDD EDDDDDDJJJJJJJJJJr\