§
    öÛg9#  ã                   óª   — d dl Z d dlZd dlZddlmZ ddlmZ ddlmZ ddlm	Z	 dZ
d	Z G d
„ de	j	        ¦  «        Zedk    r ej        ¦   «          dS dS )é    Né   )Ú
exceptions)Údriver)Údbapi20é   )Útest_connectax  
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCy8veVaqL6MZVT8o0j98ggZYfibGwSN4XGC4rfineA2QZhi8t+
zrzfOS10vLXKtgiIpevHeQbDlrqFDPUDowozurg+jfro2L1jzQjZPdgqOUs+YjKh
EO0Ya7NORO7ZgBx8WveXq30k4l8DK41jvpxRyBb9aqNWG4cB7fJqVTwZrwIDAQAB
AoGAJ74URGfheEVoz7MPq4xNMvy5mAzSV51jJV/M4OakscYBR8q/UBNkGQNe2A1N
Jo8VCBwpaCy11txz4jbFd6BPFFykgXleuRvMxoTv1qV0dZZ0X0ESNEAnjoHtjin/
25mxsZTR6ucejHqXD9qE9NvFQ+wLv6Xo5rgDpx0onvgLA3kCQQDn4GeMkCfPZCve
lDUK+TpJnLYupyElZiidoFMITlFo5WoWNJror2W42A5TD9sZ23pGSxw7ypiWIF4f
ukGT5ZSzAkEAxZDwUUhgtoJIK7E9sCJM4AvcjDxGjslbUI/SmQTT+aTNCAmcIRrl
kq3WMkPjxi/QFEdkIpPsV9Kc94oQ/8b9FQJBAKHxRQCTsWoTsNvbsIwAcif1Lfu5
N9oR1i34SeVUJWFYUFY/2SzHSwjkxGRYf5I4idZMIOTVYun+ox4PjDtJrScCQEQ4
RiNrIKok1pLvwuNdFLqQnfl2ns6TTQrGfuwDtMaRV5Mc7mKoDPnXOQ1mT/KRdAJs
nHEsLwIsYbNAY5pOtfkCQDOy2Ffe7Z1YzFZXCTzpcq4mvMOPEUqlIX6hACNJGhgt
1EpruPwqR2PYDOIC4sXCaSogL8YyjI+Jlhm5kEJ4GaU=
-----END RSA PRIVATE KEY-----
aí  
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            a1:02:62:34:22:0d:45:6a
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=US, ST=Arizona, L=Nowhere, O=ACME Inc, OU=Test Division, CN=test.python.projects.postgresql.org
        Validity
            Not Before: Feb 18 15:52:20 2009 GMT
            Not After : Mar 20 15:52:20 2009 GMT
        Subject: C=US, ST=Arizona, L=Nowhere, O=ACME Inc, OU=Test Division, CN=test.python.projects.postgresql.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
            RSA Public Key: (1024 bit)
                Modulus (1024 bit):
                    00:b2:f2:f7:95:6a:a2:fa:31:95:53:f2:8d:23:f7:
                    c8:20:65:87:e2:6c:6c:12:37:85:c6:0b:8a:df:8a:
                    77:80:d9:06:61:8b:cb:7e:ce:bc:df:39:2d:74:bc:
                    b5:ca:b6:08:88:a5:eb:c7:79:06:c3:96:ba:85:0c:
                    f5:03:a3:0a:33:ba:b8:3e:8d:fa:e8:d8:bd:63:cd:
                    08:d9:3d:d8:2a:39:4b:3e:62:32:a1:10:ed:18:6b:
                    b3:4e:44:ee:d9:80:1c:7c:5a:f7:97:ab:7d:24:e2:
                    5f:03:2b:8d:63:be:9c:51:c8:16:fd:6a:a3:56:1b:
                    87:01:ed:f2:6a:55:3c:19:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier: 
                4B:2F:4F:1A:43:75:43:DC:26:59:89:48:56:73:BB:D0:AA:95:E8:60
            X509v3 Authority Key Identifier: 
                keyid:4B:2F:4F:1A:43:75:43:DC:26:59:89:48:56:73:BB:D0:AA:95:E8:60
                DirName:/C=US/ST=Arizona/L=Nowhere/O=ACME Inc/OU=Test Division/CN=test.python.projects.postgresql.org
                serial:A1:02:62:34:22:0D:45:6A

            X509v3 Basic Constraints: 
                CA:TRUE
    Signature Algorithm: md5WithRSAEncryption
        24:ee:20:0f:b5:86:08:d6:3c:8f:d4:8d:16:fd:ac:e8:49:77:
        86:74:7d:b8:f3:15:51:1d:d8:65:17:5e:a8:58:aa:b0:f6:68:
        45:cb:77:9d:9f:21:81:e3:5e:86:1c:64:31:39:b6:29:5f:f1:
        ec:b1:33:45:1f:0c:54:16:26:11:af:e2:23:1b:a6:03:46:9b:
        0e:63:ce:2c:02:41:26:93:bc:6f:6e:08:7e:95:b7:7a:f9:3a:
        5a:bd:47:4c:92:ce:ea:09:75:de:3d:bb:30:51:a0:c5:f1:5d:
        33:5f:c0:37:75:53:4e:6c:b4:3b:b1:a5:1b:fd:59:19:07:18:
        22:6a
-----BEGIN CERTIFICATE-----
MIIDhzCCAvCgAwIBAgIJAKECYjQiDUVqMA0GCSqGSIb3DQEBBAUAMIGKMQswCQYD
VQQGEwJVUzEQMA4GA1UECBMHQXJpem9uYTEQMA4GA1UEBxMHTm93aGVyZTERMA8G
A1UEChMIQUNNRSBJbmMxFjAUBgNVBAsTDVRlc3QgRGl2aXNpb24xLDAqBgNVBAMT
I3Rlc3QucHl0aG9uLnByb2plY3RzLnBvc3RncmVzcWwub3JnMB4XDTA5MDIxODE1
NTIyMFoXDTA5MDMyMDE1NTIyMFowgYoxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdB
cml6b25hMRAwDgYDVQQHEwdOb3doZXJlMREwDwYDVQQKEwhBQ01FIEluYzEWMBQG
A1UECxMNVGVzdCBEaXZpc2lvbjEsMCoGA1UEAxMjdGVzdC5weXRob24ucHJvamVj
dHMucG9zdGdyZXNxbC5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALLy
95VqovoxlVPyjSP3yCBlh+JsbBI3hcYLit+Kd4DZBmGLy37OvN85LXS8tcq2CIil
68d5BsOWuoUM9QOjCjO6uD6N+ujYvWPNCNk92Co5Sz5iMqEQ7Rhrs05E7tmAHHxa
95erfSTiXwMrjWO+nFHIFv1qo1YbhwHt8mpVPBmvAgMBAAGjgfIwge8wHQYDVR0O
BBYEFEsvTxpDdUPcJlmJSFZzu9CqlehgMIG/BgNVHSMEgbcwgbSAFEsvTxpDdUPc
JlmJSFZzu9CqlehgoYGQpIGNMIGKMQswCQYDVQQGEwJVUzEQMA4GA1UECBMHQXJp
em9uYTEQMA4GA1UEBxMHTm93aGVyZTERMA8GA1UEChMIQUNNRSBJbmMxFjAUBgNV
BAsTDVRlc3QgRGl2aXNpb24xLDAqBgNVBAMTI3Rlc3QucHl0aG9uLnByb2plY3Rz
LnBvc3RncmVzcWwub3JnggkAoQJiNCINRWowDAYDVR0TBAUwAwEB/zANBgkqhkiG
9w0BAQQFAAOBgQAk7iAPtYYI1jyP1I0W/azoSXeGdH248xVRHdhlF16oWKqw9mhF
y3ednyGB416GHGQxObYpX/HssTNFHwxUFiYRr+IjG6YDRpsOY84sAkEmk7xvbgh+
lbd6+TpavUdMks7qCXXePbswUaDF8V0zX8A3dVNObLQ7saUb/VkZBxgiag==
-----END CERTIFICATE-----
c                   óP   ‡ — e Zd ZdZddiZdZˆ fd„Zˆ fd„Zd„ Zd„ Z	d	„ Z
d
„ Zˆ xZS )Útest_ssl_connectz#
	Run test_connect, but with SSL.
	ÚsslmodeÚrequireÚ_test_ssl_connectc                 óü  •— t          ¦   «                              ¦   «          d| j        j        d<   t	          | j        j        d¦  «        5 }|                     g d¢¦  «         d d d ¦  «         n# 1 swxY w Y   t          j         	                    | j        j
        d¦  «        }t          j         	                    | j        j
        d¦  «        }t	          |d¦  «        5 }|                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          |d¦  «        5 }|                     t          ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        |d¦  «         t          j        |d¦  «         d S )	NÚonÚsslÚa)ú
