
    bY                     Z    d Z ddlmZmZmZ ddlmZ ddlmZ ddl	Z	 G d de          Z
dS )aK  
Tests for source4/dsdb/samdb/ldb_modules/password_hash.c

These tests need to be run in an environment in which
io->ac->gpg_key_ids == NULL, so that the gpg supplemental credentials
are not generated. And also need to be in an environment with a
functional level less than 2008 to ensure the kerberos newer keys are not
generated
    )PassWordHashTestsget_package	USER_PASS)
ndr_unpack)drsblobsNc                   6     e Zd Z fdZd Zd Zd Zd Z xZS )PassWordHashFl2003Testsc                 V    t          t          |                                            d S )N)superr	   setUp)self	__class__s    B/usr/lib/python3/dist-packages/samba/tests/password_hash_fl2003.pyr   zPassWordHashFl2003Tests.setUp)   s&    %t,,2244444    c                    |                      dg           |                                 }t          |j        j                  }|                     d|           t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d|           |                     d|j                   t          t          j
        t          j        |j                            }|                     |           d S )	N"password hash userPassword schemes options   Primary:Kerberos   Packages   Primary:WDigest)add_userget_supplemental_credslensubpackagesassertEqualr   namer   r   package_PrimaryWDigestBlobbinasciia2b_hexdatacheck_wdigests)r   scsizepospackagedigestss         r   $test_default_supplementalCredentialsz<PassWordHashFl2003Tests.test_default_supplementalCredentials,   s[   IJKKK((** 26?##D!!!$R);<<gC   +W\:::$R44gC   W\222$R):;;gC   *GL999 X@%-gl;;= =G$$$$$r   c                 @   |                      dg           |                                 }t          |j        j                  }|                     d|           t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d	|           |                     d|j                   t          |d
          \  }}|                     d|           |                     d
|j                   t          t          j
        t          j        |j                            }|                     |           t          t          j        t          j        |j                            }|                     |dg           |                     t$          |j        j                   d S )N)r   CryptSHA256r      r   r   r   r   r   r   Primary:userPassword){CRYPT}5N)r   r   r   r    r!   r"   r   r#   r   r   r$   r%   r&   r'   r(   package_PrimaryUserPasswordBlobcheckUserPasswordcheckNtHashr   current_nt_hashhash)	r   r)   r*   r+   r,   
wd_package
up_packager-   ups	            r   test_userPassword_sha256z0PassWordHashFl2003Tests.test_userPassword_sha256H   s     / 0 	1 	1 	1 ((** 26?##D!!!$R);<<gC   +W\:::',=>>jC   *JO<<<$R44gC   W\222',BCCjC   /AAA X@%-jo>>@ @G$$$ @ (99; ; 	r$:#;<<<B$6$;<<<<<r   c                 $   |                      ddg           |                                 }t          |j        j                  }|                     d|           t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d|           |                     d|j                   t          |d	          \  }}|                     d
|           |                     d	|j                   t          |d          \  }}|                     d|           |                     d|j                   t          t          j
        t          j        |j                            }|                     |           t          t          j        t          j        |j                            }|                     t!          j        d          |j                   d S )NTr   
clear_textr   r1   r   r   r   r   r   r   Primary:CLEARTEXT	utf-16-le)r   r   r   r    r!   r"   r   r#   r   r   r$   r%   r&   r'   r(   package_PrimaryCLEARTEXTBlobr   encode	cleartext)	r   r)   r*   r+   r,   r:   
ct_packager-   cts	            r   &test_supplementalCredentials_cleartextz>PassWordHashFl2003Tests.test_supplementalCredentials_cleartextq   s   IJ 	 	L 	L 	L ((** 26?##D!!!$R);<<gC   +W\:::',=>>jC   *JO<<<$R44gC   W\222',?@@jC   ,jo>>> X@%-jo>>@ @G$$$ = (99; ;)+66EEEEEr   c                    |                      ddg           |                                 }t          |j        j                  }|                     d|           t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d|           |                     d|j                   t          |d	          \  }}|                     d
|           |                     d	|j                   t          |d          \  }}|                     d|           |                     d|j                   t          |d          \  }}|                     d|           |                     d|j                   t          t          j
        t          j        |j                            }|                     |           t          t          j        t          j        |j                            }	|                     t!          j        d          |	j                   t          t          j        t          j        |j                            }
|                     |
dg           |                     t           |
j        j                   d S )NT)r   zCryptSHA512:rounds=10000r?      r   r   r   r   rA   r   r   r1   r2   rB   )r3   6i'  )r   r   r   r    r!   r"   r   r#   r   r   r$   r%   r&   r'   r(   rC   r   rD   rE   r5   r6   r7   r8   r9   )r   r)   r*   r+   r,   r:   rF   r;   r-   rG   r<   s              r   "test_userPassword_cleartext_sha512z:PassWordHashFl2003Tests.test_userPassword_cleartext_sha512   s    < = 	 	> 	> 	> ((** 26?##D!!!$R);<<gC   +W\:::',=>>jC   *JO<<<',?@@jC   ,jo>>>$R44gC   W\222',BCCjC   /AAA X@%-jo>>@ @G$$$ = (99; ;)+66EEE @ (99; ;r$;#<===B$6$;<<<<<r   )	__name__
__module____qualname__r   r.   r=   rH   rL   __classcell__)r   s   @r   r	   r	   '   sy        5 5 5 5 5% % %8'= '= '=R$F $F $FL0= 0= 0= 0= 0= 0= 0=r   r	   )__doc__samba.tests.password_hashr   r   r   	samba.ndrr   samba.dcerpcr   r%   r	    r   r   <module>rV      s   &          
 !           ! ! ! ! ! ! `= `= `= `= `=/ `= `= `= `= `=r   