
     hPJ                        d Z ddlmZmZmZmZ ddlmZ ddlm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZ dd	lmZm Z m!Z!m"Z"  G d
 de          Z# G d de          Z$ G d de          Z% G d de          Z& G d de          Z' G d de          Z( G d de          Z) G d de          Z* G d de          Z+ G d de          Z, G d de          Z- G d  d!e          Z. G d" d#e          Z/ G d$ d%e          Z0 G d& d'e          Z1 G d( d)e          Z2 G d* d+e          Z3 G d, d-e          Z4 G d. d/e          Z5 G d0 d1e          Z6 G d2 d3e          Z7 G d4 d5e          Z8 G d6 d7e          Z9 G d8 d9e          Z: G d: d;e          Z; G d< d=e          Z< G d> d?e          Z= G d@ dAe          Z> G dB dCe          Z? G dD dEe          Z@ G dF dGe          ZA G dH dIe          ZB G dJ dKe          ZC G dL dMe          ZD G dN dOe          ZE G dP dQe          ZF G dR dSe          ZG G dT dUe          ZHdVS )Wz
ASN.1 type classes for the online certificate status protocol (OCSP). Exports
the following items:

 - OCSPRequest()
 - OCSPResponse()

Other type classes are defined that help compose the types listed above.
    )unicode_literalsdivisionabsolute_importprint_function   )unwrap)DigestAlgorithmSignedDigestAlgorithm)BooleanChoice
