+
    i]m  c            	      s:   ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RI	H
t
 ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIHtHt ^ R	IHtHtHtH t  ^ R
I!H"t"H#t# ^ RI$H%t% ]P                  ! R^^4      t&]PN                  ]PP                  ]PR                  ]PT                  ]PV                  ]PX                  ]PZ                  ]P\                  ]P^                  3,          t0 ! R R]14      t2R R lt3R R lt4R R lt5 ! R R4      t6 ! R R4      t7 ! R R]
Pp                  4      t9 ! R R]14      t:]Pv                  t; ! R R]Px                  R7      t=]=P}                  ]Pz                  4        ! R  R!]=4      t?]P                  t@]P                  tA]P                  tB]P                  tC]P                  tD]P                  tE]P                  tF]P                  tG]P                  tH ! R" R#4      tI ! R$ R%4      tJ ! R& R'4      tK ! R( R)4      tLR* R+ ltMR# ),i    )annotationsN)Iterable)utils)x509)hashes)dsaeced448ed25519paddingrsax448x25519) CertificateIssuerPrivateKeyTypesCertificatePublicKeyTypes)	Extension
ExtensionsExtensionType_make_sequence_methods)Name	_ASN1Type)ObjectIdentifieri  c                  s.   a  ] tR t^8tR V 3R lltRtV ;t# )AttributeNotFoundc               $    V ^8  d   QhRRRRRR/# )   msgstroidr   returnNone Zformat   "=/usr/lib64/python3.14/site-packages/cryptography/x509/base.py__annotate__ZAttributeNotFound.__annotate__9   s"      C &6 4     c                	2   < \         SV `  V4       W n        R # N)super__init__r   )selfr   r   	__class__   &&&r!   r'   ZAttributeNotFound.__init__9   s    r#   )r   __name__
__module____qualname____firstlineno__r'   __static_attributes__Z__classcell__r)      @r!   r   r   8   s     r#   r   c               r   )r   	extensionzExtension[ExtensionType]
extensionslist[Extension[ExtensionType]]r   r   r   r   r    r!   r"   r"   >   s+     E E'E.E 
Er#   c                sd    V F)  pVP                   V P                   8X  g   K   \        R 4      h	  R# )z$This extension has already been set.N)r   
ValueError)r3   r4   Ze   && r!   _reject_duplicate_extensionr8   >   s*    
 55IMM!CDD r#   c               r   )r   r   r   
attributes0list[tuple[ObjectIdentifier, bytes, int | None]]r   r   r   r   r    r!   r"   r"   H   s+     E E	E@E 
Er#   c                sB    V F  w  p pW 8X  g   K  \        R 4      h	  R# )z$This attribute has already been set.N)r6   )r   r9   Zattr_oidZ_s   &&  r!   _reject_duplicate_attributer;   H   s%    
 %!Q?CDD %r#   c               s     V ^8  d   QhRRRR/# )r   timedatetime.datetimer   r   r   r    r!   r"   r"   R   s      %6 ;L r#   c                s    V P                   eI   V P                  4       pV'       d   TM\        P                  ! 4       pV P	                  RR7      V,
          # V # )zNormalizes a datetime to a naive datetime in UTC.

time -- datetime to normalize. Assumed to be in UTC if not timezone
        aware.
Ntzinfo)r?   Z	utcoffsetdatetimeZ	timedeltareplace)r<   Zoffsets   & r!   _convert_to_naive_utc_timerB   R   sG     {{!!x'9'9';||4|(611r#   c                  s    ] tR t^`t]P
                  P                  3R R llt]R R l4       t	]R R l4       tR R lt
R	 R
 ltR R ltRtR# )	Attributec               (    V ^8  d   QhRRRRRRRR/# )	r   r   r   valuebytes_typeintr   r   r   r   r    r!   r"   Attribute.__annotate__a   s2        	
 
