
    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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mZmZmZ dZdZd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)KDCBaseTest)AES128_CTS_HMAC_SHA1_96AES256_CTS_HMAC_SHA1_96ARCFOUR_HMAC_MD5KDC_ERR_PREAUTH_REQUIRED
KRB_AS_REP	KRB_ERRORKU_AS_REP_ENC_PARTKU_PA_ENC_TIMESTAMPPADATA_ENC_TIMESTAMPPADATA_ETYPE_INFO2NT_PRINCIPALNT_SRV_INSTFy   z   i   c                   x     e Z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 xZS )SimpleKerberosTestsc                     t          t          |                                            t          | _        t
          | _        d S )N)superr   setUpglobal_asn1_printdo_asn1_printglobal_hexdump
do_hexdump)self	__class__s    F/usr/lib/python3/dist-packages/samba/tests/krb5/compatability_tests.pyr   zSimpleKerberosTests.setUp7   s3    !4((..000.(    c                     |                                  }|                     |          \  }}|                     t          |d                    d S Nr   )get_user_credsas_reqassertEqualMIT_ENC_AS_REP_PART_TYPE_TAGr   credsenc_s       r   test_mit_EncASRepPart_tagz-SimpleKerberosTests.test_mit_EncASRepPart_tag<   sI    ##%%;;u%%a5s1v>>>>>r    c                     |                                  }|                     |          \  }}|                     t          |d                    d S r"   )r#   r$   r%    HIEMDAL_ENC_AS_REP_PART_TYPE_TAGr'   s       r   test_heimdal_EncASRepPart_tagz1SimpleKerberosTests.test_heimdal_EncASRepPart_tagA   sI    ##%%;;u%%a93q6BBBBBr    c                     |                                  }|                     |          \  }}d|v r|                     d           d S d S )Nkvnozkvno present in EncryptedDatar#   r$   failr   r(   r*   r)   s       r   test_mit_EncryptedData_kvnoz/SimpleKerberosTests.test_mit_EncryptedData_kvnoF   sQ    ##%%;;u%%CS==II566666 =r    c                     |                                  }|                     |          \  }}d|vr|                     d           d S d S )Nr0   zkvno absent in EncryptedDatar1   r3   s       r   test_heimdal_EncryptedData_kvnoz3SimpleKerberosTests.test_heimdal_EncryptedData_kvnoL   sT    ##%%;;u%%CII455555 r    c                 X   |                                  }|                     |          \  }}|                     t          |d                    |                     |t          j                              }t          |d         d          }|                     t          |z             d S Nr   asn1Specflags   )base)
r#   r$   r%   r&   
der_decode	krb5_asn1EncTGSRepPartint
assertTrueENC_PA_REP_FLAGr   r(   r)   r*   as_repr;   s         r   "test_mit_EncASRepPart_FAST_supportz6SimpleKerberosTests.test_mit_EncASRepPart_FAST_supportR   s    ##%%;;u%%a5s1v>>>y/F/H/HIIF7O!,,, 	%/00000r    c                 h   |                                  }|                     |          \  }}|                     t          |d                    |                     |t          j                              }|d         }t          |d         d          }|                     t          |z             d S r8   )
r#   r$   r%   r-   r>   r?   EncASRepPartrA   rB   rC   rD   s         r   2test_heimdal_and_windows_EncASRepPart_FAST_supportzFSimpleKerberosTests.test_heimdal_and_windows_EncASRepPart_FAST_support\   s    ##%%;;u%%a93q6BBBy/E/G/GHHwF7O!,,, 	%/00000r    c                    |                                  }t          f}|                     ||          ^}}|                     |           |                     |          }d|d         vr|                     d           d S d S )Nsaltr   z8(MIT) Salt not populated for ARCFOUR_HMAC_MD5 encryptionr#   r   as_pre_auth_reqcheck_preauth_repget_etype_info2r2   r   r(   etypesrepr*   etype_info2s         r   test_mit_arcfour_saltz)SimpleKerberosTests.test_mit_arcfour_saltg   s    ##%%"$((77	qs###**3//Q''IIJL L L L L ('r    c                    |                                  }t          f}|                     ||          ^}}|                     |           |                     |          }d|d         v r|                     d           d S d S )NrK   r   z8(Heimdal) Salt populated for ARCFOUR_HMAC_MD5 encryptionrL   rP   s         r   test_heimdal_arcfour_saltz-SimpleKerberosTests.test_heimdal_arcfour_saltq   s    ##%%"$((77	qs###**3//[^##IIJL L L L L $#r    c                 `   |                                  }|                                 }|                                 }|                     |          }|                     |          }|                     ||d           |                     ||          }|                     ||dd           d S NFservice_ticketT)rZ   expect_ticket_checksumget_client_credsget_service_credsget_krbtgt_credsTicketDecryptionKey_from_credsget_tgtverify_ticketget_service_ticketr   
user_credstarget_credskrbtgt_credskeytgtrZ   s          r   test_ticket_signaturez)SimpleKerberosTests.test_ticket_signature   s    **,,
--//,,..11,?? ll:&& 	3E::: 00lCC 	>3t26 	 	8 	8 	8 	8 	8r    c                 `   |                                  }|                                 }|                                 }|                     |          }|                     |          }|                     ||d           |                     ||          }|                     ||dd           d S rX   r\   rd   s          r   "test_mit_pre_1_20_ticket_signaturez6SimpleKerberosTests.test_mit_pre_1_20_ticket_signature   s    **,,
--//,,..11,?? ll:&& 	3E::: 00lCC 	>3t27 	 	9 	9 	9 	9 	9r    c                 b   |                                  }|                                 }|                                 }|                     |          }|                     |          }|                     ||d           |                     ||          }|                     ||ddd           d S )NFrY   T)rZ   r[   expect_full_checksumr\   rd   s          r   test_full_signaturez'SimpleKerberosTests.test_full_signature   s    **,,
--//,,..11,?? ll:&& 	3E::: 00lCC 	>3t2604 	 	6 	6 	6 	6 	6r    c                    |                                 }|                                }|                     t          |g          }|                     t          d|g          }|                     d          }t          j        d          }d }	|                     |	t          |          |||d |d d|d d           }
| 
                    |
          }|||||fS )N)	name_typenameskrbtgti  )offsetforwardablepadatakdc_optionscnamerealmsname	from_time	till_time
