
    FcL                     b   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 d dl	m
c mc mZ d dlm
c mc mZ d dl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 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)DynamicTestCase)KDCBaseTest)	KDC_ERR_C_PRINCIPAL_UNKNOWNKDC_ERR_S_PRINCIPAL_UNKNOWNKDC_ERR_ETYPE_NOSUPPKDC_ERR_PREAUTH_REQUIREDKU_PA_ENC_TIMESTAMPNT_ENTERPRISE_PRINCIPALNT_PRINCIPALNT_SRV_INSTPADATA_ENC_TIMESTAMPFc                   ,    e Zd ZdddedddddddfdZdS )AsReqBaseTestNc                 X   |                                 }||}|                                 }|                                }|                     d          }|                                 }|j        }|                                }|                     ||                    d                    }||                     t          ||g          }|}||}|}|}|	                                }|| 
                    d          }||}|t          j        d          }||}nt          }|                     ||||||||||||d |||d|          \  }}|d S |d	         }|                     |           |                     ||d
         |          }|                                 \  }}|                     ||          } |                     | t          j                              } t*          }!|                     ||!|           } |                     | t          j                              } |                     t2          |           } | g}"d
}#|	|	}#|                     |          }$|                     ||||||#|||||||"||||
||$d          \  }%}|                     |%           |S )NT)require_strongest_key/	name_typenamesi  )offsetforwardable)expected_supported_etypesexpected_account_namepac_requestexpect_edatapreauth_etype_info2r   )kvno)asn1Spec)r   r   r   preauth_keyticket_decryption_keyr   )get_usernameget_default_enctypesget_kvnoget_krbtgt_credstgs_supported_enctypes	get_realmPrincipalName_createsplitr   get_saltget_KerberosTime	krb5_asn1
KDCOptionsr
   _test_as_exchangeassertIsNotNonePasswordKey_from_etype_info2get_KerberosTimeWithUsecPA_ENC_TS_ENC_create
der_encodePA_ENC_TS_ENCr   EncryptedData_createEncryptedDataPA_DATA_creater   TicketDecryptionKey_from_creds)&selfclient_credsclient_accountexpected_cnamesnamer   etypesexpected_errorr   expected_pa_errorexpect_pa_edatakdc_optionstill	user_nameclient_as_etypesclient_kvnokrbtgt_credskrbtgt_accountkrbtgt_supported_etypesrealmcnameexpected_crealmexpected_srealmexpected_snameexpected_saltinitial_error_moderepkdc_exchange_dictetype_info2r!   patimepausecpa_tsenc_pa_ts_usagepreauth_padatapreauth_error_modekrbtgt_decryption_keyas_reps&                                         ?/usr/lib/python3/dist-packages/samba/tests/krb5/as_req_tests.py_run_as_req_enc_timestampz'AsReqBaseTest._run_as_req_enc_timestamp.   sK    !--//	!&N4466"++--,,4,HH%2244"."E&&(())I0>0D0DS0I0I * K K=--5CU4K . M ME  !"N$--//<(((66D>%F#.}==K%!/!9!%!7!7&="+%% "8 "' "'( %4'(=>[)))778CA=H 8 J J  88::))&&99	0G0I0IJJ-))+NN	0G0I0IJJ##$8%@@(!2 //== 	 %)$:$:&="+(#"7) %; % %!!* 	V$$$    )__name__
__module____qualname__r   r^    r_   r]   r   r   -   sJ        EI15T,815D48$.2p p p p p pr_   r   c                        e Zd Ze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 xZ S )AsReqKerberosTestsc                 x    |                                  D ]$\  }}dD ]}|d|}||f} | j        d|g|R   %d S )N)NTF_pac_test_as_req_no_preauth)etype_test_permutation_name_idxgenerate_dynamic_test)clsnameidxpactnametargss         r]   setUpDynamicTestCasesz(AsReqKerberosTests.setUpDynamicTestCases   s    >>@@ 	S 	SKT3* S S'+ttSS1c
))*BERERRRRRS	S 	Sr_   c                     t          t          |                                            t          | _        t
          | _        d S N)superre   setUpglobal_asn1_printdo_asn1_printglobal_hexdump
