A Bematech disponibiliza uma dll chamada "sign_bema.dll" que permite gerar as chaves pública e privada, além de assinar o arquivo com o registro EAD, conforme exigências do Convênio PAF-ECF.
Importante saber:
· | O Fisco possui um programa chamado "eECFc" que faz a validação do arquivo com base na chave pública informada. |
· | A software-house deverá criar um arquivo XML com o seguinte conteúdo: |
<?xml version="1.0" ?>
<empresa_desenvolvedora>
<nome></nome>
<chave>
<modulo></modulo>
<expoente_publico>03</expoente_publico>
</chave>
</empresa_desenvolvedora>
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. |
· | A nomenclatura do arquivo é formada pelo nome da sofware-house mais a extensão ".xml", exemplo: "TESTE.xml". |
· | O arquivo .xml deve ser salvo na pasta "SHOUSE", localizada onde o "eECFc" foi instalado. |
Observação:
· | A "libeay32.dll" deve estar junta com a "sign_bema.dll" na pasta da aplicação para que as funções possam ser executadas corretamente. |
A "sign_bema.dll" possui as seguintes funções:
A declaração destas funções 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
Private Declare Function md5FromFile Lib "sign_bema.dll" (ByVal cNomeArquivo As String, ByVal MD5 As String) As Integer
A declaração destas funções 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';
function md5FromFile( NomeArq: String; MD5: String ): integer; stdcall; external 'sign_bema.dll';
|