Clipper On Line • Ver Tópico - Alternativas à CAPICOM.DLL

Alternativas à CAPICOM.DLL

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Alternativas à CAPICOM.DLL

Mensagempor André Corrêa » 14 Mai 2019 08:40

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,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Alternativas à CAPICOM.DLL

Mensagempor jairfab » 14 Mai 2019 13:50

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.

#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
Avatar de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 242
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes

Alternativas à CAPICOM.DLL

Mensagempor André Corrêa » 14 Mai 2019 13:59

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?
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Alternativas à CAPICOM.DLL

Mensagempor jairfab » 14 Mai 2019 14:16

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.
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
Avatar de usuário

jairfab
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 242
Data de registro: 21 Mai 2007 09:43
Cidade/Estado: São Paulo, Região Leste - Suzano
Curtiu: 0 vez
Mens.Curtidas: 13 vezes

Alternativas à CAPICOM.DLL

Mensagempor JoséQuintas » 14 Mai 2019 14:27

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.


Tem certeza?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alternativas à CAPICOM.DLL

Mensagempor André Corrêa » 14 Mai 2019 15:19

Quintas,

JoséQuintas escreveu:
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.


Tem certeza?


Não totalmente. Acredita que haja essa possibilidade com CAPICOM?

Abraço,
-- André Corrêa

"Opte por aquilo que faz o seu coração vibrar, apesar de todas as consequências". - Osho
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Alternativas à CAPICOM.DLL

Mensagempor JoséQuintas » 14 Mai 2019 16:22

André Corrêa escreveu:Não totalmente. Acredita que haja essa possibilidade com CAPICOM?


Há muitas possibilidades.

E a mais interessante é pensar pra que o aplicativo precisa do certificado...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Alternativas à CAPICOM.DLL

Mensagempor André Corrêa » 15 Mai 2019 09:14

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:
http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=13894&p=125891&hilit=dll#p125891

Código em C#:
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 em Harbour:
  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
Avatar de usuário

André Corrêa
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 81
Data de registro: 03 Nov 2015 06:46
Cidade/Estado: Caraguatatuba/SP
Curtiu: 8 vezes
Mens.Curtidas: 3 vezes

Alternativas à CAPICOM.DLL

Mensagempor JoséQuintas » 15 Mai 2019 10:26

Falou de colocar o certificado nas nuvens....
Deixa todo uso de certificado nas nuvens, e nem precisa nada no aplicativo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro