
    b                     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 of 2008 or greater to ensure the kerberos newer keys are
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 )PassWordHashFl2008Testsc                 V    t          t          |                                            d S )N)superr	   setUp)self	__class__s    B/usr/lib/python3/dist-packages/samba/tests/password_hash_fl2008.pyr   zPassWordHashFl2008Tests.setUp(   s&    %t,,2244444    c                 `   |                                   |                                 }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                            }|                     |           d S )	N   Primary:Kerberos-Newer-Keys   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<PassWordHashFl2008Tests.test_default_supplementalCredentials+   s   ((** 26?##D!!!$R)FGGgC   6EEE$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          |d          \  }}|                     d|           |                     d|j                   t          t          j
        t          j        |j                            }|                     |           t          t          j        t          j        |j                            }|                     |dg           |                     t$          |j        j                   d S )N)"password hash userPassword schemesCryptSHA512)options   r   r   r   r   r   r   r   r   Primary:userPassword){CRYPT}6N)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)   
wp_package
up_packager*   ups	            r   test_userPassword_sha512z0PassWordHashFl2008Tests.test_userPassword_sha512J   sM     / 0 	1 	1 	1 ((** 26?##D!!!$R)FGGgC   6EEE$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           |                                 }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                   d S )NT)
clear_textr0   r   r   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)   
wd_package
ct_packager*   cts	            r   &test_supplementalCredentials_cleartextz>PassWordHashFl2008Tests.test_supplementalCredentials_cleartextv   s*   &&&((** 26?##D!!!$R)FGGgC   6EEE$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          |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CryptSHA256:rounds=5000)r>   r/      r   r   r   r   r   r   r?   r   r   r0   r1   r@   )r2   5i  )r   r   r   r   r   r   r   r    r   r   r!   r"   r#   r$   r%   rA   r   rB   rC   r4   r5   r6   r7   r8   )r   r&   r'   r(   r)   rD   rE   r:   r*   rF   r;   s              r   "test_userPassword_cleartext_sha256z:PassWordHashFl2008Tests.test_userPassword_cleartext_sha256   s    ; < 	 	= 	= 	= ((** 26?##D!!!$R)FGGgC   6EEE$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<   rG   rK   __classcell__)r   s   @r   r	   r	   &   sy        5 5 5 5 5% % %>*= *= *=X&F &F &FP4= 4= 4= 4= 4= 4= 4=r   r	   )__doc__samba.tests.password_hashr   r   r   	samba.ndrr   samba.dcerpcr   r"   r	    r   r   <module>rU      s   &          
 !           ! ! ! ! ! ! l= l= l= l= l=/ l= l= l= l= l=r   