
    sj	                         d dl Z d Zd Zd Zy)    Nc                 p    t        j                  t         j                        }|j                  | |       |S )N)ssl
SSLContextPROTOCOL_TLS_SERVERload_cert_chain)	cert_file	pkey_filecontexts      ?/DATA/.local/lib/python3.12/site-packages/wslink/ssl_context.pyload_ssl_contextr      s+    nnS445GIy1N    c           	      L   dd l }dd l}dd l}ddlm} |j                         \  }}|j                         \  }}	|j                  |j                  |	       |j                  |j                  |       |j                  || j                  |j                  j                               |j                  ||j                  |j                  j                  |j                  j                  |j                                      |j!                  |       |j!                  |       ||	fS )Nr   )serialization)encodingformatencryption_algorithm)atexitostempfilecryptography.hazmat.primitivesr   mkstempregisterremovewritepublic_bytesEncodingPEMprivate_bytesPrivateFormatTraditionalOpenSSLNoEncryptionclose)
certpkeyr   r   r   r   cert_handler   pkey_handler	   s
             r   save_ssl_filesr'   
   s    <%--/K%--/K
OOBIIy)
OOBIIy)HH[$++M,B,B,F,FGHHH"++// ..AA!.!;!;!= 	 	
 HH[HH[ir   c                    	 dd l }ddlm} ddlm} ddlm} ddlm} d|  d|  }|j                  d	d
      }|j                  |j                  |j                  d      |j                  |j                  |      g      }	|j!                  ddd      }
|j#                         j%                  |	      j'                  |	      j)                  |j)                               j+                  |j-                               j/                  |j                   j1                         |
z
        j3                  |j                   j1                         |
dz  z         j5                  |j7                  |j8                  g      d      j5                  |j;                  |j=                  |      g      d      j?                  ||jA                               }tC        ||      S # t        $ r d}t        |      d w xY w)Nr   )x509)hashes)rsa)NameOIDz<Using ad-hoc certificates requires the cryptography library.z*.z/CN=i  i   )public_exponentkey_sizezDummy Certificate   im  F)critical)private_key	algorithm)"datetimecryptographyr)   r   r*   )cryptography.hazmat.primitives.asymmetricr+   cryptography.x509.oidr,   ImportError	TypeErrorgenerate_private_keyNameNameAttributeORGANIZATION_NAMECOMMON_NAME	timedeltaCertificateBuildersubject_nameissuer_name
public_keyserial_numberrandom_serial_numbernot_valid_beforetodaynot_valid_afteradd_extensionExtendedKeyUsageOID_SERVER_AUTHSubjectAlternativeNameDNSNamesignSHA256r'   )hostr3   r)   r*   r+   r,   msgcnr$   subjectone_dayr#   s               r   generate_ssl_pairrT   %   s   	'%9A1 dV4v	B##ED#IDiiw88:MNw22B7	
G   Aq)G!	g		W		DOO%	&	t002	3		(++113g=	>	**002gmD	E	t,,d.B.B-CDu	U	t22DLL4D3EFQV	W	$&--/	: 	 $%%1  'Ln$&'s   G G0)r   r   r'   rT    r   r   <module>rV      s    
 6 &r   