//---------------------------------------------------------------------------

#pragma hdrstop
#include <windows.h>
#include <winldap.h>

//---------------------------------------------------------------------------

#pragma argsused
const unsigned char*  req_; // запрос в формате bin или base64
unsigned long req_size; // размер запроса
char* host = "127.0.0.1";  // адрес CERTEX
const int port = 62222; // порт
int main(int argc, char* argv[])
{
LDAP *hLdap;
struct berval bv,*bv_res=NULL;
int code,res_code,version=LDAP_VERSION3;
unsigned char req_[4096];
unsigned long req_size=0;
int ret=0;
try
{
 try
 {
        // создаем соединение ldap и выполняем все необходимые настройки
		bv.bv_val=(char*) req_; // запрос
        bv.bv_len=(ULONG) req_size; // размер запроса
        hLdap = ldap_init(host,port);
        if (!hLdap) throw LdapGetLastError();
        ldap_set_option(hLdap,LDAP_OPT_PROTOCOL_VERSION,(void*)&version);
        res_code = ldap_bind_s(hLdap,(char*)"",(char*)"",LDAP_AUTH_SIMPLE);
        if (res_code) {ldap_unbind_s(hLdap); throw LdapGetLastError();}
		// отправляем запрос на службу CERTEX
        res_code = ldap_extended_operation_s(hLdap,"1.3.6.1.4.1.6801.11.1.10",&bv,NULL,NULL,NULL,&bv_res);
        if (res_code!=0) throw LdapGetLastError();
		// в переменной bv_res находится ответ: bv_res->bv_val - тело ответа, bv_res->bv_len - размер ответа
		ret=0;
  }
  catch(ULONG err)
  {	
	  ret=err;
  }
  catch(int err)
  {
	  ret=err;
  }
 }
 __finally
 {
	 if (hLdap) ldap_unbind_s(hLdap);
 }
 return ret;
}
//---------------------------------------------------------------------------
 