r#   c                	*    Wn         W n        W0n        R # r%   )_oid_valuerG   )r(   r   rE   rG      &&&&r!   r'   ZAttribute.__init__a   s     	
r#   c                   V ^8  d   QhRR/# )r   r   r   r   r   r    r!   r"   rI   l   s      % r#   c                	    V P                   # r%   )rK   r(      &r!   r   ZAttribute.oidk   s    yyr#   c               rN   )r   r   rF   r   r   r    r!   r"   rI   p   s      u r#   c                	rO   r%   )rL   rP   rQ   r!   rE   ZAttribute.valueo   s    {{r#   c               rN   r   r   r   r   r   r    r!   r"   rI   s   s     D D# Dr#   c                	s>    R V P                    RV P                  : R2# )z<Attribute(oid=z, value=)>)r   rE   rP   rQ   r!   __repr__ZAttribute.__repr__s   s     
(4::.CCr#   c                    V ^8  d   QhRRRR/# )r   otherZobjectr   boolr   r   r    r!   r"   rI   v   s     
 
F 
t 
r#   c                	s    \        V\        4      '       g   \        # V P                  VP                  8H  ;'       d;    V P                  VP                  8H  ;'       d    V P
                  VP
                  8H  # r%   )
isinstancerC   ZNotImplementedr   rE   rG   )r(   rV      &&r!   __eq__ZAttribute.__eq__v   s`    %++!! HH		! * *

ekk)* *

ekk)	
r#   c               rN   r   r   rH   r   r   r    r!   r"   rI      s     8 8# 8r#   c                	sZ    \        V P                  V P                  V P                  34      # r%   )Zhashr   rE   rG   rP   rQ   r!   __hash__ZAttribute.__hash__   s     TXXtzz4::677r#   )rK   rG   rL   N)r,   r-   r.   r/   r   Z
UTF8StringrE   r'   propertyr   rT   rZ   r\   r0   r   r#   r!   rC   rC   `   sU    
 ))//	    D
8 8r#   rC   c                  sR    ] tR t^tR R lt]! R4      w  tttR R lt	R R lt
RtR	# )

Attributesc               rU   )r   r9   zIterable[Attribute]r   r   r   r   r    r!   r"   Attributes.__annotate__   s     , ,', 
,r#   c                	s&    \        V4      V n        R # r%   )Zlist_attributes)r(   r9   rY   r!   r'   ZAttributes.__init__   s      
+r#   r`   c               rN   rR   r   r   r    r!   r"   r_      s     3 3# 3r#   c                	s"    R V P                    R2# )z<Attributes(rS   r`   rP   rQ   r!   rT   ZAttributes.__repr__   s    d../r22r#   c               rU   )r   r   r   r   rC   r   r   r    r!   r"   r_      s     F F)9 Fi Fr#   c                	s^    V  F  pVP                   V8X  g   K  Vu # 	  \        R V R2V4      h)zNo z attribute was found)r   r   )r(   r   Zattrr7   r!   get_attribute_for_oidZ Attributes.get_attribute_for_oid   s5    Dxx3   #cU*> ?EEr#   ra   N)r,   r-   r.   r/   r'   r   Z__len__Z__iter__Z__getitem__rT   rb   r0   r   r#   r!   r^   r^      s+    , &<M%J"GX{3F Fr#   r^   c                  s    ] tR t^t^ t^tRtR# )Versionr   N)r,   r-   r.   r/   Zv1v3r0   r   r#   r!   rc   rc      s    	
B	
Br#   rc   c                  s.   a  ] tR t^tR V 3R lltRtV ;t# )InvalidVersionc               r   )r   r   r   parsed_versionrH   r   r   r   r   r    r!   r"   ZInvalidVersion.__annotate__   s!     - -C - - -r#   c                	r$   r%   )r&   r'   rf   )r(   r   rf   r)   r*   r!   r'   ZInvalidVersion.__init__   s    ,r#   )rf   r+   r1   r2   r!   re   re      s    - -r#   re   c                  s    ] tR t^t]]P                  R R l4       4       t]]P                  R R l4       4       t]]P                  R R l4       4       t	]]P                  R R l4       4       t
R	tR
# )RevokedCertificatec               rN   r[   r   r   r    r!   r"   RevokedCertificate.__annotate__   s      s r#   c                    R# )z7
Returns the serial number of the revoked certificate.
Nr   rP   rQ   r!   serial_numberZ RevokedCertificate.serial_number       r#   c               rN   r   r   r=   r   r   r    r!   r"   rh      s      !2 r#   c                ri   )z8
Returns the date of when this certificate was revoked.
Nr   rP   rQ   r!   revocation_dateZ"RevokedCertificate.revocation_date   rk   r#   c               rN   rl   r   r   r    r!   r"   rh      s      %6 r#   c                ri   )zT
Returns the date of when this certificate was revoked as a non-naive
UTC datetime.
Nr   rP   rQ   r!   revocation_date_utcZ&RevokedCertificate.revocation_date_utc   rk   r#   c               rN   r   r   r   r   r   r    r!   r"   rh      s      J r#   c                ri   )zG
Returns an Extensions object containing a list of Revoked extensions.
Nr   rP   rQ   r!   r4   ZRevokedCertificate.extensions   rk   r#   r   N)r,   r-   r.   r/   r]   abcZabstractmethodrj   rm   rn   r4   r0   r   r#   r!   rg   rg      s      
   
      r#   rg   )Z	metaclassc                  sz    ] tR t^tR R lt]R R l4       t]R R l4       t]R R l4       t]R	 R
 l4       t	Rt
