- 13.2. Certificado Digital
13.2.1. Pega o nome do certificado digital [26-08-18] - 13.2. Certificado Digital
« Anterior - 13.2.2. Pega propriedades de um certificado digital
Próximo »
13.2.1. Pega o nome do certificado digital [26-08-18]
Pega o nome do certificado digital
Assinatura:
int PegaNomeCertificado(ref string Nome, out string MsgResultado)
Descrição:
Funcionalidade para recuperar o nome (Assunto) do titular do certificado digital ou confirmar a existência de um certificado digital com o mesmo nome no repositório de certificados digitais do usuário corrente do Windows.
A conexão com o WS e o processo de assinatura digital XML requerem o uso do certificado digital do emissor.
A indicação do certificado digital que será utilizado é realizada através do parâmetro nomeCertificado na maioria das funcionalidades, devendo ser preenchido com o campo Assunto do titular do certificado digital.
Validade do Certificado Digital
A funcionalidade só mostra e pesquisa a lista de certificados digitais que estão dentro do período de validade. Assim, os certificados digitais que não se encontram dentro do período de validade não serão apresentados. Algumas AC emitem certificados digitais com data de início de validade futura, neste caso o certificado digital só vai ser mostrado a partir da data e hora que constar como data de início de validade, da mesma forma os certificados digitais expirados não serão mostrados.
Repositório de Certificado Digital
A funcionalidade pesquisa o repositório de certificados digitais do usuário corrente, isto é, somente os certificados digitais instalados no repositório de certificados digitais do logon do usuário estarão disponíveis. Caso a aplicação seja um serviço windows ou seja executada como um serviço (aplicação ASP), pode ser necessária a instalação do certificado digital no repositório local machine e uma versão diferente da DLL.
Certificado Digital com chave privada
Quando falamos de certificado digital válido, estamos falando de um certificado digital com chave privada. Já aconteceu do desenvolvedor receber o certificado digital do cliente, que mesmo após a instalação não aparecia no repositório de certificados digitais por não possuir a chave privada. A chave pública do certificado digital não tem a chave privada e geralmente tem a extensão cer, assim caso receba um arquivo com esta extensão, existe uma grande possibilidade de ser uma chave pública que não serve para autenticar e nem para assinatura digital.
Também é possível verificar se o certificado digital tem chave privada ou não pela sua propriedade na opção Ferramentas/Opções da Internet/Conteúdo/Certificados/Exibir do menu do Internet Explorer:
Parâmetros:
nome | tipo | fluxo | descrição |
---|---|---|---|
Nome | string | entrada/saída | informar o nome do titular do certificado digital que deseja confirmar a existência, Ex.: "CN=NFe - Associacao NF-e:99999090910270, C=BR, L=PORTO ALEGRE, O=Teste Projeto NFe RS, OU=Teste Projeto NFe RS, S=RS". Se o conteúdo for omitido, a funcionalidade exibe uma caixa de diálogo com os certificados digitais existentes no repositórios de certificados digitais do usuário corrente para seleção. Caso seja informado um nome do titular do certificado digital, a funcionalidade verifica a existência do certificado digital. |
msgResultado | string | saída | retorna a literal do resultado da chamada do WS |
Retorno:
O resultado da chamada do pegaNomeCertificado retorna um código numérico com os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
5401 | Foi selecionado um Certificado com o nome informado | DLL | - |
5402 | Foi Selecionado o certificado de [{0:0}] na caixa de diálogo de escolha do certificado digital | DLL | - |
5403 | Erro: Falha ao acessar certificado digital [{0:0}] | DLL | - |
5404 | Erro: Nenhum certificado digital selecionado | DLL | - |
5405 | Erro: Nenhum certificado válido foi encontrado com o nome [{0:0}] informado | DLL | - |
Histórico de atualização:
- 2010-02-02 - 2Gv0.0 - Versão preliminar.
Exemplos:
Delphi
// // // Exemplo para obter o nomeCertificado de um certificado digital // // // uses (...), ComCtrls, ComObj; // acrescentar ComCtrls e ComObj no use da unit var Util: OleVariant; // declarar a interface da DLL i:integer; nome, mensagem: Widestring; // todas as strings que serão utilizadas como parâmetro devem ser widestring begin Util := CreateOleObject('NFe_Util_2G.util'); // instancia a DLL // // inicializa variáveis // nome := ''; // se nome não for informado, a DLL irá abrir uma caixa de diálogo // para escolha do certificado digital. mensagem := ''; // // obtem o nomeCertificado (Assunto) do certificado // i:= Util.PegaNomeCertificado(nome, mensagem); if i = 5401 then MessageDlg( 'Certificado selecionado:'#13+#13+nome, mtInformation, [mbOk], 0) else MessageDlg( 'O Certificado:'#13+#13+nome+#13+#13+'não foi localizado no repositório de certificados!', mtInformation, [mbOk], 0); // // o nomeCertificado é o campo Assunto do Certificado Digital que identifica o titular // do certificado digital. // // A DLL utiliza este campo Assunto para identificar o certificado digital utilizado nas // funcionalidades. // // Após a obtenção do nomeCertificado, a aplicação deve "guardá-lo" em alguma área de // configuração da aplicação, vinculando-o com o CNPJ e a chave da licença de uso da // DLL que serão necessárias na maioria das chamadas da DLL. end;
- 13.2.1. Pega o nome do certificado digital [26-08-18]
13.2. Certificado Digital - « Anterior
13.2. Certificado Digital - Próximo »
13.2.2. Pega propriedades de um certificado digital