Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

Boa tarde.
Bem, estou procurando algo a respeito dessa Assinatura Digital, vcs tem algo disponível?
Pelo o que li é o conjunto dos CNPJ's do AC + o do Do Estabelecimento Comercial e assim criptografados em 344 caracteres no padrão PKCS#1.

No Site da Receita eles disponibilizaram um link de

um Assinador, porém está em .php - >  http://www.fazenda.sp.gov.br/sat/downloads/assinador_nseg.zip

 

Em um documento que tenho da receita eles falam o seguinte:

 

"A Sefaz disponibilizou sugestão de código para geração da assinatura, na página do SAT: 

http://www.fazenda.sp.gov.br/sat, menu downloads -> arquivos vigentes, item “Assinador de 
Número de Segurança”. Recomenda-se que seja construído um executável em C#.net com esse 
código e que seja feita a comparação do resultado (texto Base64) com o resultado gerado pelo 
aplicativo utilizado pela Software House."
 
Porém eles não explicam direito, também li a respeito que esses CNPJ's podem/devem ser vinculados com o e-CNPJ do AC.
 

Bem, vcs teriam como me dar uma dica de como isso está funcionando ou se já tem algo de teste?
Obrigado desde já!

  • 2 semanas depois ...
  • Membros Pro
Postado

Estou tentando gerar usando o CAPICOM + Delphi para criar um exe gerar a assinatura porém não estou tendo sucesso, assinatura gerada fica bem maior que o 344 caractres, me parece que a capicom usa SHA1 e como tem que usar SHA256 talvez não vai dar certo usar a CAPICOM,estou usando o seguinte codigo :

function TF_Assinatura.Assinar(vCNPJs: String): Boolean;
var
  Store : IStore3;
  CertsLista, CertsSelecionado : ICertificates2;
  CertDados : ICertificate;
  lSigner : TSigner;
  lSignedData : TSignedData;
  vAssinatura:string;
  Crypt: EncryptedData;
begin
  Result := False;
 
  Store := CoStore.Create;
  Store.Open(CAPICOM_CURRENT_USER_STORE, 'My', CAPICOM_STORE_OPEN_MAXIMUM_ALLOWED);
 
  CertsLista := Store.Certificates as ICertificates2;
  CertsSelecionado := CertsLista.Select('Certificado(s) Digital(is) disponível(is)', 'Selecione o Certificado Digital para uso no aplicativo', false);
 
  if not(CertsSelecionado.Count = 0) then
  begin
    CertDados := IInterface(CertsSelecionado.Item[1]) as ICertificate2;
    lSigner             := TSigner.Create(self);
    lSigner.Certificate := CertDados;
    lSignedData         := TSignedData.Create(self);
    lSignedData.Content := vCNPJs;
 
    edtAssinatura.Text := lSignedData.Sign(lSigner.DefaultInterface, false, CAPICOM_ENCODE_BASE64);
    Result := True;
    lSignedData.Free;
    lSigner.Free;
  end;
 
end;
Caso eu consiga gerar posto aqui no post para disponibilizar...

Jorge – Analise / Desenvolvimento de Sistemas

Netstart Informatica - (18)3642-0900

www.netstart.com.br

  • Fundadores
Postado

Estou fazendo testes com o OpenSSL, seguindo os exemplos disponibilizados na página do Secretaria da Fazenda, e também as dicas desse site:

https://www.madboa.com/geek/openssl/

 

Acredito que tenha conseguido chegar num resultado final da assinatura, usando um arquivo PFX (Certificado A1)

 

1 - É necessário converter o arquivo PFX (pkcs12) no formato PEM, reconhecido pelo OpenSSL

https://www.madboa.com/geek/openssl/#cert-pkcs12

 

O comando abaixo transforma o arquivo CertificadoA1.pfx em Certificado.pem, compatível com o OpenSSL

openssl pkcs12 -in CertificadoA1.pfx -out Certificado.pem -nodes

2 - Assinando digitalmente o arquivo com a Chave

 

Vamos supor que temos o arquivo CNPJs.txt, contendo os dois CNPJs concatenados:

0112312300019902321321000199

https://www.madboa.com/geek/openssl/#digest-sign

 

Gerando o arquivo assinatura.bin, com o conteudo de CNPJs.txt, assinado pelo seu Certificado.pem

openssl dgst -sha256 -sign Certificado.pem -out assinatura.bin CNPJs.txt

3 - Convertendo o arquivo gerado para Base64

Observe que o conteúdo de assinatura.bin não é legível.. o comando abaixo transforma o mesmo para Base64

 

https://www.madboa.com/geek/openssl/#encrypt-base64

openssl enc -base64 -in assinatura.bin -out assinatura.txt

O Resultado final, o conteúdo de assinatura.txt, será algo semelhante a:

QL6el4qfOpWK0tlPVG9uGia1IHTm5rDwR6MHhiOSzi29n73II+teftgf1yXGr8BL
VSeCLF4VjcHbHMcsOQ6tzvyGO1+izRUfUOR/2FOuU3bgY7RkwT7j3gRYAqMKucF0
rm5je+/ae6eRYTIEFUhGpAkyiKqdJWSYEkKyindD0zvNcH5vhU2ieC57MxgItj0K
W3NhOkdICdFauLrjm612fMcz0y7ZEUsdD3Uynz/azKTNJnE03x5od8AZdtza71TS
zTV0KJkxldfsZq6+DlddfW7gq0Qy8hA3oa/Vx9KB/2Vc/g8g5rNHtfJ0Bhr3SK5M
zP62ErseJlLS5GVvlR0dVQ==

 

