§
    ¥”j›1  ã                  ó´  — d dl mZ d dlZd dlm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  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)ÚIterable)ÚutilsÚx509)Úocsp)Úhashes)Ú CertificateIssuerPrivateKeyTypes)Ú_reject_duplicate_extensionc                  ó   — e Zd ZdZdZdS )ÚOCSPResponderEncodingzBy HashzBy NameN)Ú__name__Ú
__module__Ú__qualname__ÚHASHÚNAME© ó    úe/var/www/finuniver-perm.ru/html/portfolio/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,   1   s   € € € € € Ø€DØ€GØ€G€G€Gr   r,   c                  ó   — e Zd Zdd„ZdS )Ú_SingleResponseÚrespú0tuple[x509.Certificate, x509.Certificate] | NoneÚ	resp_hashútuple[bytes, bytes, int] | Noner"   r#   Úcert_statusr,   Úthis_updateúdatetime.datetimeÚnext_updateúdatetime.datetime | NoneÚrevocation_timeÚrevocation_reasonúx509.ReasonFlags | Nonec	                óŽ  — 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¦  «        ‚nTt          |t          j        ¦  «        st          d¦  «        ‚|�)t          |t          j        ¦  «        st          d¦  «        ‚|| _        || _        || _        d S )Nz%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 objectzCrevocation_reason must be an item from the ReasonFlags enum or None)r*   r'   ÚdatetimeÚ	TypeErrorÚ_respÚ
_resp_hashÚ
_algorithmÚ_this_updateÚ_next_updater,   r.   r)   r   ÚReasonFlagsÚ_cert_statusÚ_revocation_timeÚ_revocation_reason)	Úselfr2   r4   r"   r6   r7   r9   r;   r<   s	            r   Ú__init__z_SingleResponse.__init__8   s  € õ 	˜)Ñ$Ô$Ð$Ý˜+¥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à Ð,µZØ!¥4Ô#3ñ6ô 6Ð,õ  ð#ñô ð ð
 (ˆÔØ /ˆÔØ"3ˆÔÐÐr   N)r2   r3   r4   r5   r"   r#   r6   r,   r7   r8   r9   r:   r;   r:   r<   r=   )r   r   r   rK   r   r   r   r1   r1   7   s(   € € € € € ð64ð 64ð 64ð 64ð 64ð 64r   r1   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)rJ   rN   rP   rR   s       r   rK   zOCSPRequestBuilder.__init__w   s!   € ð  ˆŒØ)ˆÔØ%ˆÔÐÐr   Úcertúx509.CertificateÚissuerr"   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 requestú%cert and issuer must be a Certificate)
rV   rW   r)   r*   r'   r   ÚCertificater@   rM   rX   )rJ   rY   r[   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]   ú serial_number must be an integerra   rc   ú`issuer_name_hash and issuer_key_hash must be the same length as the digest size of the algorithm)rV   rW   r)   r'   re   r@   r*   r   Ú_check_bytesÚdigest_sizeÚlenrM   rX   )rJ   ra   rc   rd   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   ÚExtensionTyper@   Ú	ExtensionÚoidr
   rX   rM   rV   rW   ©rJ   rm   ro   Ú	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)rV   rW   r)   r   Úcreate_ocsp_request)rJ   s    r   ÚbuildzOCSPRequestBuilder.buildÃ   s2   € ØŒ=Ð  TÔ%7Ð%?ÝÐIÑJÔJÐJåÔ'¨Ñ-Ô-Ð-r   )rN   rO   rP   rQ   rR   rS   r$   r%   )rY   rZ   r[   rZ   r"   r#   r$   rM   )
ra   rb   rc   rb   rd   re   r"   r#   r$   rM   )rm   rn   ro   rp   r$   rM   )r$   ry   )r   r   r   rK   r`   rl   rx   r|   r   r   r   rM   rM   v   sˆ   € € € € € ð àØ?Að&ð &ð &ð &ð &ð
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð<
ð 
ð 
ð 
ð.ð .ð .ð .ð .ð .r   rM   c                  óh   — e Zd Zdddg fd4d
„Zd5d„Zd6d „Zd7d$„Zd8d&„Zd9d+„Zd:d0„Z	e
d;d3„¦   «         ZdS )<ÚOCSPResponseBuilderNÚresponseú_SingleResponse | NoneÚresponder_idú5tuple[x509.Certificate, OCSPResponderEncoding] | NoneÚcertsúlist[x509.Certificate] | NonerR   rS   c                ó>   — || _         || _        || _        || _        d S rU   )Ú	_responseÚ_responder_idÚ_certsrX   )rJ   r   r�   rƒ   rR   s        r   rK   zOCSPResponseBuilder.__init__Ë   s(   € ð "ˆŒØ)ˆÔØˆŒØ%ˆÔÐÐr   rY   rZ   r[   r"   r#   r6   r,   r7   r8   r9   r:   r;   r<   r=   r$   c	           
     ó&  — | j         �t          d¦  «        ‚t          |t          j        ¦  «        rt          |t          j        ¦  «        st          d¦  «        ‚t          ||fd ||||||¦  «        }	t          |	| j        | j	        | j
        ¦  «        S )Nú#Only one response per OCSPResponse.r^   )r†   r)   r'   r   r_   r@   r1   r~   r‡   rˆ   rX   )
