+
    8inD                       R t ^ RIHt ^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RI
HtHtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHt ^ RIHt  ^ RI!H"t# ^ RI$H%t& ^ RI'H(t) ^ RI*H+t, ^ RI*H-t. ^ RI/H0t1 ^ RI/H2t3 ^ RI4H5t6 ^ RI4H7t8 ^ RI4H9t: ^ RI4H;t< ^ RI4H=t> ^ RI?H@tA ^ RI?HBtC ^ RI?HDtE ^ RI?HFtG ^ RIHHItJ ^ RIHHKtL ^ RIMHNtO ^ RIPHQtR ^ R ISHTtT ^ R!IUHVtVHWtW ]'       d   ^ R"IXHYtYHZtZH[t[H\t\H]t]H^t^H_t_ ^ R#I`Hata ^ R$I*Hbtb ^ R%I4HctcHdtd ^ R&IeHftfHgtg ^ R'I?HhthHiti ^ R(IjHktk ^ R)IUHltl ^ R*ImHntn ]]YP.                  ]]PD                  ]ZP8                  ]\P                  ][P                  ]_PP                  ]^PJ                  3,          tq]P                  ! ]s4      tt]P                  ! R+]P                  4      twR, R- ltxR. R/ ltyR0 R1 ltzR2 R3 lt{R4 R5 lt|R6 R7 lt}R8 R9 lt~R: R; ltR< R= ltR> R? ltR@ RA ltR# )Bz4Support for requesting and verifying OCSP responses.)annotationsN)datetime)timezone)TYPE_CHECKINGIterableOptionalTypeUnion)InvalidSignature)default_backend)DSAPublicKey)ECDSA)EllipticCurvePublicKey)PKCS1v15)RSAPublicKey)X448PublicKey)X25519PublicKey)SHA1)Hash)Encoding)PublicFormat)AuthorityInformationAccess)ExtendedKeyUsage)ExtensionNotFound)
TLSFeature)TLSFeatureType)OCSPCertStatus)OCSPRequestBuilder)OCSPResponseStatus)load_der_ocsp_response)AuthorityInformationAccessOID)ExtendedKeyUsageOID)post)RequestException)_csot)_next_update_this_update)dsaeced448ed25519rsax448x25519)	Prehashed)HashAlgorithm)CertificateName)	ExtensionExtensionTypeVar)OCSPRequestOCSPResponse)
Connection)
_OCSPCache)_CallbackDatas9   -----BEGIN CERTIFICATE[^
]+.+?-----END CERTIFICATE[^
]+c               (    V ^8  d   QhRRRRRRRR/# )	   certr0   chainIterable[Certificate]trusted_ca_certszOptional[list[Certificate]]returnzOptional[Certificate] )formats   "R/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymongo/ocsp_support.py__annotate__rC   h   s,      
3Gb    c                    V P                   pV F  pVP                  V8X  g   K  Vu # 	  V'       d   V F  pVP                  V8X  g   K  Vu # 	  R # N)issuersubject)r;   r<   r>   issuer_name	candidates   &&&  rB   _get_issuer_certrK   h   sS     ++K	+  )I  K/   * rD   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r:   keyCertificateIssuerPublicKeyTypes	signaturebytes	algorithmz%Union[Prehashed, HashAlgorithm, None]datar?   intr@   )rA   s   "rB   rC   rC   {   s:      	( 5 	
 	rD   c                    \        V \        4      '       d   V P                  W\        4       V4       ^# \        V \        4      '       d   V P                  WV4       ^# \        V \
        4      '       d   V P                  W\        V4      4       ^# \        V \        \        34      '       d   ^# V P                  W4        ^#   \         d     ^ # i ; i)   )

isinstance_RSAPublicKeyverify	_PKCS1v15_DSAPublicKey_EllipticCurvePublicKey_ECDSA_X25519PublicKey_X448PublicKey_InvalidSignature)rM   rO   rQ   rR   s   &&&&rB   _verify_signaturer`   {   s    c=))JJy	Y?  ]++JJy	2  455JJyy(9:  "N3
 
 JJy'   s(   1C (C 1C C 0C CCc               $    V ^8  d   QhRRRRRR/# )r:   r;   r0   klasszType[ExtensionTypeVar]r?   z%Optional[Extension[ExtensionTypeVar]]r@   )rA   s   "rB   rC   rC      s$      
4*rD   c                ^     V P                   P                  V4      #   \         d     R # i ; irF   )
extensionsget_extension_for_class_ExtensionNotFound)r;   rb   s   &&rB   _get_extensionrg      s.    66u== s    ,,c                    V ^8  d   QhRRRR/# )r:   r;   r0   r?   rP   r@   )rA   s   "rB   rC   rC      s      ; 5 rD   c                   V P                  4       p\        V\        4      '       d0   VP                  \        P
                  \        P                  4      pMs\        V\        4      '       d0   VP                  \        P                  \        P                  4      pM.VP                  \        P
                  \        P                  4      p\        \        4       \        4       R 7      pVP                  V4       VP!                  4       # ))backend)
public_keyrV   rW   public_bytes	_EncodingDER_PublicFormatPKCS1r[   X962UncompressedPointSubjectPublicKeyInfo_Hash_SHA1_default_backendupdatefinalize)r;   rk   pbytesdigests   &   rB   _public_key_hashr{      s    "J
 *m,,((8K8KL	J 7	8	8((9X9XY((8Z8Z[57$4$67F
MM&??rD   c               (    V ^8  d   QhRRRRRRRR/# )	r:   certificatesr=   rG   r0   responder_key_hashzOptional[bytes]r?   list[Certificate]r@   )rA   s   "rB   rC   rC      s,      '1<RarD   c                    V  Uu. uF4  p\        V4      V8X  g   K  VP                  VP                  8X  g   K2  VNK6  	  up# u upi rF   )r{   rG   rH   )r}   rG   r~   r;   s   &&& rB   _get_certs_by_key_hashr      sN    
 ! DD!%77 	<@KK6>><Y 	   s   AAAc               (    V ^8  d   QhRRRRRRRR/# )	r:   r}   r=   rG   r0   responder_namezOptional[Name]r?   r   r@   )rA   s   "rB   rC   rC      s,      '1<N\rD   c                    V  Uu. uF5  pVP                   V8X  g   K  VP                  VP                   8X  g   K3  VNK7  	  up# u upi rF   )rH   rG   )r}   rG   r   r;   s   &&& rB   _get_certs_by_namer      sL    
 ! D<<>) 	.2kkV^^.K 	   s   AAAc               $    V ^8  d   QhRRRRRR/# r:   rG   r0   responser5   r?   rS   r@   )rA   s   "rB   rC   rC      s!     3 3{ 3l 3s 3rD   c                   VP                   pVP                  pVP                  pVe   W P                  8X  g   W48X  d   \        P                  R4       T pEM?\        P                  R4       VP                  pVP                   e#   \        W`V4      p\        P                  R4       M!\        W`V4      p\        P                  R4       V'       g   \        P                  R4       ^ # V^ ,          p\        V\        4      pV'       d    \        P                  VP                  9  d   \        P                  R4       ^ # \        V P                  4       VP                   VP"                  VP$                  4      '       g   \        P                  R4       ^ # \        VP                  4       VP                   VP"                  VP&                  4      p	V	'       g   \        P                  R4       V	# )	NzResponder is issuerzResponder is a delegatezUsing responder namezUsing key hashz%No matching or valid responder certs.z(Delegate not authorized for OCSP signingz&Delegate signature verification failedz&Response signature verification failed)r   r~   issuer_key_hashrH   _LOGGERdebugr}   r   r   rg   _ExtendedKeyUsage_ExtendedKeyUsageOIDOCSP_SIGNINGvaluer`   rk   rO   signature_hash_algorithmtbs_certificate_bytestbs_response_bytes)