PS: Estou tentando ajustar o ACBrEAD para que o mesmo seja capaz de realizar esses passos, usando um Certificado A1

  • Curtir 4
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Daniel, parabéns pelo post!
Mas me tira uma dúvida, será que eu consigo fazer isso usando o A3?
Eu exportei o .pfx e ele também é P12.
Vou tentar!

Postado (editado)

Até agora tudo indo perfeitamente bem!
Mas estou verificando ainda, não cheguei na chave final até então.

Editado por walleg
Postado (editado)

Consegui chegar na assinatura final, usando o A3.
Porém não deu os 344 chars.
Vou pesquisar o que pode ter acontecido e refazer.

 

 

acAymSTj1e5G0rF+rYjDQssxagAlgb/----------------------------------------------------

 

Editado por EMBarbosa
Informação privada
  • Consultores
Postado

 

Consegui chegar na assinatura final, usando o A3.

Porém não deu os 344 chars.

 

Olá,

 

   Eu editei o post pois ficou parecendo que você anexou um resultado obtido de uma conversão de sua chave. Por segurança, mesmo não dando os 344 caracteres, não devia colocar sua chave privada num fórum público. Mas se você anexou a assinatura, então não teria problema, me desculpe pela edição.

[]'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.
Postado (editado)

Olá,

 

   Eu editei o post pois ficou parecendo que você anexou um resultado obtido de uma conversão de sua chave. Por segurança, mesmo não dando os 344 caracteres, não devia colocar sua chave privada num fórum público. Mas se você anexou a assinatura, então não teria problema, me desculpe pela edição.

 

EMBarbosa,

Opá, tudo bom?

Então essa chave é fake, apenas números aleatórios, com a mesma quantidade de chars obtidos, rs

Mas obrigado pela preocupação!

Mas a respeito da assinatura, então não há necessidade de 344 chars?? Pode ser menos???

Obrigado!

Editado por walleg
  • Fundadores
Postado

Acho que no processo de sign digest usando sha256 e a chave Privada do Certificado, sempre resultará em uma String de 256 caracteres...  que quando transformadas para Base64, ficarão com 344 caracteres, baseado na conta: (Length(Value) + 2) div 3) * 4)

 

No cadastro da Sw.House no SGRSAT você deve subir a chave pública, do mesmo certificado...

 

Provavelmente haverá um processo de verificação da assinatura, no site do Sefaz, quando o contribuinte enviar para o SAT o comando AssociarAssinatura com a chave que você assinou...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Entendi, Daniel.
Mas me diz uma coisa; Vc conseguiu associar o OpenSSL junto ao seu sistema??
Como fez isso? 
Estou quebrando a cabeça para descobrir isso, apesar de programar-mos em linguagens diferentes, mas gostaria de saber qual método vc usa(Parâmetros, dll, PInvoke)

Obrigado!

 

  • Fundadores
Postado

O ACBrEAD já está quase ajustado para efetuar esses comandos usando as DLLs do OpenSSL

 

Mas dá pra usar a aplicação de assinatura efetuando chamadas ao "openssl.exe"... afinal a aplicação que gera a assinatura, nunca será usada pelo usuário final..

 

Porém será muito, muito difícil fazer o OpenSSL usar um certificado A3

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

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

Postado

Certo!
Mas pq diz que será muito difícil fazer o OpenSSL usar um certificado A3?
Seria por causa de sua chave privada que não pode ser exportada?



 

Postado

Boa tarde a todos.

 

Acompanhando a discussão de vocês fiquei com uma dúvida: No manual do SAT não diz que o código de vinculação deve ser gerado usando um e-CNPJ ? Existe c-CNPJ no formato A1 ?

 

 

Obrigado,

Postado

Sinceramente não entendi ainda o pq esse processo pode não dar certo com o A3, se ambos pode exportar o .pfx com as chaves.
Privada e Publica.

Postado

Eu não tenho um A3 eCNPJ para testar... Se você tiver, tente exportar para PFX, é aplicar os passos descritos no inicio do post...

Então, eu fiz o teste exatamente como disse e cheguei a uma chave inferior a chave de 344, estou tentando entender o pq disso.

Quando transformo ele em .pem consigo visualizar as chaves e RSA, e seus conteúdos. 

 

 

Opa Felipe, como vc fez para exportar o pfx do seu certificado A3 ? 

 

Aqui não consigo exportar

O A3, vc tem que exportar usando o internet explore, na parte de certificados e aí vc escolhe o .pfx

Postado (editado)

OK... Agora o ACBrEAD é capaz de realizar a mesma operação para o calculo de Assinatura, descrita no inicio desse Post...

 

Por favor veja esse post:

 

Exemplo de uso:

attachicon.gifDemoEAD.png

Muito bom Daniel! 

Nessa parte da LocalKeyID o meu em A3, fica com alguns números "0" no arquivo .pem

Vou analisar!

Editado por Felipe Walleg
  • Este tópico foi criado há 2278 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.