Página 1 de 1

Ler certificado diretamente de um pfx

Enviado: 17 Jul 2025 11:26
por malcarli
Bom dia Devs,

Existe alguma método ou função para ler diretamente de um certificado digital, sem estar instalado no windows?

algo assim:

Código: Selecionar todos


     oSefaz:CarregarCertificadoDigitalA1("D:\tools\nomedocertificao.pfx","1234")	  



Pois tenho clientes, que no server as vezes ele "perde a instalação" do certificado


Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: marceloalcarli@gmail.com

Ler certificado diretamente de um pfx

Enviado: 17 Jul 2025 11:35
por JoséQuintas
Na sefazclass tem função.
Pra ler pfx, pra instalar pfx, pra remover, etc.
Veja no arquivo capicom.

Não esqueça que tem contador que exporta na criptografia máxima.
Isso não funciona em qualquer computador.
Em windows server então.... nem pensar.
Isso depende de DLL, e o server bloqueia a DLL.

Um usuário instalar certificado no próprio usuário é normal, não tem proteção que impeça isso.
O programa mesmo pode instalar.

Ler certificado diretamente de um pfx

Enviado: 18 Jul 2025 08:40
por malcarli
Bom dia, Mestre,

Desculpa a ignorância, procurei e não achei por isto postei a dúvida.

Se puder mostrar expecificamente onde está agradeço

obg

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: marceloalcarli@gmail.com

Ler certificado diretamente de um pfx

Enviado: 18 Jul 2025 11:24
por JoséQuintas
capicom.png
O único arquivo que trata capicom, e leva o nome capicom.

Ler certificado diretamente de um pfx

Enviado: 24 Jul 2025 08:20
por malcarli
Bom dia Mestre, parabéns e muitos anos de vida. Precisava ler um .pfx e não remover

achei este código mas não consegui transformar em harbour

Código: Selecionar todos


' --- Configuração ---
Const CAPICOM_CURRENT_USER_STORE = 2
Const CAPICOM_MY_STORE = "MY"
Const CAPICOM_STORE_OPEN_READ_ONLY = 0

' --- Variáveis ---
Dim objStore
Dim objCert
Dim objPfx
Dim strPfxPath
Dim strPfxPassword

' --- Definir caminho do arquivo PFX e senha ---
strPfxPath = "c:\caminho\para\seu\arquivo.pfx" ' Substitua pelo caminho real do seu arquivo
strPfxPassword = "sua_senha" ' Substitua pela senha do seu arquivo PFX

' --- Criar objeto CAPICOM.Store ---
Set objStore = CreateObject("CAPICOM.Store")

' --- Abrir o armazenamento de certificados ---
objStore.Open CAPICOM_CURRENT_USER_STORE, CAPICOM_MY_STORE, CAPICOM_STORE_OPEN_READ_ONLY

' --- Carregar o certificado do arquivo PFX ---
Set objPfx = CreateObject("CAPICOM.PFX")

' --- Tentar carregar o arquivo PFX.  A função de carregamento retorna TRUE em caso de sucesso e FALSE em caso de falha ---
If objPfx.Load(strPfxPath, strPfxPassword) Then

    ' --- Obter o certificado da estrutura PFX ---
    Set objCert = objPfx.Certificates.Item(1)

    ' --- Exibir informações do certificado (apenas um exemplo) ---
    WScript.Echo "Assunto: " & objCert.SubjectName
    WScript.Echo "Emissor: " & objCert.IssuerName
    WScript.Echo "Validade: " & objCert.ValidFromDate & " - " & objCert.ValidUntilDate

    ' --- Aqui você pode usar o certificado e a chave privada para outras operações ---
    ' Por exemplo, você pode acessar a chave privada:
    ' Set objPrivateKey = objCert.PrivateKey
    ' WScript.Echo "Chave Privada: " & objPrivateKey.KeySize

    ' --- Limpar objetos ---
    Set objCert = Nothing
    Set objPfx = Nothing
Else
    WScript.Echo "Erro ao carregar o arquivo PFX: " & objPfx.LastError
End If

' --- Fechar o armazenamento ---
objStore.Close

' --- Limpar objeto ---
Set objStore = Nothing

WScript.Echo "Fim."
Consegui, Mestre, se quiser incorporar na classe, pode usar sem moderação.

Código: Selecionar todos

#include "minigui.ch"

PROCEDURE Main()
   LOCAL objStore
   LOCAL strPfxPath := "D:\enzza\classe_nfse\nome_do_seu_certificado.pfx"
   LOCAL strPfxPassword := "1234"

   Set Century on
   Set date Briti

   // Criar objeto CAPICOM.Store
   objStore := win_oleCreateObject( "CAPICOM.Certificate" )
   objStore:Load( strPfxPath, strPfxPassword, 0, 0 )

   msginfo( "Assunto: " + objStore:SubjectName)
   msginfo( "Emissor: " + objStore:IssuerName)
   msginfo( "Validade: " + Dtoc(objStore:ValidFromDate) + " até " + Dtoc(objStore:ValidToDate))
   msginfo( "Thumbprint: " + objStore:Thumbprint)
   msginfo( "Serial number: " + objStore:SerialNumber)
   msginfo( "Versão: " + Hb_Ntos(objStore:Version))
   msginfo( "Instalado ?: " + Iif(objStore:Archived, [SIM], [NÃO]) )

   objStore := NIL

   msginfo( "Fim.")

RETURN (Nil)


obg

Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: marceloalcarli@gmail.com

Ler certificado diretamente de um pfx

Enviado: 24 Jul 2025 16:02
por JoséQuintas
O último parâmetro, teoricamente não é instalado, já que não está fazendo nenhum teste sobre isso.
Talvez "arquivado" seja que perdeu a validade, foi arquivado porque não dá mais pra usar.

Na capicom tem isso já.
Se não me engano, na época foi o Kapiaba que precisava disso, há varios anos.