
    IiPJ                        S r SSKJrJrJrJr  SSKJr  SSKJ	r	J
r
  SSKJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJrJr  SSKJr  SS	KJrJ r J!r!J"r"   " S
 S\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r' " S S\5      r( " S S\5      r) " S S\5      r* " S S\5      r+ " S S\5      r, " S S\5      r- " S  S!\5      r. " S" S#\5      r/ " S$ S%\5      r0 " S& S'\5      r1 " S( S)\5      r2 " S* S+\5      r3 " S, S-\5      r4 " S. S/\5      r5 " S0 S1\5      r6 " S2 S3\5      r7 " S4 S5\5      r8 " S6 S7\5      r9 " S8 S9\5      r: " S: S;\5      r; " S< S=\5      r< " S> S?\5      r= " S@ SA\5      r> " SB SC\5      r? " SD SE\5      r@ " SF SG\5      rA " SH SI\5      rB " SJ SK\5      rC " SL SM\5      rD " SN SO\5      rE " SP SQ\5      rF " SR SS\5      rG " ST SU\5      rHgV)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                       \ rS rSrSS0rSrg)Version(   r   v1 N__name__
__module____qualname____firstlineno___map__static_attributes__r#       5/venv/lib/python3.13/site-packages/asn1crypto/ocsp.pyr    r    (   s    	4Dr+   r    c                   0    \ rS rSrS\4S\4S\4S\4/rSrg)CertId.   hash_algorithmissuer_name_hashissuer_key_hashserial_numberr#   N)	r%   r&   r'   r(   r	   r   r   _fieldsr*   r#   r+   r,   r.   r.   .   s)    	?+	[)	K(	'"	Gr+   r.   c                   $    \ rS rSrS\4S\4/rSrg)ServiceLocator7   issuerlocatorr#   N)r%   r&   r'   r(   r   r   r4   r*   r#   r+   r,   r6   r6   7   s    	4	-.Gr+   r6   c                       \ rS rSrSS0rSrg)RequestExtensionId>   z1.3.6.1.5.5.7.48.1.7service_locatorr#   Nr$   r#   r+   r,   r;   r;   >   s     1Dr+   r;   c                   <    \ rS rSrS\4S\SS04S\4/rSrS\	0r
S	rg
)RequestExtensionD   extn_idcriticaldefaultF
extn_valuerA   rD   r=   r#   N)r%   r&   r'   r(   r;   r   r   r4   	_oid_pairr6   
_oid_specsr*   r#   r+   r,   r?   r?   D   s=    	&'	Wy%01	*+G *I>Jr+   r?   c                       \ rS rSr\rSrg)RequestExtensionsQ   r#   N)r%   r&   r'   r(   r?   _child_specr*   r#   r+   r,   rI   rI   Q   s    "Kr+   rI   c                   ^    \ rS rSrS\4S\SSS.4/rSrSrSr	S	 r
\S
 5       r\S 5       rSrg)RequestU   req_certsingle_request_extensionsr   TexplicitoptionalFNc                 $   [        5       U l        U S    Hq  nUS   R                  nSU-  n[        X5      (       a  [	        XUS   R
                  5        US   R                  (       d  MV  U R                  R                  U5        Ms     SU l        g)^
Sets common named extensions to private attributes and creates a list
of critical extensions
rP   rA   	_%s_valuerD   rB   TNset_critical_extensionsnativehasattrsetattrparsedadd_processed_extensionsself	extensionnameattribute_names       r,   _set_extensionsRequest._set_extensions_   s     %(E!9:IY'..D(4/Nt,,i.E.L.LM$+++))--d3 ; &*"r+   c                 \    U R                   (       d  U R                  5         U R                  $ 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
r_   re   rY   ra   s    r,   critical_extensionsRequest.critical_extensionsq   %     ))  "(((r+   c                 X    U R                   SL a  U R                  5         U R                  $ )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)r_   re   _service_locator_valuerj   s    r,   service_locator_valueRequest.service_locator_value   *     %%.  "***r+   rY   r_   )r%   r&   r'   r(   r.   rI   r4   r_   rY   ro   re   propertyrk   rp   r*   r#   r+   r,   rM   rM   U   sc    	V	$&7aUY9Z[G
 "!*$ ) ) + +r+   rM   c                       \ rS rSr\rSrg)Requests   r#   N)r%   r&   r'   r(   rM   rK   r*   r#   r+   r,   rv   rv      s    Kr+   rv   c                       \ rS rSrSS0rSrg)ResponseType   z1.3.6.1.5.5.7.48.1.1basic_ocsp_responser#   Nr$   r#   r+   r,   ry   ry      s     5Dr+   ry   c                       \ rS rSr\rSrg)AcceptableResponses   r#   N)r%   r&   r'   r(   ry   rK   r*   r#   r+   r,   r}   r}      s    Kr+   r}   c                   *    \ rS rSrS\4S\SS04/rSrg)PreferredSignatureAlgorithm   sig_identifiercert_identifierrS   Tr#   N)r%   r&   r'   r(   r
   r   r4   r*   r#   r+   r,   r   r      s"    	01	.T0BCGr+   r   c                       \ rS rSr\rSrg)PreferredSignatureAlgorithms   r#   N)r%   r&   r'   r(   r   rK   r*   r#   r+   r,   r   r      s    -Kr+   r   c                        \ rS rSrSSSS.rSrg)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.8r#   Nr$   r#   r+   r,   r   r      s     ' 6 @Dr+   r   c                   @    \ rS rSrS\4S\SS04S\4/rSr\	\
\S.rS	rg
)TBSRequestExtension   rA   rB   rC   FrD   rE   )r   r   r   r#   N)r%   r&   r'   r(   r   r   r   r4   rF   r   r}   r   rG   r*   r#   r+   r,   r   r      sA    	)*	Wy%01	*+G *I 3*FJr+   r   c                       \ rS rSr\rSrg)TBSRequestExtensions   r#   N)r%   r&   r'   r(   r   rK   r*   r#   r+   r,   r   r      s    %Kr+   r   c                   H    \ rS rSrS\SSS.4S\SSS	.4S
\4S\SSS	.4/rSr	g)
TBSRequest   versionr   r"   rR   rC   requestor_namer   TrQ   request_listrequest_extensions   r#   N)
r%   r&   r'   r(   r    r   rv   r   r4   r*   r#   r+   r,   r   r      s@    	G!=>	;QD(IJ	"	3!QU5VW	Gr+   r   c                       \ rS rSr\rSrg)Certificates   r#   N)r%   r&   r'   r(   r   rK   r*   r#   r+   r,   r   r      s    Kr+   r   c                   2    \ rS rSrS\4S\4S\SSS.4/rSrg	)
	Signature   signature_algorithm	signaturecertsr   TrQ   r#   N)	r%   r&   r'   r(   r
   r   r   r4   r*   r#   r+   r,   r   r      s)    	 56	n%	,QD ABGr+   r   c                       \ rS rSrS\4S\SSS.4/rSrSrSr	Sr
SrS	 r\S
 5       r\S 5       r\S 5       r\S 5       rSrg)OCSPRequest   tbs_requestoptional_signaturer   TrQ   FNc                 *   [        5       U l        U S   S    Hq  nUS   R                  nSU-  n[        X5      (       a  [	        XUS   R
                  5        US   R                  (       d  MV  U R                  R                  U5        Ms     SU l        g)	rU   r   r   rA   rV   rD   rB   TNrW   r`   s       r,   re   OCSPRequest._set_extensions   s     %(E!m,-ABIY'..D(4/Nt,,i.E.L.LM$+++))--d3 C &*"r+   c                 \    U R                   (       d  U R                  5         U R                  $ rh   ri   rj   s    r,   rk   OCSPRequest.critical_extensions   rm   r+   c                 X    U R                   SL a  U R                  5         U R                  $ )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r_   re   _nonce_valuerj   s    r,   nonce_valueOCSPRequest.nonce_value  *     %%.  "   r+   c                 X    U R                   SL a  U R                  5         U R                  $ )z
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)r_   re   _acceptable_responses_valuerj   s    r,   acceptable_responses_value&OCSPRequest.acceptable_responses_value  s*     %%.  "///r+   c                 X    U R                   SL a  U R                  5         U R                  $ )a2  
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)r_   re   %_preferred_signature_algorithms_valuerj   s    r,   $preferred_signature_algorithms_value0OCSPRequest.preferred_signature_algorithms_value   s*     %%.  "999r+   rs   )r%   r&   r'   r(   r   r   r4   r_   rY   r   r   r   re   rt   rk   r   r   r   r*   r#   r+   r,   r   r      s    	
#	yqd*KLG
 "L"&,0)*$ ) ) ! ! 0 0 : :r+   r   c                   &    \ rS rSrSSSSSSS.rS	rg
)OCSPResponseStatusi1  
successfulmalformed_requestinternal_error	try_latersign_requiredunauthorized)r   r   r            r#   Nr$   r#   r+   r,   r   r   1  s    Dr+   r   c                   0    \ rS rSrS\SS04S\SS04/rSrg)	ResponderIdi<  by_namerR   r   by_keyr   r#   N)r%   r&   r'   r(   r   r   _alternativesr*   r#   r+   r,   r   r   <  s%    	D:q/*	;Q0Mr+   r   c                   *    \ rS rSrS r\S 5       rSrg)
StatusGoodiD  c                     Ub9  US:w  a3  [        U[        5      (       d  [        [        S[	        U5      5      5      eSU l        g)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ra   values     r,   rX   StatusGood.setE  sG     &E49P9PV U	   r+   c                     g)Nr   r#   rj   s    r,   rZ   StatusGood.nativeW  s    r+   r   Nr%   r&   r'   r(   rX   rt   rZ   r*   r#   r+   r,   r   r   D  s    $  r+   r   c                   *    \ rS rSrS r\S 5       rSrg)StatusUnknowni]  c                     Ub9  US:w  a3  [        U[        5      (       d  [        [        S[	        U5      5      5      eSU l        g)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,   rX   StatusUnknown.set^  sH     )!3Jud<S<SV U	   r+   c                     g)Nr   r#   rj   s    r,   rZ   StatusUnknown.nativep  s    r+   r   Nr   r#   r+   r,   r   r   ]  s    $  r+   r   c                   ,    \ rS rSrS\4S\SSS.4/rSrg)	RevokedInfoiu  revocation_timerevocation_reasonr   TrQ   r#   N)r%   r&   r'   r(   r   r   r4   r*   r#   r+   r,   r   r   u  s     	O,	iaT)JKGr+   r   c                   <    \ rS rSrS\SS04S\SS04S\SS04/rS	rg
)
CertStatusi|  r   implicitr   revokedr   r   r   r#   N)	r%   r&   r'   r(   r   r   r   r   r*   r#   r+   r,   r   r   |  s3    	j!_-	K*a1	MJ?3Mr+   r   c                   B    \ rS rSrS\SSS.4S\SSS.4S\S	SS.4/rS
rg)CrlIdi  crl_urlr   TrQ   crl_numr   crl_timer   r#   N)	r%   r&   r'   r(   r   r   r   r4   r*   r#   r+   r,   r   r     s6    	IA4@A	G!>?	_1$&GHGr+   r   c                   &    \ rS rSrSSSSSSS.rS	rg
)SingleResponseExtensionIdi  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.5r#   Nr$   r#   r+   r,   r   r     s     % 0 "&)#F
Dr+   r   c                   F    \ rS rSrS\4S\SS04S\4/rSr\	\
\\
\\S.rS	rg
)SingleResponseExtensioni  rA   rB   rC   FrD   rE   )r   r   r   r   r   r   r#   N)r%   r&   r'   r(   r   r   r   r4   rF   r   r   r   r   r   rG   r*   r#   r+   r,   r   r     sJ    	-.	Wy%01	*+G *I)**-8Jr+   r   c                       \ rS rSr\rSrg)SingleResponseExtensionsi  r#   N)r%   r&   r'   r(   r   rK   r*   r#   r+   r,   r   r     s    )Kr+   r   c            	           \ rS rSrS\4S\4S\4S\SSS.4S	\S
SS.4/rSr	Sr
SrSrSrSrSrS r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)SingleResponsei  cert_idcert_statusthis_updatenext_updater   TrQ   single_extensionsr   FNc                 $   [        5       U l        U S    Hq  nUS   R                  nSU-  n[        X5      (       a  [	        XUS   R
                  5        US   R                  (       d  MV  U R                  R                  U5        Ms     SU l        g)rU   r  rA   rV   rD   rB   TNrW   r`   s       r,   re   SingleResponse._set_extensions  s     %(E!12IY'..D(4/Nt,,i.E.L.LM$+++))--d3 3 &*"r+   c                 \    U R                   (       d  U R                  5         U R                  $ rh   ri   rj   s    r,   rk   "SingleResponse.critical_extensions  rm   r+   c                 X    U R                   SL a  U R                  5         U R                  $ )z
This extension is used to locate the CRL that a certificate's revocation
is contained within.

:return:
    None or a CrlId object
F)r_   re   
_crl_valuerj   s    r,   	crl_valueSingleResponse.crl_value  s(     %%.  "r+   c                 X    U R                   SL a  U R                  5         U R                  $ )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)r_   re   _archive_cutoff_valuerj   s    r,   archive_cutoff_value#SingleResponse.archive_cutoff_value  s*     %%.  ")))r+   c                 X    U R                   SL a  U R                  5         U R                  $ )zn
This extension indicates the reason that a certificate was revoked.

:return:
    None or a CRLReason object
F)r_   re   _crl_reason_valuerj   s    r,   crl_reason_valueSingleResponse.crl_reason_value  s*     %%.  "%%%r+   c                 X    U R                   SL a  U R                  5         U R                  $ )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)r_   re   _invalidity_date_valuerj   s    r,   invalidity_date_value$SingleResponse.invalidity_date_value
  s*     %%.  "***r+   c                 X    U R                   SL a  U R                  5         U R                  $ )zw
