yh3ddlmZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZmZddlmZmZmZddlmZGd d eZd ZGd d ZGddZdS)) annotationsN)Iterable)utils)InvalidSignature)hashespadding)Cipher algorithmsmodes)HMACceZdZdS) InvalidTokenN)__name__ __module__ __qualname__c/home/jenkins/workspace/simtester-sanitize/venv/lib/python3.11/site-packages/cryptography/fernet.pyrrsDrr<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_key0s' 2777rdatacj||ttjSNencrypt_at_timeinttime)r)r3s rencryptzFernet.encrypt4s&##D#dikk*:*:;;;r current_timer8cXtjd}||||S)Nr )r/r0_encrypt_from_parts)r)r3r;ivs rr7zFernet.encrypt_at_time7s' Z^^''lB???rr>ctjd|tjtjj}||| z}tt j|j tj |}||| z}d|ddz|z|z}t!|jt%j} | || } t)j|| zS)Nr3big)length byteorder)r _check_bytesrPKCS7r AES block_sizepadderupdatefinalizer r(r CBC encryptorto_bytesr r'rSHA256r!r.) r)r3r;r>rI padded_datarM 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}||||Sr5)r_get_unverified_token_datar8r9 _decrypt_data)r)rUrV timestampr3 time_infos rdecryptzFernet.decryptTsU ;;EBB 4 ;IIc$)++../I!!$ 9===rc|tdt|\}}|||||fS)Nz6decrypt_at_time() can only be used with a non-None ttl)r%rrYrZ)r)rUrVr;r[r3s rdecrypt_at_timezFernet.decrypt_at_time\sT ;H !;;EBB 4!!$ C3FGGGrcjt|\}}|||Sr5)rrY_verify_signature)r)rUr[r3s rextract_timestampzFernet.extract_timestampfs3 ;;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 rB)rD) isinstancestrr, TypeErrorr!r"r#r$rr&r8 from_bytes)rUr3r[s rrYz!Fernet._get_unverified_token_datals%#u.. :899 9 +E22DD8>*      tAw$  t99q== NN4!9N>> $s AA ct|jtj}||dd ||dddS#t $rtwxYw)N)r r'rrOrJverifyrr)r)r3rSs rrazFernet._verify_signaturesz "FMOO 4 4 dsd  HHT#$$Z      s A$$A6r[r\tuple[int, int] | Nonec|*|\}}||z|krt|tz|krt|||dd}|dd}tt j|jtj| }| |} | | z } n#t$rtwxYwtjtjj} | | } | | z } n#t$rtwxYw| S)Nrfrm)r_MAX_CLOCK_SKEWrar r rGr(r rL decryptorrJrKr%rrFrHunpadder) r)r3r[r\rVr;r>rQrsplaintext_paddedrtunpaddeds rrZzFernet._decrypt_datasm  ) C3--""o- 99"" t$$$ !B$Z"S&\  N4/ 0 0%)B--  )++ %++J77   2 2 4 4 4       =!:;;DDFF??#344  ))++ +HH     s7CC!/EEr5)rrrrrr)rr,)r3r,rr,)r3r,r;r8rr,)r3r,r;r8r>r,rr,)rUrrVrWrr,)rUrrVr8r;r8rr,)rUrrr8)rUrrrc)r3r,rr)r3r,r[r8r\rorr,)rrrr+ classmethodr2r:r7r=r]r_rb staticmethodrYrarZrrrrrs#(((((&888[8<<<<@@@@<<<<2>>>>>HHHH \$!!!!!!rrcHeZdZddZddZdd Zdd ZdddZddZddZ d S) MultiFernetfernetsIterable[Fernet]cTt|}|std||_dS)Nz1MultiFernet requires at least one Fernet instance)listr%_fernets)r)r{s rr+zMultiFernet.__init__s7w-- C   rmsgr,rcj||ttjSr5r6)r)rs rr:zMultiFernet.encrypts&##CTY[[)9)9:::rr;r8cD|jd||S)Nr)rr7)r)rr;s rr7zMultiFernet.encrypt_at_times}Q//\BBBrrct|\}}|jD]+} |||d}n#t$rY(wxYwtt jd}|jd|||S)Nr r)rrYrrZrr/r0r=)r)rr[r3fpr>s rrotatezMultiFernet.rotates ;;C@@ 4  A OOD)T::      Z^^}Q33Ay"EEEsA A ANrVrWct|jD]*} |||cS#t$rY'wxYwtr5)rr]r)r)rrVrs rr]zMultiFernet.decryptsX  A yyc*****    s # 00cv|jD]+} ||||cS#t$rY(wxYwtr5)rr_r)r)rrVr;rs rr_zMultiFernet.decrypt_at_times^  A ((c<@@@@@    s $ 11cr|jD])} ||cS#t$rY&wxYwtr5)rrbr)r)rrs rrbzMultiFernet.extract_timestampsX  A **3/////    s " //)r{r|)rr,rr,)rr,r;r8rr,)rrrr,r5)rrrVrWrr,)rrrVr8r;r8rr,)rrrr8) rrrr+r:r7rr]r_rbrrrrzrzs    ;;;;CCCC F F F Frrz) __future__rr!r#r/r9typingcollections.abcr cryptographyrcryptography.exceptionsrcryptography.hazmat.primitivesrr&cryptography.hazmat.primitives.ciphersr r r #cryptography.hazmat.primitives.hmacr ExceptionrrrrrzrrrrsX #"""""  $$$$$$444444::::::::LLLLLLLLLL444444     9   LLLLLLLL^5555555555r