Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

Postado

Boa tarde, gostaria de saber como utilizar corretamente o componente ACBrEAD, pois fiz o seguinte, em minha aplicação tenho o ACBrAAC aparentemente configurado corretamente, ACBrEAD implementado os metodos OnGetChavePrivada e OnGetChavePublica, onde passo a chave privada e publica para o seu correspondente metodo, o ACBrPAF com o ACBrAAC e ACBrEAD devidamente informados nele, a propriedade AssinarArquivo como True, o ACBrECF onde o ACBrEAD e ACBrAAC estão devidamente informados, quando tento gerar uma leitura da memoria fiscal completa por periodo(ecf.PafMF_LMFC_Espelho(StrToDate(edInicial.Text), StrToDate(edFinal.Text), 'LMFC_Espelho_Periodo.txt');), tenho um erro na unit ACBrEAD.pas na linha: 502(raise), com a seguinte mensagem:

 

Erro ao ler Chave.

 

No debug o problema ocorre aqui:

 

 

try
     A := nil ;
     if Privada then
//Aqui ao que tudo indica ocorre o erro por a BioKey esta devidamente preenchida com a chave que passei
//após fsKey pegar o retorno da função, a mesma fica como nil
        fsKey := PEM_read_bio_PrivateKey( BioKey, {$IFDEF USE_libeay32}A{$ELSE}nil{$ENDIF}, nil, nil) 
     else
        fsKey := PEM_read_bio_PUBKEY( BioKey, A, nil, nil) ;
  finally
     LiberarBIO( BioKey );
  end ;
  • Moderadores
Postado

Como você está passando a chave privada, lembre-se que as quebras de linhas devem ser informadas corretamente.

 

Exemplo de como informar a chave corretamente:

 

"-----BEGIN RSA PRIVATE KEY-----" + sLineBreak +
"MIICXwIBAAKBgQC+TZjfcw/a/SovoqQPOW5bbKn4CQw4DeZJA3Y9vJrYHKN4aCQv" + sLineBreak +
"z0i3AG9kGdsTSZdZ/clh4xv6tUwPsBdZJHrm21gH7wN/zKLTvXbs+i3x7U00ElCB" + sLineBreak +
"YyZ8BOXJWVMuye0UvSz7p4JwSopugzbjaImIGy+5LvgcjUCn3OZzWpwYWQIDAQAB" + sLineBreak +
"AoGBAKAycEtB8An37ghVkGfkf7rkmZxb+XZCdSXnjSThXTQpv46/lB7PDrZG3n5U" + sLineBreak +
"qa/t1kQCOQF3DnmZHqNiJ/V5mR7ApbciQj4WYVLkMCgltru3MmzIUQ9IiLtAgaCv" + sLineBreak +
"uHc0MAzt/OWgQ93uFnLf4ubp4+2PTHiiIChv2m78s605wX2lAkEA+3pPsPdXcaOe" + sLineBreak +
"7T7C4hn1qg93ksN96UutB1APF3YAjWVWuPwzZv4hExiMPc0uKvVK2H3tP4P5CkM5" + sLineBreak +
"YMIEGEkF2wJBAMG5qmoYksz+MFZ2cd7gt68mf3Oq9F59qkHHcoV+1ttXx5pfzwat" + sLineBreak +
"kelhKkN+LV1XsgS0bGAKu2NitOMBUAcnItsCQQCEJxqJ3PFO/rUd58VyHEJFRCuK" + sLineBreak +
"LMGWP/aFyUSlB5XyuDaCr8YzcYjgCB5qu9BvMshKTKLIpgnRotIcTtjoCjfRAkEA" + sLineBreak +
"tsqHn+Bb9A0McykDvPdwmlXLAMsYFWihk7urtYa/GOw0rNcmMvjnqrxB8rlF+MNc" + sLineBreak +
"d8/+SokV02s5ntCIQJeO7QJBAKp2BCOIck+uhMPDiw/1788yQLD6mVb/pBzClzBn" + sLineBreak +
"pTMAFPGJG2fO4YJn/pUHdtDtSenX8TibWve+gY6oFCFw/Ts=" + sLineBreak +
"-----END RSA PRIVATE KEY-----";
 

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Postado

Acredito que sim:

 

