
    Fc                     :   d dl Z d dlZe j                            d d           dej        d<   d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d d	lmZ d d
lmZmZmZmZmZmZmZmZmZmZmZ dZdZ G d de          Ze dk    rdZdZd dl!Z! e!j"                     dS dS )    Nz
bin/python1PYTHONUNBUFFERED)partial)generate_random_passwordunix2nttime)krb5pacsecurity)SDUtils)KDCBaseTest)KDC_ERR_TGT_REVOKEDKDC_ERR_TKT_EXPIREDKPASSWD_ACCESSDENIEDKPASSWD_AUTHERRORKPASSWD_HARDERRORKPASSWD_INITIAL_FLAG_NEEDEDKPASSWD_MALFORMEDKPASSWD_SOFTERRORKPASSWD_SUCCESSNT_PRINCIPALNT_SRV_INSTFc                        e Zd Z f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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 Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z# xZ$S )$KpasswdTestsc                    t                                                       t          | _        t          | _        |                                 }|                                }|                     |j	        |           |	                    d           |
                                }|                     |j        |           |                    d           d S )N	0000000010)supersetUpglobal_asn1_printdo_asn1_printglobal_hexdump
do_hexdump	get_samdbget_dsheuristics
addCleanupset_dsheuristicsget_minPwdAgeset_minPwdAge)selfsamdbdsheuristics	minPwdAge	__class__s       @/usr/lib/python3/dist-packages/samba/tests/krb5/kpasswd_tests.pyr   zKpasswdTests.setUp7   s    .(   --// 	.=== 	{+++ ''))	 	+Y777 	C         Fc                 R    d|i}|                      | j        j        |d          }|S )Nexpired_passwordF)account_typeopts	use_cache)get_cached_credsAccountTypeUSER)r(   expiredr2   credss       r-   
_get_credszKpasswdTests._get_credsQ   s?    

 %%43C3H+/05 & 7 7 r.   c                     |                                  }|                     |          }t          j        |i}|                     |||          S )Nnew_ticket_keychecksum_keys)get_mock_rodc_krbtgt_credsTicketDecryptionKey_from_credsr   PAC_TYPE_KDC_CHECKSUMmodified_ticket)r(   ticketkrbtgt_creds
krbtgt_keyr=   s        r-   issued_by_rodczKpasswdTests.issued_by_rodc]   s]    668888FF
):
 ##%' $ ) ) 	)r.   c                 >    |                      t          ddg          S )Nkadminchangepw	name_typenames)PrincipalName_creater   )r(   s    r-   get_kpasswd_snamezKpasswdTests.get_kpasswd_snamej   s,    ((<08*/E ) G G 	Gr.   c                     |j         }|d         }|                    d|          }|d         }|                     |          }|                     |          }||z
  S Nauthtime	starttimeendtime)ticket_privategetget_EpochFromKerberosTime)r(   rB   enc_partrP   rQ   rR   s         r-   get_ticket_lifetimez KpasswdTests.get_ticket_lifetimen   sb    (J'LLh77	9%229==	0099""r.   c                 r   |j         }d |D             }|                     t          j        |           t          j                    }t          j        |          |_        t          j                    }t          j        |_	        ||_
        |                    |           ||_         |xj        dz  c_        |S )Nc                     g | ]	}|j         
