
    >wgPJ                        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      ZHyV)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y)Versionr   v1N__name__
__module____qualname___map     F/var/www/horilla/myenv/lib/python3.12/site-packages/asn1crypto/ocsp.pyr    r    (   s    	4Dr(   r    c                   (    e Zd ZdefdefdefdefgZy)CertIdhash_algorithmissuer_name_hashissuer_key_hashserial_numberN)r#   r$   r%   r	   r   r   _fieldsr'   r(   r)   r+   r+   .   s)    	?+	[)	K(	'"	Gr(   r+   c                       e Zd ZdefdefgZy)ServiceLocatorissuerlocatorN)r#   r$   r%   r   r   r0   r'   r(   r)   r2   r2   7   s    	4	-.Gr(   r2   c                       e Zd ZddiZy)RequestExtensionIdz1.3.6.1.5.5.7.48.1.7service_locatorNr"   r'   r(   r)   r6   r6   >   s     1Dr(   r6   c                   4    e Zd ZdefdeddifdefgZdZdeiZ	y)	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   s=    	&'	Wy%01	*+G *I>Jr(   r9   c                       e Zd ZeZy)RequestExtensionsN)r#   r$   r%   r9   _child_specr'   r(   r)   rB   rB   Q   s    "Kr(   rB   c                   V    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y)Requestreq_certsingle_request_extensionsr   TexplicitoptionalFNc                    t               | _        | d   D ]g  }|d   j                  }d|z  }t        | |      rt	        | ||d   j
                         |d   j                  sM| j                  j                  |       i d| _        y)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     %(E!9: 	4IY'..D(4/Nt^,ni.E.L.LM$++))--d3	4 &*"r(   c                 R    | j                   s| j                          | 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                 V    | j                   du r| j                          | 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   sc    	V	$&7aUY9Z[G
 "!*$ ) ) + +r(   rE   c                       e Zd ZeZy)RequestsN)r#   r$   r%   rE   rC   r'   r(   r)   ri   ri      s    Kr(   ri   c                       e Zd ZddiZy)ResponseTypez1.3.6.1.5.5.7.48.1.1basic_ocsp_responseNr"   r'   r(   r)   rk   rk      s     5Dr(   rk   c                       e Zd ZeZy)AcceptableResponsesN)r#   r$   r%   rk   rC   r'   r(   r)   rn   rn      s    Kr(   rn   c                   "    e Zd ZdefdeddifgZy)PreferredSignatureAlgorithmsig_identifiercert_identifierrJ   TN)r#   r$   r%   r
   r   r0   r'   r(   r)   rp   rp      s"    	01	.T0BCGr(   rp   c                       e Zd ZeZy)PreferredSignatureAlgorithmsN)r#   r$   r%   rp   rC   r'   r(   r)   rt   rt      s    -Kr(   rt   c                       e Zd ZddddZy)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 @Dr(   rv   c                   8    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y)	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|      sA    	)*	Wy%01	*+G *I 3*FJr(   r|   c                       e Zd ZeZy)TBSRequestExtensionsN)r#   r$   r%   r|   rC   r'   r(   r)   r~   r~      s    %Kr(   r~   c                   @    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y)
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      s@    	G!=>	;QD(IJ	"	3!QU5VW	Gr(   r   c                       e Zd ZeZy)CertificatesN)r#   r$   r%   r   rC   r'   r(   r)   r   r      s    Kr(   r   c                   *    e Zd ZdefdefdedddfgZy)	Signaturesignature_algorithm	signaturecertsr   TrH   N)r#   r$   r%   r
   r   r   r0   r'   r(   r)   r   r      s)    	 56	n%	,QD ABGr(   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y)OCSPRequesttbs_requestoptional_signaturer   TrH   FNc                    t               | _        | d   d   D ]g  }|d   j                  }d|z  }t        | |      rt	        | ||d   j
                         |d   j                  sM| j                  j                  |       i d| _        y)	rL   r   r   r:   rM   r=   r;   TNrN   rW   s       r)   r\   zOCSPRequest._set_extensions   s     %(E!m,-AB 	4IY'..D(4/Nt^,ni.E.L.LM$++))--d3	4 &*"r(   c                 R    | j                   s| j                          | j                  S r^   r_   r`   s    r)   ra   zOCSPRequest.critical_extensions   rb   r(   c                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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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LG
 "L"&,0)*$ ) ) ! ! 0 0 : :r(   r   c                       e Zd ZdddddddZy)	OCSPResponseStatus
