
    U-fJ                     
   d Z ddlZddlZddlmZ ddlmZ ddlZddl	m
Z
 ddlZddlZddlZddlmZ ddlmZ  ej        d          Z ej         ej        d          	          Z G d
 dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z G d dej                  Z  G d dej                  Z! G d dej                  Z" G d  d!ej                  Z#e$d"k    r1 ej%         ej&        ej'        d#d         e(gz                        dS dS )$zTests for acme.challenges.    N)mock)JWKEC)errors)	test_utilcert.pemrsa512_key.pemkeyc                       e Zd Zd ZdS )ChallengeTestc                 x    ddl m} ddl m}  |ddi          }||                    |j                  k    sJ d S )Nr   )	ChallengeUnrecognizedChallengetypefoo)acme.challengesr   r   	from_jsonjobj)selfr   r   challs       s/home/cdr/domains/dharristours.com/map/certbot/lib/python3.11/site-packages/acme/_internal/tests/challenges_test.pytest_from_json_unrecognizedz)ChallengeTest.test_from_json_unrecognized   sa    ------999999%%vuo66	++EJ77777777    N)__name__
__module____qualname__r    r   r   r   r      s#        8 8 8 8 8r   r   c                        e Zd Zd Zd Zd ZdS )UnrecognizedChallengeTestc                 N    ddl m} ddi| _         || j                  | _        d S )Nr   r   r   r   )r   r   r   r   r   r   s     r   setUpzUnrecognizedChallengeTest.setUp   s7    999999UO	**4955


r   c                 N    | j         | j                                        k    sJ d S N)r   r   to_partial_jsonr   s    r   test_to_partial_jsonz.UnrecognizedChallengeTest.test_to_partial_json$   s)    yDJ6688888888r   c                 \    ddl m} | j        |                    | j                  k    sJ d S )Nr   r   )r   r   r   r   r   r"   s     r   test_from_jsonz(UnrecognizedChallengeTest.test_from_json'   s>    999999z2<<TYGGGGGGGGr   N)r   r   r   r#   r(   r*   r   r   r   r    r       sF        6 6 6
9 9 9H H H H Hr   r    c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )%KeyAuthorizationChallengeResponseTestc                 ^    d }t          j                    | _        || j        j        _        d S )Nc                     | dk    sJ dS )Ntokenr   r   )names    r   _encodez<KeyAuthorizationChallengeResponseTest.setUp.<locals>._encode/   s    7????5r   )r   Mockr   encodeside_effect)r   r1   s     r   r#   z+KeyAuthorizationChallengeResponseTest.setUp.   s3    	 	 	 Y[[
(/
%%%r   c                     ddl m}  |d          }|                    | j        t                                                    sJ d S )Nr   !KeyAuthorizationChallengeResponsez/foo.oKGqedy-b-acd5eoybm2f-NVFxvyOoET5CNy3xnv8WYkey_authorizationr   r7   verifyr   KEY
public_keyr   r7   responses      r   test_verify_okz4KeyAuthorizationChallengeResponseTest.test_verify_ok5   s]    EEEEEE44OQ Q Qtz3>>+;+;<<<<<<<r   c                     ddl m}  |d          }|                    | j        t                                                    rJ d S )Nr   r6   z/bar.oKGqedy-b-acd5eoybm2f-NVFxvyOoET5CNy3xnv8WYr8   r:   r>   s      r   test_verify_wrong_tokenz=KeyAuthorizationChallengeResponseTest.test_verify_wrong_token;   s]    EEEEEE44OQ Q Q??4:s~~/?/?@@@@@@@r   c                     ddl m}  |d          }|                    | j        t                                                    rJ d S )Nr   r6   zfoo.oKGqedy-b-acd5eoybm2f-NVFxvr8   r:   r>   s      r   test_verify_wrong_thumbprintzBKeyAuthorizationChallengeResponseTest.test_verify_wrong_thumbprintA   s]    EEEEEE44?A A A??4:s~~/?/?@@@@@@@r   c                     ddl m}  |d          }|                    | j        t                                                    rJ d S )Nr   r6   z0.foo.oKGqedy-b-acd5eoybm2f-NVFxvyOoET5CNy3xnv8WYr8   r:   r>   s      r   test_verify_wrong_formz<KeyAuthorizationChallengeResponseTest.test_verify_wrong_formG   s^    EEEEEE44$% % % ??4:s~~/?/?@@@@@@@r   N)r   r   r   r#   r@   rB   rD   rF   r   r   r   r,   r,   ,   sj        0 0 0= = =A A AA A AA A A A Ar   r,   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )DNS01ResponseTestc                     ddl m}  |d          | _        dddd| _        ddl m}  |d	
          | _        | j                            t                    | _        d S )Nr   DNS01Responser   r8   	challengedns-01resourcer   keyAuthorizationDNS01   xxxxxxxxxxxxxxxxr/   )r   rK   msgjmsgrR   r   r?   r<   )r   rK   rR   s      r   r#   zDNS01ResponseTest.setUpQ   s    111111 =6:::# &
 
	 	*)))))U)---

