
    FcT!                       d dl Z d dlZe j                            d d           dej        d<   d dlZd dlZd dl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mZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,c m-c m.Z/ d dl0m,c m-c m1Z1 d	Z2d	Z3 G d
 de          Z4e5dk    rd	Z2d	Z3d dl6Z6 e6j7                     dS dS )    Nz
bin/python1PYTHONUNBUFFERED)krb5pacsecurity)Krb5EncryptionKeyZeroedChecksumKey)KDCBaseTest)AD_FX_FAST_ARMORAD_FX_FAST_USEDAES256_CTS_HMAC_SHA1_96ARCFOUR_HMAC_MD5FX_FAST_ARMOR_AP_REQUESTKDC_ERR_BAD_INTEGRITYKDC_ERR_ETYPE_NOSUPPKDC_ERR_GENERICKDC_ERR_S_PRINCIPAL_UNKNOWNKDC_ERR_MODIFIEDKDC_ERR_NOT_USKDC_ERR_POLICYKDC_ERR_PREAUTH_FAILEDKDC_ERR_PREAUTH_REQUIREDKDC_ERR_SKEW%KDC_ERR_UNKNOWN_CRITICAL_FAST_OPTIONS
KRB_AS_REPKRB_TGS_REPKU_TGS_REQ_AUTH_DAT_SESSIONKU_TGS_REQ_AUTH_DAT_SUBKEYNT_PRINCIPAL
NT_SRV_HSTNT_SRV_INSTPADATA_FX_COOKIEPADATA_FX_FASTPADATA_REQ_ENC_PA_REPFc                       e Zd Ze fd            Z f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$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQ	 dedPZRdQ ZSdR ZTdS ZU	 dfdUZVeWjX        jY        dVfdWZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`d^ Zad_ Zbd` Zcda Zddb Zedc Zfdd Zg xZhS )g
FAST_Testsc                     t                                                       d | _        d | _        d | _        d | _        d S N)super
setUpClassuser_tgtuser_service_ticketmach_tgtmach_service_ticket)cls	__class__s    =/usr/lib/python3/dist-packages/samba/tests/krb5/fast_tests.pyr)   zFAST_Tests.setUpClassF   s=    "&"&    c                 x    t                                                       t          | _        t          | _        d S r'   )r(   setUpglobal_asn1_printdo_asn1_printglobal_hexdump
do_hexdump)selfr/   s    r0   r3   zFAST_Tests.setUpP   s'    .(r1   c                 n    |                      t          t          ddt          dd| j        dg           d S )NFrep_typeexpected_error_modeuse_fastr   r;   r<   r=   gen_padata_fn)_run_test_sequencer   r   generate_enc_timestamp_padatar8   s    r0   test_simplezFAST_Tests.test_simpleU   sW    &'?!  ''(!!%!C	 !
 	 	 	 	 	r1   c           	          |                      t          t          dddt          dd| j        ddg| j        j                   d S )NFTr;   r<   r=   as_req_selfr   )r;   r<   r=   r?   rF   client_accountr@   r   r   rA   AccountTypeCOMPUTERrB   s    r0   test_simple_as_req_selfz"FAST_Tests.test_simple_as_req_selfd   sm    &'?!#	  ''(!!%!C# !
 *3 	  	5 	5 	5 	5 	5r1   c           
          |                      t          t          dddt          dd| j        dddg| j        j        ddi           d S )NFTrE   r   )r;   r<   r=   r?   rF   
expect_pacno_auth_data_required)rH   client_optsrI   rB   s    r0   $test_simple_as_req_self_no_auth_dataz/FAST_Tests.test_simple_as_req_self_no_auth_datau   sz     !++C %#'	  !++, %%)%G#'"&    +40$7% 	  	9 	9 	9 	9 	9r1   c                     |                      t          t          dddt          dd| j        ddddg| j        j                   d S NFTrE   r   )r;   r<   r=   r?   rF   pac_requestrN   rG   rI   rB   s    r0   )test_simple_as_req_self_pac_request_falsez4FAST_Tests.test_simple_as_req_self_pac_request_false   ss    &'?!#	  ''(!!%!C#$# !
  *3! 	  	5 	5 	5 	5 	5r1   c                     |                      t          t          dddt          dd| j        dd ddg| j        j                   d S rS   rI   rB   s    r0   (test_simple_as_req_self_pac_request_nonez3FAST_Tests.test_simple_as_req_self_pac_request_none   s    &'?!#	  ''(!!%!C##" !
  *3! 	  	5 	5 	5 	5 	5r1   c                     |                      t          t          dddt          dd| j        ddddg| j        j                   d S rS   rI   rB   s    r0   (test_simple_as_req_self_pac_request_truez3FAST_Tests.test_simple_as_req_self_pac_request_true   rX   r1   c                 P    |                      t          dd| j        dg           d S Nr   Fr;   r<   r=   
gen_tgt_fnr@   r   get_user_tgtrB   s    r0   test_simple_tgszFAST_Tests.test_simple_tgs   B    ''(!"/	 !
 	 	 	 	 	r1   c           	      p    |                      t          t          ddt          dd| j        ddg           d S )NFr:   r   
enc-pa-rep)r;   r<   r=   r?   expected_flags)r@   r   r   $generate_enc_pa_rep_timestamp_padatarB   s    r0   test_simple_enc_pa_repz!FAST_Tests.test_simple_enc_pa_rep   sZ    &'?!  ''(!!%!J". !
 	 	 	 	 	r1   c           	      ^    |                      t          dd| j        | j        ddg           d S )Nr   Frd   )r;   r<   r=   r^   r?   re   r@   r   r`   generate_enc_pa_rep_padatarB   s    r0   test_simple_tgs_enc_pa_repz%FAST_Tests.test_simple_tgs_enc_pa_rep   sK    ''(!"/!%!@". 	!
 		 		 		 		 		r1   c           	          |                                  }|                     t          t          t          fdd |ddg           d S )NF)r;   r<   r=   snameexpected_snameexpect_edata)get_krbtgt_snamer@   r   r   r   r8   rn   s     r0   test_simple_no_snamezFAST_Tests.test_simple_no_sname   s\    ..00&(79T'U!"0 % 	!
 		 		 		 		 		r1   c           
          |                                  }|                     t          t          t          fd| j        d |ddg           d S )NF)r;   r<   r=   r^   rm   rn   ro   rp   r@   r   r   r   r`   rq   s     r0   test_simple_tgs_no_snamez#FAST_Tests.test_simple_tgs_no_sname   sb    ..00'(79T'U!"/"0 % 