renew_timenoncerQ   	addressesadditional_tickets)get_username	get_realmPrincipalName_creater   r   get_KerberosTimer?   
KDCOptionsAS_REQ_createstrsend_recv_transaction)r   r(   rQ   userr{   rz   r|   tillry   rx   reqrR   s               r   rM   z#SimpleKerberosTests.as_pre_auth_req   s   !!##!!))"& *   ))!U# * % % $$E$22*=99  -0-=-=',',',+/+/,0'1(.+/48 ! : : ((--UE5$//r    c                     |                      |           |                     |d         t                     |                     |d         t                     d S )Nmsg-typez
error-code)assertIsNotNoner%   r   r	   )r   rR   s     r   rN   z%SimpleKerberosTests.check_preauth_rep   sR    S!!!Z)444\*,DEEEEEr    c                     |                      |d         t          j                              }|D ]}|d         t          k    r
|d         } n|                      |t          j                              }|S )Nze-datar9   zpadata-typezpadata-value)r>   r?   METHOD_DATAr   ETYPE_INFO2)r   rR   
rep_padataparS   s        r   rO   z#SimpleKerberosTests.get_etype_info2   s    __M*,, % . .
  	 	B- $666 0 7 oo*,, & . . r    c                    t           t          t          f}|                     ||          \  }}}}}|                     |           |                     |          }|                     ||d                   }	|                                 \  }
}|                     |
|          }| 	                    |t          j                              }|                     |	t          |          }| 	                    |t          j                              }|                     t           |          }t          j        d          }|g}|                     |t'          |          |||d |d d|d d           }|                     |          }|                     |           |d         }|                     |t.                     |d         }|	                    t2          |d         d                   }||fS )	Nr   r9   ru   rv   rw   r   zenc-partcipher)r   r   r   rM   rN   rO   PasswordKey_from_etype_info2get_KerberosTimeWithUsecPA_ENC_TS_ENC_create
der_encoder?   PA_ENC_TS_ENCEncryptedData_creater   EncryptedDataPA_DATA_creater   r   r   r   r   r   r%   r
   decryptr   )r   r(   rQ   rR   rz   r|   r{   r   rS   rh   patimepausecpa_tsry   rx   r   msg_typeenc_partenc_as_rep_parts                      r   r$   zSimpleKerberosTests.as_req   s   ## ,0+?+?v+N+N(eUE4s###**3////{1~FF88::))&&99	0G0I0IJJ))#/BEJJ	0G0I0IJJ##$8%@@*=99  -0-=-=',',',+/+/,0'1(.+/48 ! : : ((--S!!!z?:...z?++J 9; ;**r    )__name__
__module____qualname__r   r+   r.   r4   r6   rF   rI   rT   rV   rj   rl   ro   rM   rN   rO   r$   __classcell__)r   s   @r   r   r   5   s&       ) ) ) ) )
? ? ?
C C C
7 7 76 6 61 1 1	1 	1 	1L L LL L L8 8 8*9 9 9*6 6 6,0 0 0@F F F
   ,+ ,+ ,+ ,+ ,+ ,+ ,+r    r   __main__)"sysospathinsertenvironsamba.tests.krb5.kdc_base_testr   samba.tests.krb5.rfc4120_pyasn1testskrb5rfc4120_pyasn1r?   "samba.tests.krb5.rfc4120_constantsr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r-   r&   rC   r   r   unittestmain r    r   <module>r      s  ( 


 				 <      !$
  6 6 6 6 6 6 3 3 3 3 3 3 3 3 3 3 3 3                             #'  # l+ l+ l+ l+ l++ l+ l+ l+^ zNOOOHMOOOOO	 r    