EnumeratedGeneralizedTime	IA5StringIntegerNullObjectIdentifierOctetBitStringOctetStringParsableOctetStringSequence
SequenceOf)AuthorityInfoAccessSyntax	CRLReason)PublicKeyAlgorithm)CertificateGeneralNameGeneralNamesNamec                       e Zd ZddiZdS )Versionr   v1N__name__
__module____qualname___map     K/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/asn1crypto/ocsp.pyr    r    (   s        	4DDDr(   r    c                   *    e Zd ZdefdefdefdefgZdS )CertIdhash_algorithmissuer_name_hashissuer_key_hashserial_numberN)r#   r$   r%   r	   r   r   _fieldsr'   r(   r)   r+   r+   .   s5        	?+	[)	K(	'"	GGGr(   r+   c                       e Zd ZdefdefgZdS )ServiceLocatorissuerlocatorN)r#   r$   r%   r   r   r0   r'   r(   r)   r2   r2   7   s&        	4	-.GGGr(   r2   c                       e Zd ZddiZdS )RequestExtensionIdz1.3.6.1.5.5.7.48.1.7service_locatorNr"   r'   r(   r)   r6   r6   >   s         1DDDr(   r6   c                   6    e Zd ZdefdeddifdefgZdZdeiZ	dS )	RequestExtensionextn_idcriticaldefaultF
extn_valuer:   r=   r7   N)
r#   r$   r%   r6   r   r   r0   	_oid_pairr2   
_oid_specsr'   r(   r)   r9   r9   D   sI        	&'	Wy%01	*+G *I>JJJr(   r9   c                       e Zd ZeZdS )RequestExtensionsN)r#   r$   r%   r9   _child_specr'   r(   r)   rB   rB   Q   s        "KKKr(   rB   c                   d    e Zd ZdefdedddfgZdZdZdZd Z	e
d	             Ze
d
             ZdS )Requestreq_certsingle_request_extensionsr   TexplicitoptionalFNc                    t                      | _        | d         D ]g}|d         j        }d|z  }t          | |          rt	          | ||d         j                   |d         j        r| j                            |           hd| _        dS )v
        Sets common named extensions to private attributes and creates a list
        of critical extensions
        rG   r:   	_%s_valuer=   r;   TNset_critical_extensionsnativehasattrsetattrparsedadd_processed_extensionsself	extensionnameattribute_names       r)   _set_extensionszRequest._set_extensions_   s     %(EE!9: 	4 	4IY'.D(4/Nt^,, Nni.E.LMMM$+ 4)--d333%)"""r(   c                 F    | j         s|                                  | j        S z
        Returns a set of the names (or OID if not a known extension) of the
        extensions marked as critical

        :return:
            A set of unicode strings
        rV   r\   rP   rX   s    r)   critical_extensionszRequest.critical_extensionsq   *     ) 	#  """((r(   c                 J    | j         du r|                                  | j        S )z
        This extension is used when communicating with an OCSP responder that
        acts as a proxy for OCSP requests

        :return:
            None or a ServiceLocator object
        F)rV   r\   _service_locator_valuer`   s    r)   service_locator_valuezRequest.service_locator_value   -     %..  """**r(   )r#   r$   r%   r+   rB   r0   rV   rP   rd   r\   propertyra   re   r'   r(   r)   rE   rE   U   s        	V	$&7aUY9Z9Z[G
 "!* * *$ ) ) X) + + X+ + +r(   rE   c                       e Zd ZeZdS )RequestsN)r#   r$   r%   rE   rC   r'   r(   r)   ri   ri      s        KKKr(   ri   c                       e Zd ZddiZdS )ResponseTypez1.3.6.1.5.5.7.48.1.1basic_ocsp_responseNr"   r'   r(   r)   rk   rk      s         5DDDr(   rk   c                       e Zd ZeZdS )AcceptableResponsesN)r#   r$   r%   rk   rC   r'   r(   r)   rn   rn      s        KKKr(   rn   c                   $    e Zd ZdefdeddifgZdS )PreferredSignatureAlgorithmsig_identifiercert_identifierrJ   TN)r#   r$   r%   r
   r   r0   r'   r(   r)   rp   rp      s.        	01	.T0BCGGGr(   rp   c                       e Zd ZeZdS )PreferredSignatureAlgorithmsN)r#   r$   r%   rp   rC   r'   r(   r)   rt   rt      s        -KKKr(   rt   c                       e Zd ZddddZdS )TBSRequestExtensionIdnonceacceptable_responsespreferred_signature_algorithms)1.3.6.1.5.5.7.48.1.2z1.3.6.1.5.5.7.48.1.4z1.3.6.1.5.5.7.48.1.8Nr"   r'   r(   r)   rv   rv      s#         ' 6 @ DDDr(   rv   c                   :    e Zd ZdefdeddifdefgZdZee	e
dZdS )	TBSRequestExtensionr:   r;   r<   Fr=   r>   )rw   rx   ry   N)r#   r$   r%   rv   r   r   r0   r?   r   rn   rt   r@   r'   r(   r)   r|   r|      sR        	)*	Wy%01	*+G *I 3*F JJJr(   r|   c                       e Zd ZeZdS )TBSRequestExtensionsN)r#   r$   r%   r|   rC   r'   r(   r)   r~   r~      s        %KKKr(   r~   c                   B    e Zd Zdedddfdedddfd	efd
edddfgZdS )
TBSRequestversionr   r!   rI   r<   requestor_namer   TrH   request_listrequest_extensions   N)r#   r$   r%   r    r   ri   r~   r0   r'   r(   r)   r   r      sU        	G!==>	;QD(I(IJ	"	3!QU5V5VW	GGGr(   r   c                       e Zd ZeZdS )CertificatesN)r#   r$   r%   r   rC   r'   r(   r)   r   r      s        KKKr(   r   c                   ,    e Zd ZdefdefdedddfgZdS )	Signaturesignature_algorithm	signaturecertsr   TrH   N)r#   r$   r%   r
   r   r   r0   r'   r(   r)   r   r      s8        	 56	n%	,QD A ABGGGr(   r   c                       e Zd ZdefdedddfgZdZdZdZdZ	dZ
d Zed	             Zed
             Zed             Zed             ZdS )OCSPRequesttbs_requestoptional_signaturer   TrH   FNc                 &   t                      | _        | d         d         D ]g}|d         j        }d|z  }t          | |          rt	          | ||d         j                   |d         j        r| j                            |           hd| _        dS )	rL   r   r   r:   rM   r=   r;   TNrN   rW   s       r)   r\   zOCSPRequest._set_extensions   s     %(EE!m,-AB 	4 	4IY'.D(4/Nt^,, Nni.E.LMMM$+ 4)--d333%)"""r(   c                 F    | j         s|                                  | j        S r^   r_   r`   s    r)   ra   zOCSPRequest.critical_extensions   rb   r(   c                 J    | j         du r|                                  | j        S )z
        This extension is used to prevent replay attacks by including a unique,
        random value with each request/response pair

        :return:
            None or an OctetString object
        FrV   r\   _nonce_valuer`   s    r)   nonce_valuezOCSPRequest.nonce_value  -     %..  """  r(   c                 J    | j         du r|                                  | j        S )a(  
        This extension is used to allow the client and server to communicate
        with alternative response formats other than just basic_ocsp_response,
        although no other formats are defined in the standard.

        :return:
            None or an AcceptableResponses object
        F)rV   r\   _acceptable_responses_valuer`   s    r)   acceptable_responses_valuez&OCSPRequest.acceptable_responses_value  s-     %..  """//r(   c                 J    | j         du r|                                  | j        S )aj  
        This extension is used by the client to define what signature algorithms
        are preferred, including both the hash algorithm and the public key
        algorithm, with a level of detail down to even the public key algorithm
        parameters, such as curve name.

        :return:
            None or a PreferredSignatureAlgorithms object
        F)rV   r\   %_preferred_signature_algorithms_valuer`   s    r)   $preferred_signature_algorithms_valuez0OCSPRequest.preferred_signature_algorithms_value   s-     %..  """99r(   )r#   r$   r%   r   r   r0   rV   rP   r   r   r   r\   rg   ra   r   r   r   r'   r(   r)   r   r      s        	
