Ir para conteúdo
  • Cadastre-se

dev botao

erro ao assinar arquivos do PAF


  • Este tópico foi criado há 3210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

PAF ECF ER 02.02
 

Toda vez que gero qualquer arquivo retorna erro se:

Se deixo definido no componente EAD a informação de chave publica e privada.

mas se uso uma função chamando o comando generateEAD e passando as chaves
gera o EAD no arquivo porém ao validar diz que a assinatura não é válida.

Se uso o exemplo ACBREAD e mando gerar chaves novas, não funciona a autenticação de 
nenhuma das formas.

Alguem pode ajudar?

Link para o comentário
Compartilhar em outros sites

É minha primeira homologação, já peguei o sistema em andamento, e a geração de arquivos estava assinando com o EAD mas na hora de verificar 
a validade da assinatura, me disseram que precisa de um arquivo XML com os dados da empresa, que ninguém na empresa sabe do que se trata
pois o programador anterior não falou nada.
 

Daí que tentei sem exito gerar uma nova chave, porque não conheço a ferramenta e no sistema encontrei dois pontos com a informação de chave pública e privada.
Uma é uma função que usa o comando generateEAD criando o arquivo com o EAD
o Outro lugar é no componente TACBrEAD, mas nesse está comentada. se descomentar dá erro.

Bom como ninguén sabe da existência do XML com as informações para validar a assinatura, preciso de uma dica um tutorial algo que oriente como criar esse XML

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Eu achei isso ai na net, de como gerar as chaves, depois basta você passar no ACBrEAD a chave gerada.

Gerar Assinatura Digital com OpenSSL

 

Após instalar o OpenSSL, abra do cmd.exe e execute o comando:

 

openssl genrsa -out chave.pem 1024

 

Esse comando irá gerar o arquivo “chave.pem”, dentro desse arquivo tem uma chave privada, a chave que não deve ser passado para ninguém.

 

-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCdkGtKP01zXktKR8gQMOEM37c/CKpMV8JdZT7cDV3vhY2DTnX/

HAEbUQ5vSO6KRttuiCgluQU7Hlx3QVBUa0Z7iXjFp1MWaKvefC4UM3mBXE0Jsjft

quqUTG2nv58GIpJhYkL60Ebq8jzElAj1XCBxpUAdKuxhql2Ig8FpwoI89wIDAQAB

AoGAenU+3bK7SDn1/CIz3FmQ34eUDPp4GONwHVRN+YquAjVjGbVGQeKK/acOt/EP

7ApMCujpgv/8j8j2Bn2NqD7DxJGQGI27n8udppH+b1+7aHgGHEwpOqROtJDOZsT8

RQM0SqQkoMeIhDxAY6odkea2xZm5tZdPLyW+j/RChNzWx9kCQQDJh1uufit5rSp7

bTadxADcjp75LyB60in4pYt9vB+angBIQusheq80ZlIprbj3MhwqZj1Gdp1FsP1j

cfMz94nrAkEAyCb15F1pWggdrTndcC5L0GxqdcdVak9YZFKMjTiWyn4Sn4pBxXBA

4mOEez9lkOFODdCveMI7Cu+csrNieeBqJQJBAJCpfYJwRzz8tPYMm5v8SrIIHs24

qpP/sOkvzEXheL5AlOtKPga2TnZKzMfmUFQBwH4fDfU6yAJy3jE4Zt/y3SkCQE5g

82m6KsdW5kgvoMeNWaME0avNo2U+LR8cNG4Y+vPQ6voO6jKnAsGktvyMlvllQWun

jQ99ACIIMxTHqoiPmQECQDI88hh0/eVt8br2mfjXTa6hx5oVC0DEEaRemYgJGiQE

uS6qDv74/3dQJF6WMqjiRsf52ja62TgJRSf9gVEyCcM=

-----END RSA PRIVATE KEY-----

 

Em seguida, é preciso gerar uma segunda chave RSA que será o modulo, a partir da chave privada gerada no passo anterior. Execute o comando:

 

openssl rsa -in chave.pem -modulus -out modulo.txt

 

Esse comando gerou o arquivo “modulo.txt”, que contém uma segunda chave, que irá compor nossa chave pública. Nele também possui a chave privada utilizada, mas não vai nos interessar agora.

         Abaixo, conteúdo do arquivo “modulo.txt”

 

       Modulus=9D906B4A3F4D735E4B4A47C81030E10CDFB73F08AA4C57C25D653EDC0D5DEF858D834E75FF1C011B510E6F48EE8A46DB6E882825B9053B1E5C774150546B467B8978C5A7531668ABDE7C2E143379815C4D09B237EDAAEA944C6DA7BF9F062292616242FAD046EAF23CC49408F55C2071A5401D2AEC61AA5D8883C169C2823CF7