z"hostnossl test nossl 0::0/0 trust
z%hostnossl test nossl 0.0.0.0/0 trust
z%hostssl test sslonly 0.0.0.0/0 trust
z"hostssl test sslonly 0::0/0 trust
z
server.keyz
server.crtÚwiÀ  )ÚsuperÚconfigure_clusterÚclusterÚsettingsÚopenÚhba_fileÚ
writelinesÚosÚpathÚjoinÚdata_directoryÚwriteÚ
server_keyÚ
server_crtÚchmod)ÚselfÚhbaÚkey_fileÚcrt_fileÚkeyÚcrtÚ	__class__s         €úV/granary/edev/quantum/lib/python3.11/site-packages/postgresql/test/test_ssl_connect.pyr   z"test_ssl_connect.configure_clusterj   sü  ø€ Ý�'„'×ÒÑÔÐØ!%€$„,Ô˜ÑÝˆDŒLÔ! 3Ñ'Ô'ð 	¨3Ø‡>‚>ð ð ð ñ ô ð ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ŒW�\Š\˜$œ,Ô5°|ÑDÔD€(ÝŒW�\Š\˜$œ,Ô5°|ÑDÔD€(ÝˆH�cÑÔð ˜cØ‡9‚9�ZÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð åˆH�cÑÔð ˜cØ‡9‚9�ZÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å„(ˆ8�UÑÔÐÝ„(ˆ8�UÑÔÐÐÐs6   ÁA/Á/A3Á6A3ÃDÄD	ÄD	Ä EÅEÅEc                 óÚ   •— t          ¦   «                              ¦   «          | j                             d¬¦  «        5 }|                     d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚtest)Úuserz-
CREATE USER nossl;
CREATE USER sslonly;
				)r   Úinitialize_databaser   Ú
connectionÚexecute)r#   Údbr)   s     €r*   r.   z$test_ssl_connect.initialize_database€   s®   ø€ Ý�'„'×ÒÑÔÐØ„|×Ò fÐÑ-Ô-ð °Ø‡:‚:ðñô ð ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ½A Á A$Á'A$c                 óˆ  — | j                              ¦   «         \  }}t          | j        ¦  «        }d|d<   	 t	          j        ddd||dœ|¤Ž |                      d¦  «         nZ# t          j        $ rH}|j	        j
        D ]0}|j        }|j        }t          |t          j        ¦  «        r|du r nŒ1‚ Y d }~nd }~ww xY wt	          j        d||ddd	œ|¤Ž5 }|                      |                     d
¦  «                             ¦   «         d¦  «         |                      |j        d¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   Únosslr,   ©r-   ÚdatabaseÚhostÚportz<successful connection to nossl user when sslmode = 'require'TÚsslonly©r6   r7   r-   r5   úselect 1r   r   © )r   ÚaddressÚdictÚparamsÚ	pg_driverÚconnectÚfailÚpg_excÚClientCannotConnectErrorr5   ÚfailuresÚerrorÚssl_negotiationÚ
isinstanceÚ AuthenticationSpecificationErrorÚassertEqualÚprepareÚfirstÚsecurity)	r#   r6   r7   r>   ÚerrÚpqÚxÚdosslÚcs	            r*   Útest_ssl_mode_requirez&test_ssl_connect.test_ssl_mode_requireŠ   sÝ  € ØŒ|×#Ò#Ñ%Ô%�*€$ˆÝ�”ÑÔ€&Ø€&ˆÑð
ÝÔð ØØØØð	ð ð
 ðð ð ð ‡9‚9ÐKÑLÔLÐLÐLøÝ	Ô	(ð 
ð 
ð 
ØŒ\Ô"ð 
ð 
€rØ
Œ€AØÔ€EÝ�!•VÔ<Ñ=Ô=ð À%È4À-À-Ø
€Uøð 
ð €U€U€U€Uøøøøð
øøøõ Ôð Ø
Ø
Ø
Øð	ð ð
 ðð ð 'ð 	Ø×Ò�A—I’I˜jÑ)Ô)×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�A”J Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 's*   ·+A# Á#B:Á2>B5Â5B:ÃAD7Ä7D;Ä>D;c                 ó’  — | j                              ¦   «         \  }}t          | j        ¦  «        }d|d<   	 t	          j        ddd||dœ|¤Ž |                      d¦  «         n_# t          j        $ rM}|j	        j
        D ]5}|j        }t          |t          j        ¦  «        rt          |d¦  «        s nŒ6‚ Y d }~nd }~ww xY wt	          j        d||ddd	œ|¤Ž5 }|                      |                     d
