§
    cÒ³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
j        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j"        Z"ej#        Z#dS )é    )Ú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dS )ÚOCSPResponderEncodingzBy HashzBy NameN)Ú__name__Ú
__module__Ú__qualname__ÚHASHÚNAME© ó    úT/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/cryptography/x509/ocsp.pyr   r      s   € € € € € Ø€DØ€D€D€Dr   r   c                  ó&   — e Zd ZdZdZdZdZdZdZdS )ÚOCSPResponseStatusr   é   é   é   é   é   N)	r   r   r   Ú
SUCCESSFULÚMALFORMED_REQUESTÚINTERNAL_ERRORÚ	TRY_LATERÚSIG_REQUIREDÚUNAUTHORIZEDr   r   r   r   r      s-   € € € € € Ø€JØÐØ€NØ€IØ€LØ€L€L€Lr   r   Ú	algorithmúhashes.HashAlgorithmÚreturnÚNonec                óN   — t          | t          ¦  «        st          d¦  «        ‚d S )Nz9Algorithm must be SHA1, SHA224, SHA256, SHA384, or SHA512)Ú
isinstanceÚ_ALLOWED_HASHESÚ
ValueError)r#   s    r   Ú_verify_algorithmr+   .   s3   € Ý�i¥Ñ1Ô1ð 
ÝØGñ
ô 
ð 	
ð
ð 
r   c                  ó   — e Zd ZdZdZdZdS )ÚOCSPCertStatusr   r   r   N)r   r   r   ÚGOODÚREVOKEDÚUNKNOWNr   r   r   r-   r-   5   s   € € € € € Ø€DØ€GØ€G€G€Gr   r-   c                  ó   — e Zd Zdd„ZdS )Ú_SingleResponseÚcertúx509.CertificateÚissuerr#   r$   Úcert_statusr-   Úthis_updateúdatetime.datetimeÚnext_updateúdatetime.datetime | NoneÚrevocation_timeÚrevocation_reasonúx509.ReasonFlags | Nonec	                óf  — 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¦  «        ‚|�t          d¦  «        ‚n}t          |t
          j        ¦  «        st          d¦  «        ‚t          |¦  «        }|t          k     rt          d¦  «        ‚|�)t          |t          j        ¦  «        st          d	¦  «        ‚|| _        || _        || _        d S )
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)	Úselfr3   r5   r#   r6   r7   r9   r;   r<   s	            r   Ú__init__z_SingleResponse.__init__<   sò  € õ ˜$¥Ô 0Ñ1Ô1ð 	E½Ø•DÔ$ñ:
ô :
ð 	Eõ ÐCÑDÔDÐDå˜)Ñ$Ô$Ð$Ý˜+¥xÔ'8Ñ9Ô9ð 	EÝÐCÑDÔDÐDØÐ"­:Ø�Ô*ñ,
ô ,
Ð"õ ÐKÑLÔLÐLàˆŒ
ØˆŒØ#ˆŒØ'ˆÔØ'ˆÔå˜+¥~Ñ6Ô6ð 	ÝØJñô ð ð �nÔ4Ð4Ð4ØÐ*Ý ð!ñô ð ð !Ð,Ý ð"ñô ð ð -õ ˜o­xÔ/@ÑAÔAð MÝÐ KÑLÔLÐLå8¸ÑIÔIˆOØÕ!3Ò3Ð3Ý ð'ñô ð ð
 !Ð,µZØ!¥4Ô#3ñ6ô 6Ð,õ  ð#ñô ð ð
 (ˆÔØ /ˆÔØ"3ˆÔÐÐr   N)r3   r4   r5   r4   r#   r$   r6   r-   r7   r8   r9   r:   r;   r:   r<   r=   )r   r   r   rM   r   r   r   r2   r2   ;   s.   € € € € € ðB4ð B4ð B4ð B4ð B4ð B4r   r2   c                  ó>   — e Zd Zddg fdd
„Zdd„Zd d„Zd!d„Zd"d„ZdS )#ÚOCSPRequestBuilderNÚrequestúFtuple[x509.Certificate, x509.Certificate, hashes.HashAlgorithm] | NoneÚrequest_hashú5tuple[bytes, bytes, int, hashes.HashAlgorithm] | NoneÚ
extensionsú(list[x509.Extension[x509.ExtensionType]]r%   r&   c                ó0   — || _         || _        || _        d S ©N)Ú_requestÚ_request_hashÚ_extensions)rL   rP   rR   rT   s       r   rM   zOCSPRequestBuilder.__init__‡   s!   € ð  ˆŒØ)ˆÔØ%ˆÔÐÐr   r3   r4   r5   r#   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 requestr?   )
rX   rY   r*   r+   r(   r   r@   rA   rO   rZ   )rL   r3   r5   r#   s       r   Úadd_certificatez"OCSPRequestBuilder.add_certificate•   s˜   € ð Œ=Ð$¨Ô(:Ð(FÝÐMÑNÔNÐNå˜)Ñ$Ô$Ð$Ý˜$¥Ô 0Ñ1Ô1ð 	E½Ø•DÔ$ñ:
ô :
ð 	Eõ ÐCÑDÔDÐDå!Ø�6˜9Ð% tÔ'9¸4Ô;Kñ
ô 
ð 	
r   Úissuer_name_hashÚbytesÚissuer_key_hashÚserial_numberÚintc                ó²  — | j         €| j        �t          d¦  «        ‚t          |t          ¦  «        st          d¦  «        ‚t          |¦  «         t          j        d|¦  «         t          j        d|¦  «         |j	        t          |¦  «        k    s|j	        t          |¦  «        k    rt          d¦  «        ‚t          | j         ||||f| j        ¦  «        S )Nr\   z serial_number must be an integerr^   r`   z`issuer_name_hash and issuer_key_hash must be the same length as the digest size of the algorithm)rX   rY   r*   r(   rb   rA   r+   r   Ú_check_bytesÚdigest_sizeÚlenrO   rZ   )rL   r^   r`   ra   r#   s        r   Úadd_certificate_by_hashz*OCSPRequestBuilder.add_certificate_by_hash¨   só   € ð Œ=Ð$¨Ô(:Ð(FÝÐMÑNÔNÐNå˜-­Ñ-Ô-ð 	@ÝÐ>Ñ?Ô?Ð?å˜)Ñ$Ô$Ð$ÝÔÐ-Ð/?Ñ@Ô@Ð@ÝÔÐ,¨oÑ>Ô>Ð>ØÔ ¥CØñ%
ô %
ò 
ð 
àÔ"¥c¨/Ñ&:Ô&:Ò:Ð:Ýð6ñô ð õ
 "ØŒMØ˜°¸yÐIØÔñ
ô 
ð 	
r   Úextvalúx509.ExtensionTypeÚcriticalÚboolc                óü   — 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   ÚExtensionTyperA   Ú	ExtensionÚoidr   rZ   rO   rX   rY   ©rL   rh   rj   Ú	extensions       r   Úadd_extensionz OCSPRequestBuilder.add_extensionÆ   s}   € õ ˜&¥$Ô"4Ñ5Ô5ð 	BÝÐ@ÑAÔAÐAå”N 6¤:¨x¸Ñ@Ô@ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å!ØŒM˜4Ô-Ð/M°Ô1AÐ/MÀ9Ð/Mñ
ô 
ð 	
r   ÚOCSPRequestc                ód   — | j         €| j        €t          d¦  «        ‚t          j        | ¦  «        S )Nz*You must add a certificate before building)rX   rY   r*   r   Úcreate_ocsp_request)rL   s    r   ÚbuildzOCSPRequestBuilder.buildÓ   s2   € ØŒ=Ð  TÔ%7Ð%?ÝÐIÑJÔJÐJåÔ'¨Ñ-Ô-Ð-r   )rP   rQ   rR   rS   rT   rU   r%   r&   )r3   r4   r5   r4   r#   r$   r%   rO   )
r^   r_   r`   r_   ra   rb   r#   r$   r%   rO   )rh   ri   rj   rk   r%   rO   )r%   rt   )r   r   r   rM   r]   rg   rs   rw   r   r   r   rO   rO   †   sˆ   € € € € € ð àØ?Að&ð &ð &ð &ð &ð
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð<
ð 
ð 
ð 
ð.ð .ð .ð .ð .ð .r   rO   c                  ó`   — e Zd Zdddg fd.d
„Zd/d„Zd0d„Zd1d „Zd2d%„Zd3d*„Ze	d4d-„¦   «         Z
dS )5ÚOCSPResponseBuilderNÚresponseú_SingleResponse | NoneÚresponder_idú5tuple[x509.Certificate, OCSPResponderEncoding] | NoneÚcertsúlist[x509.Certificate] | NonerT   rU   c                ó>   — || _         || _        || _        || _        d S rW   )Ú	_responseÚ_responder_idÚ_certsrZ   )rL   rz   r|   r~   rT   s        r   rM   zOCSPResponseBuilder.__init__Û   s(   € ð "ˆŒØ)ˆÔØˆŒØ%ˆÔÐÐr   r3   r4   r5   r#   r$   r6   r-   r7   r8   r9   r:   r;   r<   r=   r%   c	           
     óœ   — | j         �t          d¦  «        ‚t          ||||||||¦  «        }	t          |	| j        | j        | j        ¦  «        S )Nz#Only one response per OCSPResponse.)r�   r*   r2   ry   r‚   rƒ   rZ   )
rL   r3   r5   r#   r6   r7   r9   r;   r<   Ú
singleresps
             r   Úadd_responsez OCSPResponseBuilder.add_responseè   sj   € ð Œ>Ð%ÝÐBÑCÔCÐCå$ØØØØØØØØñ	
ô 	
ˆ
õ #ØØÔØŒKØÔñ	
ô 
ð 	
r   Úencodingr   Úresponder_certc                ó  — | 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)r‚   r*   r(   r   r@   rA   r   ry   r�   rƒ   rZ   )rL   r‡   rˆ   s      r   r|   z OCSPResponseBuilder.responder_id  s•   € ð ÔÐ)ÝÐ@ÑAÔAÐAÝ˜.­$Ô*:Ñ;Ô;ð 	DÝÐBÑCÔCÐCÝ˜(Õ$9Ñ:Ô:ð 	ÝØHñô ð õ #ØŒNØ˜XÐ&ØŒKØÔñ	
ô 
ð 	
r   ú!typing.Iterable[x509.Certificate]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  óJ   K  — | ]}t          |t          j        ¦  «        V — Œd S rW   )r(   r   r@   )Ú.0Úxs     r   ú	<genexpr>z3OCSPResponseBuilder.certificates.<locals>.<genexpr>"  s/   è è € ÐBÐB°q•:˜a¥Ô!1Ñ2Ô2ÐBÐBÐBÐBÐBÐBr   z$certs must be a list of Certificates)
rƒ   r*   Úlistrf   ÚallrA   ry   r�   r‚   rZ   )rL   r~   s     r   Úcertificatesz OCSPResponseBuilder.certificates  s™   € ð Œ;Ð"ÝÐ@ÑAÔAÐAÝ�U‘”ˆÝˆu‰:Œ:˜Š?ˆ?ÝÐ>Ñ?Ô?Ð?ÝÐBÐB¸EÐBÑBÔBÑBÔBð 	DÝÐBÑCÔCÐCÝ"ØŒNØÔØØÔñ	
ô 
ð 	
r   rh   ri   rj   rk   c                ó  — t          |t          j        ¦  «        st          d¦  «        ‚t          j        |j        ||¦  «        }t          || j        ¦  «         t          | j	        | j
        | j        g | j        ¢|‘¦  «        S rm   )r(   r   rn   rA   ro   rp   r   rZ   ry   r�   r‚   rƒ   rq   s       r   rs   z!OCSPResponseBuilder.add_extension+  sƒ   € õ ˜&¥$Ô"4Ñ5Ô5ð 	BÝÐ@ÑAÔAÐAå”N 6¤:¨x¸Ñ@Ô@ˆ	Ý# I¨tÔ/?Ñ@Ô@Ð@å"ØŒNØÔØŒKØ*ˆdÔÐ* 	Ð*ñ	
ô 
ð 	
r   Úprivate_keyr   úhashes.HashAlgorithm | NoneÚOCSPResponsec                óœ   — | 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)r�   r*   r‚   r   Úcreate_ocsp_responser   r   )rL   r”   r#   s      r   ÚsignzOCSPResponseBuilder.sign;  sT   € ð
 Œ>Ð!ÝÐEÑFÔFÐFØÔÐ%ÝÐIÑJÔJÐJåÔ(ÝÔ)¨4°¸iñ
ô 
ð 	
r   Úresponse_statusr   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   rA   r   r*   r   r˜   )Úclsrš   s     r   Úbuild_unsuccessfulz&OCSPResponseBuilder.build_unsuccessfulI  sc   € õ ˜/Õ+=Ñ>Ô>ð 	ÝØIñô ð ð Õ0Ô;Ð;Ð;ÝÐCÑDÔDÐDåÔ(¨¸$ÀÀdÑKÔKÐKr   )rz   r{   r|   r}   r~   r   rT   rU   )r3   r4   r5   r4   r#   r$   r6   r-   r7   r8   r9   r:   r;   r:   r<   r=   r%   ry   )r‡   r   rˆ   r4   r%   ry   )r~   rŠ   r%   ry   )rh   ri   rj   rk   r%   ry   )r”   r   r#   r•   r%   r–   )rš   r   r%   r–   )r   r   r   rM   r†   r|   r’   rs   r™   Úclassmethodr�   r   r   r   ry   ry   Ú   sÅ   € € € € € ð ,0àØ/3Ø?Að&ð &ð &ð &ð &ð
ð 
ð 
ð 
ð>
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð"
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ð
Lð 
Lð 
Lñ „[ð
Lð 
Lð 
Lr   ry   )r#   r$   r%   r&   )$Ú
__future__r   rB   Ú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-   r2   rt   r–   ÚOCSPSingleResponserO   ry   Úload_der_ocsp_requestÚload_der_ocsp_responser   r   r   ú<module>r¯      sA  ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ðð ð ð ð ð ð ð ð ð ðð ð ð ð ˜EœJñ ô ð ð
ð ð ð ð ˜œñ ô ð ð „KØ
„MØ
„MØ
„MØ
„Mð€ð
ð 
ð 
ð 
ðð ð ð ð �U”Zñ ô ð ðC4ð C4ð C4ð C4ð C4ñ C4ô C4ð C4ðL Ô€ØÔ €ØÔ,Ð ðQ.ð Q.ð Q.ð Q.ð Q.ñ Q.ô Q.ð Q.ðhzLð zLð zLð zLð zLñ zLô zLð zLðz Ô2Ð ØÔ4Ð Ð Ð r   