++C00r   c                 D    i | j                                         k    sJ d S r%   rU   r&   r'   s    r   r(   z&DNS01ResponseTest.test_to_partial_json^   '    TX--////////r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   rJ   )r   rK   rU   r   rV   r   rK   s     r   r*   z DNS01ResponseTest.test_from_jsona   s=    111111x=2249========r   c                 `    ddl m} t          |                    | j                             d S r[   )r   rK   hashr   rV   r\   s     r   test_from_json_hashablez)DNS01ResponseTest.test_from_json_hashablee   s8    111111]$$TY//00000r   c                     t           j                            t          j        d                    }|                                }| j                            | j        d|          }|rJ d S Nzrsa256_key.pemlocal)	joseJWKRSAloadr   load_vectorr=   r?   simple_verifyr   )r   key2r=   verifieds       r   test_simple_verify_failurez,DNS01ResponseTest.test_simple_verify_failurei   s_    {	 56F G GHH__&&
=..tz7JOOr   c                     t                                           }| j                            | j        d|          }|sJ d S Nrb   )r<   r=   r?   rg   r   )r   r=   ri   s      r   test_simple_verify_successz,DNS01ResponseTest.test_simple_verify_successo   s9    ^^%%
=..tz7JOOr   N)	r   r   r   r#   r(   r*   r_   rj   rm   r   r   r   rH   rH   O   sn        1 1 10 0 0> > >1 1 1      r   rH   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	DNS01Testc                 l    ddl m}  |t          j        d                    | _        ddd| _        d S )Nr   rQ   +evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ+PCt92wr+oArT   rM   +evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAr   r/   )r   rR   rc   decode_b64joserU   rV   r   rR   s     r   r#   zDNS01Test.setUpw   sX    ))))))5t29 ;  ; < < < B
 
			r   c                 F    d| j                             d          k    sJ d S )Nz_acme-challenge.www.example.comzwww.example.comrU   validation_domain_namer'   s    r   test_validation_domain_namez%DNS01Test.test_validation_domain_name   s=    0889JKKL L L L L Lr   c                 P    d| j                             t                    k    sJ d S )N+rAa7iIg4K2y63fvUhCfy8dP1Xl7wEhmQq0oChTcE3Zk)rU   