¦  «                             ¦   «         d¦  «         |                      |j        d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚdisabler   r8   r,   r4   z>successful connection to sslonly user with sslmode = 'disable'rF   r3   r9   r:   r   r;   )r   r<   r=   r>   r?   r@   rA   rB   rC   r5   rD   rE   rG   rH   ÚhasattrrI   rJ   rK   rL   )r#   r6   r7   r>   rM   rN   rO   rQ   s           r*   Útest_ssl_mode_disablez&test_ssl_connect.test_ssl_mode_disableª   sß  € ØŒ|×#Ò#Ñ%Ô%�*€$ˆÝ�”ÑÔ€&Ø€&ˆÑð
ÝÔð ØØØØð	ð ð
 ðð ð ð ‡9‚9ÐMÑNÔNÐNÐNøÝ	Ô	(ð 
ð 
ð 
ØŒ\Ô"ð 
ð 
€rØ
Œ€AÝ�!•VÔ<Ñ=Ô=ð ÅgÈbÐRcÑFdÔFdð à
€Uøð 
ð €U€U€U€Uøøøøð
øøøõ Ôð Ø
Ø
Ø
Øð	ð ð
 ðð ð &ð 	Ø×Ò�A—I’I˜jÑ)Ô)×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�A”J Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &s+   ·+A# Á#B?Á2AB:Â:B?ÃAD<Ä<E ÅE c                 ó  — | j                              ¦   «         \  }}t          | j        ¦  «        }d|d<   t	          j        d
d||ddœ|¤Ž5 }|                      |                     d¦  «                             ¦   «         d¦  «         |                      |j	        d¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        d
d||ddœ|¤Ž5 }|                      |j	        d¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        d
d	||ddœ|¤Ž5 }|                      |                     d¦  «                             ¦   «         d¦  «         |                      |j	        d ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚpreferr   r8   r,   ©r-   r6   r7   r5   r:   r   r   r3   r;   ©
r   r<   r=   r>   r?   r@   rI   rJ   rK   rL   ©r#   r6   r7   r>   rQ   s        r*   Útest_ssl_mode_preferz%test_ssl_connect.test_ssl_mode_preferË   s�  € ØŒ|×#Ò#Ñ%Ô%�*€$ˆÝ�”ÑÔ€&Ø€&ˆÑÝÔð Ø
Ø
Ø
Øð	ð ð
 ðð ð 'ð 	Ø×Ò�A—I’I˜jÑ)Ô)×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�A”J Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ Ôð Ø
Ø
Ø
Øð	ð ð
 ðð ð 'ð 	Ø×Ò�A”J Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'õ Ôð Ø
Ø
Ø
Øð	ð ð
 ðð ð &ð 	Ø×Ò�A—I’I˜jÑ)Ô)×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�A”J Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &ð &ð &ó8   ÁAB/Â/B3Â6B3ÃC8Ã8C<Ã?C<ÄAE=Å=FÆFc                 ó  — | j                              ¦   «         \  }}t          | j        ¦  «        }d|d<   t	          j        ddd||dœ|¤Ž5 }|                      |                     d¦  «                             ¦   «         d¦  «         |                      |j	        d ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        dd||ddœ|¤Ž5 }|                      |j	        d ¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        dd	||ddœ|¤Ž5 }|                      |                     d¦  «                             ¦   «         d¦  «         |                      |j	        d
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NÚallowr   r3   r,   r4   r:   r   rY   r8   r   r;   rZ   r[   s        r*   Útest_ssl_mode_allowz$test_ssl_connect.test_ssl_mode_allowì   sƒ  € ØŒ|×#Ò#Ñ%Ô%�*€$ˆÝ�”ÑÔ€&Ø€&ˆÑõ Ôð Ø
ØØ
Ø
ð	ð ð
 ðð ð &ð 	Ø×Ò�A—I’I˜jÑ)Ô)×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�A”J Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ Ôð Ø
Ø
Ø
Øð	ð ð
 ðð ð &ð 	Ø×Ò�A”J Ñ%Ô%Ð%ð&ð &ð &ñ &ô &ð &ð &ð &ð &ð &ð &øøøð &ð &ð &ð &õ Ôð Ø
Ø
Ø
Øð	ð ð
 ðð ð 'ð 	Ø×Ò�A—I’I˜jÑ)Ô)×/Ò/Ñ1Ô1°1Ñ5Ô5Ð5Ø×Ò�A”J Ñ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'ð 'ð 'r]   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r>   Úcluster_path_suffixr   r.   rR   rV   r\   r`   Ú__classcell__)r)   s   @r*   r
   r
   c   s¬   ø€ € € € € ðð ð �yÐ
!€Ø*Ððð ð ð ð ð,ð ð ð ð ð'ð 'ð 'ð@&ð &ð &ðB&ð &ð &ðB#'ð #'ð #'ð #'ð #'ð #'ð #'ó    r
   Ú__main__)Úsysr   ÚunittestÚ r   rB   r   r?   r   r   r    r!   r
   ra   Úmainr;   rg   r*   ú<module>rm      sÖ   ðð €
€
€
Ø 	€	€	€	Ø €€€à #Ð #Ð #Ð #Ð #Ð #Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð€
ð$B€
ðHl'ð l'ð l'ð l'ð l'�|Ô0ñ l'ô l'ð l'ð\ ˆzÒÐØ€„�„€€€ð Ðrg   