!
 
	 
	 
	 
	 
	r1   c                     |                                  }|                     t          t          t          fdt
          | j        d |ddg           d S )NTF)r;   r<   r=   
fast_armorgen_armor_tgt_fnrm   rn   strict_edata_checkingrp   r@   r   r   r   r   get_mach_tgtrq   s     r0   test_fast_no_snamezFAST_Tests.test_fast_no_sname  sh    ..00&(7(C(E 6$($5"0).
 
!
 	 	 	 	 	r1   c                     |                                  }|                     t          t          t          fd| j        d d |ddg           d S )NTF)r;   r<   r=   r^   rw   rm   rn   ry   rt   rq   s     r0   test_fast_tgs_no_snamez!FAST_Tests.test_fast_tgs_no_sname  se    ..00'(79T'U "/""0).	 	!
 	 	 	 	 	r1   c                     |                                  }|                     t          t          t          fdt
          | j        dd i|ddg           d S )NTrm   F)r;   r<   r=   rw   rx   	inner_reqrn   ry   rz   rq   s     r0   test_fast_inner_no_snamez#FAST_Tests.test_fast_inner_no_sname(  sq    ..00&(7(C(E 6$($5T #1). !
 	 	 	 	 	r1   c                     |                                  }|                     t          t          t          fd| j        d dd i|ddg           d S )NTrm   F)r;   r<   r=   r^   rw   r   rn   ry   rt   rq   s     r0   test_fast_tgs_inner_no_snamez'FAST_Tests.test_fast_tgs_inner_no_sname;  sq    ..00'(7(C(E "/"T #1). !
 	 	 	 	 	r1   c                 P    |                      t          dd| j        dg           d S r\   )r@   r   r{   rB   s    r0   test_simple_tgs_wrong_principalz*FAST_Tests.test_simple_tgs_wrong_principalN  rb   r1   c                 j    |                      t          t          t          fd| j        ddg           d S NF)r;   r<   r=   r^   ro   r@   r   r   r   get_user_service_ticketrB   s    r0   test_simple_tgs_service_ticketz)FAST_Tests.test_simple_tgs_service_ticketX  M    '(6(6(8!": % 	!
 		 		 		 		 		r1   c                 j    |                      t          t          t          fd| j        ddg           d S r   r@   r   r   r   get_mach_service_ticketrB   s    r0   #test_simple_tgs_service_ticket_machz.FAST_Tests.test_simple_tgs_service_ticket_machd  r   r1   c                     |                      t          t          dt          | j        ddt          dd| j        t          | j        ddg           d S )NT0)r;   r<   r=   rw   rx   pac_optionsr   )r;   r<   r=   r?   rw   rx   r   r@   r   r   r   r{   generate_enc_challenge_padatarB   s    r0   test_fast_no_claimszFAST_Tests.test_fast_no_claimsp  o    &'? 6$($5"  ''( !%!C6$($5" !
 	 	 	 	 	r1   c           	      T    |                      t          dd| j        d ddg           d S )Nr   Tr   )r;   r<   r=   r^   rw   r   r_   rB   s    r0   test_fast_tgs_no_claimsz"FAST_Tests.test_fast_tgs_no_claims  H    ''( "/"" 	!
 		 		 		 		 		r1   c                     |                      t          t          dt          | j        dddt          dd| j        t          | j        dddg           d S )NTr   )r;   r<   r=   rw   rx   r   kdc_optionsr   )r;   r<   r=   r?   rw   rx   r   r   r   rB   s    r0   test_fast_no_claims_or_canonz'FAST_Tests.test_fast_no_claims_or_canon  su    &'? 6$($5""  ''( !%!C6$($5""	 	!
 	 	 	 	 	r1   c           
      V    |                      t          dd| j        d dddg           d S )Nr   Tr   )r;   r<   r=   r^   rw   r   r   r_   rB   s    r0    test_fast_tgs_no_claims_or_canonz+FAST_Tests.test_fast_tgs_no_claims_or_canon  sK    ''( "/""" 
!
 
	 
	 
	 
	 
	r1   c                     |                      t          t          dt          | j        ddt          dd| j        t          | j        ddg           d S )NTr   )r;   r<   r=   rw   rx   r   r   )r;   r<   r=   r?   rw   rx   r   r   rB   s    r0   test_fast_no_canonzFAST_Tests.test_fast_no_canon  r   r1   c           	      T    |                      t          dd| j        d ddg           d S )Nr   Tr   )r;   r<   r=   r^   rw   r   r_   rB   s    r0   test_fast_tgs_no_canonz!FAST_Tests.test_fast_tgs_no_canon  r   r1   c           	      ^    |                      t          t          d| j        dddg           d S )NF )r;   r<   r=   r^   etypesro   r@   r   r   r{   rB   s    r0   test_simple_tgs_no_etypesz$FAST_Tests.test_simple_tgs_no_etypes  sH    '';!"/ % 	!
 		 		 		 		 		r1   c           
      `    |                      t          t          d| j        d dddg           d S )NTr   F)r;   r<   r=   r^   rw   r   ry   r   rB   s    r0   test_fast_tgs_no_etypesz"FAST_Tests.test_fast_tgs_no_etypes  sK    ''; "/"). 
!
 
	 
	 
	 
	 
	r1   c                 P    |                      t          t          dddg           d S )NFr   )r;   r<   r=   r   )r@   r   r   rB   s    r0   test_simple_no_etypesz FAST_Tests.test_simple_no_etypes  s?    &';!	 !
 	 	 	 	 	r1   c           
      j    |                      t          t          dt          | j        dddg           d S )NTr   F)r;   r<   r=   rw   rx   r   ry   )r@   r   r   r   r{   rB   s    r0   test_simple_fast_no_etypesz%FAST_Tests.test_simple_fast_no_etypes  sK    &'; 6$($5). 
!
 
	 
	 
	 
	 
	r1   c           
      x    |                      t          t          t          fd| j        d | j        ddg           d S )NTF)r;   r<   r=   gen_fast_fnrw   rx   ro   )r@   r   r   r   generate_empty_fastr{   rB   s    r0   test_empty_fastzFAST_Tests.test_empty_fast  sY     	&(7(>(@ #7"$($5 %	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        dt          t
          d| j        dt          | j        dg           d S )NTr;   r<   r=   rw   rx   001)r;   r<   r=   r?   fast_optionsrw   rx   )r@   r   r   r   r{   r   r   rB   s    r0   !test_fast_unknown_critical_optionz,FAST_Tests.test_fast_unknown_critical_option  sl    &'? 6$($5  ''L !%!C %6$($5 !
 	 	 	 	 	r1   c           	      l    |                      t          t          t          fdd | j        ddg           d S )NTF)r;   r<   r=   rw   rx   ro   )r@   r   r   r   r{   rB   s    r0   test_unarmored_as_reqz FAST_Tests.test_unarmored_as_req+  sQ    &(7(>(@ "$($5 % 
!
 
	 
	 
	 
	 
	r1   c                 \    |                      t          t          dd| j        dg           d S )NTr   r   r@   r   r   r{   rB   s    r0   test_fast_invalid_armor_typez'FAST_Tests.test_fast_invalid_armor_type8  E    &'= $($5 !
 	 	 	 	 	r1   c                 \    |                      t          t          dd| j        dg           d S )NT   r   r   rB   s    r0   test_fast_invalid_armor_type2z(FAST_Tests.test_fast_invalid_armor_type2C  r   r1   c           
          |                      t          t          dt          | j        dt          dd| j        t          | j        dg           d S NTr   r   r;   r<   r=   r?   rw   rx   r   rB   s    r0   test_fast_encrypted_challengez(FAST_Tests.test_fast_encrypted_challengeN  i    &'? 6$($5  ''( !%!C6$($5 !
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        ddt          dd| j        t          | j        ddg| j        j                   d S )NT)r;   r<   r=   rw   rx   rF   r   )r;   r<   r=   r?   rw   rx   rF   rG   )r@   r   r   r   r{   r   rJ   rK   rB   s    r0   )test_fast_encrypted_challenge_as_req_selfz4FAST_Tests.test_fast_encrypted_challenge_as_req_selfa  s    &'? 6$($5#  ''( !%!C6$($5# !
$ *3% 	  	5 	5 	5 	5 	5r1   c           
          |                      t          t          dt          | j        dt          t
          d| j        t          | j        dg           d S NTr   r   )r@   r   r   r   r{   r   'generate_enc_challenge_padata_wrong_keyrB   s    r0   'test_fast_encrypted_challenge_wrong_keyz2FAST_Tests.test_fast_encrypted_challenge_wrong_keyv  si    &'? 6$($5  ''= !%!M6$($5 !
 	 	 	 	 	r1   c           
          |                      t          t          dt          | j        dt          t
          d| j        t          | j        dg           d S r   )r@   r   r   r   r{   r   +generate_enc_challenge_padata_wrong_key_kdcrB   s    r0   +test_fast_encrypted_challenge_wrong_key_kdcz6FAST_Tests.test_fast_encrypted_challenge_wrong_key_kdc  si    &'? 6$($5  ''= @6$($5 !
 	 	 	 	 	r1   c                     |                      t          t          ddt          t          t          fd| j        dg           d S )NFr:   r>   )r@   r   r   r   r   rB   s    r0   %test_fast_encrypted_challenge_no_fastz0FAST_Tests.test_fast_encrypted_challenge_no_fast  s`    &'?!  '(>(@(B!!%!M !
 	 	 	 	 	r1   c           
          |                      t          t          dt          | j        dt          t
          dt          j        | j        d          t          | j        dg           d S )NTr   i'  skewr   )	r@   r   r   r   r{   r   	functoolspartialr   rB   s    r0   (test_fast_encrypted_challenge_clock_skewz3FAST_Tests.test_fast_encrypted_challenge_clock_skew  s    
 	&'? 6$($5  ''3 !*!26"  "  "  7$($5	 	!
 	 	 	 	 	r1   c                 t    |                      t          t          t          fdt          | j        dg           d S NTr   )r@   r   r   r   r   r   rB   s    r0   test_fast_invalid_tgtz FAST_Tests.test_fast_invalid_tgt  sP    
 	&(6(C(E 6$($@	 	!
 	 	 	 	 	r1   c                 t    |                      t          t          t          fdt          | j        dg           d S r   )r@   r   r   r   r   r   rB   s    r0   test_fast_invalid_tgt_machz%FAST_Tests.test_fast_invalid_tgt_mach  sN    &(6(C(E 6$($@	 	!
 	 	 	 	 	r1   c                 t    |                      t          t          t          fdt          | j        dg           d S r   )r@   r   r   r   r   #get_service_ticket_invalid_checksumrB   s    r0   test_fast_invalid_checksum_tgtz)FAST_Tests.test_fast_invalid_checksum_tgt  sP    
 	&(6(C(E 6$($L 	!
 		 		 		 		 		r1   c           
          |                      t          t          dt          | j        dt          t          t
          fd| j        t          | j        dg           d S r   )r@   r   r   r   r{   r   rA   rB   s    r0   test_fast_enc_timestampz"FAST_Tests.test_fast_enc_timestamp  ss     	&'? 6$($5  '(@(6(8 !%!C6$($5 !
 	 	 	 	 	r1   c           
          |                      t          t          dt          | j        dt          dd| j        t          | j        dg           d S r   r   rB   s    r0   	test_fastzFAST_Tests.test_fast  r   r1   c                 R    |                      t          dd| j        d dg           d S )Nr   Tr;   r<   r=   r^   rw   r_   rB   s    r0   test_fast_tgszFAST_Tests.test_fast_tgs"  sE    ''( "/" !
 	 	 	 	 	r1   c           	      h    |                      t          dd| j        | j        t          dg           d S )Nr   T)r;   r<   r=   r^   rx   rw   )r@   r   r`   r{   r   rB   s    r0   test_fast_tgs_armorzFAST_Tests.test_fast_tgs_armor-  sK    ''( "/$($56 	!
 		 		 		 		 		r1   c                    |                      t          t          dt          | j        t          t          j        d                    dt          dd| j        t          | j        t          t          j        d                    dg           d S )NTuse-session-key)r;   r<   r=   rw   rx   fast_ap_optionsr   )r;   r<   r=   r?   rw   rx   r   )	r@   r   r   r   r{   str	krb5_asn1	APOptionsr   rB   s    r0   test_fast_session_keyz FAST_Tests.test_fast_session_key9  s    &'? 6$($5#&y':;L'M'M#N#N  ''( !%!C6$($5#&y':;L'M'M#N#N !
 	 	 	 	 	r1   c                     |                      t          dd| j        | j        t          t          t          j        d                    dg           d S )Nr   Tr   )r;   r<   r=   r^   rx   rw   r   )r@   r   r`   r{   r   r   r   r   rB   s    r0   test_fast_tgs_armor_session_keyz*FAST_Tests.test_fast_tgs_armor_session_keyO  sb    ''( "/$($56#&y':;L'M'M#N#N 
!
 
	 
	 
	 
	 
	r1   c                     |                      t          t          dt          | j        ddt          dd| j        t          | j        ddg           d S )NTrd   )r;   r<   r=   rw   rx   re   r   )r;   r<   r=   r?   rw   rx   re   )r@   r   r   r   r{   $generate_enc_pa_rep_challenge_padatarB   s    r0   test_fast_enc_pa_repzFAST_Tests.test_fast_enc_pa_rep]  so    &'? 6$($5".  ''( !%!J6$($5". !
 	 	 	 	 	r1   c           
      `    |                      t          dd| j        d | j        ddg           d S )Nr   Trd   )r;   r<   r=   r^   rw   r?   re   ri   rB   s    r0   test_fast_tgs_enc_pa_repz#FAST_Tests.test_fast_tgs_enc_pa_reps  sN    ''( "/"!%!@". 
!
 
	 
	 
	 
	 
	r1   c                 v    |                      t          dd| j        | j        t          | j        ddg           d S )Nr   Trd   )r;   r<   r=   r^   rx   rw   r?   re   )r@   r   r`   r{   r   rj   rB   s    r0   test_fast_tgs_armor_enc_pa_repz)FAST_Tests.test_fast_tgs_armor_enc_pa_rep  sT    ''( "/$($56!%!@".	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        ddidt          dd| j        t          | j        ddidg           d S )NTrealmTESTr;   r<   r=   rw   rx   	outer_reqr   r;   r<   r=   r?   rw   rx   r   r   rB   s    r0   test_fast_outer_wrong_realmz&FAST_Tests.test_fast_outer_wrong_realm  s}    &'? 6$($5V	 	 ''( !%!C6$($5V
 
!
 	 	 	 	 	r1   c           	      X    |                      t          dd| j        d ddidg           d S )Nr   Tr   r   r;   r<   r=   r^   rw   r   r_   rB   s    r0   test_fast_tgs_outer_wrong_realmz*FAST_Tests.test_fast_tgs_outer_wrong_realm  sO    ''( "/"V	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        ddidt          dd| j        t          | j        ddidg           d S )NTnonce123r   r   r   r   rB   s    r0   test_fast_outer_wrong_noncez&FAST_Tests.test_fast_outer_wrong_nonce  s}    &'? 6$($5U	 	 ''( !%!C6$($5U
 
!
 	 	 	 	 	r1   c           	      X    |                      t          dd| j        d ddidg           d S )Nr   Tr  r  r   r_   rB   s    r0   test_fast_tgs_outer_wrong_noncez*FAST_Tests.test_fast_tgs_outer_wrong_nonce  sO    ''( "/"U	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        ddidt          dd| j        t          | j        ddidg           d S )NTkdc-options11111111111111111r   r   r   r   rB   s    r0   test_fast_outer_wrong_flagsz&FAST_Tests.test_fast_outer_wrong_flags  s    &'? 6$($5!#6	 	 ''( !%!C6$($5!#6
 
!
 	 	 	 	 	r1   c           	      X    |                      t          dd| j        d ddidg           d S )Nr   Tr  r	  r   r_   rB   s    r0   test_fast_tgs_outer_wrong_flagsz*FAST_Tests.test_fast_tgs_outer_wrong_flags  sP    ''( "/"!#6	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        dd idt          dd| j        t          | j        dd idg           d S )NTrm   r   r   r   r   rB   s    r0   test_fast_outer_no_snamez#FAST_Tests.test_fast_outer_no_sname  s}    &'? 6$($5T	 	 ''( !%!C6$($5T
 
!
 	 	 	 	 	r1   c           	      X    |                      t          dd| j        d dd idg           d S )Nr   Trm   r   r_   rB   s    r0   test_fast_tgs_outer_no_snamez'FAST_Tests.test_fast_tgs_outer_no_sname  sO    ''( "/"T	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        ddidt          dd| j        t          | j        ddidg           d S )NTtill15000101000000Zr   r   r   r   rB   s    r0   test_fast_outer_wrong_tillz%FAST_Tests.test_fast_outer_wrong_till+  s    &'? 6$($5-	 	 ''( !%!C6$($5-
 
!
 	 	 	 	 	r1   c           	      X    |                      t          dd| j        d ddidg           d S )Nr   Tr  r  r   r_   rB   s    r0   test_fast_tgs_outer_wrong_tillz)FAST_Tests.test_fast_tgs_outer_wrong_tillD  sP    ''( "/"-	 	!
 	 	 	 	 	r1   c           	      ^    |                      t          dd| j        | j        d dg           d S )Nr   T)r;   r<   r=   gen_authdata_fnr^   rw   )r@   r   generate_fast_used_auth_datar`   rB   s    r0   test_fast_authdata_fast_usedz'FAST_Tests.test_fast_authdata_fast_usedR  sK    ''( #'#D"/" 	!
 		 		 		 		 		r1   c           
          |                      t          dd| j        dt          t          t          fd| j        | j        ddg           d S )Nr   Fr]   )r;   r<   r=   r  r^   ro   )r@   r   r`   r   r   r  rB   s    r0    test_fast_authdata_fast_not_usedz+FAST_Tests.test_fast_authdata_fast_not_used^  sr    
 	 ('(!"/	  ((8(7(9!#'#D"/ % !
 	 	 	 	 	r1   c                     |                                  }|                     t          dd| j        d dt          t          t
          fd| j        | j        d |ddg           d S )Nr   Tr   F)r;   r<   r=   r  r^   rw   rn   ro   )rp   r@   r   r`   r   r   generate_fast_armor_auth_datarq   s     r0   test_fast_ad_fx_fast_armorz%FAST_Tests.test_fast_ad_fx_fast_armorw  s    ..00
 	 ('( "/"  ((7(=(? #'#E"/""0 %
 
!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        dt          dd| j        | j        t          | j        dg           d S )NTr   r   )r;   r<   r=   r?   r  rw   rx   )r@   r   r   r   r{   r   r  rB   s    r0   test_fast_ad_fx_fast_armor2z&FAST_Tests.test_fast_ad_fx_fast_armor2  sq     	&'? 6$($5  ''( !%!C#'#E6$($5	 	!
 	 	 	 	 	r1   c                     |                                  }|                     t          dd| j        d dt          t          t
          fd| j        d |ddg           d S )Nr   Tr   F)r;   r<   r=   r^   rw   rn   ro   )rp   r@   r   r`   r   r   gen_tgt_fast_armor_auth_datarq   s     r0   !test_fast_ad_fx_fast_armor_ticketz,FAST_Tests.test_fast_ad_fx_fast_armor_ticket  s    ..00
 	 ('( "/"  ((7(=(? "?""0 %	 	!
 	 	 	 	 	r1   c           
          |                      t          dd| j        d dt          dd| j        | j        d dg           d S )Nr   Tr   )r;   r<   r=   gen_enc_authdata_fnr^   rw   )r@   r   r`   r  rB   s    r0   (test_fast_ad_fx_fast_armor_enc_auth_dataz3FAST_Tests.test_fast_ad_fx_fast_armor_enc_auth_data  sm    
 	 ('( "/"  ('( '+'I"/" !
 	 	 	 	 	r1   c           
          |                      t          t          dt          | j        dt          dd| j        t          | j        dg           d S r   )r@   r   r   r   r{   r   r#  rB   s    r0   "test_fast_ad_fx_fast_armor_ticket2z-FAST_Tests.test_fast_ad_fx_fast_armor_ticket2  sk     ''? 6$($5  ''( !%!C6$($E !
 	 	 	 	 	r1   c                 j    |                      t          t          t          fd| j        d dg           d S NTr   r   rB   s    r0   test_fast_tgs_service_ticketz'FAST_Tests.test_fast_tgs_service_ticket  sO     	'(6(6(8 ":" 	!
 		 		 		 		 		r1   c                 j    |                      t          t          t          fd| j        d dg           d S r+  r   rB   s    r0   !test_fast_tgs_service_ticket_machz,FAST_Tests.test_fast_tgs_service_ticket_mach  sM    '(6(6(8 ":" 	!
 		 		 		 		 		r1   c                 R    |                      t          dd| j        ddg           d S )Nr   F)r;   r<   r=   r^   include_subkeyr_   rB   s    r0   test_simple_tgs_no_subkeyz$FAST_Tests.test_simple_tgs_no_subkey  sE    ''(!"/"' !
 	 	 	 	 	r1   c                     |                                  }|                     t          t          t          fd| j        d d|ddg           d S )NTF)r;   r<   r=   r^   rw   r0  rn   ro   )rp   r@   r   r   r   r`   rq   s     r0   test_fast_tgs_no_subkeyz"FAST_Tests.test_fast_tgs_no_subkey  sj    ..00 	'(7(>(@ "/""'"0 %
 