S  )type).0
pac_buffers     r-   
<listcomp>z2KpasswdTests.add_requester_sid.<locals>.<listcomp>}   s    FFFJ
FFFr.      )buffersassertNotInr   PAC_TYPE_REQUESTER_SIDPAC_REQUESTER_SIDr	   dom_sidsid
PAC_BUFFERr[   infoappendnum_buffers)r(   pacre   pac_buffersbuffer_typesrequester_sidrequester_sid_buffers          r-   add_requester_sidzKpasswdTests.add_requester_sidz   s    kFF+FFF7FFF133$,S11&133$+$B!$1!/000!1
r.   c                 T   |                                  }|                     ||                                 d          }t          }d}t	          dd          }|                     ||||| j        j                   |                    |           |                     |d           d S Nr   snamekdc_options   Password changed    modeTfresh)	r9   get_tgtrM   r   r   kpasswd_exchangeKpasswdModeSETupdate_passwordr(   r8   rB   expected_codeexpected_msgnew_passwords         r-   test_kpasswd_setzKpasswdTests.test_kpasswd_set   s    !! e4+A+A+C+C*-  / / (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	l+++U$'''''r.   c                 T   |                                  }|                     ||                                 d          }t          }d}t	          dd          }|                     ||||| j        j                   |                    |           |                     |d           d S rq   )	r9   r{   rM   r   r   r|   r}   CHANGEr   r   s         r-   test_kpasswd_changez KpasswdTests.test_kpasswd_change   s    !! e4+A+A+C+C*-  / / (* 0B77f*+*#'#3#:	 	 	< 	< 	< 	l+++U$'''''r.   c                    |                                  }|                                 }|                     ||d          }t          }d}t	          dd          }|                     ||||| j        j                   |                    |           |                     ||d          }t	          dd          }|                     ||||| j        j	                   d S )Nr   rr   ru   rv   rw   )
r9   rM   r{   r   r   r|   r}   r~   r   r   )r(   r8   rs   rB   r   r   r   s          r-   test_kpasswd_no_canonicalizez)KpasswdTests.test_kpasswd_no_canonicalize   s   !!&&(( e5*-  / / (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	l+++ e5*-  / / 0B77f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                                  }|                                 }|                                                                }|                     |||d          }t
          }d}t          dd          }|                     ||||| j        j	                   |
                    |           |                     |||d          }t          dd          }|                     ||||| j        j                   d S )Nr   rs   realmrt   ru   rv   rw   r9   rM   	get_realm
capitalizer{   r   r   r|   r}   r~   r   r   r(   r8   rs   r   rB   r   r   r   s           r-   'test_kpasswd_no_canonicalize_realm_casez4KpasswdTests.test_kpasswd_no_canonicalize_realm_case   s5   !!&&((!!,,.. e5$)*-  / / (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	l+++ e5$)*-  / /
 0B77f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                                  }|                     ||                                 d          }t          }d}t	          dd          }|                     ||||| j        j                   |                    |           |                     ||                                 d          }t	          dd          }|                     ||||| j        j	                   d S )Ncanonicalizerr   ru   rv   rw   )
r9   r{   rM   r   r   r|   r}   r~   r   r   r   s         r-   test_kpasswd_canonicalizez&KpasswdTests.test_kpasswd_canonicalize  s   !! e4+A+A+C+C*8  : : (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	l+++ e4+A+A+C+C*8  : : 0B77f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                                  }|                                 }|                                                                }|                     |||d          }t
          }d}t          dd          }|                     ||||| j        j	                   |
                    |           |                     |||d          }t          dd          }|                     ||||| j        j                   d S )Nr   r   ru   rv   rw   r   r   s           r-   $test_kpasswd_canonicalize_realm_casez1KpasswdTests.test_kpasswd_canonicalize_realm_case.  s5   !!&&((!!,,.. e5$)*8  : : (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	l+++ e5$)*8  : :
 0B77f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                 (   |                                  }|                     ||                                 d          }t          }d}d}|                     ||||| j        j                   |                     ||||| j        j                   d S )Nr   rr   s.   Password does not meet complexity requirementspasswordrw   )r9   r{   rM   r   r|   r}   r~   r   r   s         r-   test_kpasswd_too_weakz"KpasswdTests.test_kpasswd_too_weakV  s    !! e4+A+A+C+C*-  / / *H "f*+*#'#3#7	 	 	9 	9 	9 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                 H   |                                  }|                     ||                                 d          }t          t          f}d}d}|                     ||||| j        j                   t          }d}|                     ||||| j        j                   d S )Nr   rr   )s@   Password too short, password must be at least 7 characters long.   String conversion failed! rw   r   )	r9   r{   rM   r   r   r|   r}   r~   r   r   s         r-   test_kpasswd_emptyzKpasswdTests.test_kpasswd_emptyq  s    !! e4+A+A+C+C*-  / / *+<<6
 f*+*#'#3#7	 	 	9 	9 	9 *3 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                 H   |                                  }|                     ||                                 d          }t          }d}t	          dd          }|                     ||||| j        j        d           |                     ||||| j        j        d           d S )Nr   rr   s/   gensec_unwrap failed - NT_STATUS_ACCESS_DENIED
