
                        d    S SK Jr  S SKrS SKrS SKJr  S SKrS SKJrJ	r	  S SK
Jr   " S S5      rg)    )annotationsN)mock)ProxySchemeUnsupportedSSLError)ssl_c                  r   \ rS rSr\R
                  R                  S/ SQ5      SS j5       r\R
                  R                  S/ SQ5      SS j5       r    S S jr	S!S jr
S!S	 jr    S S
 jr    S S jrS!S jr\R
                  R                  / SQSSS\R                   4SS\R"                  4SS\R$                  4SSS\R                   4SS\R"                  4SS\R$                  4SSS\R                   4SS\R"                  4SS\R$                  4/5                S"S j5       r    S S jr\R
                  R                  S\R*                  \R,                  R.                  S.\R*                  \R,                  R0                  S.\R*                  \R,                  R.                  \R,                  R2                  S./5          S#S j5       r\R
                  R                  S\R6                  \R,                  R.                  S.\R8                  \R,                  R.                  S.S\R,                  R.                  S./5          S#S j5       r\R
                  R                  S\R*                  SS.\R*                  SS.\R*                  SSS./5          S#S j5       rS!S jrSr g)$TestSSL   addr)
z::1z::FE80::8939:7684:D84b:a5A4%251z	127.0.0.1z8.8.8.8s	   127.0.0.1r   s   FE80::8939:7684:D84b:a5A4%251zFE80::8939:7684:D84b:a5A4%19s   FE80::8939:7684:D84b:a5A4%19c                >    [         R                  " U5      (       d   eg Nr   is_ipaddressselfr   s     4platform/gsutil/third_party/urllib3/test/test_ssl.pytest_is_ipaddress_trueTestSSL.test_is_ipaddress_true   s    &   &&&&    )zwww.python.orgs   www.python.orgzv2.sg.media-imdb.coms   v2.sg.media-imdb.comc                >    [         R                  " U5      (       a   eg r   r   r   s     r   test_is_ipaddress_falseTestSSL.test_is_ipaddress_false#   s     $$T*****r   c                  ^ Sn[         R                  " [        R                  5      m[         R                  " 5       Tl        STl        UR                  [        SU4S j5        [        R                  " US9TL d   eTR
                  R                  S:X  d   eTR
                  R                  [         R                  " U5      :X  d   eg )NzECDH+AESGCM:ECDH+CHACHA20r   
SSLContextc                    > T$ r    ___contexts     r   <lambda>ATestSSL.test_create_urllib3_context_set_ciphers.<locals>.<lambda>6       r   )ciphers   )r   create_autospecr   r   Mockset_ciphersoptionssetattrcreate_urllib3_context
call_count	call_argscall)r   monkeypatchr%   r!   s      @r   'test_create_urllib3_context_set_ciphers/TestSSL.test_create_urllib3_context_set_ciphers/   s     .&&t7"iikD,0HI**7;wFFF""--222"",,		'0BBBBr   c                    [         R                  " SS 5         [        R                  " [        5         [
        R                  " 5         S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzurllib3.util.ssl_.SSLContext)r   patchpytestraises	TypeErrorr   r,   r   s    r   test_create_urllib3_no_context&TestSSL.test_create_urllib3_no_context=   sF    ZZ6=y)++- * >=)) >=s"   A+A	A+
A(	$A++
A9c                   [         R                  " [        R                  5      n[         R                  " 5       Ul        [         R                  " 5       n[        R                  " X!S9  UR
                  R                  5         g )N)ssl_context)r   r'   r   r   r(   load_default_certsssl_wrap_socketassert_not_called)r   r!   socks      r   4test_wrap_socket_given_context_no_load_default_certs<TestSSL.test_wrap_socket_given_context_no_load_default_certsB   sO    &&t7%)YY["yy{T7""446r   c                  ^ [         R                  " [        R                  5      m[         R                  " 5       Tl        STl        UR                  [        SU4S j5        [         R                  " 5       n[        R                  " USS9  TR
                  R                  5         TR                  R                  SS S 5        g )Nr   r   c                    > T$ r   r   r   s     r   r"   OTestSSL.test_wrap_socket_given_ca_certs_no_load_default_certs.<locals>.<lambda>R   r$   r   z/tmp/fake-file)ca_certs)r   r'   r   r   r(   r=   r*   r+   r>   r?   load_verify_locationsassert_called_withr   r0   r@   r!   s      @r   5test_wrap_socket_given_ca_certs_no_load_default_certs=TestSSL.test_wrap_socket_given_ca_certs_no_load_default_certsK   s     &&t7%)YY["D,0HIyy{T,<=""446%%889I4QUVr   c                P  ^ [         R                  " [        R                  5      m[         R                  " 5       Tl        STl        UR                  [        SU4S j5        [         R                  " 5       n[        R                  " U5        TR
                  R                  5         g )Nr   r   c                    > T$ r   r   r   s     r   r"   FTestSSL.test_wrap_socket_default_loads_default_certs.<locals>.<lambda>a   r$   r   )
r   r'   r   r   r(   r=   r*   r+   r>   rH   rI   s      @r   ,test_wrap_socket_default_loads_default_certs4TestSSL.test_wrap_socket_default_loads_default_certsZ   sl     &&t7%)YY["D,0HIyy{T"""557r   c                "   [         R                  " SS 5         [        R                  " [        5         [         R
                  " 5       n[        R                  " USS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nzurllib3.util.ssl_.SSLTransportT)
tls_in_tls)r   r4   r5   r6   r   r(   r   r>   )r   r@   s     r    test_wrap_socket_no_ssltransport(TestSSL.test_wrap_socket_no_ssltransporth   sX    ZZ8$?56yy{$$Td; 7 @?66 @?s"   B +A/B /
A=	9B  
B)phaexpected_pha	cert_reqs)NNNN)FTNFT)TTNc                *  ^ [         R                  " [        R                  5      m[         R                  " 5       Tl        STl        UTl        UR                  [        SU4S j5        [        R                  " US9TL d   eTR                  U:X  d   eg )Nr   r   c                    > T$ r   r   r   s     r   r"   9TestSSL.test_create_urllib3_context_pha.<locals>.<lambda>   r$   r   )rW   )
r   r'   r   r   r(   r)   r*   post_handshake_authr+   r,   )r   r0   rU   rV   rW   r!   s        @r   test_create_urllib3_context_pha'TestSSL.test_create_urllib3_context_phan   sv    0 &&t7"iik&)#D,0HI**Y?7JJJ**l:::r   c                $  ^ [         R                  " [        R                  5      m[         R                  " 5       Tl        STl        UR                  [        SU4S j5        [        R                  " 5         TR
                  R                  5         g )Nr   r   c                    > T$ r   r   r   s     r   r"   ETestSSL.test_create_urllib3_context_default_ciphers.<locals>.<lambda>   r$   r   )
r   r'   r   r   r(   r)   r*   r+   r,   r?   )r   r0   r!   s     @r   +test_create_urllib3_context_default_ciphers3TestSSL.test_create_urllib3_context_default_ciphers   s_     &&t7"iikD,0HI##%--/r   kwargs)ssl_versionssl_minimum_version)rd   ssl_maximum_version)rd   re   rf   c                    [         R                  " [        5       n[        R                  " S0 UD6  S S S 5        [        WR                  5      S:X  d   eg ! , (       d  f       N*= f)NzZCan't specify both 'ssl_version' and either 'ssl_minimum_version' or 'ssl_maximum_version'r   )r5   r6   
ValueErrorr   r,   strvalue)r   rc   es      r   Ftest_create_urllib3_context_ssl_version_and_ssl_min_max_version_errorsNTestSSL.test_create_urllib3_context_ssl_version_and_ssl_min_max_version_errors   sP    * ]]:&!''1&1 ' 177|h
 	
 
 '&s   A