R# )_RawRevokedCertificatec               r   )r   rj   rH   rm   r=   r4   r   r   r   r    r!   r"   #_RawRevokedCertificate.__annotate__   s(     & && +& 	&r#   c                	rJ   r%   _serial_number_revocation_date_extensionsr(   rj   rm   r4   rM   r!   r'   Z_RawRevokedCertificate.__init__        , /%r#   c               rN   r[   r   r   r    r!   r"   rr      s     # #s #r#   c                	rO   r%   )rt   rP   rQ   r!   rj   Z$_RawRevokedCertificate.serial_number   s    """r#   c               rN   rl   r   r   r    r!   r"   rr      s     % %!2 %r#   c                	sh    \         P                  ! R \        P                  ^R7       V P                  # )uk   Properties that return a naïve datetime object have been deprecated. Please switch to revocation_date_utc.)Z
stacklevel)warningsZwarnr   ZDeprecatedIn42ru   rP   rQ   r!   rm   Z&_RawRevokedCertificate.revocation_date   s.    @  		
 $$$r#   c               rN   rl   r   r   r    r!   r"   rr      s     K K%6 Kr#   c                	sj    V P                   P                  \        P                  P                  R 7      # )r>   )ru   rA   r@   ZtimezoneZutcrP   rQ   r!   rn   Z*_RawRevokedCertificate.revocation_date_utc   s(    $$,,H4E4E4I4I,JJr#   c               rN   ro   r   r   r    r!   r"   rr      s        J  r#   c                	rO   r%   )rv   rP   rQ   r!   r4   Z!_RawRevokedCertificate.extensions   s    r#   rv   ru   rt   N)r,   r-   r.   r/   r'   r]   rj   rm   rn   r4   r0   r   r#   r!   rq   rq      sY    & # # % % K K    r#   rq   c                  st    ] tR t^tR. . 3R R lltR R ltR R ltRR/R	 R
 lltRRRRR/R R llltRt	R# ) CertificateSigningRequestBuilderNc               r   )r   subject_nameName | Noner4   r5   r9   r:   r   r   r    r!   r"   -CertificateSigningRequestBuilder.__annotate__   s)     & &!& 3& E	&r#   c                s*    Wn         W n        W0n        R# )z2
Creates an empty X.509 certificate request (v1).
N)_subject_namerv   r`   )r(   r|   r4   r9   rM   r!   r'   Z)CertificateSigningRequestBuilder.__init__   s     *%%r#   c               rU   )r   namer   r   r{   r   r   r    r!   r"   r~   	  s     

 

 

*J 

r#   c                s    \        V\        4      '       g   \        R4      hV P                  e   \	        R4      h\        WP                  V P                  4      # )z6
Sets the certificate requestor's distinguished name.
Expecting x509.Name object.&The subject name may only be set once.)rX   r   	TypeErrorr   r6   r{   rv   r`   r(   r   rY   r!   r|   Z-CertificateSigningRequestBuilder.subject_name	  sS     $%%9::)EFF/""D$4$4
 	
r#   c               r   )r   extvalr   criticalrW   r   r{   r   r   r    r!   r"   r~     s$     
 
#
/3
	)
