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
Notbefore
Data/hora
O certificado não é válido antes da data especificada.
NotAfter
Data/hora
O certificado não é válido após a data especificada.
GeneralFlags
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.
 
Windows Storage Server 2003: Não há suporte para esse campo.
CrossForest
PROPTYPE_LONG
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.

RequesterSAMName
PROPTYPE_STRING
Informa à AC para definir o nome da conta do solicitante ("RequesterName") e o nome diferenciado.
RequesterUPN
PROPTYPE_STRING
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.
RequesterDN
PROPTYPE_STRING
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
PROPTYPE_LONG
Dados longos assinados.
PROPTYPE_DATE
Dados de data/hora.
PROPTYPE_BINARY
Dados binários.
PROPTYPE_STRING
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

Confira também

ICertServerExit::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy::SetContext

Propriedades do nome