A$c                0    [         R                  " S0 UD6  g )Nr   )r   r,   r   rc   s     r   Jtest_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_warningRTestSSL.test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_warning   s    ( 	##-f-r   c                    [         R                  " [        SS9   [        R                  " S0 UD6  S S S 5        g ! , (       d  f       g = f)Nzn'ssl_version' option is deprecated and will be removed in urllib3 v2\.1\.0\. Instead use 'ssl_minimum_version')matchr   )r5   warnsDeprecationWarningr   r,   ro   s     r   Htest_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_errorPTestSSL.test_create_urllib3_context_ssl_version_and_ssl_min_max_version_no_error   s<     \\D

 ''1&1
 
 
s	   :
Ac                    [         R                  " [        5         [        R                  " S SS9  S S S 5        g ! , (       d  f       g = f)Nz/55:39:BF:70:05:12:43:FA:1F:D1:BF:4E:E8:1B:07:1D)certfingerprint)r5   r6   r   r   assert_fingerprintr8   s    r   5test_assert_fingerprint_raises_exception_on_none_cert=TestSSL.test_assert_fingerprint_raises_exception_on_none_cert   s.    ]]8$##'X %$$s	   :
Ar   )r   zbytes | strreturnNone)r0   pytest.MonkeyPatchr~   r   )r~   r   )
r0   r   rU   bool | NonerV   r   rW   z
int | Noner~   r   )rc   zdict[str, typing.Any]r~   r   )!__name__
__module____qualname____firstlineno__r5   markparametrizer   r   r1   r9   rA   rJ   rO   rS   ssl	CERT_NONECERT_OPTIONALCERT_REQUIREDr\   ra   PROTOCOL_TLSv1
TLSVersionMINIMUM_SUPPORTEDTLSv1MAXIMUM_SUPPORTEDrl   PROTOCOL_TLSPROTOCOL_TLS_CLIENTrp   rv   r|   __static_attributes__r   r   r   r	   r	      sH   [[	
$'%$' [[	
++C-C	C.
7W-W	W8-8	8< [[,4'4**+4**+D#--(D#++,D#++,4'4**+4**+	
";'; ; "	;
 ; 
;#";"
0-
0	
0 [[  #11'*~~'G'G
  #11'*~~';';
  #11'*~~'G'G'*~~'G'G	
$
+
	
%$
 [[  #//'*~~'G'G
  #66'*~~'G'G
  $'*~~'G'G	
".+.	.#".
 [[..tL..tL"11'+'+	
2+2	22r   r	   )
__future__r   r   typingunittestr   r5   urllib3.exceptionsr   r   urllib3.utilr   r	   r   r   r   <module>r      s&    " 
    ? [ [r   