
    b#                     ^    d Z ddlmZ ddlmZmZ ddlZ G d dej        j                  Z	dS )zTests for GENSEC.

Note that this just tests the bindings work. It does not intend to test
the functionality, that's already done in other tests.
    )Credentials)gensecauthNc                   t     e Zd Z fdZd Zd Zd ZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Z xZS )GensecTestsc                    t          t          |                                            i | _        t          j                                        x| j        d<   | _        | j                            d          | j        d<   | j        	                    dd           	 t          j                            | j                  | _
        d S )Nlp_ctxznetbios nametarget_hostnamespnego:simulate_w2kno)superr   setUpsettingssambatestsenv_loadparmr	   getsetr   Securitystart_client)self	__class__s    4/usr/lib/python3/dist-packages/samba/tests/gensec.pyr   zGensecTests.setUp   s    k4  &&(((050H0H0J0JJh$++/;??>+J+J'(-t444,o224=AA    c                 R    |                      t          | j        j        d           d S )Nfoo)assertRaisesRuntimeErrorr   start_mech_by_namer   s    r   test_start_mech_by_unknown_namez+GensecTests.test_start_mech_by_unknown_name)   s%    ,(FNNNNNr   c                 :    | j                             d           d S )Nspnego)r   r   r    s    r   test_start_mech_by_namez#GensecTests.test_start_mech_by_name,   s    &&x00000r   c                 P    |                      t          | j        j                   d S )N)r   r   r   session_infor    s    r   test_info_uninitializedz#GensecTests.test_info_uninitialized/   s#    ,(@AAAAAr   Nc                    	 |r9| j                             |          }|sd}| j                             |d           t          j                            | j                  | _        | j                            | 	                                           | j        
                    t          j                   || j                            |           n| j                            |           |r| j                             |d           t          j                            | j        t          j        | j                             | _        t%                      }|                    | j                    |                    | j                    | j                            |           | j        
                    t          j                   | j                            |           d}d}d}d}		 	 |s|r| j                             |d           t+          d
           	 | j                            |          \  }}	n&# t.          j        $ r}
t3          |
          d}
~
ww xY w|r| j                             |d           |sTt+          d           	 | j                            |	          \  }}n&# t.          j        $ r}
t3          |
          d}
