Ë
    ±éäg~,  ã                  ó  — d dl mZ d dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZmZ  G d„ d	ej"                  «      Z G d
„ dej"                  «      Ze
j(                  e
j*                  e
j,                  e
j.                  e
j0                  fZdd„Z G d„ dej"                  «      Z G d„ d«      Zej:                  Zej<                  Zej>                  Z G d„ d«      Z  G d„ d«      Z!ejD                  Z"ejF                  Z#y)é    )ÚannotationsN)ÚutilsÚx509)Úocsp)Úhashes)Ú CertificateIssuerPrivateKeyTypes)Ú_EARLIEST_UTC_TIMEÚ_convert_to_naive_utc_timeÚ_reject_duplicate_extensionc                  ó   — e Zd ZdZdZy)ÚOCSPResponderEncodingzBy HashzBy NameN)Ú__name__Ú
__module__Ú__qualname__ÚHASHÚNAME© ó    úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/cryptography/x509/ocsp.pyr   r      s   „ Ø€DØ�Dr   r   c                  ó$   — e Zd ZdZdZdZdZdZdZy)ÚOCSPResponseStatusr   é   é   é   é   é   N)	r   r   r   Ú
SUCCESSFULÚMALFORMED_REQUESTÚINTERNAL_ERRORÚ	TRY_LATERÚSIG_REQUIREDÚUNAUTHORIZEDr   r   r   r   r      s!   „ Ø€JØÐØ€NØ€IØ€LØ�Lr   r   c                ó:   — t        | t        «      st        d«      ‚y )Nz9Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512)Ú
isinstanceÚ_ALLOWED_HASHESÚ
ValueError)Ú	algorithms    r   Ú_verify_algorithmr(   .   s!   € Ü�i¤Ô1ÜØGó
ð 	
ð 2r   c                  ó   — e Zd ZdZdZdZy)ÚOCSPCertStatusr   r   r   N)r   r   r   ÚGOODÚREVOKEDÚUNKNOWNr   r   r   r*   r*   5   s   „ Ø€DØ€GØ�Gr   r*   c                  ó4   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zy)Ú_SingleResponsec	                ó  — t        |t        j                  «      rt        |t        j                  «      st        d«      ‚t	        |«       t        |t
        j
                  «      st        d«      ‚|�%t        |t
        j
                  «      st        d«      ‚|| _        || _        || _        || _	        || _
        t        |t        «      st        d«      ‚|t        j                  ur|�t        d«      ‚|�vt        d«      ‚t        |t
        j
                  «      st        d«      ‚t        |«      }|t        k  rt        d«      ‚|�%t        |t        j                   «      st        d	«      ‚|| _        || _        || _        y )
Nú%cert and issuer must be a Certificatez%this_update must be a datetime objectz-next_update must be a datetime object or Nonez8cert_status must be an item from the OCSPCertStatus enumzBrevocation_time can only be provided if the certificate is revokedzDrevocation_reason can only be provided if the certificate is revokedz)revocation_time must be a datetime objectz7The revocation_time must be on or after 1950 January 1.zCrevocation_reason must be an item from the ReasonFlags enum or None)r$   r   ÚCertificateÚ	TypeErrorr(   ÚdatetimeÚ_certÚ_issuerÚ
_algorithmÚ_this_updateÚ_next_updater*   r,   r&   r
   r	   ÚReasonFlagsÚ_cert_statusÚ_revocation_timeÚ_revocation_reason)	ÚselfÚcertÚissuerr'   Úcert_statusÚthis_updateÚnext_updateÚrevocation_timeÚrevocation_reasons	            r   Ú__init__z_SingleResponse.__init__<   sŠ  € ô ˜$¤× 0Ñ 0Ô1¼Ø”D×$Ñ$ô:
ô ÐCÓDÐDä˜)Ô$Ü˜+¤x×'8Ñ'8Ô9ÜÐCÓDÐDØÐ"¬:Øœ×*Ñ*ô,
ô ÐKÓLÐLàˆŒ
ØˆŒØ#ˆŒØ'ˆÔØ'ˆÔä˜+¤~Ô6ÜØJóð ð œn×4Ñ4Ñ4ØÐ*Ü ð!óð ð !Ð,Ü ð"óð ô
 ˜o¬x×/@Ñ/@ÔAÜÐ KÓLÐLä8¸ÓIˆOØÔ!3Ò3Ü ð'óð ð
 !Ð,´ZØ!¤4×#3Ñ#3ô6ô  ð#óð ð
 (ˆÔØ /ˆÔØ"3ˆÕr   N)r?   úx509.Certificater@   rG   r'   úhashes.HashAlgorithmrA   r*   rB   údatetime.datetimerC   údatetime.datetime | NonerD   rJ   rE   úx509.ReasonFlags | None)r   r   r   rF   r   r   r   r/   r/   ;   s^   „ ðB4àðB4ð !ðB4ð (ð	B4ð
 $ðB4ð 'ðB4ð .ðB4ð 2ðB4ð 3ôB4r   r/   c                  óz   — e Zd Zddg f	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 	 	 d	d„Z	 	 	 	 	 	 d
d„Zdd„Zy)ÚOCSPRequestBuilderNc                ó.   — || _         || _        || _        y ©N)Ú_requestÚ_request_hashÚ_extensions)r>   ÚrequestÚrequest_hashÚ
extensionss       r   rF   zOCSPRequestBuilder.__init__‡   s   € ð  ˆŒØ)ˆÔØ%ˆÕr   c                ó$  — | j                   €| j                  �t        d«      ‚t        |«       t	        |t
        j                  «      rt	        |t
        j                  «      st        d«      ‚t        |||f| j                  | j                  «      S )Nú.Only one certificate can be added to a requestr1   )
rP   rQ   r&   r(   r$   r   r2   r3   rM   rR   )r>   r?   r@   r'   s       r   Úadd_certificatez"OCSPRequestBuilder.add_certificate•   s„   € ð �=‰=Ð$¨×(:Ñ(:Ð(FÜÐMÓNÐNä˜)Ô$Ü˜$¤× 0Ñ 0Ô1¼Ø”D×$Ñ$ô:
ô ÐCÓDÐDä!Ø�6˜9Ð% t×'9Ñ'9¸4×;KÑ;Kó
ð 	
r   c                ó¬  — | j                   €| j                  �t        d«      ‚t        |t        «      st        d«      ‚t        |«       t        j                  d|«       t        j                  d|«       |j                  t        |«      k7  s|j                  t        |«      k7  rt        d«      ‚t        | j                   ||||f| j                  «      S )NrW   z serial_number must be an integerÚissuer_name_hashÚissuer_key_hashz`issuer_name_hash and issuer_key_hash must be the same length as the digest size of the algorithm)rP   rQ   r&   r$   Úintr3   r(   r   Ú_check_bytesÚdigest_sizeÚlenrM   rR   )r>   rZ   r[   Úserial_numberr'   s        r   Úadd_certificate_by_hashz*OCSPRequestBuilder.add_certificate_by_hash¨   sÎ   € ð �=‰=Ð$¨×(:Ñ(:Ð(FÜÐMÓNÐNä˜-¬Ô-ÜÐ>Ó?Ð?ä˜)Ô$Ü×ÑÐ-Ð/?Ô@Ü×ÑÐ,¨oÔ>Ø× Ñ ¤CØó%
ò 
à×"Ñ"¤c¨/Ó&:Ò:Üð6óð ô
 "Ø�M‰MØ˜°¸yÐIØ×Ñó
ð 	
r   c                ó  — t        |t        j                  «      st        d«      ‚t        j                  |j
                  ||«      }t        || j                  «       t        | j                  | j                  g | j                  ¢|‘«      S ©Nz"extension must be an ExtensionType)r$   r   ÚExtensionTyper3   Ú	ExtensionÚoidr   rR   rM   rP   rQ   ©r>   ÚextvalÚcriticalÚ	extensions       r   Úadd_extensionz OCSPRequestBuilder.add_extensionÆ   su   € ô ˜&¤$×"4Ñ"4Ô5ÜÐ@ÓAÐAä—N‘N 6§:¡:¨x¸Ó@ˆ	Ü# I¨t×/?Ñ/?Ô@ä!Ø�M‰M˜4×-Ñ-Ð/M°×1AÑ1AÐ/MÀ9Ð/Mó
ð 	
r   c                ór   — | j                   €| j                  €t        d«      ‚t        j                  | «      S )Nz*You must add a certificate before building)rP   rQ   r&   r   Úcreate_ocsp_request)r>   s    r   ÚbuildzOCSPRequestBuilder.buildÓ   s4   € Ø�=‰=Ð  T×%7Ñ%7Ð%?ÜÐIÓJÐJä×'Ñ'¨Ó-Ð-r   )rS   zFtuple[x509.Certificate, x509.Certificate, hashes.HashAlgorithm] | NonerT   z5tuple[bytes, bytes, int, hashes.HashAlgorithm] | NonerU   ú(list[x509.Extension[x509.ExtensionType]]ÚreturnÚNone)r?   rG   r@   rG   r'   rH   rp   rM   )
rZ   Úbytesr[   rr   r`   r\   r'   rH   rp   rM   )rh   úx509.ExtensionTyperi   Úboolrp   rM   )rp   ÚOCSPRequest)r   r   r   rF   rX   ra   rk   rn   r   r   r   rM   rM   †   s¼   „ ð àØ?Að&ðð&ðð&ð =ð&ð 
ó&ð
àð
ð !ð
ð (ð	
ð
 
ó
ð&
àð
ð ð
ð ð	
ð
 (ð
ð 
ó
ð<
Ø(ð
Ø48ð
à	ó
ô.r   rM   c                  ó¾   — e Zd Zdddg f	 	 	 	 	 	 	 d	d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 dd„Z	 	 	 	 dd„Z	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Ze		 	 	 	 dd„«       Z
y)ÚOCSPResponseBuilderNc                ó<   — || _         || _        || _        || _        y rO   )Ú	_responseÚ_responder_idÚ_certsrR   )r>   ÚresponseÚresponder_idÚcertsrU   s        r   rF   zOCSPResponseBuilder.__init__Û   s"   € ð "ˆŒØ)ˆÔØˆŒØ%ˆÕr   c	           
     ó¬   — | j                   �t        d«      ‚t        ||||||||«      }	t        |	| j                  | j
                  | j                  «      S )Nz#Only one response per OCSPResponse.)ry   r&   r/   rw   rz   r{   rR   )