successfulmalformed_requestinternal_error	try_latersign_requiredunauthorized)r   r   r            Nr"   r'   r(   r)   r   r   1  s    Dr(   r   c                   (    e Zd ZdeddifdeddifgZy)ResponderIdby_namerI   r   by_keyr   N)r#   r$   r%   r   r   _alternativesr'   r(   r)   r   r   <  s%    	D:q/*	;Q0Mr(   r   c                   "    e Zd Zd Zed        Zy)
StatusGoodc                 |    |3|dk7  r.t        |t              st        t        dt	        |                  d| _        y)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  sD     &E49PV U	   r(   c                      y)Nr   r'   r`   s    r)   rQ   zStatusGood.nativeW  s    r(   Nr#   r$   r%   rO   rg   rQ   r'   r(   r)   r   r   D  s    $  r(   r   c                   "    e Zd Zd Zed        Zy)StatusUnknownc                 |    |3|dk7  r.t        |t              st        t        dt	        |                  d| _        y)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^  sE     )!3Jud<SV U	   r(   c                      y)Nr   r'   r`   s    r)   rQ   zStatusUnknown.nativep  s    r(   Nr   r'   r(   r)   r   r   ]  s    $  r(   r   c                   $    e Zd ZdefdedddfgZy)RevokedInforevocation_timerevocation_reasonr   TrH   N)r#   r$   r%   r   r   r0   r'   r(   r)   r   r   u  s     	O,	iaT)JKGr(   r   c                   4    e Zd ZdeddifdeddifdeddifgZy)	
CertStatusr   implicitr   revokedr   r   r   N)r#   r$   r%   r   r   r   r   r'   r(   r)   r   r   |  s3    	j!_-	K*a1	MJ?3Mr(   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y	)
CrlIdcrl_urlr   TrH   crl_numr   crl_timer   N)r#   r$   r%   r   r   r   r0   r'   r(   r)   r   r     s6    	IA4@A	G!>?	_1$&GHGr(   r   c                       e Zd ZdddddddZy)	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
Dr(   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y)	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     sJ    	-.	Wy%01	*+G *I)**-8Jr(   r   c                       e Zd ZeZy)SingleResponseExtensionsN)r#   r$   r%   r   rC   r'   r(   r)   r   r     s    )Kr(   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y)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                  sM| j                  j                  |       i d| _        y)rL   r   r:   rM   r=   r;   TNrN   rW   s       r)   r\   zSingleResponse._set_extensions  s     %(E!12 	4IY'..D(4/Nt^,ni.E.L.LM$++))--d3	4 &*"r(   c                 R    | j                   s| j                          | j                  S r^   r_   r`   s    r)   ra   z"SingleResponse.critical_extensions  rb   r(   c                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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     s    	F	
#	(	aT)JK	6QTX8YZG "J ! $*$ ) )   * * 
& 
& + + 
. 
.r(   r   c                       e Zd ZeZy)	ResponsesN)r#   r$   r%   r   rC   r'   r(   r)   r   r   (  s     Kr(   r   c                       e Zd ZdddZy)ResponseDataExtensionIdrw   extended_revoke)rz   z1.3.6.1.5.5.7.48.1.9Nr"   r'   r(   r)   r   r   ,  s     ' 1Dr(   r   c                   6    e Zd ZdefdeddifdefgZdZee	dZ
y)	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  s>    	+,	Wy%01	*+G *IJr(   r   c                       e Zd ZeZy)ResponseDataExtensionsN)r#   r$   r%   r   rC   r'   r(   r)   r   r   A  s    'Kr(   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y)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  sA    	G!=>	%	(	i 	 6QTX8YZGr(   r   c                   0    e Zd ZdefdefdefdedddfgZy)	BasicOCSPResponsetbs_response_datar   r   r   r   TrH   N)r#   r$   r%   r   r
   r   r   r0   r'   r(   r)   r  r  O  s1    	l+	 56	n%	,QD AB	Gr(   r  c                   (    e Zd ZdefdefgZdZdeiZy)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Jr(   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y)OCSPResponseresponse_statusresponse_bytesr   TrH   FNc                 4   t               | _        | d   d   j                  d   d   D ]g  }|d   j                  }d|z  }t	        | |      rt        | ||d   j                         |d   j                  sM| j                  j                  |       i d	| _        y
)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     %(E!./
;BBCVWXmn 	4IY'..D(4/Nt^,ni.E.L.LM$++))--d3	4 &*"r(   c                 R    | j                   s| j                          | j                  S r^   r_   r`   s    r)   ra   z OCSPResponse.critical_extensions  rb   r(   c                 V    | j                   du r| j                          | 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                 V    | j                   du r| j                          | 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88r(   c                 ,    | 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8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LG
 "L!*$ ) ) ! ! + + 9 9 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  9    6 $ > >g X X ) 
x 
#
 #6+h 6+rz # * ( .: ., ( &: & :  W:( W:t &  2D 0(  H  0 h $*z *u.X u.p!
 !. H (Z (8  	H 	[N8 [Nr(   