Alternativas à CAPICOM.DLL
Moderador: Moderadores
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativas à CAPICOM.DLL
Bom dia,
Quais alternativas os colegas encontraram para carregar certificados e assinar os XMLs das notas fiscais?
A CAPICOM ainda funciona, mas foi descontinuada há muito tempo e não possui alguns recursos interessantes,
como a possibilidade de acessar um certificado em nuvem.
Existem as classes .NET, da Microsoft, tem alguma forma de utilizá-las, visto o Harbour não ter suporte para .NET?
Alguém tem algum exemplo que não utilize a CAPICOM?
Obrigado,
Quais alternativas os colegas encontraram para carregar certificados e assinar os XMLs das notas fiscais?
A CAPICOM ainda funciona, mas foi descontinuada há muito tempo e não possui alguns recursos interessantes,
como a possibilidade de acessar um certificado em nuvem.
Existem as classes .NET, da Microsoft, tem alguma forma de utilizá-las, visto o Harbour não ter suporte para .NET?
Alguém tem algum exemplo que não utilize a CAPICOM?
Obrigado,
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
Alternativas à CAPICOM.DLL
Você pode fazer uma dll C# e acessar a mesma com fivewin harbour ou xharbour ou vs etc.
Agora se você não utilizar o fivewin poderia conseguir alguém que poderia fazer uma dll com harbour ou xharbour, neste caso ficaria uma Dll C# e uma DLL harbour ou xharbour.
Agora se você não utilizar o fivewin poderia conseguir alguém que poderia fazer uma dll com harbour ou xharbour, neste caso ficaria uma Dll C# e uma DLL harbour ou xharbour.
Código: Selecionar todos
#include "FiveWin.ch"
function Main()
FW_DotNet( "test.dll", "dllNamespace.dllClass", "ShowMsg", "C# from FWH" )
FW_DotNet( "test.dll", "dllNamespace.dllClass", "ShowMsg", "yes!!!" )
return nil
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativas à CAPICOM.DLL
Olá jairfab,
Uso Xailer, não Fivewin, mas a ideia é interessante.
É possível gerar uma DLL com os métodos necessários em C# e acessá-la
via Harbour, mesmo não havendo suporte ao .NET?
Uso Xailer, não Fivewin, mas a ideia é interessante.
É possível gerar uma DLL com os métodos necessários em C# e acessá-la
via Harbour, mesmo não havendo suporte ao .NET?
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
Alternativas à CAPICOM.DLL
Com certeza sim!
A outra maneira seria fazer um exe em C#
tipo : assina.exe notanfe.xml ou algo semelhante eu fiz assim pro e-Social que era mais difícil por conta do modelo de assinatura sha256 eu utlizo harbour e xharbour com fivewin.
A outra maneira seria fazer um exe em C#
tipo : assina.exe notanfe.xml ou algo semelhante eu fiz assim pro e-Social que era mais difícil por conta do modelo de assinatura sha256 eu utlizo harbour e xharbour com fivewin.
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Alternativas à CAPICOM.DLL
Tem certeza?André Corrêa escreveu:A CAPICOM ainda funciona, mas foi descontinuada há muito tempo e não possui alguns recursos interessantes,como a possibilidade de acessar um certificado em nuvem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativas à CAPICOM.DLL
Quintas,
Abraço,
Não totalmente. Acredita que haja essa possibilidade com CAPICOM?JoséQuintas escreveu:Tem certeza?André Corrêa escreveu:A CAPICOM ainda funciona, mas foi descontinuada há muito tempo e não possui alguns recursos interessantes,como a possibilidade de acessar um certificado em nuvem.
Abraço,
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Alternativas à CAPICOM.DLL
Há muitas possibilidades.André Corrêa escreveu:Não totalmente. Acredita que haja essa possibilidade com CAPICOM?
E a mais interessante é pensar pra que o aplicativo precisa do certificado...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- André Corrêa
- Usuário Nível 2

