ICertRequest ::Submit, méthode (certcli.h)
La méthode Submit envoie une demande au serveur des services de certificats.
Si le status de destruction résultant est CR_DISP_ISSUED, vous pouvez récupérer le certificat émis en appelant la méthode ICertRequest3 ::GetCertificate.
Syntaxe
HRESULT Submit(
[in] LONG Flags,
[in] const BSTR strRequest,
[in] const BSTR strAttributes,
[in] const BSTR strConfig,
[out, retval] LONG *pDisposition
);
Paramètres
[in] Flags
Spécifie le format de la demande, le type de requête et si la demande est chiffrée. L’un des indicateurs d’attribut de format suivants peut être utilisé pour spécifier la façon dont la requête est encodée.
L’un des indicateurs de valeur de format suivants peut être utilisé pour spécifier le type de la demande.
Valeur | Signification |
---|---|
|
Retourne un défi qui peut être soumis à une autorité de certification. Le défi est une demande complète de gestion des certificats sur CMS (CMC). Lorsque cet indicateur est activé, l’appel de la méthode GetFullResponseProperty avec l’indicateur FR_PROP_FULLRESPONSE renvoie une réponse CMC qui contient une demande d’attestation de clé. |
|
L’appel est une réponse à un défi. Le RequestId doit être passé dans le paramètre strAttributes et la réponse au défi doit être passée dans le paramètre strRequest . Cet indicateur doit être activé lorsqu’une application doit renvoyer le défi déchiffré à l’autorité de certification. Vous pouvez ensuite appeler la méthode GetFullResponseProperty pour obtenir le certificat d’entité de fin émis. |
|
Une demande de gestion des certificats sur CMS (CMC). |
|
Essayez tous les formats CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 ou CR_IN_PKCS10. |
|
Requête Keygen (format Netscape). |
|
Demande PKCS #7 (agent de renouvellement ou d’inscription). |
|
Requête PKCS #10. |
|
Transmettez les messages à l’aide de RPC au lieu de DCOM. |
|
Retourne une réponse CMC complète. |
|
Incluez les listes de révocation de certificats actuelles. |
|
Utilisez le contexte de l’ordinateur de service clé. |
|
Indique que le message est demandé pour le compte d’un autre expéditeur.
Si l’autorité de certification n’est pas configurée pour « renouveler au nom de », l’autorité de certification rejette la demande. Pour plus d’informations sur l’activation de « renouveler pour le compte de » sur l’autorité de certification, consultez Configuration du service web d’inscription de certificat pour le mode renouvellement uniquement. La demande doit être une demande de renouvellement et le certificat de signature doit utiliser le même modèle que la demande. En outre, la demande réussit uniquement lorsque l’une des conditions suivantes est remplie :
|
|
N’incluez pas dans les données de demande qui identifient le client.
Windows Server 2008 et Windows Server 2003 : Cet indicateur n’est pas pris en charge. |
|
Spécifie que la connexion DCOM avec le serveur est établie, mais que la demande n’est pas envoyée. |
[in] strRequest
Pointeur vers la chaîne qui contient la demande de certificat. Si CR_IN_BASE64 ou CR_IN_BASE64HEADER a été spécifié dans Indicateurs, strRequest doit être une chaîne Unicode.
[in] strAttributes
Pointeur vers la chaîne qui contient des attributs facultatifs supplémentaires pour la requête. Chaque attribut est une paire de chaînes nom-valeur. Le caractère deux-points sépare le nom et la valeur, et un caractère de nouvelle ligne sépare plusieurs paires nom-valeur, par exemple :
C++ | « AttributeName1 :AttributeValue1\nAttributeName2 :AttributeValue2 » |
VB | « AttributeName1 :AttributeValue1 » & vbNewLine & « AttributeName2 :AttributeValue2 » |
[in] strConfig
Représente une chaîne de configuration valide pour le serveur des services de certificats. La chaîne peut être une URL HTTPS pour un serveur d’inscription ou sous la forme ComputerName\CAName, où ComputerName est le nom réseau du serveur et CAName est le nom commun de l’autorité de certification, tel qu’entré lors de l’installation des services de certificats. Pour plus d’informations sur le nom de la chaîne de configuration, consultez ICertConfig.
Windows Server 2008, Windows Vista, Windows Server 2003 et Windows XP : Une URL HTTPS n’est pas prise en charge en tant qu’entrée.
[out, retval] pDisposition
Pointeur vers la valeur de destruction de la requête.
Valeur retournée
C++
Si la méthode réussit, la méthode retourne S_OK.Une fois cette fonction terminée, *pDisposition est défini sur l’une des valeurs du tableau suivant.
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.
VB
La valeur de retour spécifie la disposition de la requête. La disposition est l’une des valeurs suivantes.Code de retour | Description |
---|---|
|
Demande refusée |
|
Échec de la demande |
|
La demande n’est pas terminée |
|
Certificat émis |
|
Certificat émis séparément |
|
Demande effectuée sous soumission |
Remarques
Si vous lisez une demande de format BASE64 à partir d’un fichier, vérifiez que le fichier est en Unicode ou convertissez-le d’ASCII en Unicode avant d’envoyer la demande avec cette méthode.
Exemples
// The pointer to the interface object.
ICertRequest * pCertRequest = NULL;
// The variable for the computer\CAName.
BSTR bstrCA = NULL;
// The variable for the request.
BSTR bstrRequest = NULL;
// The variable for the attributes.
BSTR bstrAttribs = NULL;
// The variable for the disposition code.
long nDisp;
HRESULT hr;
// Initialize COM.
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
// Check status.
if (FAILED(hr))
{
printf("Failed CoInitializeEx [%x]\n", hr);
goto error;
}
// Instantiate the CertConfig object.
hr = CoCreateInstance(CLSID_CCertRequest,
NULL,
CLSCTX_INPROC_SERVER,
IID_ICertRequest,
(void **)&pCertRequest);
if (FAILED(hr))
{
printf("Failed CoCreateInstance pCertRequest [%x]\n", hr);
goto error;
}
// Specify the certification authority.
// Note: In C++, produce one backslash (\) by using two.
bstrCA = SysAllocString(L"server01\\myCAName");
// Create the request (not shown), and assign it to bstrRequest,
// for example, use ICEnroll::createPKCS10.
// Generate the attributes. In this case, no attributes
// are specified.
bstrAttribs = SysAllocString(L"");
// Submit the request.
hr = pCertRequest->Submit(CR_IN_BASE64 | CR_IN_PKCS10,
bstrRequest,
bstrAttribs,
bstrCA,
&nDisp );
if (FAILED(hr))
{
printf("Failed Submit [%x]\n", hr);
goto error;
}
else
{
// Use the disposition value as needed.
}
// Done processing.
error:
// Free BSTR values.
if (NULL != bstrCA)
SysFreeString(bstrCA);
if (NULL != bstrRequest)
SysFreeString(bstrRequest);
if (NULL != bstrAttribs)
SysFreeString(bstrAttribs);
// Clean up object resources.
if (NULL != pCertRequest)
pCertRequest->Release();
// Free COM resources.
CoUninitialize();
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | certcli.h (include Certsrv.h) |
Bibliothèque | Certidl.lib |
DLL | Certcli.dll |