Поделиться через


Метод ICEnroll4::createRequest (xenroll.h)

[Этот метод больше недоступен для использования в Windows Server 2008 и Windows Vista.]

Метод createRequest создает запрос на сертификат PKCS #10, PKCS #7 или полное управление сертификатами через CMS (CMC) и сохраняет его в строке. Этот метод был впервые определен в интерфейсе ICEnroll4 .

Синтаксис

HRESULT createRequest(
  [in]  LONG Flags,
  [in]  BSTR strDNName,
  [in]  BSTR Usage,
  [out] BSTR *pstrRequest
);

Параметры

[in] Flags

Значение типа , указывающее тип создаваемого запроса сертификата. Это может быть одно из следующих значений.

Значение Значение
XECR_CMC
Полный CMC
XECR_PKCS10_V1_5
PKCS 10
XECR_PKCS10_V2_0
PKCS 10 версии 2
XECR_PKCS7
PKCS 7

[in] strDNName

Этот параметр может иметь значение NULL; В противном случае этот параметр указывает различающееся имя (DN) сущности, для которой выполняется запрос. Имя DN должно соответствовать соглашению об именовании X.500 , например "CN=User, O=Microsoft". Если двухбуквенный префикс не существует, вместо него можно указать OID.

[in] Usage

Идентификатор объекта (OID), описывающий цель создаваемого сертификата, например отдельный или коммерческий сертификат Authenticode или проверка подлинности клиента. Можно также указать несколько идентификаторов OID, разделенных запятой.

[out] pstrRequest

Указатель на BSTR (формат BASE64_HEADER), который получает запрос. Завершив использование BSTR, освободите его, вызвав функцию SysFreeString .

Возвращаемое значение

C++

Если метод завершается успешно, метод возвращает S_OK.

Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

VB

Возвращаемое значение — это строка (BASE64_HEADER формате), содержащая запрос.

Комментарии

При вызове этого метода из скрипта метод отображает пользовательский интерфейс, который запрашивает, разрешит ли пользователь создание запроса на сертификат. Если был указан PVK- или SPC-файл, метод отображает пользовательский интерфейс, который запрашивает, разрешит ли пользователь операцию записи в файловую систему.

Примеры

BSTR bstrDN = NULL;
BSTR bstrReq = NULL;
ICEnroll4 * pEnroll4 = NULL;
HRESULT hr;

hr = CoInitializeEx( NULL, COINIT_APARTMENTTHREADED );
if (FAILED(hr))
{
    printf("Failed CoInitializeEx - %x\n", hr);
    goto error;
}

hr = CoCreateInstance( __uuidof(CEnroll),
                       NULL,
                       CLSCTX_INPROC_SERVER,
                       __uuidof(ICEnroll4),
                       (void **)&pEnroll4);
if (FAILED(hr))
{
    printf("Failed CoCreateInstance - pEnroll4 [%x]\n", hr);
    goto error;
}

// generate the DN for the cert request
bstrDN = SysAllocString( TEXT("CN=Your Name")   // common name
                         TEXT(",OU=Your Unit")  // org unit
                         TEXT(",O=Your Org")    // organization
                         TEXT(",L=Your City")   // locality
                         TEXT(",S=Your State")  // state
                         TEXT(",C=Your Country") );  // country/region

// create the CMC request
hr = pEnroll4->createRequest( XECR_CMC,
                              bstrDN,
                              NULL,
                              &bstrReq );
if (FAILED(hr))
{
        printf("Failed createRequest - pEnroll4 [%x]\n", hr);
        goto error;
}
else
    // do something with the CMC (bstrReq);

error:

//clean up resources, and so on
if ( bstrDN )
    SysFreeString( bstrDN );
if ( bstrReq )
    SysFreeString( bstrReq );
if ( pEnroll4 )
    pEnroll4->Release();

CoUninitialize();

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header xenroll.h
Библиотека Uuid.lib
DLL Xenroll.dll