- Mensagens: 81
- Registrado em: 03 Nov 2015 07:46
- Localização: Caraguatatuba/SP
Alternativas à CAPICOM.DLL
Quintas,
Não sei se entendi bem sua pergunta.
O aplicativo precisa do certificado para assinar o XML gerado, garantindo sua autenticidade.
De qualquer forma, mesmo que seja possível com a CAPICOM, seria interessante ter outras
alternativas, porque ela foi descontinuada há muito tempo.
Vasculhando o fórum e estudando um pouco os códigos em C#, consegui criar uma DLL no Visual Studio,
com suporte a acesso via COM. Com ela, foi possível fazer uma ponte e acessar o .NET framework via Harbour.
Para chegar nesse resultado, utilizei um tópico aqui do próprio fórum como base, apenas atualizando alguns detalhes para a
versão mais recente do Visual Studio e do .NET. Também me baseei no código em C# do site oficial da NFe para fazer os testes.
Não sou programador C#, nem tenho muito conhecimento em COM, sou apenas curioso, mas acho que o código abaixo pode servir
como base para outros, com mais experiência.
Tópico usado como base para criar a DLL:
https://pctoledo.org/forum/viewto ... ll#p125891
Código em C#:
Código em Harbour:
Não sei se entendi bem sua pergunta.
O aplicativo precisa do certificado para assinar o XML gerado, garantindo sua autenticidade.
De qualquer forma, mesmo que seja possível com a CAPICOM, seria interessante ter outras
alternativas, porque ela foi descontinuada há muito tempo.
Vasculhando o fórum e estudando um pouco os códigos em C#, consegui criar uma DLL no Visual Studio,
com suporte a acesso via COM. Com ela, foi possível fazer uma ponte e acessar o .NET framework via Harbour.
Para chegar nesse resultado, utilizei um tópico aqui do próprio fórum como base, apenas atualizando alguns detalhes para a
versão mais recente do Visual Studio e do .NET. Também me baseei no código em C# do site oficial da NFe para fazer os testes.
Não sou programador C#, nem tenho muito conhecimento em COM, sou apenas curioso, mas acho que o código abaixo pode servir
como base para outros, com mais experiência.
Tópico usado como base para criar a DLL:
https://pctoledo.org/forum/viewto ... ll#p125891
Código em C#:
Código: Selecionar todos
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
namespace TesteCSharpHarbour
{
[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("TesteCSharpHarbour.Teste")]
[ComVisible(true)]
public class Teste
{
public Teste() { }
public String[] ListaCertificados()
{
X509Store stores = new X509Store(StoreName.My, StoreLocation.CurrentUser);
String[] listaDeCertificados;
int contador = 0;
try
{
// Abre o Store
stores.Open(OpenFlags.ReadOnly);
// Obtém a coleção dos certificados da Store
X509Certificate2Collection certificados = stores.Certificates;
listaDeCertificados = new String[certificados.Count];
// percorre a coleção de certificados
foreach (X509Certificate2 certificado in certificados)
{
listaDeCertificados[contador] = certificado.ToString();
contador++;
}
return listaDeCertificados;
}
finally
{
stores.Close();
}
}
}
}
Código: Selecionar todos
LOCAL oDotNetDll
LOCAL a01
TRY
oDotNetDll := GetActiveObject( "TesteCSharpHarbour.Teste" )
CATCH
TRY
oDotNetDll := CreateObject( "TesteCSharpHarbour.Teste" )
CATCH
Alert( Ole2TxtError() )
RETURN .F.
END
END
a01 := oDotNetDll:ListaCertificados()
LogDebug( a01 )
-- André Corrêa
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Alternativas à CAPICOM.DLL
Falou de colocar o certificado nas nuvens....
Deixa todo uso de certificado nas nuvens, e nem precisa nada no aplicativo.
Deixa todo uso de certificado nas nuvens, e nem precisa nada no aplicativo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/