r>   r?   r@   r'   rA   rB   rC   rD   rE   Ú
singleresps
             r   Úadd_responsez OCSPResponseBuilder.add_responseè   sg   € ð �>‰>Ð%ÜÐBÓCÐCä$ØØØØØØØØó	
ˆ
ô #ØØ×ÑØ�K‰KØ×Ñó	
ð 	
r   c                ó  — | j                   �t        d«      ‚t        |t        j                  «      st        d«      ‚t        |t        «      st        d«      ‚t        | j                  ||f| j                  | j                  «      S )Nz!responder_id can only be set oncez$responder_cert must be a Certificatez6encoding must be an element from OCSPResponderEncoding)rz   r&   r$   r   r2   r3   r   rw   ry   r{   rR   )r>   ÚencodingÚresponder_certs      r   r}   z OCSPResponseBuilder.responder_id  s�   € ð ×ÑÐ)ÜÐ@ÓAÐAÜ˜.¬$×*:Ñ*:Ô;ÜÐBÓCÐCÜ˜(Ô$9Ô:ÜØHóð ô #Ø�N‰NØ˜XÐ&Ø�K‰KØ×Ñó	
ð 	
r   c                ó
  — | j                   �t        d«      ‚t        |«      }t        |«      dk(  rt        d«      ‚t	        d„ |D «       «      st        d«      ‚t        | j                  | j                  || j                  «      S )Nz!certificates may only be set oncer   zcerts must not be an empty listc              3  óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wrO   )r$   r   r2   )Ú.0Úxs     r   ú	<genexpr>z3OCSPResponseBuilder.certificates.<locals>.<genexpr>"  s   è ø€ ÒB°q”:˜a¤×!1Ñ!1×2ÑBùs   ‚$&z$certs must be a list of Certificates)
