
    kj                         d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZmZ ddlmZmZmZmZ ddlmZ dd	lmZ d
Ze G d d             Zy)    )	dataclassfield)PathLike)split)AnyListOptionalTextIOUnion   )CipherSuiteSessionTicketload_pem_private_keyload_pem_x509_certificates   )
QuicLogger)QuicProtocolVersioni  c            
       v   e Zd ZU dZdZeee      ed<   	 dZ	eed<   	 dZ
eed<   	 dZeed	<   	 d
Zeed<   	 dZeed<   	 eZeed<   	 dZeed<   	 dZee   ed<   	 dZeed<   	 dZee   ed<   	 dZee   ed<   	 dZeed<   	 dZee   ed<   dZee   ed<   dZee   ed<   dZ e!ed<    e"e#      Z$ee!   ed<   dZ%eee&      ed<   dZ'eed<   dZ(ee   ed<   dZ)ee   ed <   dZ*e!ed!<   d"Z+eed#<    e"d$       Z,ee   ed%<   dZ-ee   ed&<   	 	 d-d'e.d(ee.   d)ee/eef      d*dfd+Z0	 	 	 d.dee   dee   dee   d*dfd,Z1y)/QuicConfigurationz
    A QUIC configuration.
    Nalpn_protocolsrenocongestion_control_algorithm   connection_id_lengthg      N@idle_timeoutT	is_clienti   max_datamax_datagram_sizemax_stream_dataquic_loggersecrets_log_fileserver_namesession_ticket    tokencadatacafilecapathcertificate)default_factorycertificate_chaincipher_suitesg?initial_rttmax_datagram_frame_sizeoriginal_versionprivate_keyFquantum_readiness_testc                  B    t         j                  t         j                  gS )N)r   	VERSION_1	VERSION_2 r$   c/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/aioquic/quic/configuration.py<lambda>zQuicConfiguration.<lambda>t   s    ))))!
 r$   supported_versionsverify_modecertfilekeyfilepasswordreturnc                    t        |d      5 }d}t        d|z   |j                               }t        |d         }t	        |      dk(  r||d   z   }t        |      | _        ddd       d   | _        |dd | _        |Wt        |d      5 }t        |j                         t        |t              r|j                  d      n|	      | _        ddd       yy# 1 sw Y   wxY w# 1 sw Y   yxY w)
zG
        Load a private key and the corresponding certificate.
        rbs   -----BEGIN PRIVATE KEY-----
   
r   r   r   Nutf8)r<   )openr   readr   lenr   r0   r)   r+   
isinstancestrencode)	selfr:   r;   r<   fpboundarychunkscertificatesr0   s	            r6   load_cert_chainz!QuicConfiguration.load_cert_chain{   s     (D! 	ER7H58+RWWY7F5fQi@L6{a&2#7#D 	E (?!-ab!1gt$ #7GGI!(C0 &__V4!	$   	E 	E s   ACAC#C #C,c                 .    || _         || _        || _        y)z
        Load a set of "certification authority" (CA) certificates used to
        validate other peers' certificates.
        N)r'   r(   r&   )rH   r'   r(   r&   s       r6   load_verify_locationsz'QuicConfiguration.load_verify_locations   s     r$   )NN)NNN)2__name__
__module____qualname____doc__r   r	   r   rF   __annotations__r   r   intr   floatr   boolr   SMALLEST_MAX_DATAGRAM_SIZEr   r   r    r   r!   r
   r"   r#   r   r%   bytesr&   r'   r(   r)   r   r   listr+   r,   r   r-   r.   r/   r0   r1   r8   r9   r   r   rM   rO   r5   r$   r6   r   r      sM    +/NHT#Y'. )/ #. !"#! L% It Hc 8s7 #OS" )-K*%,  $f# "&K#% /3NH]+2 E5 #FHUO" FHSM  FHSM K#(#>tCy>15M8D-.5K-1Xc]1&*hsm*K#(D($)
%S	  "&K#%
 '+04	 (# 5,-	
 
< !% $"&	  	
 
r$   r   N)dataclassesr   r   osr   rer   typingr   r   r	   r
   r   tlsr   r   r   r   loggerr   packetr   rX   r   r5   r$   r6   <module>rb      sH    (   5 5   '!  P P Pr$   