This extension indicates the issuer of the certificate in question.

:return:
    None or an x509.GeneralNames object
F)r_   re   _certificate_issuer_valuerj   s    r,   certificate_issuer_value'SingleResponse.certificate_issuer_value  s*     %%.  "---r+   rs   )r%   r&   r'   r(   r.   r   r   r   r4   r_   rY   r	  r  r  r  r  re   rt   rk   r
  r  r  r  r  r*   r#   r+   r,   r   r     s    	F	
#	(	aT)JK	6QTX8YZG "J ! $*$ ) )   * * 
& 
& + + 
. 
.r+   r   c                       \ rS rSr\rSrg)	Responsesi(  r#   N)r%   r&   r'   r(   r   rK   r*   r#   r+   r,   r  r  (  s     Kr+   r  c                       \ rS rSrSSS.rSrg)ResponseDataExtensionIdi,  r   extended_revoke)r   z1.3.6.1.5.5.7.48.1.9r#   Nr$   r#   r+   r,   r  r  ,  s     ' 1Dr+   r  c                   >    \ rS rSrS\4S\SS04S\4/rSr\	\
S.rS	rg
)ResponseDataExtensioni3  rA   rB   rC   FrD   rE   )r   r   r#   N)r%   r&   r'   r(   r  r   r   r4   rF   r   r   rG   r*   r#   r+   r,   r"  r"  3  s>    	+,	Wy%01	*+G *IJr+   r"  c                       \ rS rSr\rSrg)ResponseDataExtensionsiA  r#   N)r%   r&   r'   r(   r"  rK   r*   r#   r+   r,   r$  r$  A  s    'Kr+   r$  c            	       F    \ rS rSrS\SSS.4S\4S\4S\4S	\S
SS.4/r	Sr
g)ResponseDataiE  r   r   r"   r   responder_idproduced_at	responsesresponse_extensionsr   TrQ   r#   N)r%   r&   r'   r(   r    r   r   r  r$  r4   r*   r#   r+   r,   r&  r&  E  sA    	G!=>	%	(	i 	 6QTX8YZGr+   r&  c                   8    \ rS rSrS\4S\4S\4S\SSS.4/rS	r	g
)BasicOCSPResponseiO  tbs_response_datar   r   r   r   TrQ   r#   N)
r%   r&   r'   r(   r&  r
   r   r   r4   r*   r#   r+   r,   r,  r,  O  s1    	l+	 56	n%	,QD AB	Gr+   r,  c                   0    \ rS rSrS\4S\4/rSrS\0r	Sr
