Metodo ICertRequest::Submit (certcli.h)
Il metodo Submit invia una richiesta al server Servizi certificati.
Se lo stato di eliminazione risultante è CR_DISP_ISSUED, è possibile recuperare il certificato rilasciato chiamando il metodo ICertRequest3::GetCertificate .
Sintassi
HRESULT Submit(
[in] LONG Flags,
[in] const BSTR strRequest,
[in] const BSTR strAttributes,
[in] const BSTR strConfig,
[out, retval] LONG *pDisposition
);
Parametri
[in] Flags
Specifica il formato della richiesta, il tipo di richiesta e se la richiesta è crittografata. Uno dei flag di attributi di formato seguenti può essere usato per specificare la modalità di codifica della richiesta.
Uno dei flag di formato seguenti può essere usato per specificare il tipo della richiesta.
Valore | Significato |
---|---|
|
Restituire una richiesta che può essere inviata a una CA. La sfida è una richiesta completa di Gestione certificati su CMS (CMC). Quando questo flag viene attivato, chiamare il metodo GetFullResponseProperty con il flag FR_PROP_FULLRESPONSE restituisce una risposta CMC che contiene una richiesta di attestazione chiave. |
|
La chiamata è una risposta a una sfida. RequestId deve essere passato nel parametro strAttributes e la risposta alla richiesta deve essere passata nel parametro strRequest . Questo flag deve essere attivato quando un'applicazione deve inviare la richiesta decrittografata alla CA. È quindi possibile chiamare il metodo GetFullResponseProperty per ottenere il certificato dell'entità finale emesso. |
|
Richiesta gestione certificati su CMS (CMC). |
|
Provare tutti i formati CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 o CR_IN_PKCS10. |
|
Richiesta Keygen (formato Netscape). |
|
Richiesta PKCS #7 (rinnovo o agente di registrazione). |
|
Richiesta PKCS #10. |
|
Trasmettere i messaggi usando RPC anziché DCOM. |
|
Restituisce una risposta CMC completa. |
|
Includere gli elenchi di revoche di certificati correnti. |
|
Usare il contesto del computer del servizio chiavi. |
|
Indica che il messaggio viene richiesto per conto di un altro mittente.
Se l'autorità di certificazione (CA) non è configurata per "rinnovare per conto di", la CA rifiuta la richiesta. Per altre informazioni sull'abilitazione del "rinnovo per conto" nella CA, vedere Configurazione del servizio Web registrazione certificati per la modalità di rinnovo. La richiesta deve essere una richiesta di rinnovo e il certificato di firma deve usare lo stesso modello della richiesta. Inoltre, la richiesta avrà esito positivo solo quando una delle condizioni seguenti è true:
|
|
Non includere nei dati della richiesta che identificano il client.
Windows Server 2008 e Windows Server 2003: Questo flag non è supportato. |
|
Specifica che la connessione DCOM con il server viene stabilita, ma la richiesta non viene inviata. |
[in] strRequest
Puntatore alla stringa contenente la richiesta del certificato. Se CR_IN_BASE64 o CR_IN_BASE64HEADER è stato specificato in Flag, strRequest deve essere una stringa Unicode.
[in] strAttributes
Puntatore alla stringa contenente attributi aggiuntivi facoltativi per la richiesta. Ogni attributo è una coppia di stringhe nome-valore. Il carattere di punti separa il nome e il valore e un carattere nuova riga separa più coppie nome-valore, ad esempio:
C++ | "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2" |
VB | "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2" |
[in] strConfig
Rappresenta una stringa di configurazione valida per il server Servizi certificati. La stringa può essere un URL HTTPS per un server di registrazione o nel formato ComputerName\CAName, dove ComputerName è il nome di rete del server e CAName è il nome comune dell'autorità di certificazione, come immesso durante l'installazione di Servizi certificati. Per informazioni sul nome della stringa di configurazione, vedere ICertConfig.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Un URL HTTPS non è supportato come input.
[out, retval] pDisposition
Puntatore al valore di eliminazione della richiesta.
Valore restituito
C++
Se il metodo ha esito positivo, il metodo restituisce S_OK.Al termine di questa funzione, *pDisposition è impostato su uno dei valori della tabella seguente.
Se il metodo ha esito negativo, restituisce un valore HRESULT che indica l'errore. Per un elenco di codici di errore comuni, vedere Valori HRESULT comuni.
VB
Il valore restituito specifica l'eliminazione della richiesta. L'eliminazione è uno dei valori seguenti.Codice restituito | Descrizione |
---|---|
|
Richiesta negata |
|
Richiesta non riuscita |
|
Richiesta non completata |
|
Certificato rilasciato |
|
Certificato rilasciato separatamente |
|
Richiesta eseguita in invio |
Commenti
Se si legge una richiesta di formato BASE64 da un file, assicurarsi che il file sia in Unicode o convertirlo da ASCII a Unicode prima di inviare la richiesta con questo metodo.
Esempio
// 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();
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | certcli.h (include Certsrv.h) |
Libreria | Certidl.lib |
DLL | Certcli.dll |