Business - Automação Comercial
Bematech: sign_bema.dll
Sem dúvida, esta dll veio para auxiliar nossa comunidade de desenvolvedores na implementação de um dos requisitos mais complexos do PAF-ECF - a Assinatura Digital do arquivo.
por André Luiz R. MunhozPrimeiramente, gostaríamos de agradecer os feedbacks que temos recebido desde o lançamento de nossa dll que gera as chaves pública e privada, e a assinatura EAD no arquivo para o PAF - a dll sign_bema.dll.
Sem dúvida, esta dll veio para auxiliar nossa comunidade de desenvolvedores na implementação de um dos requisitos mais complexos do PAF-ECF - a Assinatura Digital do arquivo.
Nesta edição extra do Flash-Tip, queremos contribuir ainda mais com nossa comunidade, exemplificando o uso da sign_bema.dll e de suas funções, e mostrar a simplicidade que é gerar estas chaves e o registro EAD no arquivo.
1º passo - A declaração das funções
Nosso primeiro passo, é conhecer a declaração das funções da sign_bema.dll. Vamos fazê-la em Delphi e VB.
- em Delphi:
function genkkey( cChavePublica: String; cChavePrivada: String ): integer; stdcall; external "sign_bema.dll";
function setLibType( iTipo: integer ): integer; stdcall; external "sign_bema.dll";
function generateEAD( cNomeArquivo: String; cChavePublica: String; cChavePrivada: String; cEAD:String; iSign: Integer): integer; stdcall; external "sign_bema.dll";
function validateFile( cNomeArquivo: String; cChavePublica: String; cChavePrivada: String ): integer; stdcall; external "sign_bema.dll"; |
- em VB:
Private Declare Function genkkey Lib "sign_bema.dll" (ByVal cChavePublica As String, ByVal cChavePrivada As String) As Integer
Private Declare Function setLibType Lib "sign_bema.dll" (iTipo as Integer) As Integer
Private Declare Function generateEAD Lib "sign_bema.dll" (ByVal cNomeArquivo As String, ByVal cChavePublica As String, ByVal cChavePrivada As String, ByVal cEAD As String, ByVal iSign As Integer) As Integer
Private Declare Function validateFile Lib "sign_bema.dll" (ByVal cNomeArquivo As String, ByVal cChavePublica As String, ByVal cChavePrivada As String) As Integer |
2º passo - Conhecer as funções que serão usadas
A sign_bema.dll possui 4 funções. Dentre elas, temos 2 funções que são usadas para a geração das chaves e da assinatura do arquivo, ou seja, basicamente precisamos de apenas 2 funções para atender ao requisito do PAF-ECF. São elas:
- genkkey
- generateEAD
A função genkkey é responsável pela geração das chaves pública e privada, e a função generateEAD é responsável pela assinatura do arquivo, gerando e inserindo o registro EAD.
3º passo - Usar as funções
Veja como é simples a implementação destas duas funções. Vamos codificá-las em Delphi e VB.
- em Delphi:
(...) |
- em VB:
(...) |
Detalhando um pouco mais estas duas funções, temos na função genkkey dois parâmetros já inicializados com 256 bytes, um para receber a geração da chave pública e outro para a chave privada, ambas automaticamente.
Tendo em mãos estas duas chaves, podemos assinar o arquivo com a função generateEAD. Esta função possui como parâmetros, o nome do arquivo que será assinado, a chave pública, a chave privada (previamente geradas pela função genkkey), o registro EAD e uma flag que indica se desejamos que o registro EAD já seja incluído no arquivo ou não (1 para sim ou 0 para não). Em relação ao 4º parâmetro (registro EAD), este precisa ser inicializado antes com 256 bytes, pois ele receberá a geração automática da assinatura.
Estas funções retornam um int, onde 1 (um) corresponde ao sucesso da execução e 0 (zero) a algum erro que tenha ocorrido.
Pronto, implementado, validado e funcionando na aplicação! Uma dll com funções simples, que ajudam a atender este requisito do PAF-ECF de forma fácil, rápida e segura.
Quero agora, compartilhar com você algumas dicas importantes para a validação do arquivo:
1) O Fisco possui um programa chamado "eECFc" que faz a validação do arquivo com base na chave pública informada.
2) A software-house deve criar um arquivo XML com o seguinte conteúdo:
<?xml version="1.0"
?> |
Onde:
- Na TAG <nome> deve ser informado o nome da software-house.
- Na TAG <modulo> deve ser informada a chave pública gerada.
- Na TAG <expoente_publico>
deve ser informado o expoente de validação.
Para Bematech o expoente é 03.
3) A nomenclatura deste arquivo é formada pelo nome da sofware-house mais a extensão ".xml", exemplo: "EMPRESA.xml".
4) O arquivo .xml deve ser salvo na pasta "SHOUSE", localizada onde o "eECFc" foi instalado.
Estamos à disposição para qualquer dúvida que venha a surgir, através dos canais:
|
|
|
suporte@bematech.com.br |
|
suporte.andre@bematech.com.br suporte.iohannes@bematech.com.br suporte.sidnei@bematech.com.br |
|
suporte.andre.luiz suporte.iohannes suporte.sidnei |
Boas implementações!
- DarumaFramework.SO no LinuxAutomação Comercial
- Palavra de status da impressora na DarumaFrameworkAutomação Comercial
- TEF – Comprovante de Crédito ou DébitoAutomação Comercial
- Comunicar com equipamentos Daruma em linguagens 16bits e DOSAutomação Comercial
- Verificando Redução Z nas Impressoras DarumaAutomação Comercial