Método ICertServerPolicy::SetCertificateProperty (certif.h)
Use o método SetCertificateProperty para definir uma propriedade associada a um certificado.
Sintaxe
HRESULT SetCertificateProperty(
[in] const BSTR strPropertyName,
[in] LONG PropertyType,
[in] const VARIANT *pvarPropertyValue
);
Parâmetros
[in] strPropertyName
Especifica a propriedade a ser definida. Você pode definir qualquer uma das Propriedades de Nome associadas ao certificado.
Além disso, você pode definir as propriedades do certificado a seguir.
Valor | Significado |
---|---|
|
O certificado não é válido antes da data especificada. |
|
O certificado não é válido após a data especificada. |
|
Defina essa propriedade como 0x00000400 para impedir que a solicitação seja mantida no banco de dados da AC.
Cuidado Não substitua nenhum valor de máscara retornado por GetCertificateProperty ao definir essa propriedade. Defina o valor executando um OR bit a bit com os valores existentes.
|
|
Um valor booliano que especifica se a AC deve operar o modo de registro entre florestas.
Windows Server 2008 e Windows Server 2003: Não há suporte para o registro entre florestas. O registro entre florestas tem suporte a partir do Windows Server 2008 R2. |
|
Informa à AC para definir o nome da conta do solicitante ("RequesterName") e o nome diferenciado. |
|
Informa à AC para converter o NOME UPN do solicitante para o nome do solicitante ("RequesterName") e definir o nome do solicitante e o nome diferenciado do solicitante. |
|
Informa à AC para converter o nome FQDN 1779 do solicitante para o nome do solicitante e definir o nome do solicitante ("RequesterName") e o nome diferenciado do solicitante. |
[in] PropertyType
Especifica o tipo da propriedade que está sendo definida. O parâmetro Type deve concordar com o tipo de dados de pvarValue definido no campo vt da estrutura VARIANT . O parâmetro Type pode ser definido como um dos tipos a seguir.
Valor | Significado |
---|---|
|
Dados longos assinados. |
|
Dados de data/hora. |
|
Dados binários. |
|
Dados de cadeia de caracteres Unicode |
[in] pvarPropertyValue
Especifica o valor para o qual definir a propriedade.
Retornar valor
VB
Se o método for bem-sucedido, o método retornará S_OK.Se o método falhar, ele retornará um valor HRESULT que indica o erro. Para obter uma lista de códigos de erro comuns, consulte Valores HRESULT comuns.
Comentários
Você deve chamar ICertServerPolicy::SetContext antes de usar esse método.
As propriedades do certificado NotBefore e NotAfter restringem o tempo de vida durante o qual um certificado é válido. O tipo de dados para essas propriedades é uma data VARIANT de ponto flutuante derivada de COleDateTime na Automação.
As seguintes restrições se aplicam ao definir as propriedades de certificado NotBefore e NotAfter com SetCertificateProperty:
- A data NotBefore não pode ser definida como uma data anterior à data NotBefore do certificado da AC (autoridade de certificação ).
- A data NotAfter não pode ser definida como uma data posterior à data NotAfter do certificado da AC.
- A data NotBefore não pode ser definida como uma data anterior à que já está definida, mesmo que a nova data seja posterior à data NotBefore do certificado da AC.
- A data NotAfter não pode ser definida como uma data posterior à que já está definida, mesmo que a nova data seja anterior à data NotAfter do certificado da AC.
Exemplos
O exemplo a seguir chama o método SetCertificateProperty para definir a propriedade de certificado NotBefore. O exemplo pressupõe que pServer é válido e o método ICertServerPolicy::SetContext foi chamado.
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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Nenhum compatível |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | certif.h (inclua Certsrv.h) |
Biblioteca | Certidl.lib |
DLL | Certcli.dll |