rG   r   name	rkey_hash	ikey_hashresponder_certcertsresponder_certsextrets
   &&        rB   _verify_response_signaturer      s    ""D++I((IDNN2i6L+,/0 %%"".0EOMM014UINOMM*+MMAB )+ ^->?*77syyHMMDE $$3300	
 
 MMBC
!!#))##	C >?JrD   c               $    V ^8  d   QhRRRRRR/# )r:   r;   r0   rG   r?   r4   r@   )rA   s   "rB   rC   rC      s!      k ; ; rD   c                j    \        4       pVP                  W\        4       4      pVP                  4       # rF   )_OCSPRequestBuilderadd_certificateru   build)r;   rG   builders   && rB   _build_ocsp_requestr      s*    !#G%%dEG<G==?rD   c               $    V ^8  d   QhRRRRRR/# r   r@   )rA   s   "rB   rC   rC      s!      [ L S rD   c                   \         P                  R 4       \        W4      pV'       g   ^ # \        V4      p\        P
                  ! \        P                  R7      pV'       d!   VP                  f   VP                  RR7      pV'       d   W48  d   \         P                  R4       ^ # \        V4      pV'       d   WT8  d   \         P                  R4       ^ # ^# )zVerifying response)tzN)tzinfozthisUpdate is in the futureznextUpdate is in the past)r   r   r   r&   	_datetimenowr   utcr   replacer%   )rG   r   resthis_updater   next_updates   &&    rB   _verify_responser      s    MM&'
$V
6C x(K
--8<<
(C{))1kkk&{(34x(K{(12rD   c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
r:   r;   r0   rG   urizUnion[str, bytes]ocsp_response_cacher7   r?   zOptional[OCSPResponse]r@   )rA   s   "rB   rC   rC     s4     * *
***1B*Yc**rD   c                T   \        W4      p W4,          p\        P                  R 4       V#   \         Edp    \	        \
        P                  ! ^4      R4      p \        TTP                  \        P                  4      RR/TR7      pM0  \         d#   p\        P                  RT4        Rp? R# Rp?ii ; iTP                  ^8w  d$   \        P                  RTP                  4        R# \        TP                  4      p\        P                  RTP                  4       TP                  \         P"                  8w  d    R# TP$                  TP$                  8w  d   \        P                  R	4        R# \'        Y4      '       g    R# \        P                  R
4       YST&    T# i ; i)zUsing cached OCSP response.gMbP?zContent-Typezapplication/ocsp-request)rR   headerstimeoutzHTTP request failed: %sNzHTTP request returned %dOCSP response status: %rz-Response serial number does not match requestzCaching OCSP response.)r   r   r   KeyErrormaxr$   clamp_remaining_postrl   rm   rn   _RequestExceptionstatus_code_load_der_ocsp_responsecontentresponse_status_OCSPResponseStatus
SUCCESSFULserial_numberr   )	r;   rG   r   r   ocsp_requestocsp_responser   r   excs	   &&&&     rB   _get_ocsp_responser     se    't4L$:+934H G  !: e++A.6		!..y}}=')CD	H ! 	MM3S9	 3&MM4h6J6JK/0@0@A0-2O2OP((,?,J,JJ
 &&,*D*DDMMIJ66./,9L)G!:sR   , ,F'.BF'B5B0)F'0B554F',AF'0F'6F'
F'&F'c               (    V ^8  d   QhRRRRRRRR/# )	r:   connr6   
ocsp_bytesrP   	user_datazOptional[_CallbackData]r?   boolr@   )rA   s   "rB   rC   rC   G  s0     a a a aCZ a_c arD   c                   V'       g   Q hV P                  4       pVf   \        P                  R4       R# VP                  4       p\	        V R4      '       d   V P                  4       pRpMV P                  4       pVP                  pV'       g   \        P                  R4       R# V Uu. uF  qwP                  4       NK  	  pp\        WHV4      p	Rp
\        V\        4      pVeB   VP                   F1  pV\        P                  8X  g   K  \        P                  R4       Rp
 M	  VP                  pVR8X  Ed   \        P                  R	4       V
'       d   \        P                  R
4       R# VP                  '       g   \        P                  R4       R# \        V\         4      pVf   \        P                  R4       R# VP                   Uu. uF:  pVP"                  \$        P&                  8X  g   K$  VP(                  P                  NK<  	  ppV'       g   \        P                  R4       R# V	f   \        P                  R4       R# \        P                  R4       V F  p\        P                  RV4       \+        WIVV4      pVf   K,  \        P                  RVP,                  4       VP,                  \.        P0                  8X  d    R# VP,                  \.        P2                  8X  g   K   R# 	  \        P                  R4       R# \        P                  R4       V	f   \        P                  R4       R# \5        V4      p\        P                  RVP6                  4       VP6                  \8        P:                  8w  d   R# \=        V	V4      '       g   R# VV\?        WI4      &   \        P                  RVP,                  4       VP,                  \.        P2                  8X  d   R# R# u upi u upi )zCCallback for use with OpenSSL.SSL.Context.set_ocsp_client_callback.NzNo peer cert?Fget_verified_chainzNo peer cert chain?z!Peer presented a must-staple certTrD   z$Peer did not staple an OCSP responsez5Must-staple cert with no stapled response, hard fail.z.OCSP endpoint checking is disabled, soft fail.z*No authority access information, soft failzNo OCSP URI, soft failzNo issuer cert?zRequesting OCSP dataz	Trying %szOCSP cert status: %rz)No definitive OCSP cert status, soft failzPeer stapled an OCSP responser   ) get_peer_certificater   r   to_cryptographyhasattrr   get_peer_cert_chainr>   rK   rg   _TLSFeaturer   _TLSFeatureTypestatus_requestr   check_ocsp_endpoint_AuthorityInformationAccessaccess_method_AuthorityInformationAccessOIDOCSPaccess_locationr   certificate_status_OCSPCertStatusGOODREVOKEDr   r   r   r   r   r   )r   r   r   pycertr;   pychainr>   cerr<   rG   must_stapleext_tlsfeaturer   ext_aiadescurisr   r   s   &&&                rB   _ocsp_callbackr   G  s0    9&&(F~o&!!#Dt)**))+**,$55+,.56gs  "gE6d+;<FKT;/G}}G/888AB"	 %
 $77 S<=MMQR,,,MMJK 'BC?MMFG  
%!!%C%H%HH 'D  &&% 	 

 MM23>MM+,,- CMM+s+)$=PQH MM0(2M2MN**o.B.BB**o.E.EE  	ABMM12~'(&z2HMM,h.F.FG #6#A#AAFH--=E+D9:MM((*E*EF""o&=&==] 7:
s   *O0!O57O5)__doc__
__future__r   logging_loggingre_rer   r   r   typingr   r   r   r   r	   cryptography.exceptionsr
   r_   cryptography.hazmat.backendsr   rv   -cryptography.hazmat.primitives.asymmetric.dsar   rZ   ,cryptography.hazmat.primitives.asymmetric.ecr   r\   r   r[   1cryptography.hazmat.primitives.asymmetric.paddingr   rY   -cryptography.hazmat.primitives.asymmetric.rsar   rW   .cryptography.hazmat.primitives.asymmetric.x448r   r^   0cryptography.hazmat.primitives.asymmetric.x25519r   r]   %cryptography.hazmat.primitives.hashesr   ru   r   rt   ,cryptography.hazmat.primitives.serializationr   rm   r   ro   cryptography.x509r   r   r   r   r   rf   r   r   r   r   cryptography.x509.ocspr   r   r   r   r   r   r   r   cryptography.x509.oidr    r   r!   r   requestsr"   r   requests.exceptionsr#   r   pymongor$   pymongo.ocsp_cacher%   r&   )cryptography.hazmat.primitives.asymmetricr'   r(   r)   r*   r+   r,   r-   /cryptography.hazmat.primitives.asymmetric.utilsr.   r/   r0   r1   cryptography.x509.extensionsr2   r3   r4   r5   OpenSSL.SSLr6   r7   pymongo.pyopenssl_contextr8   Ed25519PublicKeyEd448PublicKeyrN   	getLogger__name__r   compileDOTALL_CERT_REGEXrK   r`   rg   r{   r   r   r   r   r   r   r   r@   rD   rB   <module>r     sc   ; "   *  A A I L W H T W @ ? N V W C E 7 ? D L L T N " E  9   JC3H@&-7&+
!!  	'# 

X
&kkDcjj
&4"3l4*ZarD   