Метод ICertServerPolicy::SetCertificateProperty (certif.h)
Используйте метод SetCertificateProperty , чтобы задать свойство, связанное с сертификатом.
Синтаксис
HRESULT SetCertificateProperty(
[in] const BSTR strPropertyName,
[in] LONG PropertyType,
[in] const VARIANT *pvarPropertyValue
);
Параметры
[in] strPropertyName
Задает задающееся свойство. Можно задать любое из свойств имени , связанных с сертификатом.
Кроме того, можно задать следующие свойства сертификата.
Значение | Значение |
---|---|
|
Сертификат недействителен до указанной даты. |
|
Сертификат недействителен после указанной даты. |
|
Присвойте этому свойству значение 0x00000400, чтобы предотвратить сохранение запроса в базе данных ЦС.
Осторожностью Не перезаписывайте значения маски, возвращаемые getCertificateProperty при задании этого свойства. Задайте значение, выполнив побитовое ИЛИ с существующими значениями.
|
|
Логическое значение, указывающее, должен ли ЦС работать в режиме регистрации между лесами.
Windows Server 2008 и Windows Server 2003: Регистрация между лесами не поддерживается. Регистрация между лесами поддерживается начиная с Windows Server 2008 R2. |
|
Указывает ЦС задать имя учетной записи инициатора запроса ("RequesterName") и различающееся имя. |
|
Указывает ЦС преобразовать имя участника-пользователя (UPN) инициатора запроса в имя инициатора запроса ("RequesterName") и задать имя инициатора запроса и различающееся имя инициатора запроса. |
|
Указывает ЦС преобразовать полное доменное имя 1779 инициатора запроса в имя инициатора запроса и задать имя инициатора запроса ("RequesterName") и различающееся имя инициатора запроса. |
[in] PropertyType
Указывает тип задаемого свойства. Параметр Type должен соответствовать типу данных pvarValue , заданному в поле vt структуры VARIANT . Параметру Type можно задать один из следующих типов.
Значение | Значение |
---|---|
|
Подписанные длинные данные. |
|
Данные даты и времени. |
|
Двоичные данные. |
|
Строковые данные Юникода |
[in] pvarPropertyValue
Задает значение, которое присваивается свойству .
Возвращаемое значение
VB
Если метод завершается успешно, метод возвращает S_OK.Если метод завершается сбоем, он возвращает значение HRESULT , указывающее на ошибку. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.
Комментарии
Перед использованием этого метода необходимо вызвать метод ICertServerPolicy::SetContext .
Свойства Сертификата NotBefore и NotAfter ограничивают время существования, в течение которого сертификат действителен. Тип данных для этих свойств — это дата VARIANT с плавающей запятой, производная от COleDateTime в службе автоматизации.
При настройке свойств сертификата NotBefore и NotAfter с помощью SetCertificateProperty применяются следующие ограничения:
- Дата NotBefore не может быть установлена раньше даты, чем дата NotBefore сертификата центра сертификации (ЦС).
- Для параметра NotAfter date не может быть задана дата, более поздняя, чем дата NotAfter сертификата ЦС.
- Дата NotBefore не может быть установлена раньше, чем она уже установлена, даже если новая дата позже даты NotBefore сертификата ЦС.
- Для параметра NotAfter не может быть задана дата позже, чем она уже установлена, даже если новая дата находится до даты NotAfter сертификата ЦС.
Примеры
В следующем примере вызывается метод SetCertificateProperty для задания свойства сертификата NotBefore. В примере предполагается, что pServer является допустимым и был вызван метод ICertServerPolicy::SetContext .
HRESULT hr;
ICertServerPolicy *pServer;
SYSTEMTIME st;
BSTR bstrPropName;
VARIANT vPropValue;
bstrPropName = SysAllocString(L"NotBefore");
if (NULL == bstrPropName)
{
printf("Unable to allocate memory.\n");
return E_OUTOFMEMORY;
}
// Set the 'NotBefore' property to Noon on Jan. 1, 2000.
memset( &st, 0, sizeof(SYSTEMTIME));
st.wYear = 2000;
st.wMonth = 1; // Jan.
st.wDay = 1; // 1st day of month.
st.wHour = 12; // Noon.
// Place the date into VARIANT required format.
VariantInit( &vPropValue );
vPropValue.vt = VT_DATE;
if ( !SystemTimeToVariantTime( &st, &vPropValue.date))
{
printf("Unable to convert time.\n");
SysFreeString(bstrPropName);
return E_FAIL
}
// Set the NotBefore property in the certificate:
hr = pServer->SetCertificateProperty(bstrPropName,
PROPTYPE_DATE,
&vPropValue);
SysFreeString(bstrPropName);
VariantClear(&vPropValue);
if (FAILED(hr))
{
printf("SetCertificateProperty failed [%x]\n", hr);
return hr;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Ни одна версия не поддерживается |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | certif.h (включая Certsrv.h) |
Библиотека | Certidl.lib |
DLL | Certcli.dll |