
    bb                         d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZmZmZ ddlmZmZ ddlmZ ddlZddlZd	 Z G d
 de          ZdS )a  
Tests for source4/dsdb/samdb/ldb_modules/password_hash.c

These tests are designed to also run against Windows to confirm the values
returned from Windows.

To run against Windows:
Set the following environment variables:
   PASSWORD=Administrator password
   USERNAME=Administrator
   SMB_CONF_PATH=/dev/null
   PYTHONPATH=bin/python
   SERVER=Windows server IP

   /usr/bin/python source4/scripting/bin/subunitrun
       samba.tests.password_hash_ldap.PassWordHashLDAPTests
       -U"Administrator%adminpassword"
    )PassWordHashTestsget_package	USER_NAME	USER_PASS)SamDB)
ndr_unpack)drsblobsdrsuapimisc)	drs_utilsnet)CredentialsNc                     | dz  |dz  k    S )Nl     )a1a2s     @/usr/lib/python3/dist-packages/samba/tests/password_hash_ldap.pyattid_equalr   5   s    Oj11    c                   *     e Zd Z fdZd Zd Z xZS )PassWordHashLDAPTestsc                 V    t          t          |                                            d S )N)superr   setUp)self	__class__s    r   r   zPassWordHashLDAPTests.setUp;   s&    #T**0022222r   c                    dt           j        d         z  }dt          z   dz   | j        z   }t	          j        ||                                 | j                  }t          j        |          \  }}t	          j	                    }t          j                    }||_        ||_        t	          j                    |_        ||j        _        t	          j                    |_        d|j        _        d|j        _        d|j        _        d |_        t          j        t          j        z  t          j        z  t          j        z  t          j        z  |_        d|_        d|_        t          j        |_         d|_!        d |_"        d |_#        d|j$        _%        d |j$        _&        |'                    |d|          \  }}	|	j(        }
|
j)        }d }tU          d|j+        j,                  D ]z}|j+        j-        |         }t]          |j/        t          j0                  rGtc          j2        | j                  }|3                    ||d           |j4        j5        d         j6        }{to          tp          j9        |          }|S )	Nzncacn_ip_tcp:%s[seal]SERVERzcn=z
,cn=users,r   i  i"    ):osenvironr   base_dnr
   get_loadparmcredsr   
drs_DsBindDsGetNCChangesRequest8r   GUIDdestination_dsa_guidsource_dsa_invocation_idDsReplicaObjectIdentifiernaming_contextdnDsReplicaHighWaterMarkhighwatermarktmp_highest_usnreserved_usnhighest_usnuptodateness_vectorDRSUAPI_DRS_INIT_SYNCDRSUAPI_DRS_PER_SYNCDRSUAPI_DRS_GET_ANCDRSUAPI_DRS_NEVER_SYNCEDDRSUAPI_DRS_WRIT_REPreplica_flagsmax_object_countmax_ndr_sizeDRSUAPI_EXOP_REPL_OBJextended_op	fsmo_infopartial_attribute_setpartial_attribute_set_exmapping_ctrnum_mappingsmappingsDsGetNCChangesfirst_objectobjectrangeattribute_ctrnum_attributes
attributesr   attid%DRSUAPI_ATTID_supplementalCredentialsr   Netreplicate_decrypt	value_ctrvaluesblobr   r	   supplementalCredentialsBlob)r   binding_strr,   drs
drs_handlesupported_extensionsreq8	null_guidlevelctrobj_itemobjsc_blobiattrnet_ctxscs                    r   get_supplemental_creds_drsz0PassWordHashLDAPTests.get_supplemental_creds_drs?   s7   -
80DDY-<ok4+<+<+>+>
KK-6-A#-F-F*)-//IKK	-6!-6%-4-N-P-P-/$;==-.*-.'-.&-1 .5.K.5.J/K.5.I/J /6.N/O /6.J	/K
 ),(.(/(E()(,"(,%()%(,!))*a>>#oq#+:;; 	8 	8A$/2D4:"HJ J 8'$*--))#tQ777./27<gFF	r   c                    t                      | _        | j                            t          j        d                    | j                            t          j        d                    | j                            | j                   t          dt          j        d         z   | j        | j                  }| 	                    |           | 
                                }t          |d          \  }}|                     d|j                   t          t          j        t#          j        |j                            }|                     |           d S )NUSERNAMEPASSWORDzldap://r   )credentialslp)ldbzPrimary:WDigest)r   r$   set_usernamer    r!   set_passwordguessrf   r   add_userra   r   assertEqualnamer   r	   package_PrimaryWDigestBlobbinasciia2b_hexdatacheck_wdigests)r   rg   r`   pospackagedigestss         r   $test_wDigest_supplementalCredentialsz:PassWordHashLDAPTests.test_wDigest_supplementalCredentialsq   s    ]]


: 6777

: 6777
!!!I
8 44 $
w      	#,,..$R):;;g*GL999 X@%-gl;;= =G$$$$$r   )__name__
__module____qualname__r   ra   rv   __classcell__)r   s   @r   r   r   9   sW        3 3 3 3 30 0 0d% % % % % % %r   r   )__doc__samba.tests.password_hashr   r   r   r   samba.samdbr   	samba.ndrr   samba.dcerpcr	   r
   r   sambar   r   samba.credentialsr   ro   r    r   r   r   r   r   <module>r      s  & &                              0 0 0 0 0 0 0 0 0 0                 ) ) ) ) ) )  				2 2 2L% L% L% L% L%- L% L% L% L% L%r   