HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/samba/tests/__pycache__/password_hash_gpgme.cpython-310.pyc
o

�/a�/�@sddZddlmZmZmZmZddlmZddlm	Z	ddl
Z
ddlmZddl
Z
Gdd�de�ZdS)	a
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 generated. The functional level needs to be >= 2008 so that the
kerberos newer keys are generated.
�)�PassWordHashTests�get_package�	USER_PASS�	USER_NAME)�
ndr_unpack)�drsblobsN)�PasswordSettingscsNeZdZ�fdd�Zdd�Zdd�Zddd	�Zd
d�Zdd
�Zdd�Z	�Z
S)�PassWordHashGpgmeTestscstt|���dS�N)�superr	�setUp)�self��	__class__��A/usr/lib/python3/dist-packages/samba/tests/password_hash_gpgme.pyr+szPassWordHashGpgmeTests.setUpcCs(|��|j�d�s|�d�|��}t|jj�}|�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
�ttj
t�|j��}|�|�dS)
N�password hash gpg key ids�DNo password hash gpg key ids, Primary:SambaGPG will not be generated��Primary:Kerberos-Newer-Keys��Primary:Kerberos��Primary:WDigest��Packages��Primary:SambaGPG)�add_user�lp�get�skipTest�get_supplemental_creds�len�sub�packages�assertEqualr�namerr�package_PrimaryWDigestBlob�binascii�a2b_hex�data�check_wdigests)r
�sc�size�pos�package�
wd_package�digestsrrr�$test_default_supplementalCredentials.s2

�z;PassWordHashGpgmeTests.test_default_supplementalCredentialsc	Cs||jdd�|j�d�s|�d�|��}t|jj�}|�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
�ttj
t�|j��}|�|�ttjt�|j��}|�t�d�|j�dS)NT��
clear_textrr�rrrrrr�Primary:CLEARTEXTrrrr�	utf-16-le)rrr r!r"r#r$r%r&rr'rrr(r)r*r+r,�package_PrimaryCLEARTEXTBlobr�encode�	cleartext)	r
r-r.r/r0r1�
ct_packager2�ctrrr�&test_supplementalCredentials_cleartextTs@

�

�z=PassWordHashGpgmeTests.test_supplementalCredentials_cleartextNcCst|��}|r+t|d�\}}|�|dud�ttjt�|j��}|�	|�
d�|j�dSt|d�}|�|dud�dS)z3Checks cleartext is (or isn't) returned as expectedr7NzFailed to retrieve cleartextr8z$Got cleartext when we shouldn't have)r"r�
assertTruerrr9r)r*r+r&r:r;)r
�expect_cleartext�passwordr-r/r<r=rrr�assert_cleartext�s
�

�z'PassWordHashGpgmeTests.assert_cleartextcCsL|jdd�|jdtd�td|jddd�}|�|jj|j�dtd	|j	}|�
|�t�d
d
�}|j�
dt|�|jdd�|�|�t�d
d
�}|j�
dt|�|jd|d�|�d�t�d
d
�}|j�
dt|�|jdd�td
|jddd�}|�|jj|j�|�
|�t�d
d
�}|j�
dt|�|jd|d�dS)z?Checks that a PSO's cleartext setting can override the domain'sTr4)r@rAzno-plaintext-PSO��F)�
precedence�store_plaintextzcn=z
,cn=users,� z(sAMAccountName=%s))r@z
plaintext-PSO�dN)rrBrr�ldb�
addCleanup�delete�dnr�base_dn�apply_to�samba�generate_random_password�setpassword�unapply�set_store_cleartext)r
�no_plaintext_pso�userdn�new_password�
plaintext_psorrr�*test_supplementalCredentials_cleartext_pso�s8�


�
zAPassWordHashGpgmeTests.test_supplementalCredentials_cleartext_psoc	C�t|jdgd�|��}t|jj�}|�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�tt	j
t�|j
��}|�|�tt	jt�|j
��}|�|gd��|�t|jj�dS)N)�"password hash userPassword schemesz#CryptSHA512 CryptSHA256 CryptSHA512��optionsr6rrrrrr�Primary:userPasswordrrrr)��{CRYPT}�6N)r^�5Nr]�rr"r#r$r%r&rr'rrr(r)r*r+r,�package_PrimaryUserPasswordBlob�checkUserPassword�checkNtHashr�current_nt_hash�hash�	r
r-r.r/r0�
wp_package�
up_packager2�uprrr�!test_userPassword_multiple_hashes��>
�

�z8PassWordHashGpgmeTests.test_userPassword_multiple_hashesc	CrX)N)rYzGCryptSHA512:rounds=5120 CryptSHA256:rounds=2560 CryptSHA512:rounds=5122rZr6rrrrrrr\rrrr))r^r_i)r^r`i
)r^r_irargrrr�2test_userPassword_multiple_hashes_rounds_specified�rlzIPassWordHashGpgmeTests.test_userPassword_multiple_hashes_rounds_specifiedr
)�__name__�
__module__�__qualname__rr3r>rBrWrkrm�
__classcell__rrrrr	)s&
/-5r	)�__doc__�samba.tests.password_hashrrrr�	samba.ndrr�samba.dcerpcrr)�samba.tests.psorrNr	rrrr�<module>s