!
 	 	 	 	 	r1   c                 "   |                      t          t          dt          | j        t          t          j        d                    ddt          dd| j        t          | j        t          t          j        d                    ddg           d S )NThide-client-names)r;   r<   r=   rw   rx   r   expected_anonr   )r;   r<   r=   r?   rw   rx   r   r6  )	r@   r   r   r   r{   r   r   FastOptionsr   rB   s    r0   test_fast_hide_client_namesz&FAST_Tests.test_fast_hide_client_names.  s    &'? 6$($5 #I$9'%) %) !* !*!%	 	 ''( !%!C6$($5 #I$9'%) %) !* !*!%
 
!
 	 	 	 	 	r1   c                     |                      t          dd| j        d t          t	          j        d                    ddg           d S )Nr   Tr5  )r;   r<   r=   r^   rw   r   r6  )r@   r   r`   r   r   r7  rB   s    r0   test_fast_tgs_hide_client_namesz*FAST_Tests.test_fast_tgs_hide_client_namesG  sg    ''( "/" #I$9'%) %) !* !*!%	 	!
 	 	 	 	 	r1   c                     |                      t          t          dt          | j        dt          dd| j        t          | j        ddg           d S )NTr   r   r   )r;   r<   r=   r?   rw   rx   repeat)r@   r   r   r   r{   $generate_enc_challenge_padata_replayrB   s    r0   $test_fast_encrypted_challenge_replayz/FAST_Tests.test_fast_encrypted_challenge_replayU  sn     	&'? 6$($5  ''( !%!J6$($5 !
 	 	 	 	 	r1   c                 F    |d         }|                      |          }|g|fS Npreauth_key)"get_enc_timestamp_pa_data_from_keyr8   kdc_exchange_dictcallback_dictreq_bodykeypadatas         r0   rA   z(FAST_Tests.generate_enc_timestamp_padatan  s.      .88==x!!r1   r   c                     |d         }|d         }|                      ||          }|                     ||          }|g|fS )N	armor_keyrA  r   )generate_client_challenge_keyget_challenge_pa_data)	r8   rD  rE  rF  r   rJ  rG  client_challenge_keyrH  s	            r0   r   z(FAST_Tests.generate_enc_challenge_padataw  sX    
 &k2	. ..y#>> 	++,@t+LLx!!r1   c                     |d         }|d         }|                      ||          }|                     |          }|g|fS )NrJ  rA  )generate_kdc_challenge_keyrL  )r8   rD  rE  rF  rJ  rG  kdc_challenge_keyrH  s           r0   r   z6FAST_Tests.generate_enc_challenge_padata_wrong_key_kdc  sS     &k2	. ++Is;; 	++,=>>x!!r1   c                 F    |d         }|                      |          }|g|fS r@  )rL  rC  s         r0   r   z2FAST_Tests.generate_enc_challenge_padata_wrong_key  s.      .++C00x!!r1   c                     |                     d          }|@|d         }|d         }|                     ||          }|                     |          }||d<   |g|fS )Nreplay_padatarJ  rA  )getrK  rL  )r8   rD  rE  rF  rH  rJ  rG  rM  s           r0   r=  z/FAST_Tests.generate_enc_challenge_padata_replay  su     ""?33>)+6I#M2C 229cBB !//0DEEF-3M/*x!!r1    c                 <    |                      t          d          }|S Nr1   )PA_DATA_creater"   )	r8   _kdc_exchange_dict_callback_dict	_req_body_fast_padata_fast_armor	_checksum_fast_optionsfast_padatas	            r0   r   zFAST_Tests.generate_empty_fast  s     )).#>>r1   Nc                 ~   | j         r|                                  t          t          j        d                    }|                     ||          }|                                 }|                                 }|                                }|	                                }	| 
                    t          |g          }
|                                }|	                                }| 
                    t          ||g          }|                     |          }|j        }|                                d d         }|	                                }d}| 
                    t          ||g          }|                     |          }|j        }|                     |          }|j        }d }d }|D 	]
}|                    d          }|                     |t$          t&          f           |                    d          }|dk    rd	}n"t)          |t*          j        j                  s|f}|D ]%}|                     |t1          d
                     &|                    d          }|                     t5          |          t6                     |r|                     d|           |                    d          }||                     d|           nt8          |vr|                     d|           |                    dd           } |  |             }!nd }!|                    dd          }"nd }d }!|                     d|           d }"|t&          k    r |                    d          }# |#            }$n|                     d|           d }$t=          |          dk    r
| j        }%d }&n	d }%| j         }&|                    dtB          tD          f          }'|t$          k    r|
nd }(|	})|                    dd          }*|*r| #                    t$          |           d|v r|                    d          }+n|*r|
}+n|t$          k    r|}+n|}+|t$          k    r|},n|},|t&          k    r|$j$        }-n|
}-|                    dd           }.|.| %                    |           |                    d|-          }/|                    dd          }0|                    d|	          }1|                    d|+          }2|                    d|,          }3|&                                }4| '                    tP          j)        j*                  }5|t$          k    r%|r| +                    |5|!j,                  }6|5}7nd }6|5}7n|q| '                    tP          j)        j*                  }7| +                    |7|!j,                  }8tQ          j-        |8j.        |5j.        dd          }6t_          |6d           }6n| +                    |5|$j,                  }6|5}7|                    dd          sd }5|r4|                    dd           }9|9ta          j1        | j2        |"           }9nd }9|| j3        nd }:d! };|                    d"d           }<|                    d#d          }=|                    d$d%          }>|                    d&|          }?|                    d'd           }@|t$          k    rG|@E| 4                    |           | 5                    ||d         |6                                          }And }A|r|@}B|ta          j1        |;|g(          nd }Cnd }B|@}C|                    d)d           }D|D |D            g}End }E|                    d*d           }F|F% |F            g}G|5}Htn          }I|H|$j,        }Htp          }Ind }Gd }Hd }I|s,|                     d+|           |                     d,|           |                    d+d           }J|                    d,d           }K|                    d-d           }L|Lt          j9        |L          }L|                    d.d           }M|Mt          j9        |M          }M|                    d/d           }N|                    d0d          }O|t$          k    r|*r|}P|}Qn|}P|}Q | j:        d	i d|1d|/d|0d|3d|2d1|Pd-|Ld.|Md2|Qd3|9d4|:d5|Bd6|d7|Cd8|%d9|&d:| j;        d;i d|d<|'d=|4d>|5d?|Ad@|EdA|6dB|!dC|7d&|?d+|Jd,|Kd#|=d"|<d$|>d/|Nd0|Od|.}Rny | j<        d	i d|1d|/d|0d|3d|2d1|d-|Ld.|Md2|d3|9d4|:d5|Bd6|d7|Cd8|%d9|&d:| j;        d|d;i dD|$dA|6dB|!dC|7d>|5d@|EdEd d&|?d+|Jd,|Kd#|=d"|<d$|>d/|Nd0|Od|.}R|                    dFdG          }St1          |S          D ]}T| =                    |R|(|)|+|'|G|H|IH          }Ut=          |          dk    rg| >                    |U|           d }d }|RdI         }V| ?                    |V|=J          }W|=r| 4                    |W           | @                    |W           | A                    |U|           dK|Rv r| B                    |RdK                   }nd }t          |v r	|RdL         }d }| #                    i |           	d S )MNzforwardable,canonicalize)account_typeopts)	name_typenameshostr;   r<   r   r      r=   rw   rx   r   rU  r^   r   rF   Frm   ro   expected_cnamer6  expected_crealmrn   expected_srealms   explicitarmors   tgsarmorr0  Tr   )r   c                 $    t          |          |fS r'   )list)rY  rZ  rF  rH  s       r0   _generate_padata_copyz<FAST_Tests._run_test_sequence.<locals>._generate_padata_copyj  s     F||X--r1   rT   rN   r   r   r   r?   )rH  r  r&  r   r   re   unexpected_flagsr   ry   expected_supported_etypesticket_decryption_keygenerate_fast_fngenerate_fast_armor_fngenerate_fast_padata_fnfast_armor_typegenerate_padata_fncheck_error_fncheck_rep_fncheck_kdc_private_fnrE  client_as_etypesexpected_saltauthenticator_subkeyrA  	auth_datarJ  	armor_tgtarmor_subkeytgtbody_checksum_typer<     )cnamer   rm   r   EncAuthorizationDataEncAuthorizationData_keyEncAuthorizationData_usagerep_ticket_creds)rN   fast_cookiepreauth_etype_info2)Dstrict_checkingcheck_kdc_fast_supportr   r   
KDCOptionsget_cached_credsget_service_credsget_krbtgt_credsget_username	get_realmPrincipalName_creater   r    TicketDecryptionKey_from_credstgs_supported_enctypesr   popassertInr   r   
isinstancecollectionsabc	ContainerrangeassertIstypeboolr   assertNotInlengeneric_check_kdc_errorgeneric_check_kdc_repr   r   assertEqualr  
assertTrueget_salt	RandomKeykcryptoEnctypeAES256generate_armor_keysession_keycf2rG  r   r   r   generate_simple_fastgenerate_ap_reqassertIsNotNonePasswordKey_from_etype_info2get_kvnor   r   TicketFlagsas_exchange_dictgeneric_check_kdc_privatetgs_exchange_dict_generic_kdc_exchangecheck_replyget_ticket_pacassertIsNonecheck_error_repcreate_fast_cookier   )Xr8   test_sequencerH   rP   kdc_options_defaultclient_credstarget_credskrbtgt_credsclient_usernameclient_realmclient_cnamekrbtgt_usernamekrbtgt_realmkrbtgt_snamekrbtgt_decryption_keykrbtgt_etypestarget_usernametarget_realmtarget_servicetarget_snametarget_decryption_keytarget_etypesclient_decryption_keyclient_etypesr  r  kdc_dictr;   r<   errorr=   ru  rx   r~  r   r^   r  rw  rx  r   r  crealmrF   rm   srealm	tgt_cnamero   ri  r6  rj  rn   rk  r{  r|  rJ  r  explicit_armor_keyrr  rs  rn  rT   rN   r   r   r?   rA  rt  rv  r  r}  r&  enc_auth_dataenc_auth_data_keyenc_auth_data_usager   r   re   ro  r   ry   rp  decryption_keyrD  r<  _repticketpacsX                                                                                           r0   r@   zFAST_Tests._run_test_sequence  s     	*'')))!)"6 8F #G #G H H ,,.2= - ? ?--//,,..&3355#--//00<8G7H 1 J J '3355#--//00!/<)H 1 J J $ C C! !$;&3355crc:#--//00 (I 1 K K $ C C! !$; $ C C! !$;"% L	+ L	+H||J//HMM(Z$=>>>"*,,/D"E"E"a''&(## 3[_5NOO =':&<#, 1 1eU3ZZ0000||J//HMM$x..$/// $lH555"*,,|"<"<".MM"4h????$,???$$%7BBB#+<<0BD#I#I #/ 0 0 2 2II $I'||NB??"& 	  :::#;&&%\\,77
 jll  x888&''1,,!%!=#!%#9\\(-D-=-? @ @F %-
$:$:LLE!F",,}e<<K 7  X666("" W-- )(EE++(EE(E:%%%%;&&I		(	#<<==L' 3444%\\*:IFFN$LL).0 0M&ll+<lKKO%\\*:EBBN&ll+<fEEO(1133M#'>>'/2H#I#I :%% 8 $ 7 78L8A8M!O !OI#7LL $I#7LL".#'>>'/2H#I#IL)-)@)@$!-*/ */& !(,>,B,@,D,<,7!9 !9I !2)T B BII $ 7 78L8;!I !II#7L<< 0$77 ,'+$ (#+<<t#D#D #+'0'81%1(3 (3 (3$ $(  #. $$ #
. . . #,,}d;;K!lD99J",,}c::K",,}6IJJK$LL$??M:%%-*C$$%8999"?? '* ))++- -
 # 3*7' +6*A '0&78MAL'O 'O 'O 'OGK #" +/'%2"&ll+<dCCO*,_../		 	"*,,/Dd"K"K".!4!4!6!6 7$8!&@#$,(+%*E' $$(!&*# 8  h777  h777 [$77I [$77I%\\*:DAAN)!*!6~!F!F'||,>EE+#,#89I#J#J &ll+<dCCO$,LL1H$$O$O!:%% ;0=-%:NN0=-%:N$9D$9 $%/ $%/ $%/$3O$%/#1>$%/ #0-$%/ %4O	$%/
 $2>$%/ /H.G$%/ $2>$%/ &6%5$%/ +9.$%/ &6%5$%/ ,B+A$%/ -D,C$%/ %4O$%/ (:'9$%/ $2>$%/  ".!$%/" *.)G)G#$%/$ #%"%$%/& )<(;'$%/( &,V)$%/* #0-+$%/, *>)=-$%/. !,/$%/0 (i1$%/2 (i3$%/4 (i5$%/6 ".7$%/8 !,9$%/: (i;$%/< (i=$%/>  *z?$%/@ !,A$%/B !,C$%/D %4OE$%/F +@*?G$%/H ".I$%/!!L %;D$: #%/ #%/ #%/$3O#%/#1>#%/ #0-#%/ %4O	#%/
 $2>#%/ /<m#%/ $2>#%/ &6%5#%/ +@*?#%/ &6%5#%/ ,B+A#%/ -D,C#%/ %4O#%/ (:'9#%/ $2>#%/  ".!#%/" *.)G)G##%/$ )<(;%#%/& #%"'#%/( )#%/* (i+#%/, (i-#%/. "./#%/0 *>)=1#%/2 (i3#%/4 (,t5#%/6 !,7#%/8 (i9#%/: (i;#%/<  *z=#%/> !,?#%/@ !,A#%/B %4OC#%/D +@*?E#%/F ".G#%/!J \\(A..F6]] $3 $300% !)6->/B 1 D D *++q00$$S(333"&K*.' //ABF--f-LLC! /,,S1111))#....((.ABBB$(999&*&=&=-m<'> '> '+/3FFF-.CD ,+ /3++ R****Y
L	+ L	+r1   c                 B    |                      t          d          }|g|fS rW  )rX  r#   r8   rD  rE  rF  rH  s        r0   rj   z%FAST_Tests.generate_enc_pa_rep_padata/  s'     $$%:C@@x!!r1   c                     |                      |||          \  }}|                    |                     t          d                     ||fS rW  )r   appendrX  r#   r  s        r0   r   z/FAST_Tests.generate_enc_pa_rep_challenge_padata7  Y      ==>O>K>FH H 	d))*?EEFFFxr1   c                     |                      |||          \  }}|                    |                     t          d                     ||fS rW  )rA   r  rX  r#   r  s        r0   rf   z/FAST_Tests.generate_enc_pa_rep_timestamp_padataC  r  r1   c                 <    |                      t          d          }|S rW  )AuthorizationData_creater
   r8   r}  s     r0   r  z(FAST_Tests.generate_fast_armor_auth_dataO  s    112BCHH	r1   c                 <    |                      t          d          }|S rW  )r  r   r  s     r0   r  z'FAST_Tests.generate_fast_used_auth_dataT  s    11/3GG	r1   c                     |                                  }|                                 fd}|                                 }|                     |||          S )Nc                 >    | d                                         | S )Nzauthorization-data)r  )enc_partr}  s    r0   	modify_fnz:FAST_Tests.gen_tgt_fast_armor_auth_data.<locals>.modify_fn^  s"    )*11)<<<Or1   )r  checksum_keys)r`   r  get_krbtgt_checksum_keymodified_ticket)r8   r*   r  r  r}  s       @r0   r#  z'FAST_Tests.gen_tgt_fast_armor_auth_dataY  s{    $$&&6688		 	 	 	 	
 4466 ##H.72? $ A A 	Ar1   c                     |                      |           | j        r#|                     dt          |                     |                     t
          |          S )Nr   )r  r  assertNotEqualr  rX  r!   )r8   cookies     r0   r  zFAST_Tests.create_fast_cookiej  sT    V$$$ 	03v;;///""#3V<<<r1   c                    |                                  }t          j        }d|                                |fz  }|                    d|z  t
          j        dg          }t          |d         d         d                   }|                     t          j	        |z             |                     t          j
        |z             |                     t          j        |z             d S )Nz%s-%dz<SID=%s>zmsDS-SupportedEncryptionTypes)basescopeattrsr   )	get_samdbr   DOMAIN_RID_KRBTGTget_domain_sidsearchldb
