
    i[                        d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ e
rddlmZ ddl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
dlmZ e G d d                      ZdS )    )annotations)	dataclassfield)PathLike)split)TYPE_CHECKINGTextIO   )Certificate)DsaPrivateKeyEcPrivateKeyEd25519PrivateKeyRsaPrivateKey)CipherSuiteSessionTicketload_pem_private_keyload_pem_x509_certificates   )
QuicLogger)QuicProtocolVersion)PACKET_MAX_SIZEc                     e Zd ZU dZdZded<   	 dZded<   	 dZd	ed
<   	 dZded<   	 dZ	ded<   	 e
Zded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   	 dZded<   dZded<   dZded<   dZded <   dZded!<   dZded"<   dZd#ed$<    ee%          Zd&ed'<   dZd(ed)<   d*Zd	ed+<   dZd,ed-<   dZd,ed.<   dZ d/ed0<   dZ!ded1<    ed2 %          Z"d3ed4<   dZ#d,ed5<   	 	 d@dAd>Z$	 	 	 dBdCd?Z%dS )DQuicConfigurationz
    A QUIC configuration.
    Nzlist[str] | Nonealpn_protocols   intconnection_id_lengthg      N@floatidle_timeoutTbool	is_clienti   max_datamax_datagram_sizeprobe_datagram_sizemax_stream_datazQuicLogger | Nonequic_loggerr	   secrets_log_file
str | Noneserver_namezSessionTicket | Nonesession_ticketFhostname_checks_common_nameassert_fingerprintverify_hostnamebytes | NonecadatacafilecapathzX509Certificate | Nonecertificate)default_factoryzlist[X509Certificate]certificate_chainzlist[CipherSuite] | Nonecipher_suitesg?initial_rttz
int | Nonemax_datagram_frame_sizeoriginal_versionzGEcPrivateKey | Ed25519PrivateKey | DsaPrivateKey | RsaPrivateKey | Noneprivate_keyquantum_readiness_testc                 2    t           j        t           j        gS )N)r   	VERSION_1	VERSION_2     S/root/projects/butler/venv/lib64/python3.11/site-packages/qh3/quic/configuration.py<lambda>zQuicConfiguration.<lambda>v   s    ))!
 r?   z	list[int]supported_versionsverify_modecertfilestr | bytes | PathLikekeyfilestr | bytes | PathLike | Nonepasswordbytes | str | NonereturnNonec                   t          |t                    r|                                }n6t          |t                    r!t          |                                          }|`t          |t                    r|                                }n6t          |t                    r!t          |                                          }d|vrzt	          |d          5 }|                                }ddd           n# 1 swxY w Y   |<t	          |d          5 }|                                }ddd           n# 1 swxY w Y   d|v }|sdnd}t          d|z   |          }t          |d                   }t          |          d	k    r||d
         z   }	t          |	          | _
        |d         | _        |d
d         | _        |Bt          |t          |t                    r|                    d          n|          | _
        dS dS )zG
        Load a private key and the corresponding certificate.
        Ns
   -----BEGINrbs   -----
s   -----BEGIN PRIVATE KEY-----
s   -----BEGIN PRIVATE KEY-----
   
r   r
   r   utf8)rH   )
isinstancestrencoder   openreadr   r   lenr   r9   r2   r4   )
selfrD   rF   rH   fpis_crlfboundarychunkscertificatesr9   s
             r@   load_cert_chainz!QuicConfiguration.load_cert_chain}   s{    h$$ 	.((HH(++ 	.8}}++--H'3'' 0!..**GX.. 0g,,--// ((h%% %7799% % % % % % % % % % % % % % %"'4(( (B ggiiG( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (* 4,,3 	
 ux'221&)<<v;;!"VAY.K3K@@D'?!-abb!13/9(C/H/HVHOOF+++h     D s$   C88C<?C<D66D:=D:c                0    || _         || _        || _        dS )z
        Load a set of "certification authority" (CA) certificates used to
        validate other peers' certificates.
        N)r0   r1   r/   )rV   r0   r1   r/   s       r@   load_verify_locationsz'QuicConfiguration.load_verify_locations   s     r?   )NN)rD   rE   rF   rG   rH   rI   rJ   rK   )NNN)r0   r(   r1   r(   r/   r.   rJ   rK   )&__name__
__module____qualname____doc__r   __annotations__r   r   r!   r"   r   r#   r$   r%   r&   r'   r)   r*   r+   r,   r-   r/   r0   r1   r2   r   listr4   r5   r6   r7   r8   r9   r:   rB   rC   r\   r^   r>   r?   r@   r   r      s          (,N++++ !"!!!! L I H -,,,, !%$$$$ #O"""" &*K))))  $#### #K"""" ,0N//// ).----%))))) O    FFF*.K..../4uT/J/J/JJJJJ.2M2222K*.....#''''' 	      $)(((($)E
 
% % %     #K""""
 26'+	4 4 4 4 4p "!#	      r?   r   N)
__future__r   dataclassesr   r   osr   rer   typingr   r	   _hazmatr   X509Certificater   r   r   r   tlsr   r   r   r   loggerr   packetr   packet_builderr   r   r>   r?   r@   <module>rp      sf   " " " " " " ( ( ( ( ( ( ( (             ( ( ( ( ( ( ( ( X888888WWWWWWWWWWWW                  ' ' ' ' ' ' + + + + + + g g g g g g g g g gr?   