pg ddlZddlmZejr&ddlmZddlmZmZm Z m Z m Z ej eee e e fZ dZdZdddefd Zd ed d fd Zd d d edededejededefdZd d deddfdZd d deddfdZd d dedefdZd d dddededejededefdZd d dddededejededefdZdS)N) InvalidTag)BackendAESCCMAESGCMAESOCB3AESSIVChaCha20Poly1305cipher _AEAD_TYPESreturnc<ddlm}m}m}m}m}t ||rdSt ||r.dt|jdzd dSt ||r.dt|jdzd dSt ||r1dt|jdzd zd  dSt ||sJdt|jdzd  dS) Nrrschacha20-poly1305zaes-z-ccmasciiz-ocbz-sivz-gcm) +cryptography.hazmat.primitives.ciphers.aeadrrrr r isinstancelen_keyencode)r rrrr r s K/usr/lib/python3/dist-packages/cryptography/hazmat/backends/openssl/aead.py_aead_cipher_namersp&*++ A## FF # #A0c&+&&*00077@@@ FG $ $A0c&+&&*00077@@@ FF # #A5c&+&&*a/555<>???\__Z1MNN \66{CC zW\->>??? rkeynoncetagtag_len operationc Nt||}|j}|j||jj}|j|||jj|jj|jjt|tk} | | dk|j |t|} | | dk|j ||jjt||jj} | | dk|tkrR|J|j ||jjt||} | | dkn_|drJ|j ||jj||jj} | | dk|j|} |j|} |j||jj|jj| | t|tk} | | dk|S)Nrs-ccm)r(rEVP_CIPHER_CTX_newr!r$EVP_CIPHER_CTX_freeEVP_CipherInit_exr"int_ENCRYPTr#EVP_CIPHER_CTX_set_key_lengthrEVP_CIPHER_CTX_ctrlEVP_CTRL_AEAD_SET_IVLEN_DECRYPTEVP_CTRL_AEAD_SET_TAGr from_buffer) rrr)r*r+r,r-r'ctxres nonce_ptrkey_ptrs r _aead_setupr>Bs`['22J , ) ) + +C ,//#w|? @ @C , ( (     I !""   C 3!8$$$ , 4 4S#c(( C CC 3!8$$$ , * *  , E     C  3!8$$$Hl.. 3SXXs   sax((((   g & &)l.. 3Wgl>O   sax((( ((//Il&&s++G , ( (    I !""   C 3!8$$$ Jrdata_lenc|jd}|j||jj||jj|}||dkdSNint *r)r!newrEVP_CipherUpdater"r#)rr:r?intptrr;s r _set_lengthrFzsc \  g & &F , ' ' W\  (98  C 3!8$$$$$rassociated_datac |jd}|j||jj||t |}||dkdSrA)r!rCrrDr"rr#)rr:rGoutlenr;s r _process_aadrJsf \  g & &F , ' ' W\ _9M9M  C 3!8$$$$$rdatac p|jd}|jdt|}|j||||t|}|dkr|t |j||dddS)NrBunsigned char[]r)r!rCrrrD_consume_errorsrbuffer)rr:rKrIbufr;s r _process_datarQs \  g & &F ,  ,c$ii 8 8C , ' 'S&$D J JC axx!!! <  sF1I . .qqq 11r tag_lengthc ddlm}m}t|}t |||j|d|t } t||rt|| t||D]} t|| | t|| |} |j d} |j dd} |j| | | }||dk| |j | | dddz } |j d|}|j| |jj||}||dk|j |dd}t||r+|t|dk|| zS| |zS)Nrrr rBrM)rrr rr>rr3rrFrrJrQr!rCrEVP_CipherFinal_exr#rOr5EVP_CTRL_AEAD_GET_TAG)rr r*rKrGrRrr rr:adprocessed_datarIrPr;tag_bufr+s r_encryptr[sKJJJJJJJ#F++K fk5$ H  C &&!!-GS#d)),,,''Wc2&&&&"7C66N \  g & &F ,  ,b 1 1C , ) )#sF ; ;C 3!8$$$gl))#vay99!!!<rr7rFrJr!rCrrDrNrOrQrV)rr r*rKrGrRrr r+rr:rXrIrPr;rYs r_decryptr]s[KJJJJJJJ 4yy:&&!!";J;JKK J;<< Lj[L!#F++K fk5#z8  C &&!!-GS#d)),,,''Wc2&&&&&&!!!!'**l0#d))<<l++CfdCIINN !88  # # % % %  ,,S&)<rFrJrQListr[r]rrrgs  ......  DDDDDD,)99K  AmAAAAA, U Y     5 55 5  5   5  55555p%%3%4%%%%%)%5%T%%%%292252222,$ ,$ ,$ ,$  ,$ [' ,$  ,$ ,$,$,$,$^7 7 7 7  7 [' 7  7 777777r