rv   F)rx   send_seq_number)	r9   r{   rM   r   r   r|   r}   r~   r   r   s         r-   test_kpasswd_no_seq_numberz'KpasswdTests.test_kpasswd_no_seq_number  s    !! e4+A+A+C+C*-  / / *J 0B77f*+*#'#3#7.3 	 	5 	5 	5 	f*+*#'#3#:.3 	 	5 	5 	5 	5 	5r.   c                 n   |                                  }|                     ||                                 d          }|                     |          }t          }d}t          dd          }|                     ||||| j        j                   |                     ||||| j        j	                   d S )Nr   rr   /   gensec_update failed - NT_STATUS_LOGON_FAILURE
rv   rw   )
r9   r{   rM   rE   r   r   r|   r}   r~   r   r   s         r-   test_kpasswd_from_rodcz#KpasswdTests.test_kpasswd_from_rodc  s    !! e4+A+A+C+C*-  / / $$V,,)J 0B77f*+*#'#3#7	 	 	9 	9 	9 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                                  }|                                }|                     t          |                    d                    }|                     ||                                 d          }t          }d}t          dd          }| 	                    ||||| j
        j        |           d S )N/rI   r   rr   )<   Realm and principal must be both present, or neither present   Failed to decode packetrv   )rx   target_princ)r9   get_usernamerL   r   splitr{   rM   r   r   r|   r}   r~   r(   r8   usernamecnamerB   r   r   r   s           r-   "test_kpasswd_set_target_princ_onlyz/KpasswdTests.test_kpasswd_set_target_princ_only  s    !!%%''))L08s0C0C * E E e4+A+A+C+C*-  / / *4
 0B77f*+*#'#3#7+0 	 	2 	2 	2 	2 	2r.   c           	      0   |                                  }|                     ||                                 d          }t          t          f}d}t          dd          }|                     ||||| j        j        |	                                           d S )Nr   rr   )r   r   s#   No such user when changing passwordrv   )rx   target_realm)
r9   r{   rM   r   r   r   r|   r}   r~   r   r   s         r-   "test_kpasswd_set_target_realm_onlyz/KpasswdTests.test_kpasswd_set_target_realm_only  s    !! e4+A+A+C+C*-  / / *+??@ 0B77f*+*#'#3#7+0??+<+< 	 	> 	> 	> 	> 	>r.   c           
         |                                  }|                                }|                     t          |                    d                    }|                     ||                                 d          }t          }d}t          dd          }| 	                    ||||| j
        j        ||                                           d S )Nr   rI   r   rr   s    Not permitted to change passwordrv   rx   r   r   )r9   r   rL   r   r   r{   rM   r   r   r|   r}   r~   r   r   s           r-   1test_kpasswd_set_target_princ_and_realm_no_accessz>KpasswdTests.test_kpasswd_set_target_princ_and_realm_no_access  s    !!%%''))L08s0C0C * E E e4+A+A+C+C*-  / / -: 0B77f*+*#'#3#7+0+0??+<+< 	 	> 	> 	> 	> 	>r.   c           
         |                                  }|                                }|                     |          }|                     t          |                    d                    }|                                 }t          |          }|                                }| 	                    ||          }d| d}	|
                    ||	           |                                 }