do_hexdump)r:   	__class__s    r]   ru   zAsReqKerberosTests.setUp   s3     $''--///.(r_   Nc                    |                                  }|                                }|                                 |                     d          }|                                }|                                }|                     t          |g          }	|                     t          ||g          }
|}|	}|}|
}|                                }t          fdt          j        j        t          j        j        t          j        j        fD                       rt          }nt           }|                     ||||d | j        d ||t'          |          |          }|                     ||	||
           d S )NF)require_keysr   c              3   (   K   | ]}|v o|v V  d S rs   rc   ).0etyperF   initial_etypess     r]   	<genexpr>z<AsReqKerberosTests._test_as_req_nopreauth.<locals>.<genexpr>   sG       3 3 ((DUn-D 3 3 3 3 3 3r_   )rM   r=   rN   rO   generate_padata_fncheck_error_fncheck_rep_fnexpected_error_moderF   rP   rC   r   )rL   rK   r>   r?   )get_client_credsr#   r$   r&   r(   r)   r   r   r+   anykcryptoEnctypeAES256AES128RC4r
   r	   as_exchange_dictgeneric_check_kdc_errorstr_generic_kdc_exchange)r:   r   rn   initial_kdc_optionsr;   r<   rH   rI   rK   rL   r>   rM   r=   rN   rO   rP   r   rS   rF   s    `                @r]   _test_as_req_nopreauthz)AsReqKerberosTests._test_as_req_nopreauth   s    ,,..%22444466,,%,@@%2244&&(())L1?0@ * B B))K1?0G * I I  $--// 3 3 3 3 3$_3$_3$_023 3 3 3 3 	7 #;"6 11+)+)#7 3-'/00 2   	""#4).).).*8	 	# 	: 	: 	: 	: 	:r_   c                     |                      |          \  }}|                     ||t          j        d                     d S )Nr   )rn   r   r   )etype_test_permutation_by_idxr   r-   r.   )r:   	etype_idxrn   rl   r?   s        r]   !_test_as_req_no_preauth_with_argsz4AsReqKerberosTests._test_as_req_no_preauth_with_args   sY    99)DDf##$*)2)=m)L)L 	$ 	N 	N 	N 	N 	Nr_   c                 X    |                                  }|                     |           d S rs   r   r^   r:   r;   s     r]   test_as_req_enc_timestampz,AsReqKerberosTests.test_as_req_enc_timestamp   s-    ,,..&&|44444r_   c                 X    |                                  }|                     |           d S rs   )get_mach_credsr^   r   s     r]   test_as_req_enc_timestamp_macz0AsReqKerberosTests.test_as_req_enc_timestamp_mac   s-    **,,&&|44444r_   c                 |    |                                  }|                     |t          j        j        h           d S Nr?   r   r^   r   r   r   r   s     r]   test_as_req_enc_timestamp_rc4z0AsReqKerberosTests.test_as_req_enc_timestamp_rc4   sH    ,,..&&O'( 	' 	* 	* 	* 	* 	*r_   c                 |    |                                  }|                     |t          j        j        h           d S r   r   r^   r   r   r   r   s     r]   !test_as_req_enc_timestamp_mac_rc4z4AsReqKerberosTests.test_as_req_enc_timestamp_mac_rc4   sH    **,,&&O'( 	' 	* 	* 	* 	* 	*r_   c                 ~    |                                  }|                     |t          j        j        dh           d S Nir   r   r   s     r]   #test_as_req_enc_timestamp_rc4_dummyz6AsReqKerberosTests.test_as_req_enc_timestamp_rc4_dummy   sM    ,,..&&O' 	' 	 	 	 	 	r_   c                 ~    |                                  }|                     |t          j        j        dh           d S r   r   r   s     r]   'test_as_req_enc_timestamp_mac_rc4_dummyz:AsReqKerberosTests.test_as_req_enc_timestamp_mac_rc4_dummy  sM    **,,&&O' 	' 	 	 	 	 	r_   c                     |                                  }|                     |t          j        j        t          j        j        h           d S r   )r   r^   r   r   r   r   r   s     r]   $test_as_req_enc_timestamp_aes128_rc4z7AsReqKerberosTests.test_as_req_enc_timestamp_aes128_rc4  sR    ,,..&&O*O') 	' 	* 	* 	* 	* 	*r_   c                     |                                  }|                     |t          j        j        t          j        j        h           d S r   )r   r^   r   r   r   r   r   s     r]   (test_as_req_enc_timestamp_mac_aes128_rc4z;AsReqKerberosTests.test_as_req_enc_timestamp_mac_aes128_rc4  sR    **,,&&O*O') 	' 	* 	* 	* 	* 	*r_   c                     |                                  }|                                }|                     ||t          d           d S )NFr<   r@   r   )r   get_spnr^   r   r:   r;   spns      r]   test_as_req_enc_timestamp_spnz0AsReqKerberosTests.test_as_req_enc_timestamp_spn  sV    **,,""$$&&6 	' 	  	  	  	  	 r_   c                 0   |                                  }|                                                                }|                     | j        j        dd| d| i          }|                                }|                     ||t          d           d S )Nupnhost/{account}.@account_typeoptsFr   )		get_samdbdomain_dns_nameupperget_cached_credsAccountTypeCOMPUTERr   r^   r   r:   samdbrK   r;   r   s        r]   #test_as_req_enc_timestamp_spn_realmz6AsReqKerberosTests.test_as_req_enc_timestamp_spn_realm"  s      %%''--//,,)2<U<<U<<= - ? ? ""$$&&6 	' 	  	  	  	  	 r_   c                 *   |                                  }|                                                                }|                     | j        j        d| d| d| d          }|                                }|                     ||           d S )Nr   r   r   r   r   )r<   )r   r   r   r   r   r   r   r^   r   s        r]   !test_as_req_enc_timestamp_spn_upnz4AsReqKerberosTests.test_as_req_enc_timestamp_spn_upn/  s      %%''--//,,)2<U<<U<<4U446 6 - 7 7 ""$$&&|C&HHHHHr_   c                     |                                  }|                                }|                     ||t          t          d           d S )NF)r<   r   r@   r   )r   r   r^   r   r   r   s      r]   (test_as_req_enc_timestamp_spn_enterprisez;AsReqKerberosTests.test_as_req_enc_timestamp_spn_enterprise:  sY    **,,""$$&&-6	 	' 	  	  	  	  	 r_   c                 <   |                                  }|                                                                }|                     | j        j        dd| d| i          }|                                }|                     |t          |t          d           d S )Nr   r   r   r   Fr   r<   r@   r   
r   r   r   r   r   r   r   r^   r   r   r   s        r]   .test_as_req_enc_timestamp_spn_enterprise_realmzAAsReqKerberosTests.test_as_req_enc_timestamp_spn_enterprise_realmC  s      %%''--//,,)2<U<<U<<= - ? ? ""$$&&-6 	' 	  	  	  	  	 r_   c                 D   |                                  }|                                                                }|                     | j        j        d| d| d| d          }|                                }|                     |t          |t          d           d S )Nr   r   r   r   Fr   r   r   s        r]   ,test_as_req_enc_timestamp_spn_upn_enterprisez?AsReqKerberosTests.test_as_req_enc_timestamp_spn_upn_enterpriseR  s      %%''--//,,)2<U<<U<<4U446 6 - 7 7 ""$$&&-6 	' 	  	  	  	  	 r_   c           	      n   |                                  }|                     | j        j        d|i          }|                                }|                                }| d| }|                     t          |g          }|                     |||t          t          j        d                     d S Nr   r   r   r   canonicalize)r<   r=   r   rC   )get_new_usernamer   r   USERr#   r(   r)   r   r^   r   r-   r.   r:   r   r;   rE   rK   r<   r=   s          r]   test_as_req_enterprise_canonz/AsReqKerberosTests.test_as_req_enterprise_canonb  s    ##%%,,). -   !--//	&&((%////22"+ 3   	&&))-!,^<< 	' 	> 	> 	> 	> 	>r_   c           	         |                                  }|                     | j        j        d|i          }|                                }|                                                                }| d| }|                     t          |g          }| 	                    |||t          t          j        d                     d S r   )r   r   r   r   r#   r(   lowerr)   r   r^   r   r-   r.   r   s          r]   !test_as_req_enterprise_canon_casez4AsReqKerberosTests.test_as_req_enterprise_canon_casew  s    ##%%,,). -   !--//	&&((..00%////22"+ 3   	&&))-!,^<< 	' 	> 	> 	> 	> 	>r_   c           	      n   |                                  }|                     | j        j        d|i          }|                                }|                                }| d| }|                     t          |g          }|                     |||t          t          j        d                     d S r   )r   r   r   r   r#   r(   r)   r   r^   r   r-   r.   r   s          r]    test_as_req_enterprise_canon_macz3AsReqKerberosTests.test_as_req_enterprise_canon_mac  s    ##%%,,)2 -   !--//	&&((%////22"+ 3   	&&))-!,^<< 	' 	> 	> 	> 	> 	>r_   c           	         |                                  }|                     | j        j        d|i          }|                                }|                                                                }| d| }|                     t          |g          }| 	                    |||t          t          j        d                     d S r   )r   r   r   r   r#   r(   r   r)   r   r^   r   r-   r.   r   s          r]   %test_as_req_enterprise_canon_mac_casez8AsReqKerberosTests.test_as_req_enterprise_canon_mac_case  s    ##%%,,)2 -   !--//	&&((..00%////22"+ 3   	&&))-!,^<< 	' 	> 	> 	> 	> 	>r_   c                    |                                  }|                     | j        j        d|i          }|                                }|                                }| d| }|                     ||t          d           d S Nr   r   r   r   )r<   r   rC   )r   r   r   r   r#   r(   r^   r   r:   r   r;   rE   rK   r<   s         r]   test_as_req_enterprise_no_canonz2AsReqKerberosTests.test_as_req_enterprise_no_canon  s    ##%%,,). -   !--//	&&((%////&&)-	 	' 	 	 	 	 	r_   c                 2   |                                  }|                     | j        j        d|i          }|                                }|                                                                }| d| }|                     ||t          d           d S r   )	r   r   r   r   r#   r(   r   r^   r   r   s         r]   $test_as_req_enterprise_no_canon_casez7AsReqKerberosTests.test_as_req_enterprise_no_canon_case  s    ##%%,,). -   !--//	&&((..00%////&&)-	 	' 	 	 	 	 	r_   c                    |                                  }|                     | j        j        d|i          }|                                }|                                }| d| }|                     ||t          d           d S r   )r   r   r   r   r#   r(   r^   r   r   s         r]   #test_as_req_enterprise_no_canon_macz6AsReqKerberosTests.test_as_req_enterprise_no_canon_mac  s    ##%%,,)2 -   !--//	&&((%////&&)-	 	' 	 	 	 	 	r_   c                 2   |                                  }|                     | j        j        d|i          }|                                }|                                                                }| d| }|                     ||t          d           d S r   )	r   r   r   r   r#   r(   r   r^   r   r   s         r]   (test_as_req_enterprise_no_canon_mac_casez;AsReqKerberosTests.test_as_req_enterprise_no_canon_mac_case  s    ##%%,,)2 -   !--//	&&((..00%////&&)-	 	' 	 	 	 	 	r_   c                 ~   |                                  }|                                 }|                                }|                                }|d d         }|                     t
          ||g          }| j        r |                     ||t          d           d S |                     ||t                     d S )N   r   F)r>   rA   rB   )r>   r@   )	r   r&   r#   r(   r)   r   strict_checkingr^   r   )r:   r;   rH   rI   rK   wrong_krbtgt_princs         r]   test_krbtgt_wrong_principalz.AsReqKerberosTests.test_krbtgt_wrong_principal  s    ,,..,,..%2244&&(( (+!66!!5) 7 + +  
	<**("= %	 + ' ' ' ' ' **(: + < < < < <r_   c                 \    |                                  }|                     |d           d S )N99990913024805Z)rD   r   r   s     r]   test_future_tillz#AsReqKerberosTests.test_future_till  s@    ,,..&&" 	' 	$ 	$ 	$ 	$ 	$r_   )NN)!r`   ra   rb   classmethodrq   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   __classcell__)rz   s   @r]   re   re      s        S S [S) ) ) ) ) $(370: 0: 0: 0:dN N N5 5 55 5 5* * ** * *    * * ** * *          	I 	I 	I                > > >*> > >*> > >*> > >*           $< < <8$ $ $ $ $ $ $r_   re   __main__)!sysospathinsertenvironsamba.testsr   samba.tests.krb5.kdc_base_testr   samba.tests.krb5.kcryptotestskrb5r   samba.tests.krb5.rfc4120_pyasn1rfc4120_pyasn1r-   "samba.tests.krb5.rfc4120_constantsr   r   r	   r
   r   r   r   r   r   rv   rx   r   re   r`   unittestmainrc   r_   r]   <module>r     s  & 


 				 <      !$
  ' ' ' ' ' ' 6 6 6 6 6 6 * * * * * * * * * * * * 3 3 3 3 3 3 3 3 3 3 3 3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  q q q q qK q q qh w$ w$ w$ w$ w$ w$ w$ w$t zNOOOHMOOOOO	 r_   