g)ResponseBytesiX  response_typeresponse)r0  r1  r{   r#   N)r%   r&   r'   r(   ry   r   r4   rF   r,  rG   r*   r#   r+   r,   r/  r/  X  s.    	,'	()G
 .I0Jr+   r/  c                       \ rS rSrS\4S\SSS.4/rSrSrSr	Sr
S	 r\S
 5       r\S 5       r\S 5       r\S 5       r\S 5       rSrg)OCSPResponseid  response_statusresponse_bytesr   TrQ   FNc                 J   [        5       U l        U S   S   R                  S   S    Hq  nUS   R                  nSU-  n[	        X5      (       a  [        XUS   R                  5        US   R                  (       d  MV  U R                  R                  U5        Ms     S	U l        g
)rU   r5  r1  r-  r*  rA   rV   rD   rB   TN)rX   rY   r]   rZ   r[   r\   r^   r_   r`   s       r,   re   OCSPResponse._set_extensionso  s     %(E!./
;BBCVWXmnIY'..D(4/Nt,,i.E.L.LM$+++))--d3 o &*"r+   c                 \    U R                   (       d  U R                  5         U R                  $ rh   ri   rj   s    r,   rk    OCSPResponse.critical_extensions  rm   r+   c                 X    U R                   SL a  U R                  5         U R                  $ )z
This extension is used to prevent replay attacks on the request/response
exchange

:return:
    None or an OctetString object
Fr   rj   s    r,   r   OCSPResponse.nonce_value  r   r+   c                 X    U R                   SL a  U R                  5         U R                  $ )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)r_   re   _extended_revoke_valuerj   s    r,   extended_revoke_value"OCSPResponse.extended_revoke_value  rr   r+   c                 &    U S   S   R                   $ )zr
A shortcut into the BasicOCSPResponse sequence

:return:
    None or an asn1crypto.ocsp.BasicOCSPResponse object
r5  r1  r]   rj   s    r,   r{    OCSPResponse.basic_ocsp_response  s     $%j1888r+   c                 ,    U S   S   R                   S   $ )zp
A shortcut into the parsed, ResponseData sequence

:return:
    None or an asn1crypto.ocsp.ResponseData object
r5  r1  r-  rA  rj   s    r,   response_dataOCSPResponse.response_data  s!     $%j1889LMMr+   rs   )r%   r&   r'   r(   r   r/  r4   r_   rY   r   r=  re   rt   rk   r   r>  r{   rD  r*   r#   r+   r,   r3  r3  d  s    	./	=qd*KLG
 "L!*$ ) ) ! ! + + 9 9 N Nr+   r3  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.   r6   r;   r?   rI   rM   rv   ry   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/  r3  r#   r+   r,   <module>rM     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+   