|                     ||
ddd          }t          }d	}t          d
d
          }|                     ||||| j        j        ||                                           d S )Nr   rI   z	(A;;CR;;;)rG   rH   r   servicetarget_namert   ru   rv   r   )r9   r   r{   rL   r   r   r"   r
   get_dnget_objectSiddacl_add_aceget_krbtgt_credsget_service_ticketr   r   r|   r}   r~   r   )r(   r8   r   tgtr   r)   sd_utilsuser_dnuser_sidacerC   rB   r   r   r   s                  r-   .test_kpasswd_set_target_princ_and_realm_accessz;KpasswdTests.test_kpasswd_set_target_princ_and_realm_access  si   !!%%''ll5!!))L08s0C0C * E E   5>>,,..%%eW55 &(%%%gs+++ ,,..(()5195?58	 ) : : (* 0B77f*+*#'#3#7+0+0??+<+< 	 	> 	> 	> 	> 	>r.   c                     |                      d          }|                     ||                                 d          }t          }d}t	          dd          }|                     ||||| j        j                   d S NT)r7   r   rr   ru   rv   rw   )r9   r{   rM   r   r   r|   r}   r~   r   s         r-   !test_kpasswd_set_expired_passwordz.KpasswdTests.test_kpasswd_set_expired_passwordG  s    -- e4+A+A+C+C*-  / / (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	9 	9r.   c                     |                      d          }|                     ||                                 d          }t          }d}t	          dd          }|                     ||||| j        j                   d S r   )r9   r{   rM   r   r   r|   r}   r   r   s         r-   $test_kpasswd_change_expired_passwordz1KpasswdTests.test_kpasswd_change_expired_password[  s    -- e4+A+A+C+C*-  / / (* 0B77f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                     |                                  }|                     ||                                 d          }|                     |          }|                     d|           d S )Nr   rr   x   )r9   r{   rM   rW   assertEqual)r(   r8   rB   lifetimes       r-   test_kpasswd_ticket_lifetimez)KpasswdTests.test_kpasswd_ticket_lifetimeo  so    !! e4+A+A+C+C*-  / / ++F33*****r.   c                    |                                  }|                     ||                                 d          }|                                }|                     t
          d|g          }|                    |           |                                 }|                     |||t          t          f           d S )Nr   rr   krbtgtrI   expect_error)get_client_credsr{   rM   r   rL   r   	set_snameget_service_creds_make_tgs_requestr   r   )r(   r8   rB   r   krbtgt_snameservice_credss         r-   test_kpasswd_ticket_tgsz$KpasswdTests.test_kpasswd_ticket_tgs|  s    %%'' e4+A+A+C+C*-  / / !!00;8@%7H 1 J J&&& ..00 	umV-@-@-B 	 	C 	C 	C 	C 	Cr.   c                 ,   	
                                   }                     |          }t          j        |i}                     d                               |          		fd} fd

 fd}                     |||||          S )Ni)offsetc                 .    | d<   d| v r| d<   | d<   | S rO   rZ   )rV   end_time