SCOPE_BASEintr  KERB_ENCTYPE_FAST_SUPPORTED(KERB_ENCTYPE_COMPOUND_IDENTITY_SUPPORTEDKERB_ENCTYPE_CLAIMS_SUPPORTED)r8   samdb
krbtgt_rid
krbtgt_sidresr  s         r0   r  z!FAST_Tests.check_kdc_fast_supportq  s       /
 4 4 6 6
CC
ll
Z 7!$"A!B  D D CF#BCAFGG0=@	B 	B 	B=M	O 	O 	O2]B	D 	D 	D 	D 	Dr1   c                     | j         ;|                                 }|                     |          t          |           _         | j         S r'   )r,   get_mach_credsget_tgtr  )r8   
mach_credss     r0   r{   zFAST_Tests.get_mach_tgt  s=    = ,,..J"&,,z":":DJJ}r1   c                     | j         ;|                                 }|                     |          t          |           _         | j         S r'   )r*   get_client_credsr  r  )r8   
user_credss     r0   r`   zFAST_Tests.get_user_tgt  s=    = ..00J"&,,z":":DJJ}r1   c                     | j         P|                                 }|                                 }|                     ||          t	          |           _         | j         S r'   )r+   r`   r  get_service_ticketr  )r8   r*   service_credss      r0   r   z"FAST_Tests.get_user_service_ticket  Y    #+((**H 2244M''-@@ JJ* ''r1   c                     | j         P|                                 }|                                 }|                     ||          t	          |           _         | j         S r'   )r-   r{   r  r  r  )r8   r,   r  s      r0   r   z"FAST_Tests.get_mach_service_ticket  r  r1   c                 R   |                                  }|                                 }|                     |          }t          |j        |j                  }|j        }t          j        |t          j	        |t          j
        |i}|                     ||t          j
        di          S )NT)r  include_checksums)r   r  r  r   rG  kvnor  r   PAC_TYPE_SRV_CHECKSUMPAC_TYPE_KDC_CHECKSUMPAC_TYPE_TICKET_CHECKSUMr  )r8   r  r  