r{   r&   Úlistr_   Úallr3   rw   ry   rz   rR   )r>   r~   s     r   Úcertificatesz OCSPResponseBuilder.certificates  s}   € ð �;‰;Ð"ÜÐ@ÓAÐAÜ�U“ˆÜˆu‹:˜Š?ÜÐ>Ó?Ð?ÜÑB¸EÔBÔBÜÐBÓCÐCÜ"Ø�N‰NØ×ÑØØ×Ñó	
ð 	
r   c                ó.  — t        |t        j                  «      st        d«      ‚t        j                  |j
                  ||«      }t        || j                  «       t        | j                  | j                  | j                  g | j                  ¢|‘«      S rc   )r$   r   rd   r3   re   rf   r   rR   rw   ry   rz   r{   rg   s       r   rk   z!OCSPResponseBuilder.add_extension+  s}   € ô ˜&¤$×"4Ñ"4Ô5ÜÐ@ÓAÐAä—N‘N 6§:¡:¨x¸Ó@ˆ	Ü# I¨t×/?Ñ/?Ô@ä"Ø�N‰NØ×ÑØ�K‰KØ*ˆd×ÑÐ* 	Ð*ó	
ð 	
r   c                óª   — | j                   €t        d«      ‚| j                  €t        d«      ‚t        j                  t
        j                  | ||«      S )Nz&You must add a response before signingz*You must add a responder_id before signing)ry   r&   rz   r   Úcreate_ocsp_responser   r   )r>   Úprivate_keyr'   s      r   ÚsignzOCSPResponseBuilder.sign;  sT   € ð
 �>‰>Ð!ÜÐEÓFÐFØ×ÑÐ%ÜÐIÓJÐJä×(Ñ(Ü×)Ñ)¨4°¸ió
ð 	
r   c                ó¢   — t        |t        «      st        d«      ‚|t        j                  u rt	        d«      ‚t        j                  |d d d «      S )Nz7response_status must be an item from OCSPResponseStatusz$response_status cannot be SUCCESSFUL)r$   r   r3   r   r&   r   r�   )ÚclsÚresponse_statuss     r   Úbuild_unsuccessfulz&OCSPResponseBuilder.build_unsuccessfulI  sS   € ô ˜/Ô+=Ô>ÜØIóð ð Ô0×;Ñ;Ñ;ÜÐCÓDÐDä×(Ñ(¨¸$ÀÀdÓKÐKr   )r|   z_SingleResponse | Noner}   z5tuple[x509.Certificate, OCSPResponderEncoding] | Noner~   zlist[x509.Certificate] | NonerU   ro   )r?   rG   r@   rG   r'   rH   rA   r*   rB   rI   rC   rJ   rD   rJ   rE   rK   rp   rw   )rƒ   r   r„   rG   rp   rw   )r~   z!typing.Iterable[x509.Certificate]rp   rw   )rh   rs   ri   rt   rp   rw   )r�   r   r'   zhashes.HashAlgorithm | Nonerp   ÚOCSPResponse)r”   r   rp   r–   )r   r   r   rF   r�   r}   rŒ   rk   r‘   Úclassmethodr•   r   r   r   rw   rw   Ú   s0  „ ð ,0àØ/3Ø?Að&à(ð&ðð&ð
 -ð&ð =ó&ð
àð
ð !ð
ð (ð	
ð
 $ð
ð 'ð
ð .ð
ð 2ð
ð 3ð
ð 
ó
ð>
Ø-ð
Ø?Oð
à	ó
ð&
Ø6ð
à	ó
ð"
Ø(ð
Ø48ð
à	ó
ð 
à5ð
ð /ð
ð 
ó	
ð ð
LØ0ð
Là	ò
Ló ñ
Lr   rw   )r'   rH   rp   rq   )$Ú
__future__r   r4   ÚtypingÚcryptographyr   r   Ú"cryptography.hazmat.bindings._rustr   Úcryptography.hazmat.primitivesr   Ú/cryptography.hazmat.primitives.asymmetric.typesr   Úcryptography.x509.baser	   r
   r   ÚEnumr   r   ÚSHA1ÚSHA224ÚSHA256ÚSHA384ÚSHA512r%   r(   r*   r/   ru   r–   ÚOCSPSingleResponserM   rw   Úload_der_ocsp_requestÚload_der_ocsp_responser   r   r   ú<module>r¨      sð   ðõ
 #ã Û ç $Ý 3Ý 1õ÷ñ ô˜EŸJ™Jô ô
˜Ÿ™ô ð ‡K�KØ
‡M�MØ
‡M�MØ
‡M�MØ
‡M�Mð€ó
ô�U—Z‘Zô ÷C4ñ C4ðL ×Ñ€Ø× Ñ €Ø×,Ñ,Ð ÷Q.ñ Q.÷hzLñ zLðz ×2Ñ2Ð Ø×4Ñ4Ñ r   