start_times    r-   modify_ticket_timeszCKpasswdTests.modify_requester_sid_time.<locals>.modify_ticket_times  s1    #-HZ h&&(2%"*HYOr.   c                     | j         }|D ]G}|j        t          j        k    r0                              }t          |          |j        _         nH                    d           || _         | S )Nz$failed to find LOGON_NAME PAC buffer)	r`   r[   r   PAC_TYPE_LOGON_NAMErU   r   rg   
logon_timefail)rj   rk   r]   r   r(   r   s       r-   modify_pac_timez?KpasswdTests.modify_requester_sid_time.<locals>.modify_pac_time  s|    +K) B B
?g&AAA!%!?!?
!K!KJ1<Z1H1HJO.E B
 		@AAA%CKJr.   c                 L                         |           }  |           } | S )N)re   )ro   )rj   r   r(   re   s    r-   modify_pac_fnz=KpasswdTests.modify_requester_sid_time.<locals>.modify_pac_fn  s/    ((#(66C!/#&&CJr.   )r<   	modify_fnr   r=   )r   r?   r   r@   get_KerberosTimerA   )r(   rB   re   r   rC   rD   r=   r   r   r   r   r   s   ` `      @@@r-   modify_requester_sid_timez&KpasswdTests.modify_requester_sid_time  s    ,,..88FF
):
 **(*;;
 (((99	 	 	 	 	 		 	 	 	 	 	"	 	 	 	 	 	 	 ##F3=.A2?2?	 $ A A 	Ar.   c                     |                                  }|                     ||                                 d          }|                                }|                     t
          d|g          }|                    |           |                                 }|                                }| 	                    ||          }| 
                    ||d          }|                                 }|                     |||t                     d S )Nr   rr   r   rI   r   re   r   r   )r   r{   rM   r   rL   r   r   r"   r   r   r   r   r   r   	r(   r8   rB   r   r   r)   r   r   r   s	            r-   %test_kpasswd_ticket_requester_sid_tgsz2KpasswdTests.test_kpasswd_ticket_requester_sid_tgs  s.   %%'' e4+A+A+C+C*-  / / !!00;8@%7H 1 J J&&&   ,,..%%eW55 //4<9? 0 A A
 ..00 	umV,? 	 	A 	A 	A 	A 	Ar.   c                    |                                  }|                     ||                                 d          }|                                }|                     t
          d|g          }|                    |           |                                 }|                                }| 	                    ||          }| 
                    ||d          }|                                 }|                     |||d           d S )	Nr   rr   r   rI      r   Fr   )r   r{   rM   r   rL   r   r   r"   r   r   r   r   r   r   s	            r-   .test_kpasswd_ticket_requester_sid_lifetime_tgsz;KpasswdTests.test_kpasswd_ticket_requester_sid_lifetime_tgs  s)   %%'' e4+A+A+C+C*-  / / !!00;8@%7H 1 J J&&&   ,,..%%eW55 //4<9D 0 F F
 ..00 	umV,1 	 	3 	3 	3 	3 	3r.   c                 h   |                                  }|                     |          }|                    |                                            t          }d}t          dd          }|                     ||||| j        j                   |                     ||||| j        j	                   d S )Ns,   A TGT may not be used as a ticket to kpasswdrv   rw   )