rJ   rY   r[   r"   r6   r7   r9   r;   r<   Ú
singleresps
             r   Úadd_responsez OCSPResponseBuilder.add_responseØ   s¯   € ð Œ>Ð%ÝÐBÑCÔCÐCå˜$¥Ô 0Ñ1Ô1ð 	E½Ø•DÔ$ñ:
ô :
ð 	Eõ ÐCÑDÔDÐDå$Ø�6ˆNØØØØØØØñ	
ô 	
ˆ
õ #ØØÔØŒKØÔñ	
ô 
ð 	
r   ra   rb   rc   rd   re   c
           
     óÚ  — | j         �t          d¦  «        ‚t          |t          ¦  «        st	          d¦  «        ‚t          j        d|¦  «         t          j        d|¦  «         t          |¦  «         |j        t          |¦  «        k    s|j        t          |¦  «        k    rt          d¦  «        ‚t          d |||f||||||	¦  «        }
t          |
| j        | j        | j        ¦  «        S )NrŠ   rg   ra   rc   rh   )r†   r)   r'   re   r@   r   ri   r*   rj   rk   r1   r~   r‡   rˆ   rX   )rJ   ra   rc   rd   r"   r6   r7   r9   r;   r<   r‹   s              r   Úadd_response_by_hashz(OCSPResponseBuilder.add_response_by_hashü   s  € ð Œ>Ð%ÝÐBÑCÔCÐCå˜-­Ñ-Ô-ð 	@ÝÐ>Ñ?Ô?Ð?åÔÐ-Ð/?Ñ@Ô@Ð@ÝÔÐ,¨oÑ>Ô>Ð>Ý˜)Ñ$Ô$Ð$ØÔ ¥CØñ%
ô %
ò 
ð 
àÔ"¥c¨/Ñ&:Ô&:Ò:Ð:Ýð6ñô ð õ
 %ØØ˜°Ð>ØØØØØØñ	
ô 	
ˆ
õ #ØØÔØŒ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_   r@   r   r~   r†   rˆ   rX   )rJ   r�   r�   s      r   r�   z OCSPResponseBuilder.responder_id*  s•   € ð ÔÐ)ÝÐ@ÑAÔAÐAÝ˜.­$Ô*:Ñ;Ô;ð 	DÝÐBÑCÔCÐCÝ˜(Õ$9Ñ:Ô:ð 	ÝØHñô ð õ #ØŒNØ˜XÐ&ØŒKØÔñ	
ô 
ð 	
r   ú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 rU   )r'   r   r_   )Ú.0Úxs     r   ú	<genexpr>z3OCSPResponseBuilder.certificates.<locals>.<genexpr>E  s/   è è € ÐBÐB°q•:˜a¥Ô!1Ñ2Ô2ÐBÐBÐBÐBÐBÐBr   z$certs must be a list of Certificates)
rˆ   r)   Úlistrk   Úallr@   r~   r†   r‡   rX   )rJ   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   rm   rn   ro   rp   c                ó  — t          |t          j        ¦  «        st          d¦  «        ‚t          j        |j        ||¦  «        }t          || j        ¦  «         t          | j	        | j
        | j        g | j        ¢|‘¦  «        S rr   )r'   r   rs   r@   rt   ru   r
   rX   r~   r†   r‡   rˆ   rv   s       r   rx   z!OCSPResponseBuilder.add_extensionN  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   )rJ   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   r@   r   r)   r   r    )Úclsr¢   s     r   Úbuild_unsuccessfulz&OCSPResponseBuilder.build_unsuccessfull  sc   € õ ˜/Õ+=Ñ>Ô>ð 	ÝØIñô ð ð Õ0Ô;Ð;Ð;ÝÐCÑDÔDÐDåÔ(¨¸$ÀÀdÑKÔKÐKr   )r   r€   r�   r‚   rƒ   r„   rR   rS   )rY   rZ   r[   rZ   r"   r#   r6   r,   r7   r8   r9   r:   r;   r:   r<   r=   r$   r~   )ra   rb   rc   rb   rd   re   r"   r#   r6   r,   r7   r8   r9   r:   r;   r:   r<   r=   r$   r~   )r�   r   r�   rZ   r$   r~   )rƒ   r’   r$   r~   )rm   rn   ro   rp   r$   r~   )rœ   r	   r"   r�   r$   rž   )r¢   r   r$   rž   )r   r   r   rK   rŒ   rŽ   r�   rš   rx   r¡   Úclassmethodr¥   r   r   r   r~   r~   Ê   sÛ   € € € € € ð ,0àØ/3Ø?Að&ð &ð &ð &ð &ð"
ð "
ð "
ð "
ðH,
ð ,
ð ,
ð ,
ð\
ð 
ð 
ð 
ð&
ð 
ð 
ð 
ð"
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð ð
Lð 
Lð 
Lñ „[ð
Lð 
Lð 
Lr   r~   )r"   r#   r$   r%   )#Ú
__future__r   r?   Úcollections.abcr   Úcryptographyr   r   Ú"cryptography.hazmat.bindings._rustr   Úcryptography.hazmat.primitivesr   Ú/cryptography.hazmat.primitives.asymmetric.typesr	   Úcryptography.x509.baser
   ÚEnumr   r   ÚSHA1ÚSHA224ÚSHA256ÚSHA384ÚSHA512r(   r*   r,   r1   ry   rž   ÚOCSPSingleResponserM   r~   Úload_der_ocsp_requestÚload_der_ocsp_responser   r   r   ú<module>r·      s$  ðð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø $Ð $Ð $Ð $Ð $Ð $à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >ðð ð ð ð ˜EœJñ ô ð ð
ð ð ð ð ˜œñ ô ð ð „KØ
„MØ
„MØ
„MØ
„Mð€ð
ð 
ð 
ð 
ðð ð ð ð �U”Zñ ô ð ð74ð 74ð 74ð 74ð 74ñ 74ô 74ð 74ðt Ô€ØÔ €ØÔ,Ð ðQ.ð Q.ð Q.ð Q.ð Q.ñ Q.ô Q.ð Q.ðhmLð mLð mLð mLð mLñ mLô mLð mLð` Ô2Ð ØÔ4Ð Ð Ð r   