-----BEGIN RSA PRIVATE KEY-----

MIICXAIBAAKBgQCdkGtKP01zXktKR8gQMOEM37c/CKpMV8JdZT7cDV3vhY2DTnX/

HAEbUQ5vSO6KRttuiCgluQU7Hlx3QVBUa0Z7iXjFp1MWaKvefC4UM3mBXE0Jsjft

quqUTG2nv58GIpJhYkL60Ebq8jzElAj1XCBxpUAdKuxhql2Ig8FpwoI89wIDAQAB

AoGAenU+3bK7SDn1/CIz3FmQ34eUDPp4GONwHVRN+YquAjVjGbVGQeKK/acOt/EP

7ApMCujpgv/8j8j2Bn2NqD7DxJGQGI27n8udppH+b1+7aHgGHEwpOqROtJDOZsT8

RQM0SqQkoMeIhDxAY6odkea2xZm5tZdPLyW+j/RChNzWx9kCQQDJh1uufit5rSp7

bTadxADcjp75LyB60in4pYt9vB+angBIQusheq80ZlIprbj3MhwqZj1Gdp1FsP1j

cfMz94nrAkEAyCb15F1pWggdrTndcC5L0GxqdcdVak9YZFKMjTiWyn4Sn4pBxXBA

4mOEez9lkOFODdCveMI7Cu+csrNieeBqJQJBAJCpfYJwRzz8tPYMm5v8SrIIHs24

qpP/sOkvzEXheL5AlOtKPga2TnZKzMfmUFQBwH4fDfU6yAJy3jE4Zt/y3SkCQE5g

82m6KsdW5kgvoMeNWaME0avNo2U+LR8cNG4Y+vPQ6voO6jKnAsGktvyMlvllQWun

jQ99ACIIMxTHqoiPmQECQDI88hh0/eVt8br2mfjXTa6hx5oVC0DEEaRemYgJGiQE

uS6qDv74/3dQJF6WMqjiRsf52ja62TgJRSf9gVEyCcM=

-----END RSA PRIVATE KEY-----

 

O arquivo XML deve ser gerado manualmente, da seguinte maneira:

 

<?xml version="1.0"?>

<empresa_desenvolvedora>

       <nome>Empresa Desenvolvedora Ltda</nome>

       <chave>

       <modulo>9D906B4A3F4D735E4B4A47C81030E10CDFB73F08AA4C57C25D653EDC0D5DEF858D834E75FF1C011B510E6F48EE8A46DB6E882825B9053B1E5C774150546B467B8978C5A7531668ABDE7C2E143379815C4D09B237EDAAEA944C6DA7BF9F062292616242FAD046EAF23CC49408F55C2071A5401D2AEC61AA5D8883C169C2823CF7</modulo>              <expoente_publico>0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001</expoente_publico>

       </chave>

</empresa_desenvolvedora>

 

Repare que na tag <modulo> eu informei aquela segunda chave gerada a partir da chave privada. O expoente público pode ser sempre esse número que já está.

 

Para gerar o arquivo com o Registro EAD, execute o comando:

 

openssl dgst -md5 -sign chave.pem -out ead.txt -hex arquivo.txt

 

Esse comando vai gerar o arquivo “ead.txt”, que contém a assinatura do “arquivo.txt”, agora, basta editar o “arquivo.txt” e na última linha adicionar o Registro EAD que está no “ead.txt”.

 

Pronto seu arquivo já está assinado.

 

Esse é o processo básico para a assinatura digital, Vc pode rodar os comandos do openssl direto do fonte do programa, desde que existam as DLLs libeay32.dll, libssl32.dll e ssleay32.dll no diretório de sistema.

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Boa tarde

não precisa tanto!

bastava ele pegar as duas chaves salvar em arquivos ou colar no ACBrEAD que existe na pasta de exemplos e mandar gerar o xml da software house com o aplicativo de exemplo!

é como já falei diversas vezes basta olhar os códigos no svn e pasta exemplos!

Editado por Juliomar Marchetti
  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Há esqueci ainda de dizer que quando a impressora é Bematech o relatório arq. Ac17/04 estava assinando duas vezes porque o comando que traz a informação da ECF já faz a assinatura. Precisei comentar a linha que assina e no local onde disparo o comando colocar uma verificação se não Bematech assinar. E esse relatório não funcionou na Daruma quando por data, mas como o Juliomar falou deve ser DLL.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3210 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...