#	yqd*K*KLG
 "L"&,0)* * *$ ) ) X) ! ! X! 0 0 X0 : : X: : :r(   r   c                        e Zd ZdddddddZdS )	OCSPResponseStatus
successfulmalformed_requestinternal_error	try_latersign_requiredunauthorized)r   r   r            Nr"   r'   r(   r)   r   r   1  s,         DDDr(   r   c                   *    e Zd ZdeddifdeddifgZdS )ResponderIdby_namerI   r   by_keyr   N)r#   r$   r%   r   r   _alternativesr'   r(   r)   r   r   <  s1        	D:q/*	;Q0MMMr(   r   c                   *    e Zd Zd Zed             ZdS )
StatusGoodc                     |E|dk    r?t          |t                    s*t          t          dt	          |                              d| _        dS )z`
        Sets the value of the object

        :param value:
            None or 'good'
        NgoodzK
                value must be one of None, "good", not %s
                r(   
isinstancer   
ValueErrorr   reprcontentsrX   values     r)   rO   zStatusGood.setE  s[     &E49P9PV U	     r(   c                     dS )Nr   r'   r`   s    r)   rQ   zStatusGood.nativeW  s    vr(   Nr#   r$   r%   rO   rg   rQ   r'   r(   r)   r   r   D  s>          $   X  r(   r   c                   *    e Zd Zd Zed             ZdS )StatusUnknownc                     |E|dk    r?t          |t                    s*t          t          dt	          |                              d| _        dS )zc
        Sets the value of the object

        :param value:
            None or 'unknown'
        NunknownzN
                value must be one of None, "unknown", not %s
                r(   r   r   s     r)   rO   zStatusUnknown.set^  s^     )!3!3Jud<S<S!3V U	     r(   c                     dS )Nr   r'   r`   s    r)   rQ   zStatusUnknown.nativep  s    yr(   Nr   r'   r(   r)   r   r   ]  s>          $   X  r(   r   c                   &    e Zd ZdefdedddfgZdS )RevokedInforevocation_timerevocation_reasonr   TrH   N)r#   r$   r%   r   r   r0   r'   r(   r)   r   r   u  s/        	O,	iaT)J)JKGGGr(   r   c                   6    e Zd ZdeddifdeddifdeddifgZdS )	
CertStatusr   implicitr   revokedr   r   r   N)r#   r$   r%   r   r   r   r   r'   r(   r)   r   r   |  s?        	j!_-	K*a1	MJ?3MMMr(   r   c                   <    e Zd ZdedddfdedddfdedddfgZd	S )
CrlIdcrl_urlr   TrH   crl_numr   crl_timer   N)r#   r$   r%   r   r   r   r0   r'   r(   r)   r   r     sK        	IA4@@A	G!>>?	_1$&G&GHGGGr(   r   c                        e Zd ZdddddddZdS )	SingleResponseExtensionIdcrlarchive_cutoff
crl_reasoninvalidity_datecertificate_issuer!signed_certificate_timestamp_list)z1.3.6.1.5.5.7.48.1.3z1.3.6.1.5.5.7.48.1.6z	2.5.29.21z	2.5.29.24z	2.5.29.29z1.3.6.1.4.1.11129.2.4.5Nr"   r'   r(   r)   r   r     s.         % 0 "&)#F
 