~
ww xY w|r|rn|r| j                             ||           |                     |           |                     |           | j                                        }d}	 | j                            |          }| j                            |          }n># t.          j        $ r,}|                     t?          |                     Y d}~nd}~ww xY w|                      ||           d}| j                            |          }| j                            |          }|                      ||           | j        !                                }| j        !                                }|                      ||           dS )JTest GENSEC by doing an exchange with ourselves using GSSAPI against a KDC yesNr   r	   r   auth_contextFr   Tzrunning client gensec_updatezrunning server gensec_update   Hello Server   Hello Client)"r	   r   r   r   r   r   r   gensec_clientset_credentialsget_credentialswant_featureFEATURE_SEALr   start_mech_by_sasl_namestart_serverr   AuthContextgensec_serverr   guessset_machine_accountprintupdater   NTSTATUSErrorAssertionError
assertTruer&   wrapunwrapfailstrassertEqualsession_key)r   mechclient_mechclient_only_optorig_client_optcredsclient_finishedserver_finishedserver_to_clientclient_to_serverntr&   
test_bytestest_wrappedtest_unwrappedeclient_session_keyserver_session_keys                     r   _test_updatezGensecTests._test_update2   sr    	O 	4"kooo>>O" %"$KOOOU333#_99$-HH**4+?+?+A+ABBB''(;<<<"11+>>>>66t<<< 	3KOOOT222#_994=GKGW_c_jGkGkGk : m mDK   !!$+...**5111''(;<<<224888&	" 	;" <KOOOU;;;4555-:>:L:S:STd:e:e7_&6&6* - - -(,,,-" ;KOOOT:::" -4555-:>:L:S:STd:e:e7_&6&6* - - -(,,,-  ? '	*  	>KOOO_===(((((()6688$
	-22:>>L!/66|DDNN" 	 	 	IIc!ff	 	^444$
)..z::+22<@@^444!/;;==!/;;==+-?@@@@@sH    H> >I!II!J1 1K KK 4M5 5N0"N++N0c                 0    |                      d           d S )NGSSAPIrW   r    s    r   test_updatezGensecTests.test_update   s    (#####r   c                 0    |                      d           d S )N
GSS-SPNEGOrZ   r    s    r   test_update_spnegozGensecTests.test_update_spnego   s    ,'''''r   c                 4    |                      ddd           d S )Nr]   r#   zgensec:gssapi_krb5rZ   r    s    r   test_update_spnego_downgradez(GensecTests.test_update_spnego_downgrade   s!    ,2FGGGGGr   c                 4    |                      ddd           d S )Nr]   r#   zspnego:client_no_optimisticrZ   r    s    r    test_update_no_optimistic_spnegoz,GensecTests.test_update_no_optimistic_spnego   s!    ,2OPPPPPr   c                     | j                             dd           t          j                            | j                  | _        | j                             dd           |                     d           d S )Nr   r+   r   r]   r	   r   r   r   r   r   rW   r    s    r   test_update_w2k_spnego_clientz)GensecTests.test_update_w2k_spnego_client   sg    -u555 o224=AA 	-t444,'''''r   c                     t           j                            | j                  | _         | j                            dd           |                     d           d S )Nr   r+   r]   )r   r   r   r   r	   r   rW   r    s    r   test_update_w2k_spnego_serverz)GensecTests.test_update_w2k_spnego_server   sN    o224=AA 	-u555,'''''r   c                     | j                             dd           t          j                            | j                  | _        |                     d           d S )Nr   r   r]   rd   r    s    r   test_update_w2k_spnegoz"GensecTests.test_update_w2k_spnego   sN    -t444 o224=AA,'''''r   c                 2    |                      dd           d S )Nr]   gssapi_krb5rZ   r    s    r   test_update_gss_krb5_to_spnegoz*GensecTests.test_update_gss_krb5_to_spnego   s    ,66666r   c                 2    |                      dd           d S )Nr]   ntlmssprZ   r    s    r   test_update_ntlmssp_to_spnegoz)GensecTests.test_update_ntlmssp_to_spnego   s    ,	22222r   c                    	 t           j                            | j                  | _        | j                            |                                            | j                            t           j                   | j        	                    d           | j        
                    d           t           j                            | j        t          j        | j                            | _        t!                      }|                    | j                   |                    | j                   | j                            |           | j                            t           j                   | j        	                    d           | j        
                    d           d}d}d}	 d}|r|s|dz  }|s>t'          d	t)          |          |fz             | j                            |          \  }}|s>t'          d
t)          |          |fz             | j                            |          \  }}||	 |                     |dk               | j                                        }d}| j                            |          }	| j                            |	          }
|                     ||
           d}| j                            |          }	| j                            |	          }
|                     ||
           | j                                        }| j                                        }|                     ||           dS )r)      r#   r,   r-   Fr   r      z$running client gensec_update: %d: %rz$running server gensec_update: %d: %r
   r/   r0   N)r   r   r   r   r1   r2   r3   r4   FEATURE_SIGNset_max_update_sizer   r7   r   r8   r	   r9   r   r:   r;   r<   lenr=   r@   r&   rA   rB   rE   rF   )r   rK   rL   rM   rN   irO   r&   rQ   rR   rS   rU   rV   s                r   test_max_update_sizez GensecTests.test_max_update_size   s6    	O#_99$-HH**4+?+?+A+ABBB''(;<<<..q111--h777#_994=GKGW_c_jGkGkGk : m mDK   !!$+...**5111''(;<<<..q111--h777&! 	b 	bFA" b<DT@U@UWg?hhiii6:6H6O6OP`6a6a3"2" b<DT@U@UWg?hhiii6:6H6O6OP`6a6a3"2 " 	b 	b 	KB)6688$
)..z::+22<@@^444$
)..z::+22<@@^444!/;;==!/;;==+-?@@@@@r   )NN)__name__
__module____qualname__r   r!   r$   r'   rW   r[   r^   r`   rb   re   rg   ri   rl   ro   rx   __classcell__)r   s   @r   r   r      s0       B B B B BO O O1 1 1B B BRA RA RA RAh$ $ $( ( (H H HQ Q Q	( 	( 	(( ( (( ( (7 7 73 3 34A 4A 4A 4A 4A 4A 4Ar   r   )
__doc__samba.credentialsr   r   r   r   samba.testsr   TestCaser    r   r   <module>r      s   $  * ) ) ) ) )            KA KA KA KA KA%+& KA KA KA KA KAr   