r#   c                s    \        V\        4      '       g   \        R4      h\        VP                  W!4      p\        W0P                  4       \        V P                  . V P                  OVNV P                  4      # )z5
Adds an X.509 extension to the certificate request.
"extension must be an ExtensionType)
rX   r   r   r   r   r8   rv   r{   r   r`   r(   r   r   r3      &&& r!   add_extensionZ.CertificateSigningRequestBuilder.add_extension  sm     &-00@AAfjj(;	#I/?/?@/*d*	*
 	
r#   _tagc               rD   )	r   r   r   rE   rF   r   z_ASN1Type | Noner   r{   r   r   r    r!   r"   r~   '  s2     
 

 

 
 
*
r#   c               s   \        V\        4      '       g   \        R4      h\        V\        4      '       g   \        R4      hVe"   \        V\        4      '       g   \        R4      h\        WP                  4       Ve   VP                  pMRp\        V P                  V P                  . V P                  OWV3N4      # )z;
Adds an X.509 attribute with an OID and associated value.
zoid must be an ObjectIdentifierzvalue must be bytesNztag must be _ASN1Type)rX   r   r   rF   r   r;   r`   rE   r{   r   rv   )r(   r   rE   r   Ztags   &&&$ r!   add_attributeZ.CertificateSigningRequestBuilder.add_attribute'  s     #/00=>>%''122JtY$?$?344#C)9)9:**CC/2d2S 12
 	
r#   rsa_paddingecdsa_deterministicc               0    V ^8  d   QhRRRRRRRRR	R
RR/# )r   private_keyr   	algorithm_AllowedHashTypes | Nonebackend
typing.Anyr   %padding.PSS | padding.PKCS1v15 | Noner   bool | Noner   CertificateSigningRequestr   r   r    r!   r"   r~   G  sF     !
 !
5!
 ,!
 	!
 ;!
 )!
 
#!
r#   c               s   V P                   f   \        R4      hVeg   \        V\        P                  \        P
                  34      '       g   \        R4      h\        V\        P                  4      '       g   \        R4      hVe,   \        V\        P                  4      '       g   \        R4      h\        P                  ! V VVVV4      # )z6
Signs the request using the requestor's private key.
z/A CertificateSigningRequest must have a subjectPadding must be PSS or PKCS1v15&Padding is only supported for RSA keys1Deterministic ECDSA is only supported for EC keys)r   r6   rX   r	   PSSPKCS1v15r   r
   RSAPrivateKeyr   EllipticCurvePrivateKey	rust_x509Zcreate_x509_csrr(   r   r   r   r   r      &&&&$$r!   signZ%CertificateSigningRequestBuilder.signG  s     %NOO"kGKK9I9I+JKK ABBk3+<+<== HII*k2+E+EFFG  ((
 	
r#   )r`   rv   r   r%   )
r,   r-   r.   r/   r'   r|   r   r   r   r0   r   r#   r!   r{   r{      sK     %)57GI	&


$

 "&
@!
 >B!
 ,0!
 !
r#   r{   c                  s    ] tR tRt$ R]R&   RRRRRR. 3R R lltR R ltR	 R
 ltR R ltR R lt	R R lt
R R ltR R ltRRRRR/R R llltRtR# )CertificateBuilderik  r5   rv   Nc               s8    V ^8  d   QhRRRRRRRRRR	R
R	RRRR/# )r   issuer_namer}   r|   
public_keyz CertificatePublicKeyTypes | Nonerj   
int | Nonenot_valid_beforedatetime.datetime | Nonenot_valid_afterr4   r5   r   r   r   r   r    r!   r"   CertificateBuilder.__annotate__n  sZ     & & & "& 5	&
 "& 3& 2& 3& 
&r#   c                	s    \         P                  V n        Wn        W n        W0n        W@n        WPn        W`n        Wpn	        R # r%   )
rc   rd   _version_issuer_namer   _public_keyrt   _not_valid_before_not_valid_afterrv   )r(   r   r|   r   rj   r   r   r4   s   &&&&&&&&r!   r'   ZCertificateBuilder.__init__n  s9      

')%+!1 /%r#   c               rU   r   r   r   r   r   r   r   r    r!   r"   r     s     
 
 
); 
r#   c           	     s   \        V\        4      '       g   \        R4      hV P                  e   \	        R4      h\        VV P                  V P                  V P                  V P                  V P                  V P                  4      # )z#
Sets the CA's distinguished name.
r   %The issuer name may only be set once.)rX   r   r   r   r6   r   r   r   rt   r   r   rv   r   rY   r!   r   ZCertificateBuilder.issuer_name  s{     $%%9::(DEE!""!!
 	
r#   c               rU   r   r   r   r    r!   r"   r     s     
 
 
*< 
r#   c           	     s   \        V\        4      '       g   \        R4      hV P                  e   \	        R4      h\        V P                  VV P                  V P                  V P                  V P                  V P                  4      # )z*
Sets the requestor's distinguished name.
r   r   )rX   r   r   r   r6   r   r   r   rt   r   r   rv   r   rY   r!   r|   ZCertificateBuilder.subject_name  s{     $%%9::)EFF!""!!
 	
r#   c               rU   )r   keyr   r   r   r   r   r    r!   r"   r     s     #
 #
&#
 
#
r#   c           
     s   \        V\        P                  \        P                  \
        P                  \        P                  \        P                  \        P                  \        P                  34      '       g   \        R4      hV P                   e   \#        R4      h\%        V P&                  V P(                  VV P*                  V P,                  V P.                  V P0                  4      # )zD
Sets the requestor's public key (as found in the signing request).
zExpecting one of DSAPublicKey, RSAPublicKey, EllipticCurvePublicKey, Ed25519PublicKey, Ed448PublicKey, X25519PublicKey, or X448PublicKey.z$The public key may only be set once.)rX   r   ZDSAPublicKeyr
   ZRSAPublicKeyr   ZEllipticCurvePublicKeyr   ZEd25519PublicKeyr   ZEd448PublicKeyr   ZX25519PublicKeyr   ZX448PublicKeyr   r   r6   r   r   r   rt   r   r   rv   )r(   r   rY   r!   r   ZCertificateBuilder.public_key  s         ))(($$&&""
 
 !  'CDD!""!!
 	
r#   c               rU   )r   numberrH   r   r   r   r   r    r!   r"   r     s     
 
C 
,> 
r#   c           	     st   \        V\        4      '       g   \        R4      hV P                  e   \	        R4      hV^ 8:  d   \	        R4      hVP                  4       ^8  d   \	        R4      h\        V P                  V P                  V P                  VV P                  V P                  V P                  4      # )z%
Sets the certificate serial number.
'Serial number must be of integral type.'The serial number may only be set once.z%The serial number should be positive.3The serial number should not be more than 159 bits.)rX   rH   r   rt   r6   
bit_lengthr   r   r   r   r   r   rv   r(   r   rY   r!   rj   Z CertificateBuilder.serial_number  s     &#&&EFF*FGGQ;DEE #%E  """!!
 	
r#   c               rU   r   r<   r=   r   r   r   r   r    r!   r"   r     s     
 
%6 
;M 
r#   c           	     s   \        V\        P                  4      '       g   \        R4      hV P                  e   \	        R4      h\        V4      pV\        8  d   \	        R4      hV P                  e   WP                  8  d   \	        R4      h\        V P                  V P                  V P                  V P                  VV P                  V P                  4      # )z'
Sets the certificate activation time.
Expecting datetime object.z*The not valid before may only be set once.z>The not valid before date must be on or after 1950 January 1).zBThe not valid before date must be before the not valid after date.)rX   r@   r   r   r6   rB   _EARLIEST_UTC_TIMEr   r   r   r   r   rt   rv   r(   r<   rY   r!   r   Z#CertificateBuilder.not_valid_before  s     $ 1 122899!!-IJJ)$/$$$    ,8M8M1M  "!!
 	
r#   c               rU   r   r   r   r    r!   r"   r     s     
 
$5 
:L 
r#   c           	     s   \        V\        P                  4      '       g   \        R4      hV P                  e   \	        R4      h\        V4      pV\        8  d   \	        R4      hV P                  e   WP                  8  d   \	        R4      h\        V P                  V P                  V P                  V P                  V P                  VV P                  4      # )z'
Sets the certificate expiration time.
r   z)The not valid after may only be set once.z<The not valid after date must be on or after 1950 January 1.zAThe not valid after date must be after the not valid before date.)rX   r@   r   r   r6   rB   r   r   r   r   r   r   rt   rv   r   rY   r!   r   Z"CertificateBuilder.not_valid_after  s     $ 1 122899  ,HII)$/$$N  "".---  """
 	