validationr<   r'   s    r   test_validationzDNS01Test.test_validation   s6    <H$$% % % % % %r   c                 N    | j         | j                                        k    sJ d S r%   rV   rU   r&   r'   s    r   r(   zDNS01Test.test_to_partial_json   )    yDH4466666666r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   rQ   )r   rR   rU   r   rV   ru   s     r   r*   zDNS01Test.test_from_json   s;    ))))))x5??4955555555r   c                 `    ddl m} t          |                    | j                             d S r   )r   rR   r^   r   rV   ru   s     r   r_   z!DNS01Test.test_from_json_hashable   s6    ))))))U__TY''(((((r   N)	r   r   r   r#   ry   r}   r(   r*   r_   r   r   r   ro   ro   u   sq        
 
 
L L L% % %7 7 76 6 6) ) ) ) )r   ro   c                   X   e Zd Zd Zd Zd Zd Zd Z ej	        d          d             Z
 ej	        d          d             Z ej	        d          d	             Z ej	        d          d
             Z ej	        d          d             Z ej	        d          d             ZdS )HTTP01ResponseTestc                     ddl m}  |d          | _        dddd| _        ddl m}  |d	
          | _        | j                            t                    | _        d S )Nr   HTTP01Responser   r8   rL   http-01rN   HTTP01rS   rT   )r   r   rU   rV   r   r   r?   r<   )r   r   r   s      r   r#   zHTTP01ResponseTest.setUp   s    222222!>F;;;# &
 
	 	+*****V9...

++C00r   c                 D    i | j                                         k    sJ d S r%   rX   r'   s    r   r(   z'HTTP01ResponseTest.test_to_partial_json   rY   r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   r   )r   r   rU   r   rV   r   r   s     r   r*   z!HTTP01ResponseTest.test_from_json   s=    222222x>33DI>>>>>>>>r   c                 `    ddl m} t          |                    | j                             d S r   )r   r   r^   r   rV   r   s     r   r_   z*HTTP01ResponseTest.test_from_json_hashable   s8    222222^%%di0011111r   c                     t           j                            t          j        d                    }| j                            | j        d|                                           d S ra   	rc   rd   re   r   rf   r?   rg   r   r=   r   rh   s     r   (test_simple_verify_bad_key_authorizationz;HTTP01ResponseTest.test_simple_verify_bad_key_authorization   O    {	 56F G GHH##DJ9J9JKKKKKr   zacme.challenges.requests.getc                 `   | j                             t                    }t          j        |          |_        | j                            | j         dt                                                    sJ |	                    | j         
                    d          dt          j                   d S )Ntextrb   Fr;   timeout)r   r|   r<   r   	MagicMockreturn_valuer?   rg   r=   assert_called_once_withuriANY)r   mock_getr|   s      r   "test_simple_verify_good_validationz5HTTP01ResponseTest.test_simple_verify_good_validation   s    Z**3//
 $J ? ? ?}**J!1!13 3 	3 	3 	3(()@)@15 	) 	; 	; 	; 	; 	;r   c                     t          j        d          |_        | j                            | j        dt                                                    rJ d S )N!r   rb   )r   r   r   r?   rg   r   r<   r=   r   r   s     r   !test_simple_verify_bad_validationz4HTTP01ResponseTest.test_simple_verify_bad_validation   sX     $C 8 8 8=..J!1!13 3 	3 	3 	3 	3 	3r   c                 x   ddl m} t          j        | j                            t                    |j        z             |_        | j	        
                    | j        dt                                                    sJ |                    | j                            d          dt          j                   d S )Nr   r   r   rb   Fr   )r   r   r   r   r   r|   r<   WHITESPACE_CUTSETr   r?   rg   r=   r   r   r   )r   r   r   s      r   (test_simple_verify_whitespace_validationz;HTTP01ResponseTest.test_simple_verify_whitespace_validation   s    222222 $*'',, 23!5 !5 !5 }**J!1!13 3 	3 	3 	3(()@)@15 	) 	; 	; 	; 	; 	;r   c                     t           j        j        |_        | j                            | j        dt                                                    rJ d S rl   )	requests
exceptionsRequestExceptionr4   r?   rg   r   r<   r=   r   s     r   #test_simple_verify_connection_errorz6HTTP01ResponseTest.test_simple_verify_connection_error   sQ    '2C=..J!1!13 3 	3 	3 	3 	3 	3r   c                     | j                             | j        dt                                          d           dt          j        |j        d         d         d                   j        k    sJ d S )Nrb   i  )domainaccount_public_keyportz
local:8080r      )	r?   rg   r   r<   r=   urllib_parseurlparse
mock_callsnetlocr   s     r   test_simple_verify_portz*HTTP01ResponseTest.test_simple_verify_port   s    ##Jw"~~//d 	$ 	< 	< 	< |4"1%a( *  **01 1 1 1 1 1r   c                    | j                             | j        dt                                                     |                    | j                            d          dd           |                                 | j                             | j        dt                                          d           |                    | j                            d          dd           d S )Nrb   F   r   i  )r   )r?   rg   r   r<   r=   r   r   
reset_mockr   s     r   test_simple_verify_timeoutz-HTTP01ResponseTest.test_simple_verify_timeout   s    ##DJ9I9IJJJ(()@)@13 	) 	5 	5 	5##DJ9I9ISW#XXX(()@)@15 	) 	7 	7 	7 	7 	7r   N)r   r   r   r#   r(   r*   r_   r   r   patchr   r   r   r   r   r   r   r   r   r   r      sX       1 1 10 0 0? ? ?2 2 2L L L TZ.//; ; 0/; TZ.//3 3 0/3
 TZ.//; ; 0/; TZ.//3 3 0/3
 TZ.//1 1 0/1 TZ.//7 7 0/7 7 7r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