DDDr(   r   c                   @    e Zd ZdefdeddifdefgZdZee	e
e	eedZdS )	SingleResponseExtensionr:   r;   r<   Fr=   r>   )r   r   r   r   r   r   N)r#   r$   r%   r   r   r   r0   r?   r   r   r   r   r   r@   r'   r(   r)   r   r     s[        	-.	Wy%01	*+G *I)**-8 JJJr(   r   c                       e Zd ZeZdS )SingleResponseExtensionsN)r#   r$   r%   r   rC   r'   r(   r)   r   r     s        )KKKr(   r   c            	           e Zd Zdefdefdefdedddfded	ddfgZd
ZdZ	dZ
dZdZdZdZd Zed             Zed             Zed             Zed             Zed             Zed             ZdS )SingleResponsecert_idcert_statusthis_updatenext_updater   TrH   single_extensionsr   FNc                    t                      | _        | d         D ]g}|d         j        }d|z  }t          | |          rt	          | ||d         j                   |d         j        r| j                            |           hd| _        dS )rL   r   r:   rM   r=   r;   TNrN   rW   s       r)   r\   zSingleResponse._set_extensions  s     %(EE!12 	4 	4IY'.D(4/Nt^,, Nni.E.LMMM$+ 4)--d333%)"""r(   c                 F    | j         s|                                  | j        S r^   r_   r`   s    r)   ra   z"SingleResponse.critical_extensions  rb   r(   c                 J    | j         du r|                                  | j        S )z
        This extension is used to locate the CRL that a certificate's revocation
        is contained within.

        :return:
            None or a CrlId object
        F)rV   r\   
_crl_valuer`   s    r)   	crl_valuezSingleResponse.crl_value  s,     %..  """r(   c                 J    | j         du r|                                  | j        S )z
        This extension is used to indicate the date at which an archived
        (historical) certificate status entry will no longer be available.

        :return:
            None or a GeneralizedTime object
        F)rV   r\   _archive_cutoff_valuer`   s    r)   archive_cutoff_valuez#SingleResponse.archive_cutoff_value  s-     %..  """))r(   c                 J    | j         du r|                                  | j        S )z
        This extension indicates the reason that a certificate was revoked.

        :return:
            None or a CRLReason object
        F)rV   r\   _crl_reason_valuer`   s    r)   crl_reason_valuezSingleResponse.crl_reason_value  s-     %..  """%%r(   c                 J    | j         du r|                                  | j        S )a=  
        This extension indicates the suspected date/time the private key was
        compromised or the certificate became invalid. This would usually be
        before the revocation date, which is when the CA processed the
        revocation.

        :return:
            None or a GeneralizedTime object
        F)rV   r\   _invalidity_date_valuer`   s    r)   invalidity_date_valuez$SingleResponse.invalidity_date_value
  s-     %..  """**r(   c                 J    | j         du r|                                  | j        S )z
        This extension indicates the issuer of the certificate in question.

        :return:
            None or an x509.GeneralNames object
        F)rV   r\   _certificate_issuer_valuer`   s    r)   certificate_issuer_valuez'SingleResponse.certificate_issuer_value  s-     %..  """--r(   )r#   r$   r%   r+   r   r   r   r0   rV   rP   r   r   r   r   r   r\   rg   ra   r   r   r   r   r   r'   r(   r)   r   r     s5       	F	
