ICertServerPolicy ::SetCertificateProperty, méthode (certif.h)

Utilisez la méthode SetCertificateProperty pour définir une propriété associée à un certificat.

Syntaxe

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

Paramètres

[in] strPropertyName

Spécifie la propriété à définir. Vous pouvez définir l’une des propriétés de nom associées au certificat.

En outre, vous pouvez définir les propriétés de certificat suivantes.

Valeur Signification
NotBefore
Date/heure
Le certificat n’est pas valide avant la date donnée.
NotAfter
Date/heure
Le certificat n’est pas valide après la date donnée.
GénéralFlags
Définissez cette propriété sur 0x00000400 pour empêcher la persistance de la requête dans la base de données d’autorité de certification.
Attention Ne remplacez pas les valeurs de masque retournées par GetCertificateProperty lors de la définition de cette propriété. Définissez la valeur en effectuant un or au niveau du bit avec les valeurs existantes.
 
Windows Storage Server 2003 : Ce champ n’est pas pris en charge.
CrossForest
PROPTYPE_LONG
Valeur booléenne qui spécifie si l’autorité de certification doit utiliser le mode d’inscription entre forêts.

Windows Server 2008 et Windows Server 2003 : L’inscription entre forêts n’est pas prise en charge. L’inscription entre forêts est prise en charge à partir de Windows Server 2008 R2.

RequesterSAMName
PROPTYPE_STRING
Indique à l’autorité de certification de définir le nom du compte du demandeur (« RequesterName ») et son nom unique.
RequesterUPN
PROPTYPE_STRING
Indique à l’autorité de certification de convertir le nom d’utilisateur principal (UPN) du demandeur en nom du demandeur (« RequesterName ») et de définir le nom du demandeur et le nom unique du demandeur.
RequesterDN
PROPTYPE_STRING
Indique à l’autorité de certification de convertir le nom de domaine complet 1779 du demandeur en nom du demandeur et de définir le nom du demandeur (« RequesterName ») et le nom unique du demandeur.

[in] PropertyType

Spécifie le type de la propriété en cours de définition. Le paramètre Type doit être en accord avec le type de données pvarValue défini dans le champ vt de la structure VARIANT . Le paramètre Type peut être défini sur l’un des types suivants.

Valeur Signification
PROPTYPE_LONG
Données longues signées.
PROPTYPE_DATE
Données de date/heure.
PROPTYPE_BINARY
Données binaires.
PROPTYPE_STRING
Données de chaîne Unicode

[in] pvarPropertyValue

Spécifie la valeur sur laquelle définir la propriété.

Valeur retournée

VB

Si la méthode réussit, la méthode retourne S_OK.

Si la méthode échoue, elle retourne une valeur HRESULT qui indique l’erreur. Pour obtenir la liste des codes d’erreur courants, consultez Valeurs HRESULT courantes.

Remarques

Vous devez appeler ICertServerPolicy ::SetContext avant d’utiliser cette méthode.

Les propriétés de certificat NotBefore et NotAfter limitent la durée de vie pendant laquelle un certificat est valide. Le type de données de ces propriétés est une date VARIANT à virgule flottante dérivée de COleDateTime dans Automation.

Les restrictions suivantes s’appliquent lors de la définition des propriétés de certificat NotBefore et NotAfter avec SetCertificateProperty :

  • La date NotBefore ne peut pas être définie sur une date antérieure à la date NotBefore du certificat de l’autorité de certification .
  • La date NotAfter ne peut pas être définie sur une date postérieure à la date NotAfter du certificat d’autorité de certification.
  • La date NotBefore ne peut pas être définie sur une date antérieure à celle déjà définie, même si la nouvelle date est postérieure à la date NotBefore du certificat d’autorité de certification.
  • La date NotAfter ne peut pas être définie sur une date ultérieure à celle déjà définie, même si la nouvelle date est antérieure à la date NotAfter du certificat d’autorité de certification.

Exemples

L’exemple suivant appelle la méthode SetCertificateProperty pour définir la propriété de certificat NotBefore. L’exemple suppose que pServer est valide et que la méthode ICertServerPolicy ::SetContext a été appelée.

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;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Aucun pris en charge
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête certif.h (include Certsrv.h)
Bibliothèque Certidl.lib
DLL Certcli.dll

Voir aussi

ICertServerExit ::GetCertificateProperty

ICertServerPolicy

ICertServerPolicy ::SetContext

Propriétés du nom