krbtgt_key
zeroed_key
server_keyr  s          r0   r   z.FAST_Tests.get_service_ticket_invalid_checksum  s    --//,,..88FF
&z~'18 8
 *
):):,j
 ##'&?F $ H H 	Hr1   )r   )rU  )i__name__
__module____qualname__classmethodr)   r3   rC   rL   rQ   rU   rW   rZ   ra   rg   rk   rr   ru   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   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!  r$  r'  r)  r,  r.  r1  r3  r8  r:  r>  rA   r   r   r   r=  r   r	   rJ   USERr@   rj   r   rf   r  r  r#  r  r  r{   r`   r   r   r   __classcell__)r/   s   @r0   r%   r%   E   s%       ' ' ' ' [') ) ) ) )
  5 5 5"9 9 9*5 5 5&5 5 5&5 5 5&    "
 
 
      "     &  &  
 
 

 
 
  *
 
 
  .    *
 
 

 
 
        "  (  	 	 		 	 	  &5 5 5*  &  (  "  2  (       ,  &	 	 	
 
 
  ,    ,      2    2    2    2    2  
 
 
  2  :  .  :  4  (  
 
 
	 	 	  &  2    2" " " ,-	" " " "
" 
" 
"" " "" " "0 +-
 
 
 
 +6*A*F'+w+ w+ w+ w+r" " "
  
  
 
  
  
   
  
A A A"= = =D D D*    ( ( (( ( (H H H H H H Hr1   r%   __main__)8sysospathinsertenvironr   r  r  samba.dcerpcr   r   samba.tests.krb5.raw_testcaser   r   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   r   r   r   r   r   r   r   r    r!   r"   r#   samba.tests.krb5.rfc4120_pyasn1testskrb5rfc4120_pyasn1r   samba.tests.krb5.kcryptor  r4   r6   r%   r  unittestmainr   r1   r0   <module>r1     s  ( 


 				 <      !$
          



 * * * * * * * * N N N N N N N N 6 6 6 6 6 6                                                       8 4 3 3 3 3 3 3 3 3 3 3 3 * * * * * * * * * * * * tH tH tH tH tH tH tH tHn; zNOOOHMOOOOO	 r1   