r#   c               r   )r   r   r   r   rW   r   r   r   r   r    r!   r"   r   !  s$     
 
#
/3
	
r#   c           
     sP   \        V\        4      '       g   \        R4      h\        VP                  W!4      p\        W0P                  4       \        V P                  V P                  V P                  V P                  V P                  V P                  . V P                  OVN4      # )z-
Adds an X.509 extension to the certificate.
r   )rX   r   r   r   r   r8   rv   r   r   r   r   rt   r   r   r   r   r!   r   Z CertificateBuilder.add_extension!  s     &-00@AAfjj(;	#I/?/?@!""!!*d*	*
 	
r#   r   r   c               r   )r   r   r   r   r   r   r   r   r   r   r   r   Certificater   r   r    r!   r"   r   7  sF     0
 0
50
 ,0
 	0
 ;0
 )0
 
0
r#   c               s   V P                   f   \        R4      hV P                  f   \        R4      hV P                  f   \        R4      hV P                  f   \        R4      hV P
                  f   \        R4      hV P                  f   \        R4      hVeg   \        V\        P                  \        P                  34      '       g   \        R4      h\        V\        P                  4      '       g   \        R4      hVe,   \        V\        P                  4      '       g   \        R	4      h\         P"                  ! V VVVV4      # )
z3
Signs the certificate using the CA's private key.
z&A certificate must have a subject namez&A certificate must have an issuer namez'A certificate must have a serial numberz/A certificate must have a not valid before timez.A certificate must have a not valid after timez$A certificate must have a public keyr   r   r   )r   r6   r   rt   r   r   r   rX   r	   r   r   r   r
   r   r   r   r   Zcreate_x509_certificater   r   r!   r   ZCertificateBuilder.sign7  s.    %EFF$EFF&FGG!!)NOO  (MNN#CDD"kGKK9I9I+JKK ABBk3+<+<== HII*k2+E+EFFG  00
 	
r#   )rv   r   r   r   r   rt   r   r   r%   )r,   r-   r.   r/   __annotations__r'   r   r|   r   rj   r   r   r   r   r0   r   r#   r!   r   r   k  sg    // $($(7;$(594857&&
$
$#
J
6
:
>
,0
 >B0
 ,00
 0
r#   r   c                  s    ] tR tRt$ R]R&   R]R&   RRR. . 3R R lltR	 R
 ltR R ltR R ltR R lt	R R lt
RRRRR/R R llltRtR# ) CertificateRevocationListBuilderij  r5   rv   list[RevokedCertificate]_revoked_certificatesNc          
     s,    V ^8  d   QhRRRRRRRRRR	/# )
r   r   r}   last_updater   next_updater4   r5   revoked_certificatesr   r   r   r    r!   r"   -CertificateRevocationListBuilder.__annotate__n  s<     : : : .: .	:
 3: 7:r#   c                	sB    Wn         W n        W0n        W@n        WPn        R # r%   )r   _last_update_next_updaterv   r   )r(   r   r   r   r4   r   s   &&&&&&r!   r'   Z)CertificateRevocationListBuilder.__init__n  s"     (''%%9"r#   c               rU   )r   r   r   r   r   r   r   r    r!   r"   r   |  s     
 

	)
