˺h(ddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z m Z ddlmZmZmZddlmZGdd eZd ZGd d ZGd dZdS)) annotationsN)utils)InvalidSignature)hashespadding)Cipher algorithmsmodes)HMACceZdZdS) InvalidTokenN)__name__ __module__ __qualname__u/builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib64/python3.11/site-packages/cryptography/fernet.pyr r sDrr <ceZdZ dd dZed!d Zd"d Zd#dZd$dZdd%dZ d&dZ d'dZ e d(dZ d)dZd*dZdS)+FernetNkey bytes | strbackend typing.AnyreturnNonec tj|}n'#tj$r}t d|d}~wwxYwt |dkrt d|dd|_|dd|_dS)Nz4Fernet key must be 32 url-safe base64-encoded bytes. )base64urlsafe_b64decodebinasciiError ValueErrorlen _signing_key_encryption_key)selfrrexcs r__init__zFernet.__init__s  *3//CC~   F   s88r>>F  H"233xs;6;bytescNtjtjdS)Nr)r urlsafe_b64encodeosurandom)clss r generate_keyzFernet.generate_key/s' 2777rdatacj||ttjSNencrypt_at_timeinttime)r(r2s rencryptzFernet.encrypt3s&##D#dikk*:*:;;;r current_timer7cXtjd}||||S)Nr)r.r/_encrypt_from_parts)r(r2r:ivs rr6zFernet.encrypt_at_time6s' Z^^''lB???rr=ctjd|tjtjj}||| z}tt j|j tj |}||| z}d|ddz|z|z}t!|jt%j} | || } t)j|| zS)Nr2big)length byteorder)r _check_bytesrPKCS7r AES block_sizepadderupdatefinalizerr'r CBC encryptorto_bytesr r&rSHA256r r-) r(r2r:r=rH padded_datarL ciphertext basic_partshhmacs rr<zFernet._encrypt_from_parts:s; 64(((z~899@@BBmmD))FOO,=,==  N4/ 0 0 IbMM   )++ %%k22Y5G5G5I5II  ##1#>> ?    "FMOO 4 4 zz||' d(:;;;rtokenttl int | Nonect|\}}|d}n"|ttjf}||||Sr4)r_get_unverified_token_datar7r8 _decrypt_data)r(rTrU timestampr2 time_infos rdecryptzFernet.decryptSsU ;;EBB 4 ;IIc$)++../I!!$ 9===rc|tdt|\}}|||||fS)Nz6decrypt_at_time() can only be used with a non-None ttl)r$rrXrY)r(rTrUr:rZr2s rdecrypt_at_timezFernet.decrypt_at_time[sT ;H !;;EBB 4!!$ C3FGGGrcjt|\}}|||Sr4)rrX_verify_signature)r(rTrZr2s rextract_timestampzFernet.extract_timestampes3 ;;EBB 4 t$$$rtuple[int, bytes]ctt|ttfstd t j|}n!#tt jf$rtwxYw|r |ddkrtt|dkrtt |ddd}||fS)Nztoken must be bytes or strr rA)rC) isinstancestrr+ TypeErrorr r!r"r#r r%r7 from_bytes)rTr2rZs rrXz!Fernet._get_unverified_token_dataks%#u.. :899 9 +E22DD8>*      tAw$  t99q== NN4!9N>> $s AA ct|jtj}||dd ||dddS#t $rtwxYw)N)r r&rrNrIverifyrr )r(r2rRs rr`zFernet._verify_signature~sz "FMOO 4 4 dsd  HHT#$$Z      s A$$A6rZr[tuple[int, int] | Nonec|*|\}}||z|krt|tz|krt|||dd}|dd}tt j|jtj| }| |} | | z } n#t$rtwxYwtjtjj} | | } | | z } n#t$rtwxYw| S)Nrerl)r _MAX_CLOCK_SKEWr`rr rFr'r rK decryptorrIrJr$rrErGunpadder) r(r2rZr[rUr:r=rPrrplaintext_paddedrsunpaddeds rrYzFernet._decrypt_datasm  ) C3--""o- 99"" t$$$ !B$Z"S&\  N4/ 0 0%)B--  )++ %++J77   2 2 4 4 4       =!:;;DDFF??#344  ))++ +HH     s7CC!/EEr4)rrrrrr)rr+)r2r+rr+)r2r+r:r7rr+)r2r+r:r7r=r+rr+)rTrrUrVrr+)rTrrUr7r:r7rr+)rTrrr7)rTrrrb)r2r+rr)r2r+rZr7r[rnrr+)rrrr* classmethodr1r9r6r<r\r^ra staticmethodrXr`rYrrrrrs#(((((&888[8<<<<@@@@<<<<2>>>>>HHHH \$!!!!!!rrc@eZdZddZddZdd Zdd ZdddZddZd S) MultiFernetfernetstyping.Iterable[Fernet]cTt|}|std||_dS)Nz1MultiFernet requires at least one Fernet instance)listr$_fernets)r(rzs rr*zMultiFernet.__init__s7w-- C   rmsgr+rcj||ttjSr4r5)r(rs rr9zMultiFernet.encrypts&##CTY[[)9)9:::rr:r7cD|jd||S)Nr)r~r6)r(rr:s rr6zMultiFernet.encrypt_at_times}Q//\BBBrrct|\}}|jD]+} |||d}n#t$rY(wxYwtt jd}|jd|||S)Nrr)rrXr~rYr r.r/r<)r(rrZr2fpr=s rrotatezMultiFernet.rotates ;;C@@ 4  A OOD)T::      Z^^}Q33Ay"EEEsA A ANrUrVct|jD]*} |||cS#t$rY'wxYwtr4)r~r\r )r(rrUrs rr\zMultiFernet.decryptsX  A yyc*****    s # 00cv|jD]+} ||||cS#t$rY(wxYwtr4)r~r^r )r(rrUr:rs rr^zMultiFernet.decrypt_at_times^  A ((c<@@@@@    s $ 11)rzr{)rr+rr+)rr+r:r7rr+)rrrr+r4)rrrUrVrr+)rrrUr7r:r7rr+) rrrr*r9r6rr\r^rrrryrys    ;;;;CCCC F F F Frry) __future__rr r"r.r8typing cryptographyrcryptography.exceptionsrcryptography.hazmat.primitivesrr&cryptography.hazmat.primitives.ciphersrr r #cryptography.hazmat.primitives.hmacr Exceptionr rqrryrrrrsF #"""""  444444::::::::LLLLLLLLLL444444     9   LLLLLLLL^----------r