Método ICertRequest::Submit (certcli.h)
O método Submit envia uma solicitação para o servidor dos Serviços de Certificados.
Se a disposição resultante status for CR_DISP_ISSUED, você poderá recuperar o certificado emitido chamando o método ICertRequest3::GetCertificate.
Sintaxe
HRESULT Submit(
[in] LONG Flags,
[in] const BSTR strRequest,
[in] const BSTR strAttributes,
[in] const BSTR strConfig,
[out, retval] LONG *pDisposition
);
Parâmetros
[in] Flags
Especifica o formato de solicitação, o tipo de solicitação e se a solicitação é criptografada. Um dos sinalizadores de atributo de formato a seguir pode ser usado para especificar como a solicitação é codificada.
Um dos sinalizadores de valor de formato a seguir pode ser usado para especificar o tipo da solicitação.
Valor | Significado |
---|---|
|
Retorne um desafio que pode ser enviado a uma AC. O desafio é uma solicitação completa do Gerenciamento de Certificados sobre CMS (CMC ). Quando esse sinalizador é ativado, chamar o método GetFullResponseProperty com o sinalizador FR_PROP_FULLRESPONSE retorna uma resposta CMC que contém o desafio de atestado de chave. |
|
A chamada é uma resposta a um desafio. O RequestId deve ser passado no parâmetro strAttributes e a resposta ao desafio deve ser passada no parâmetro strRequest . Esse sinalizador deve ser ativado quando um aplicativo precisa enviar de volta o desafio descriptografado para a AC. Em seguida, você pode chamar o método GetFullResponseProperty para obter o certificado de entidade final emitido. |
|
Uma solicitação de Gerenciamento de Certificados por CMS (CMC). |
|
Experimente todos os formatos CR_IN_CMC, CR_IN_KEYGEN, CR_IN_PKCS7 ou CR_IN_PKCS10. |
|
Solicitação keygen (formato Netscape). |
|
Solicitação PKCS nº 7 (agente de renovação ou registro). |
|
Solicitação PKCS nº 10. |
|
Transmita as mensagens usando RPC em vez de DCOM. |
|
Retornar uma resposta CMC completa. |
|
Inclua as listas de revogação de certificados atuais. |
|
Use o contexto do computador de serviço de chave. |
|
Indica que a mensagem está sendo solicitada em nome de outro remetente.
Se a AC (autoridade de certificação ) não estiver configurada para "renovar em nome de", a AC rejeitará a solicitação. Para obter mais informações sobre como habilitar a "renovação em nome de" na AC, consulte Configurando o serviço Web de registro de certificado para o modo somente renovação. A solicitação deve ser uma solicitação de renovação e o certificado de assinatura deve estar usando o mesmo modelo que a solicitação. Além disso, a solicitação terá êxito somente quando uma das seguintes condições for verdadeira:
|
|
Não inclua nos dados de solicitação que identificam o cliente.
Windows Server 2008 e Windows Server 2003: Não há suporte para esse sinalizador. |
|
Especifica que a conexão DCOM com o servidor foi estabelecida, mas a solicitação não é enviada. |
[in] strRequest
Um ponteiro para a cadeia de caracteres que contém a solicitação de certificado. Se CR_IN_BASE64 ou CR_IN_BASE64HEADER tiver sido especificado em Sinalizadores, strRequest deverá ser uma cadeia de caracteres Unicode.
[in] strAttributes
Um ponteiro para a cadeia de caracteres que contém atributos extras opcionais para a solicitação. Cada atributo é um par de cadeia de caracteres nome-valor. O caractere de dois-pontos separa o nome e o valor e um caractere de nova linha separa vários pares nome-valor, por exemplo:
C++ | "AttributeName1:AttributeValue1\nAttributeName2:AttributeValue2" |
VB | "AttributeName1:AttributeValue1" & vbNewLine & "AttributeName2:AttributeValue2" |
[in] strConfig
Representa uma cadeia de caracteres de configuração válida para o servidor dos Serviços de Certificados. A cadeia de caracteres pode ser uma URL HTTPS para um servidor de registro ou no formulário ComputerName\CAName, em que ComputerName é o nome de rede do servidor e CAName é o nome comum da autoridade de certificação, conforme inserido durante a instalação dos Serviços de Certificado. Para obter informações sobre o nome da cadeia de caracteres de configuração, consulte ICertConfig.
Windows Server 2008, Windows Vista, Windows Server 2003 e Windows XP: Não há suporte para uma URL HTTPS como entrada.
[out, retval] pDisposition
Um ponteiro para o valor de disposição da solicitação.
Retornar valor
C++
Se o método for bem-sucedido, o método retornará S_OK.Após a conclusão bem-sucedida dessa função, *pDisposition é definido como um dos valores na tabela a seguir.
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.
VB
O valor retornado especifica a disposição da solicitação. A disposição é um dos valores a seguir.Código de retorno | Descrição |
---|---|
|
Solicitação negada |
|
Falha na solicitação |
|
A solicitação não foi concluída |
|
Certificado emitido |
|
Certificado emitido separadamente |
|
Solicitação feita em envio |
Comentários
Se você ler uma solicitação de formato BASE64 de um arquivo, verifique se o arquivo está em Unicode ou converta-o de ASCII para Unicode antes de enviar a solicitação com esse método.
Exemplos
// 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();
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows Server 2003 [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | certcli.h (inclua Certsrv.h) |
Biblioteca | Certidl.lib |
DLL | Certcli.dll |