- 13.2. Certificado Digital
13.2.2. Pega propriedades de um certificado digital - 13.2.1. Pega o nome do certificado digital [26-08-18]
« Anterior - 13.3. Validação de Schema XML
Próximo »
13.2.2. Pega propriedades de um certificado digital
Pega as propriedades de um certificado digital
Assinatura:
int PegaDadosCertificado(ref string Nome, out string MsgResultado, out string Titular, out string CNPJ, out string NroSerie, out string Emissor, out string InicioValidade, out string FimValidade)
Descrição:
Funcionalidade para recuperar as propriedades essenciais de um certificado digital.
A funcionalidade é útil para o desenvolvedor recuperar as propriedades do certificado digital que será utilizado pelo emissor e armazenar em uma área de configuração.
Além do nome do titular do certificado digital que é necessário para acessar os WS e fazer a assinatura digital, são recuperadas outras informações relevantes como o CNPJ do titular e o período de validade do certificado digital que pode ser utilizado para alertar a necessidade de providenciar a renovação do certificado digital, evitando que a empresa pare de emitir nota fisical eletrônica por não ter renovado o seu 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.
A implementação de uma funcionalidade que monitora o período de validade do certificado digital em uso para emitir um alerta para o usuário é altamente recomendado.
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 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 na 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 |
Titular | string | saída | retorna o nome do titular do certificado digital, Ex.: NFe - Associacao NF-e:99999090910270 |
CNPJ | string | saída | retorna o CNPJ do titular do certificado digital, Ex.:99999090910270 |
NroSerie | string | saída | retorna o número de série certificado digital, Ex.: 313838313838 |
Emissor | string | saída | retorna o nome da Autoridade Certificadora que emitiu o certificado digital, Ex.: NFe - AC Intermediaria 1 |
InicioValidade | string | saída | retorna a data de início de validade do certificado digital, Ex.: 22/05/2009 14:07:03 |
FimValidade | string | saída | retorna a data final de validade do certificado digital, Ex.: 02/10/2010 14:07:03 |
Retorno:
O resultado da chamada do PegaDadosCertificado devolve um o código numérico com os seguintes significados:
código | Mensagem | origem | regra |
---|---|---|---|
6001 | Foi selecionado um Certificado de PJ | DLL | - |
6002 | Foi selecionado um Certificado de PF | DLL | - |
6003 | Existe um Certificado PJ com o nome informado | DLL | - |
6004 | Erro: Certificado selecionado não tem CNPJ/CPF | DLL | - |
6005 | Erro: Certificado digital não tem chave privada | DLL | - |
6006 | Erro: Certificado Digital - Erro Inesperado:[{0:0}] | DLL | - |
6007 | Erro: Nenhum certificado digital selecionado | DLL | - |
6008 | 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.
- 2010-03-20 - 2Gv0.3 - Alteração na forma de recuperar a data de início de validade e expiração do certificado digital, sem repercussão para o usuário.
Exemplos:
VB 6.0
Dim Result As Long Dim msgResultado As String Dim Certificado As String Dim Nome As String Dim Titular As String Dim CNPJ As String Dim NroSerie As String Dim Emissor As String Dim InicioValidade As String Dim FimValidade As String Certificado = "" msgResultado = "" Nome = "" Titular = "" CNPJ = "" NroSerie = "" Emissor = "" InicioValidade = "" FimValidade = "" ' ' instancia classe ' Dim objNFeUtil As Object Set objNFeUtil = CreateObject("NFe_Util_2G.util") ' ' pega certificado ' Result = objNFeUtil.PegaDadosCertificado(Nome, msgResultado, Titular, CNPJ, NroSerie, Emissor, InicioValidade, FimValidade) MsgBox Str(Result) + " - " + msgResultado + Chr(13) + Nome + Chr(13) + Titular + Chr(13) + CNPJ + Chr(13) + NroSerie + Chr(13) + Emissor + Chr(13) + InicioValidade + Chr(13) + FimValidade, vbInformation, "Resultado"
- 13.2.2. Pega propriedades de um certificado digital
13.2. Certificado Digital - « Anterior
13.2.1. Pega o nome do certificado digital [26-08-18] - Próximo »
13.3. Validação de Schema XML