r9   r{   r   rM   r   r   r|   r}   r~   r   )r(   r8   r   r   r   r   s         r-   test_kpasswd_tgtzKpasswdTests.test_kpasswd_tgt  s    !!ll5!! 	d,,..///)F 0B77c*+*#'#3#7	 	 	9 	9 	9 	c*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                 v   |                                  }|                     |          }|                                 }|                     ||ddd          }t          }d}t          dd          }|                     ||||| j        j                   |                     ||||| j        j	                   d S )NrG   rH   r   r   s   Expected an initial ticketrv   rw   )
r9   r{   r   r   r   r   r|   r}   r~   r   )r(   r8   r   rC   rB   r   r   r   s           r-   test_kpasswd_non_initialz%KpasswdTests.test_kpasswd_non_initial+  s    !!ll5!! ,,..(()5195?58	 ) : : 44 0B77f*+*#'#3#7	 	 	9 	9 	9 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                                                                                         fd}t          }d} |            }t          dd          }                     |||| j        j                                       |            |            }t          dd          }                     |||| j        j                   d S )Nc                                           d          }                     | dddd          }t          j        dd          }                                }                    |||	          S )
NTry   rG   rH   r   )r   r   rt   rz   initial)flagvalue)r   r=   )r{   r   r   modify_ticket_flagget_krbtgt_checksum_keyrA   )r   rB   set_initial_flagr=   r8   rC   r(   s       r-   
get_ticketz5KpasswdTests.test_kpasswd_initial.<locals>.get_ticketS  s    ,,uD,11C ,,S-95=9C9<37 - 9 9F  't'>Y-1 3  3  3 !88::M''2B6C ( E E Er.   ru   rv   rw   )	r9   r   r   r   r|   r}   r~   r   r   )r(   r   r   r   rB   r   r8   rC   s   `     @@r-   test_kpasswd_initialz!KpasswdTests.test_kpasswd_initialL  s   !!,,..	E 	E 	E 	E 	E 	E 	E& (* 0B77f*+*#'#3#7	 	 	9 	9 	9 	l+++ 0B77f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                                  }|                                 }|                     ||d          }|                                 }|                     |          }|                     |j        d           t          j        |i}| 	                    |||          }| 
                    t          dg          }|                    |           t          }d}	t          dd          }
|                     ||
||	| j        j        	           |                     ||
||	| j        j        	           d S )
Nr   rr   7a kvno is required to tell the DB which key to look up.r;   AdministratorrI   r   rv   rw   )r9   rM   r{   get_admin_credsr?   assertIsNotNonekvnor   r@   rA   rL   r   r   r   r   r|   r}   r~   r   )r(   r8   rs   rB   admin_creds	admin_keyr=   admin_snamer   r   r   s              r-   test_kpasswd_wrong_keyz#KpasswdTests.test_kpasswd_wrong_key  s   !!&&(( e5*-  / / **,,77DD	Y^5	6 	6 	6 )9

 %%f5>4A & C C
 //,7F6G 0 I I%%%)J 0B77f*+*#'#3#7	 	 	9 	9 	9 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                      | j        j        d          }|                                 }|                     ||d          }|                     |          }|                     |j        d           t          j	        |i}| 
                    |||          }|                                }|                     t          |                    d                    }|                    |           t           }d	}t#          d
d
          }	|                     ||	||| j        j                   |                     ||	||| j        j                   d S )NF)r1   r3   r   rr   r   r;   r   rI   r   rv   rw   )r4   r5   COMPUTERrM   r{   r?   r  r  r   r@   rA   r   rL   r   r   r   r   r   r|   r}   r~   r   )
r(   r8   rs   rB   our_keyr=   r   r   r   r   s
             r-   test_kpasswd_wrong_key_servicez+KpasswdTests.test_kpasswd_wrong_key_service  s   %%43C3L05 & 7 7 &&(( e5*-  / / 55e<<W\5	6 	6 	6 )7

 %%f5<4A & C C
 %%''))L08s0C0C * E E)J 0B77f*+*#'#3#7	 	 	9 	9 	9 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   c                    |                                  }|                                 }|                     ||d          }|                                 }|                     |          }|                     |j        d           t          j        |i}| 	                    |||          }|
                                }|                     t          |                    d                    }|                    |           t          }	d}
t!          dd          }|                     |||	|
| j        j        	           |                     |||	|
| j        j        	           d S )
Nr   rr   r   r;   r   rI   r   rv   rw   )r9   rM   r{   get_dc_credsr?   r  r  r   r@   rA   r   rL   r   r   r   r   r   r|   r}   r~   r   )r(   r8   rs   rB   dc_credsdc_keyr=   dc_usernamedc_snamer   r   r   s               r-   test_kpasswd_wrong_key_serverz*KpasswdTests.test_kpasswd_wrong_key_server  s   !!&&(( e5*-  / / $$&&44X>>V[5	6 	6 	6 )6

 %%f5;4A & C C
 ++--,,|3>3D3DS3I3I - K K""")J 0B77f*+*#'#3#7	 	 	9 	9 	9 	f*+*#'#3#:	 	 	< 	< 	< 	< 	<r.   )F)%__name__
__module____qualname__r   r9   rE   rM   rW   ro   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  __classcell__)r,   s   @r-   r   r   5   s6       ! ! ! ! !4
 
 
 
) ) )G G G
# 
# 
#  *( ( (0( ( (0!< !< !<J$< $< $<N< < <F$< $< $<P< < <6< < <B5 5 5:< < <<2 2 28> > >2> > >6'> '> '>T9 9 9(< < <(
+ 
+ 
+C C C*8A 8A 8AxA A AD3 3 3B< < <6< < <B0< 0< 0<h.< .< .<`/< /< /<f/< /< /< /< /< /< /<r.   r   __main__)#sysospathinsertenviron	functoolsr   sambar   r   samba.dcerpcr   r	   samba.sd_utilsr
   samba.tests.krb5.kdc_base_testr   "samba.tests.krb5.rfc4120_constantsr   r   r   r   r   r   r   r   r   r   r   r   r    r   r  unittestmainrZ   r.   r-   <module>r&     s  ( 


 				 <      !$
        7 7 7 7 7 7 7 7 * * * * * * * * " " " " " " 6 6 6 6 6 6                           
]< ]< ]< ]< ]<; ]< ]< ]<@ zNOOOHMOOOOO	 r.   