HTTP01Testc                 l    ddl m}  |t          j        d                    | _        ddd| _        d S )Nr   r   rq   rT   r   rr   rs   )r   r   rc   rt   rU   rV   r   r   s     r   r#   zHTTP01Test.setUp   s\    ******6%=? ?@ @ @ B
 
			r   c                 *    | j         j        dk    sJ d S )NzG/.well-known/acme-challenge/evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oA)rU   pathr'   s    r   	test_pathzHTTP01Test.test_path   s3    x} !G G G G G G Gr   c                 F    d| j                             d          k    sJ d S )NzYhttp://example.com/.well-known/acme-challenge/evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oAexample.com)rU   r   r'   s    r   test_urizHTTP01Test.test_uri   s6    :HLL''( ( ( ( ( (r   c                 N    | j         | j                                        k    sJ d S r%   r   r'   s    r   r(   zHTTP01Test.test_to_partial_json   r   r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   r   )r   r   rU   r   rV   r   s     r   r*   zHTTP01Test.test_from_json   s=    ******x6++DI66666666r   c                 `    ddl m} t          |                    | j                             d S r   )r   r   r^   r   rV   r   s     r   r_   z"HTTP01Test.test_from_json_hashable  s8    ******Vdi(()))))r   c                 f    | j         j        sJ | j                             d          j        rJ d S )Ns   ..rT   )rU   
good_tokenupdater'   s    r   test_good_tokenzHTTP01Test.test_good_token  s8    x""""8???//::::::r   N)
r   r   r   r#   r   r   r(   r*   r_   r   r   r   r   r   r      s        
 
 
G G G( ( (
7 7 77 7 7* * *; ; ; ; ;r   r   c                   
   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej        d
d          d             Z ej        d           ej        d          d                         Z ej        d          d             ZdS )TLSALPN01ResponseTestc                     ddl m}  |t          j        d                    | _        d| _        d| _        | j                            t                    | _        dd| j        j	        d	| _
        d S )
Nr   	TLSALPN01s    a82d5ff8ef740d12881f6d3c2277ab2erT   r   zexample2.comrL   tls-alpn-01rN   )r   r   rc   	b64decoder   r   domain2r?   r<   r9   rV   r   r   s     r   r#   zTLSALPN01ResponseTest.setUp  s    ------Y.!DEEG G G
$&
++C00#! $ ?
 
			r   c                 D    i | j                                         k    sJ d S r%   )r?   r&   r'   s    r   r(   z*TLSALPN01ResponseTest.test_to_partial_json  s'    T]2244444444r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   )TLSALPN01Response)r   r   r?   r   rV   r   r   s     r   r*   z$TLSALPN01ResponseTest.test_from_json  s>    555555} 1 ; ;DI F FFFFFFFr   c                 `    ddl m} t          |                    | j                             d S r   )r   r   r^   r   rV   r   s     r   r_   z-TLSALPN01ResponseTest.test_from_json_hashable!  s9    555555((3344444r   c                     t          j        d          }| j                            | j        |          \  }}||k    sJ | j                            | j        |          sJ d S Nr   )r   load_pyopenssl_private_keyr?   gen_certr   verify_certr   key1certrh   s       r   test_gen_verify_certz*TLSALPN01ResponseTest.test_gen_verify_cert%  sc    34DEE]++DK>>
dt||||}((d;;;;;;;r   c                     | j                             | j                  \  }}t          |t          j        j                  sJ | j                             | j        |          sJ d S r%   )r?   r   r   
isinstanceOpenSSLcryptoPKeyr   )r   r   r
   s      r   test_gen_verify_cert_gen_keyz2TLSALPN01ResponseTest.test_gen_verify_cert_gen_key+  s^    M**4;77	c#w~233333}((d;;;;;;;r   c                 n    | j                             | j        t          j        d                    rJ d S )Nr   )r?   r   r   r   	load_certr'   s    r   test_verify_bad_certz*TLSALPN01ResponseTest.test_verify_bad_cert0  sB    =,,T[
++- - 	- 	- 	- 	- 	-r   c                     t          j        d          }| j                            | j        |          \  }}||k    sJ | j                            | j        |          rJ d S r   )r   r   r?   r   r   r   r   r   s       r   test_verify_bad_domainz,TLSALPN01ResponseTest.test_verify_bad_domain4  sc    34DEE]++DK>>
dt||||=,,T\4@@@@@@@r   c                     t           j                            t          j        d                    }| j                            | j        d|                                           d S ra   r   r   s     r   r   z>TLSALPN01ResponseTest.test_simple_verify_bad_key_authorization:  r   r   z-acme.challenges.TLSALPN01Response.verify_certT)autospecc                 X   t           j        j        |_        t           j        j        | j                            | j        | j        t          	                                t           j        j
                  k    sJ |                    | j        | j        t           j        j
                   d S )N)r   )r   sentinelverificationr   r?   rg   r   r   r<   r=   r   r   )r   mock_verify_certs     r   test_simple_verifyz(TLSALPN01ResponseTest.test_simple_verify>  s    (,(B%})T]-H-H
DK)9)9]' .I .) .) ) ) ) ) 	00M4;(:	< 	< 	< 	< 	<r   z$acme.challenges.socket.gethostbynamez%acme.challenges.crypto_util.probe_snic                 :   d|_         | j                            d           |                    d           |                    d| j        j        ddg           | j                            dd           |                    d	t          j        ddg           d S )
Nz	127.0.0.1zfoo.coms	   127.0.0.1s   foo.coms
   acme-tls/1)hostr   r0   alpn_protocolsz8.8.8.8)r   s   8.8.8.8)r   r?   
probe_certr   PORTassert_called_withr   r   )r   mock_probe_snimock_gethostbynames      r   test_probe_certz%TLSALPN01ResponseTest.test_probe_certG  s     +6'  +++229===..DM$6Z)? 	/ 	, 	, 	, 	   ;;;))$()? 	* 	, 	, 	, 	, 	,r   z,acme.challenges.TLSALPN01Response.probe_certc                     t           j        |_        | j                            | j        | j        t                                                    rJ d S r%   )	r   Errorr4   r?   rg   r   r   r<   r=   )r   mock_probe_certs     r   'test_simple_verify_false_on_probe_errorz=TLSALPN01ResponseTest.test_simple_verify_false_on_probe_errorV  sO    &,l#=..JS^^%5%57 7 	7 	7 	7 	7 	7r   N)r   r   r   r#   r(   r*   r_   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   
  s>       
 
 
5 5 5G G G5 5 5< < << < <
- - -A A AL L L TZ?$OOO< < PO< TZ677TZ788, , 98 87, TZ>??7 7 @?7 7 7r   r   c                   ^    e Zd Zd Zd Zd Zd Zd Z ej	        d          d             Z
dS )	TLSALPN01Testc                 l    ddl m}  |t          j        d                    | _        ddd| _        d S )Nr   r    a82d5ff8ef740d12881f6d3c2277ab2erT   r   rs   )r   r   rc   r   rU   rV   r   s     r   r#   zTLSALPN01Test.setUp_  sW    ------9.!CDDF F F "7
 
			r   c                 N    | j         | j                                        k    sJ d S r%   r   r'   s    r   r(   z"TLSALPN01Test.test_to_partial_jsonh  r   r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   r   )r   r   rU   r   rV   r   s     r   r*   zTLSALPN01Test.test_from_jsonk  s=    ------x9..ty99999999r   c                 `    ddl m} t          |                    | j                             d S r  )r   r   r^   r   rV   r   s     r   r_   z%TLSALPN01Test.test_from_json_hashableo  s8    ------Y  ++,,,,,r   c                     ddl m} t          j        d          | j        d<   t          j        t          j                  5  |                    | j                   d d d            d S # 1 swxY w Y   d S )Nr   r   s   abcdr/   )	r   r   rc   encode_b64joserV   pytestraisesDeserializationErrorr   r   s     r   #test_from_json_invalid_token_lengthz1TLSALPN01Test.test_from_json_invalid_token_lengths  s    ------!099	']4455 	+ 	+	***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   A))A-0A-z*acme.challenges.TLSALPN01Response.gen_certc                 
   d|_         d| j                            t          t          j        j        t          j        j                  k    sJ |                    t          j        j        t          j        j                   d S )N)r   r
   )cert_keyr   )r
   r   )	r   rU   r|   r<   r   r   r  r   r   )r   mock_gen_certs     r   r}   zTLSALPN01Test.test_validationy  s    %4"$("5"5$-09M #6 #O #O O O O O--$-2H59]5I 	. 	K 	K 	K 	K 	Kr   N)r   r   r   r#   r(   r*   r_   r  r   r   r}   r   r   r   r  r  ]  s        
 
 