#	(	aT)J)JK	6QTX8Y8YZG "J ! $* * *$ ) ) X)   X * * X* 
& 
& X
& + + X+ 
. 
. X
. 
. 
.r(   r   c                       e Zd ZeZdS )	ResponsesN)r#   r$   r%   r   rC   r'   r(   r)   r   r   (  s         KKKr(   r   c                       e Zd ZdddZdS )ResponseDataExtensionIdrw   extended_revoke)rz   z1.3.6.1.5.5.7.48.1.9Nr"   r'   r(   r)   r   r   ,  s          ' 1 DDDr(   r   c                   8    e Zd ZdefdeddifdefgZdZee	dZ
dS )	ResponseDataExtensionr:   r;   r<   Fr=   r>   )rw   r   N)r#   r$   r%   r   r   r   r0   r?   r   r   r@   r'   r(   r)   r   r   3  sO        	+,	Wy%01	*+G *I JJJr(   r   c                       e Zd ZeZdS )ResponseDataExtensionsN)r#   r$   r%   r   rC   r'   r(   r)   r   r   A  s        'KKKr(   r   c            	       @    e Zd Zdedddfdefdefdefded	d
dfgZdS )ResponseDatar   r   r!   r   responder_idproduced_at	responsesresponse_extensionsr   TrH   N)	r#   r$   r%   r    r   r   r   r   r0   r'   r(   r)   r   r   E  sS        	G!==>	%	(	i 	 6QTX8Y8YZGGGr(   r   c                   2    e Zd ZdefdefdefdedddfgZdS )	BasicOCSPResponsetbs_response_datar   r   r   r   TrH   N)r#   r$   r%   r   r
   r   r   r0   r'   r(   r)   r  r  O  s@        	l+	 56	n%	,QD A AB	GGGr(   r  c                   *    e Zd ZdefdefgZdZdeiZdS )ResponseBytesresponse_typeresponse)r  r  rl   N)	r#   r$   r%   rk   r   r0   r?   r  r@   r'   r(   r)   r  r  X  s:        	,'	()G
 .I0JJJr(   r  c                       e Zd ZdefdedddfgZdZdZdZdZ	d Z
ed	             Zed
             Zed             Zed             Zed             ZdS )OCSPResponseresponse_statusresponse_bytesr   TrH   FNc                 H   t                      | _        | d         d         j        d         d         D ]g}|d         j        }d|z  }t	          | |          rt          | ||d         j                   |d         j        r| j                            |           hd	| _        d
S )rL   r  r  r  r   r:   rM   r=   r;   TN)rO   rP   rT   rQ   rR   rS   rU   rV   rW   s       r)   r\   zOCSPResponse._set_extensionso  s     %(EE!./
;BCVWXmn 	4 	4IY'.D(4/Nt^,, Nni.E.LMMM$+ 4)--d333%)"""r(   c                 F    | j         s|                                  | j        S r^   r_   r`   s    r)   ra   z OCSPResponse.critical_extensions  rb   r(   c                 J    | j         du r|                                  | j        S )z
        This extension is used to prevent replay attacks on the request/response
        exchange

        :return:
            None or an OctetString object
        Fr   r`   s    r)   r   zOCSPResponse.nonce_value  r   r(   c                 J    | j         du r|                                  | j        S )z
        This extension is used to signal that the responder will return a
        "revoked" status for non-issued certificates.

        :return:
            None or a Null object (if present)
        F)rV   r\   _extended_revoke_valuer`   s    r)   extended_revoke_valuez"OCSPResponse.extended_revoke_value  rf   r(   c                 (    | d         d         j         S )z
        A shortcut into the BasicOCSPResponse sequence

        :return:
            None or an asn1crypto.ocsp.BasicOCSPResponse object
        r  r  rT   r`   s    r)   rl   z OCSPResponse.basic_ocsp_response  s     $%j188r(   c                 4    | d         d         j         d         S )z
        A shortcut into the parsed, ResponseData sequence

        :return:
            None or an asn1crypto.ocsp.ResponseData object
        r  r  r  r  r`   s    r)   response_datazOCSPResponse.response_data  s     $%j189LMMr(   )r#   r$   r%   r   r  r0   rV   rP   r   r  r\   rg   ra   r   r  rl   r  r'   r(   r)   r	  r	  d  s        	./	=qd*K*KLG
 "L!* * *$ ) ) X) ! ! X! + + X+ 9 9 X9 N N XN N Nr(   r	  N)I__doc__
__future__r   r   r   r   _errorsr   algosr	   r
   corer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   keysr   x509r   r   r   r   r    r+   r2   r6   r9   rB   rE   ri   rk   rn   rp   rt   rv   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r'   r(   r)   <module>r     s    S R R R R R R R R R R R       9 9 9 9 9 9 9 9                              6 5 5 5 5 5 5 5 $ $ $ $ $ $ > > > > > > > > > > > >    g       X       X       )   
 
 
 
 
x 
 
 
# # # # #
 # # #6+ 6+ 6+ 6+ 6+h 6+ 6+ 6+r    z       #       *       (   . . . . .: . . .    ,       (   & & & & &: & & &           :          W: W: W: W: W:( W: W: W:t           &          2    D   0    (              H        0       h   $* * * * *z * * *u. u. u. u. u.X u. u. u.p! ! ! ! !
 ! ! !    .       H   ( ( ( ( (Z ( ( (    8          	 	 	 	 	H 	 	 	[N [N [N [N [N8 [N [N [N [N [Nr(   