Método ICertServerPolicy::SetCertificateProperty (certif.h)

Use el método SetCertificateProperty para establecer una propiedad asociada a un certificado.

Sintaxis

HRESULT SetCertificateProperty(
  [in] const BSTR    strPropertyName,
  [in] LONG          PropertyType,
  [in] const VARIANT *pvarPropertyValue
);

Parámetros

[in] strPropertyName

Especifica la propiedad que se va a establecer. Puede establecer cualquiera de las propiedades de nombre asociadas al certificado.

Además, puede establecer las siguientes propiedades de certificado.

Valor Significado
NotBefore
Fecha y hora
El certificado no es válido antes de la fecha especificada.
NotAfter
Fecha y hora
El certificado no es válido después de la fecha especificada.
GeneralFlags
Establezca esta propiedad en 0x00000400 para evitar que la solicitud se conserve en la base de datos de CA.
Precaución No sobrescriba ningún valor de máscara devuelto por GetCertificateProperty al establecer esta propiedad. Establezca el valor realizando una operación OR bit a bit con los valores existentes.
 
Windows Storage Server 2003: Este campo no se admite.
CrossForest
PROPTYPE_LONG
Valor booleano que especifica si la ENTIDAD de certificación debe funcionar en modo de inscripción entre bosques.

Windows Server 2008 y Windows Server 2003: No se admite la inscripción entre bosques. La inscripción entre bosques se admite a partir de Windows Server 2008 R2.

RequesterSAMName
PROPTYPE_STRING
Indica a la ENTIDAD de certificación que establezca el nombre de la cuenta del solicitante ("RequesterName") y el nombre distintivo.
RequesterUPN
PROPTYPE_STRING
Indica a la ENTIDAD de certificación que convierta el nombre principal de usuario (UPN) del solicitante en el nombre del solicitante ("RequesterName") y para establecer el nombre del solicitante y el nombre distintivo del solicitante.
RequesterDN
PROPTYPE_STRING
Indica a la ENTIDAD de certificación que convierta el nombre FQDN 1779 del solicitante en el nombre del solicitante y para establecer el nombre del solicitante ("RequesterName") y el nombre distintivo del solicitante.

[in] PropertyType

Especifica el tipo de la propiedad que se va a establecer. El parámetro Type debe estar de acuerdo con el tipo de datos de pvarValue que se establece en el campo vt de la estructura VARIANT . El parámetro Type se puede establecer en uno de los siguientes tipos.

Valor Significado
PROPTYPE_LONG
Datos largos firmados.
PROPTYPE_DATE
Datos de fecha y hora.
PROPTYPE_BINARY
Datos binarios.
PROPTYPE_STRING
Datos de cadena Unicode

[in] pvarPropertyValue

Especifica el valor en el que se va a establecer la propiedad.

Valor devuelto

VB

Si el método se realiza correctamente, el método devuelve S_OK.

Si se produce un error en el método, devuelve un valor HRESULT que indica el error. Para obtener una lista de códigos de error comunes, consulte Valores HRESULT comunes.

Comentarios

Debe llamar a ICertServerPolicy::SetContext antes de usar este método.

Las propiedades NotBefore y NotAfter certificate restringen la duración durante la cual un certificado es válido. El tipo de datos de estas propiedades es una fecha VARIANT de punto flotante derivada de COleDateTime en Automation.

Se aplican las restricciones siguientes al establecer las propiedades de certificado NotBefore y NotAfter con SetCertificateProperty:

  • La fecha NotBefore no se puede establecer en una fecha anterior a la fecha notbefore del certificado de la entidad de certificación (CA).
  • La fecha NotAfter no se puede establecer en una fecha posterior a la fecha NotAfter del certificado de entidad de certificación.
  • La fecha NotBefore no se puede establecer en una fecha anterior a la que ya está establecida, incluso si la nueva fecha es posterior a la fecha NotBefore del certificado de entidad de certificación.
  • La fecha NotAfter no se puede establecer en una fecha posterior a la que ya está establecida, incluso si la nueva fecha es anterior a la fecha NotAfter del certificado de entidad de certificación.

Ejemplos

En el ejemplo siguiente se llama al método SetCertificateProperty para establecer la propiedad de certificado NotBefore. En el ejemplo se supone que pServer es válido y se ha llamado al método 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;
}

Requisitos

Requisito Value
Cliente mínimo compatible No se admite ninguno
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado certif.h (incluya Certsrv.h)
Library Certidl.lib
Archivo DLL Certcli.dll

Consulte también

ICertServerExit::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy::SetContext

Propiedades de nombre