procedure TFrmCheckoutPAF.eadGetChavePrivada(var Chave: String);
begin
  Chave                     :=
    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDezc+OWPcdUad2qAAZ31ilVfAK' + sLineBreak +
    '3zEq69+B7pZwfcQ3f0cxtLLH0LPRNnxw1BLYR9UXtZKtrpP1Ml5+AGqFQvEEJzrb' + sLineBreak +
    '1h9nSa5bDRIS0gT9XWPx9owDvzbMhkeWnkN8S/RFHKbjPTZE4CqtJVqD5wIDAQAB' + sLineBreak +
    '1+Op3eEVx2p+WQD0IThrYHRU1h9nSa5bDRIS0gT9XWPx9owDvzbMhkeWnkN8S/RF' + sLineBreak +
    'jvaaZzy74RWKjQLOQ0aHSdtX4VY3Sxn/ysvlsm2I34xXZywgwU261A51LHJUSOsM' + sLineBreak +
    'C5SynK9/vN40p+mEPpXUZRfX0+dCXICEyw8ZWqsxizr+NBECQQD9LWPU5eJ5Qt+1' + sLineBreak +
    'JhvW876rXURDhUKbUcU1uzLSXhZwCEY6U19Un3DqbEztipS11iiT/CyILQadWUYH' + sLineBreak +
    'Ywae7bIPAkEA4Um67mmkNcaMN6ub5PJFTJhvyvIuDaFwRw2IoUcStHkc3WdbV8Ms' + sLineBreak +
    'KAqbk5azh9cDPU6W0veXWvKPx6edRqiIqQJAT9rENT95CmRUaS+m8kqZJjXZtS5Q' + sLineBreak +
    'Dutgt4ze/8lbbGS/ud/YHrnXhKk6LmZad2wgCmUsqpsBDho9Y1ERook4cwJBAK7Z' + sLineBreak +
    'OmuvMfNKlajfV67pGT/JT3qDW5rYoPuEVXZWYv4OwYhUn2AN6kdpdDWn0M6s4abD' + sLineBreak +
    'R+uUnbPIbi7WuAoO44ECQELjlPv6OOeyGVbDmJeFhzYxaOyJgZRaEia6KRCg4WQ3' + sLineBreak +
    'Xp/UsJZ+4q64CsS9bgR3XstUSAXJmciP0iS0XYsgmA4=';
end;

procedure TFrmCheckoutPAF.eadGetChavePublica(var Chave: String);
begin
  Chave                     :=
    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDezc+OWPcdUad2qAAZ31ilVfAK' + sLineBreak +
    '0LPRNnxw1BLYR9UXtZKtrpP1Ml5+AGqFQvEEJzrb1+Op3eEVx2p+WQD0IThrYHRU' + sLineBreak +
    'C5SynK9/vN40p+mEPpXUZRfX0+dCXICEyw8ZWqsxizr+NBECQQD9LWPU5eJ5Qt+1' + sLineBreak +
    'HKbjPTZE4CqtJVqD5wIDAQAB';
end;
  • Consultores
Postado

Agora, queira trocar as suas chaves, visto que postou na internet num espaço público a sua chave privada.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • Consultores
Postado

aí eu senti firmeza! :D

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 1 mês depois ...
  • Membros Pro
Postado

Pessoal, já fiz de tudo mas não encontrei uma solução.

 

Utilizo o ACBR MONITOR e gostaria de saber como utilizar a chave privada nele para assinar os arquivos.

Ele me diz o seguinte:

 

 

- Chave válida encontrada no arquivo "swh.ini"
- Conteudo omitido por segurança. 
- Chave será utilizada para assinatura digital

Esse arquivo swh.ini pussui uma linha RSA que eu preenchi com a chave privada, isso está correto?
  • 2 meses depois ...
Postado

Oi pra todo mundo,

 

Pessoal seguinte, essa chave que tem que ser Gerada, eu gero ela uma vez só, e vou usar sempre a mesma chave na aplicação??

não precisa mudar??

 

Exemplo de como eu farei:  vou la no demo do ACBREAD, gero a chave  e utilize a chave que gerei lá, nunca mais preciso trocar isso na Aplicação???

  • Moderadores
Postado

Você gera o par de chaves e guarda elas vão ser sua assinatura daqui por diante.

Vai usar sempre a privada para assinar e a pública você entrega a quem deseja validar sua assinatura, simples assim.

 

Por favor na próxima faça uma busca, existem alguns tópicos explicando isso. 

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Postado

Gerei o Par de Chaves, inclui a Chave nos Eventos onGetChavePrivada e onGetChavePublica do acbrEAD, e no evento  GetChave do ACBRAAC

 

informei em todos eles da mesma forma que foi mostrado anteriormente aqui no POST, ja adicionei as DLLS no openSSL na pasta System32

 

Mas me retorna "Erro ao Ler Chave"

 

falta informar a chave em algum lugar??? os arquivos gerados  pub_key.pem e priv_key.pem tem que estar na pasta da aplicação??

 alguém pode me ajudar?

Postado

Régys inseri inclusive as quebra de linhas... e ja tentei com e sem as informações

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

e

"-----END RSA PRIVATE KEY-----";

 

 

o Correto é com ou sem essas informações... estranho deveria funcionar

  • Este tópico foi criado há 4183 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.