7 7 7: : :- - -+ + + TZ<==K K >=K K Kr   r  c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )DNSTestc                 l    ddl m}  |t          j        d                    | _        ddd| _        d S )Nr   DNS+   evaGxfADs6pSRb2LAv9IZf17Dt3juxGJ-PCt92wr-oArT   dnsrr   rs   )r   r  rc   r   rU   rV   r   r  s     r   r#   zDNSTest.setUp  sW    ''''''3T^:< < = = = B
 
			r   c                 N    | j         | j                                        k    sJ d S r%   r   r'   s    r   r(   zDNSTest.test_to_partial_json  r   r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   r  )r   r  rU   r   rV   r  s     r   r*   zDNSTest.test_from_json  s;    ''''''x3==33333333r   c                 `    ddl m} t          |                    | j                             d S r!  )r   r  r^   r   rV   r  s     r   r_   zDNSTest.test_from_json_hashable  s6    ''''''S]]49%%&&&&&r   c                    t          t          j        d                    }t          t          j        f|t          j        ffD ]~\  }}|                     ||          5  | j        	                    | j        
                    ||          |                                          sJ 	 d d d            n# 1 swxY w Y   d S )Nec_secp384r1_key.pemr	   )r
   algr%  )r   r   load_ecdsa_private_keyr<   rc   RS256ES384subTestrU   check_validationgen_validationr=   )r   ec_key_secp384r1r
   r%  s       r   test_gen_check_validationz!DNSTest.test_gen_check_validation  s$    Y%EF\%]%]^^^tz*-=tz,JK 	M 	MHC#3// M Mx00H++CS+993>>;K;KM M M M M MM M M M M M M M M M M M M M M	M 	Ms    A
B77B;	>B;	c                     t           j                            t          j        d                    }| j                            | j                            t                    |	                                          rJ d S )Nzrsa1024_key.pem)
rc   rd   re   r   rf   rU   r+  r,  r<   r=   r   s     r   #test_gen_check_validation_wrong_keyz+DNSTest.test_gen_check_validation_wrong_key  sp    {	 56G H HII8,,H##C(($//*;*;= = 	= 	= 	= 	= 	=r   c                     t          d dD                       }|D ]6}| j                            |t                                                    rJ 7d S )Nc              3   x   K   | ]5}t           j                            |t           j        t                     V  6dS )payloadr%  r
   N)rc   JWSsignr(  r<   ).0r4  s     r   	<genexpr>z>DNSTest.test_check_validation_wrong_payload.<locals>.<genexpr>  sL       
 
 HMM'tzsMCC
 
 
 
 
 
r   )r      {})tuplerU   r+  r<   r=   )r   validationsr|   s      r   #test_check_validation_wrong_payloadz+DNSTest.test_check_validation_wrong_payload  s     
 
'
 
 
 
 
 & 	. 	.Jx00CNN,,. . . . . .	. 	.r   c                 L   t           j                            | j                            d                                                              d          t           j        t                    }| j        	                    |t          
                                          rJ d S )Ns   xxxxxxxxxxxxxxxxxxxxrT   zutf-8r3  )rc   r5  r6  rU   r   
json_dumpsr3   r(  r<   r+  r=   )r   bad_validations     r   "test_check_validation_wrong_fieldsz*DNSTest.test_check_validation_wrong_fields  s    HOO $ ! !!+ffWoo
 ' % % 8,,^S^^=M=MNNNNNNNr   c                 0   t          j        d          5 }t           j        j        |_        | j                            t                    }d d d            n# 1 swxY w Y   ddlm	} t          ||          sJ |j        t           j        j        k    sJ d S )Nz"acme.challenges.DNS.gen_validationr   DNSResponse)r   r   r   r|   r   rU   gen_responser<   r   rC  r   )r   mock_genr?   rC  s       r   test_gen_responsezDNSTest.test_gen_response  s    Z<== 	2$(M$<H!x,,S11H	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	0/////(K00000"dm&>>>>>>>s   6AAAc                 F    d| j                             d          k    sJ d S )Nz_acme-challenge.le.wtfzle.wtfrw   r'   s    r   ry   z#DNSTest.test_validation_domain_name  s)    '48+J+J8+T+TTTTTTTr   c                     t          t          j        d                    }| j                            | j                            |t          j                  |                                          du sJ d S )Nr$  r	   r&  T)	r   r   r'  rU   r+  r,  rc   r)  r=   )r   r-  s     r   !test_validation_domain_name_ecdsaz)DNSTest.test_validation_domain_name_ecdsa  s     Y%EF\%]%]^^^x((H##$4$*#EE''))+ +.23 3 3 3 3 3r   N)r   r   r   r#   r(   r*   r_   r.  r0  r<  r@  rF  ry   rI  r   r   r   r  r    s        
 
 
7 7 74 4 4' ' 'M M M= = =
. . .O O O? ? ?U U U3 3 3 3 3r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )DNSResponseTestc                    ddl m}  |t          j        d                    | _        t          j                            | j                            d                                          t          t          j
                  | _        ddl m}  || j        	          | _        d
| j        i| _        dd| j                                        d| _        d S )Nr   r  r  rT   T)	sort_keys)r4  r
   r%  rB  )r|   r|   rL   r  )rO   r   r|   )r   r  rc   r   r   r5  r6  r>  r3   r<   r(  r|   rC  rU   jmsg_toto_json	jmsg_from)r   r  rC  s      r   r#   zDNSResponseTest.setUp  s    ''''''St~: <  < = = =
(--J))D)99@@BB ( % % 	0/////;$/:::$/
 $/1133
 
r   c                 N    | j         | j                                        k    sJ d S r%   )rN  rU   r&   r'   s    r   r(   z$DNSResponseTest.test_to_partial_json  s)    |tx7799999999r   c                 \    ddl m} | j        |                    | j                  k    sJ d S Nr   rB  )r   rC  rU   r   rP  r   rC  s     r   r*   zDNSResponseTest.test_from_json  s=    //////x;00@@@@@@@@r   c                 `    ddl m} t          |                    | j                             d S rS  )r   rC  r^   r   rP  rT  s     r   r_   z'DNSResponseTest.test_from_json_hashable  s8    //////[""4>2233333r   c                 x    | j                             | j        t                                                    sJ d S r%   )rU   r+  r   r<   r=   r'   s    r   test_check_validationz%DNSResponseTest.test_check_validation  s2    x((S^^5E5EFFFFFFFr   N)r   r   r   r#   r(   r*   r_   rW  r   r   r   rK  rK    sg        
 
 
&: : :A A A4 4 4G G G G Gr   rK  c                       e Zd ZdZd ZdS )JWSPayloadRFC8555CompliantzFTest for RFC8555 compliance of JWS generated from resources/challengesc                     ddl m}  |            }|                    d                                          }|dk    sJ d S )Nr   r      )indentr9  )r   r   r>  r3   )r   r   challenge_bodyr   s       r   test_challenge_payloadz1JWSPayloadRFC8555Compliant.test_challenge_payload  sT    222222'))(((2299;;u}}}}}}r   N)r   r   r   __doc__r^  r   r   r   rY  rY    s)        PP    r   rY  __main__r   ))r_  sysunittestr   urllib.parseparser   josepyrc   
josepy.jwkr   r   r  r   acmer   acme._internal.testsr   load_comparable_certCERTrd   load_rsa_private_keyr<   TestCaser   r    r,   rH   ro   r   r   r   r  r  rK  rY  r   exitmainargv__file__r   r   r   <module>rq     sy       



        # # # # # #                    * * * * * *%y%j11dk4i45EFFGGG8 8 8 8 8H% 8 8 8H H H H H 1 H H H A  A  A  A  AH,=  A  A  AF# # # # #) # # #L) ) ) ) )! ) ) )>N7 N7 N7 N7 N7* N7 N7 N7b"; "; "; "; ";" "; "; ";JP7 P7 P7 P7 P7H- P7 P7 P7f"K "K "K "K "KH% "K "K "KJA3 A3 A3 A3 A3h A3 A3 A3H!G !G !G !G !Gh' !G !G !GH	 	 	 	 	!2 	 	 	 zCH[V[!""
23344444 r   