r#   c                	s    \        V\        4      '       g   \        R 4      hV P                  e   \	        R4      h\        VV P                  V P                  V P                  V P                  4      # )r   r   )
rX   r   r   r   r6   r   r   r   rv   r   )r(   r   rY   r!   r   Z,CertificateRevocationListBuilder.issuer_name|  si     +t,,9::(DEE/&&
 	
r#   c               rU   )r   r   r=   r   r   r   r   r    r!   r"   r          
 
,
	)
r#   c                	s   \        V\        P                  4      '       g   \        R 4      hV P                  e   \	        R4      h\        V4      pV\        8  d   \	        R4      hV P                  e   WP                  8  d   \	        R4      h\        V P                  VV P                  V P                  V P                  4      # )r   !Last update may only be set once.8The last update date must be on or after 1950 January 1.z9The last update date must be before the next update date.)rX   r@   r   r   r6   rB   r   r   r   r   rv   r   )r(   r   rY   r!   r   Z,CertificateRevocationListBuilder.last_update  s     +x'8'899899(@AA0=++J  ([;L;L-LK  0&&
 	
r#   c               rU   )r   r   r=   r   r   r   r   r    r!   r"   r     r   r#   c                	s   \        V\        P                  4      '       g   \        R 4      hV P                  e   \	        R4      h\        V4      pV\        8  d   \	        R4      hV P                  e   WP                  8  d   \	        R4      h\        V P                  V P                  VV P                  V P                  4      # )r   r   r   z8The next update date must be after the last update date.)rX   r@   r   r   r6   rB   r   r   r   r   rv   r   )r(   r   rY   r!   r   Z,CertificateRevocationListBuilder.next_update  s     +x'8'899899(@AA0=++J  ([;L;L-LJ  0&&
 	
r#   c               r   )r   r   r   r   rW   r   r   r   r   r    r!   r"   r     s$     
 
#
/3
	)
r#   c                s$   \        V\        4      '       g   \        R4      h\        VP                  W!4      p\        W0P                  4       \        V P                  V P                  V P                  . V P                  OVNV P                  4      # )z=
Adds an X.509 extension to the certificate revocation list.
r   )rX   r   r   r   r   r8   rv   r   r   r   r   r   r   r   r!   r   Z.CertificateRevocationListBuilder.add_extension  s     &-00@AAfjj(;	#I/?/?@/*d*	*&&
 	
r#   c               rU   )r   revoked_certificaterg   r   r   r   r   r    r!   r"   r     s     
 
#5
	)
r#   c                s    \        V\        4      '       g   \        R4      h\        V P                  V P
                  V P                  V P                  . V P                  OVN4      # )z(
Adds a revoked certificate to the CRL.
z)Must be an instance of RevokedCertificate)	rX   rg   r   r   r   r   r   rv   r   )r(   r   rY   r!   add_revoked_certificateZ8CertificateRevocationListBuilder.add_revoked_certificate  sd     -/ABBGHH/>d((>*=>
 	
r#   r   r   c               r   )r   r   r   r   r   r   r   r   r   r   r   r   CertificateRevocationListr   r   r    r!   r"   r     sF     $
 $
5$
 ,$
 	$
 ;$
 )$
 
#$
r#   c               	s   V P                   f   \        R4      hV P                  f   \        R4      hV P                  f   \        R4      hVeg   \	        V\
        P                  \
        P                  34      '       g   \        R4      h\	        V\        P                  4      '       g   \        R4      hVe,   \	        V\        P                  4      '       g   \        R4      h\        P                  ! V VVVV4      # )NzA CRL must have an issuer namez"A CRL must have a last update timez"A CRL must have a next update timer   r   r   )r   r6   r   r   rX   r	   r   r   r   r
   r   r   r   r   Zcreate_x509_crlr   r   r!   r   Z%CertificateRevocationListBuilder.sign  s     $=>>$ABB$ABB"kGKK9I9I+JKK ABBk3+<+<== HII*k2+E+EFFG  ((
 	
r#   )rv   r   r   r   r   r%   )r,   r-   r.   r/   r   r'   r   r   r   r   r   r   r0   r   r#   r!   r   r   j  s\    //33 $(0404579;:

0
0
&
"$
 >B$
 ,0$
 $
r#   r   c                  s`    ] tR tRtRR. 3R R lltR R ltR R ltR	 R
 ltRR R lltRt	R# )RevokedCertificateBuilderi  Nc               r   )r   rj   r   rm   r   r4   r5   r   r   r    r!   r"   &RevokedCertificateBuilder.__annotate__  s(     & &!& 2& 3	&r#   c                	rJ   r%   rs   rw   rM   r!   r'   Z"RevokedCertificateBuilder.__init__  rx   r#   c               rU   )r   r   rH   r   r   r   r   r    r!   r"   r     s     
 
C 
,E 
r#   c                	s   \        V\        4      '       g   \        R 4      hV P                  e   \	        R4      hV^ 8:  d   \	        R4      hVP                  4       ^8  d   \	        R4      h\        WP                  V P                  4      # )r   r   z$The serial number should be positiver   )	rX   rH   r   rt   r6   r   r   ru   rv   r   rY   r!   rj   Z'RevokedCertificateBuilder.serial_number  s    &#&&EFF*FGGQ;CDD #%E  )))4+;+;
 	
r#   c               rU   )r   r<   r=   r   r   r   r   r    r!   r"   r   #  s     
 
%
	"
r#   c                	s   \        V\        P                  4      '       g   \        R 4      hV P                  e   \	        R4      h\        V4      pV\        8  d   \	        R4      h\        V P                  WP                  4      # )r   z)The revocation date may only be set once.z7The revocation date must be on or after 1950 January 1.)
rX   r@   r   ru   r6   rB   r   r   rt   rv   r   rY   r!   rm   Z)RevokedCertificateBuilder.revocation_date#  s~     $ 1 122899  ,HII)$/$$I  )'7'7
 	
r#   c               r   )r   r   r   r   rW   r   r   r   r   r    r!   r"   r   3  s$     
 
#
/3
	"
r#   c                	s    \        V\        4      '       g   \        R 4      h\        VP                  W!4      p\        W0P                  4       \        V P                  V P                  . V P                  OVN4      # )r   )
rX   r   r   r   r   r8   rv   r   rt   ru   r   r   r!   r   Z'RevokedCertificateBuilder.add_extension3  sm     &-00@AAfjj(;	#I/?/?@(!!*d*	*
 	
r#   c               rU   )r   r   r   r   rg   r   r   r    r!   r"   r   A  s     
 
Z 
3E 
r#   c                	s    V P                   f   \        R4      hV P                  f   \        R4      h\        V P                   V P                  \	        V P
                  4      4      # )Nz/A revoked certificate must have a serial numberz1A revoked certificate must have a revocation date)rt   r6   ru   rq   r   rv   )r(   r   rY   r!   buildZRevokedCertificateBuilder.buildA  se    &NOO  (C  &!!t''(
 	
r#   rz   r%   )
r,   r-   r.   r/   r'   rj   rm   r   r   r0   r   r#   r!   r   r     s+     %)4857	&
$
 

 
r#   r   c               rN   r[   r   r   r    r!   r"   r"   O  s     6 6c 6r#   c                 sd    \         P                  \        P                  ! ^4      R4      ^,	          # )i   Zbig)rH   Z
from_bytesosZurandomr   r#   r!   random_serial_numberr   O  s     >>"**R.%0A55r#   )NZ
__future__r    rp   r@   r   Ztypingry   Zcollections.abcr   Zcryptographyr   Z"cryptography.hazmat.bindings._rustr   r   Zcryptography.hazmat.primitivesr   Z)cryptography.hazmat.primitives.asymmetricr   r   r   r   r	   r
   r   r   Z/cryptography.hazmat.primitives.asymmetric.typesr   r   Zcryptography.x509.extensionsr   r   r   r   Zcryptography.x509.namer   r   Zcryptography.x509.oidr   r   ZUnionZSHA224ZSHA256ZSHA384ZSHA512ZSHA3_224ZSHA3_256ZSHA3_384ZSHA3_512Z_AllowedHashTypesZ	Exceptionr   r8   r;   rB   rC   r^   ZEnumrc   re   r   ZABCMetarg   Zregisterrq   r   r   Zload_pem_x509_certificateZload_der_x509_certificateZload_pem_x509_certificatesZload_pem_x509_csrZload_der_x509_csrZload_pem_x509_crlZload_der_x509_crlr{   r   r   r   r   r   r#   r!   <module>r      s  
 # 
  	   $  @ 1	 	 	  3 2&&tQ2  LL
MM
MM
MM
MM
OO
OO
OO
OO	 	 EE!8 !8HF F(ejj 
-Y - ##3;; @   I88 9 /  D &?? %??  &?? %?? &AA // // // // m
 m
`|
 |
~Y
 Y
xF
 F
R6r#   