QRCode 3.0 Assinatura de parâmetros
Moderador: Moderadores
-
jairxpereira
- Usuário Nível 1

- Mensagens: 36
- Registrado em: 16 Out 2020 10:40
- Localização: São Paulo/SP
QRCode 3.0 Assinatura de parâmetros
Valeu Quintas pelas dicas. Mas meu problema está em usar o openssl.exe corretamente.
Eu encontrei o manual com a especificação do QRCode 3.0 em algum post do forum ACBR.
Esse aqui com esse nome 20250324 - Manual_de_Especificações_Técnicas_do_DANFE_NFC-e_QR_Code.pdf.
Estou testando o QRCode 3.0 na SEFAZ SP, quando uso HB_SHA1() a nota fiscal em contingência é emitida... mas quando assino os parâmetros do QRCode conforme mesmo manual
não valida a assinatura. É ruim isso, o documento oficial diz uma coisa e a SEFAZ-SP faz outra coisa. Aí eu fico com receio de cada UF implementar diferente a validação da assinatura do QR Code 3.0 em contingência.
Jair Pereira
Eu encontrei o manual com a especificação do QRCode 3.0 em algum post do forum ACBR.
Esse aqui com esse nome 20250324 - Manual_de_Especificações_Técnicas_do_DANFE_NFC-e_QR_Code.pdf.
Estou testando o QRCode 3.0 na SEFAZ SP, quando uso HB_SHA1() a nota fiscal em contingência é emitida... mas quando assino os parâmetros do QRCode conforme mesmo manual
não valida a assinatura. É ruim isso, o documento oficial diz uma coisa e a SEFAZ-SP faz outra coisa. Aí eu fico com receio de cada UF implementar diferente a validação da assinatura do QR Code 3.0 em contingência.
Jair Pereira
-
jairxpereira
- Usuário Nível 1

- Mensagens: 36
- Registrado em: 16 Out 2020 10:40
- Localização: São Paulo/SP
QRCode 3.0 Assinatura de parâmetros
Valeu Quintas pelas dicas. Mas meu problema está em usar o openssl.exe corretamente. Eu precisava ter essa função funcionando pra
confirmar a outra função usando CAPICOM está assinando corretamente uma string.
Eu encontrei o manual com a especificação do QRCode 3.0 em algum post do forum ACBR.
Esse aqui com esse nome 20250324 - Manual_de_Especificações_Técnicas_do_DANFE_NFC-e_QR_Code.pdf.
Estou testando o QRCode 3.0 na SEFAZ SP, quando uso HB_SHA1() a nota fiscal em contingência é emitida... mas quando assino os parâmetros do QRCode conforme mesmo manual
não valida a assinatura. É ruim isso, o documento oficial diz uma coisa e a SEFAZ-SP faz outra coisa. Aí eu fico com receio de cada UF implementar diferente a validação da assinatura do QR Code 3.0 em contingência.
Jair Pereira
confirmar a outra função usando CAPICOM está assinando corretamente uma string.
Eu encontrei o manual com a especificação do QRCode 3.0 em algum post do forum ACBR.
Esse aqui com esse nome 20250324 - Manual_de_Especificações_Técnicas_do_DANFE_NFC-e_QR_Code.pdf.
Estou testando o QRCode 3.0 na SEFAZ SP, quando uso HB_SHA1() a nota fiscal em contingência é emitida... mas quando assino os parâmetros do QRCode conforme mesmo manual
não valida a assinatura. É ruim isso, o documento oficial diz uma coisa e a SEFAZ-SP faz outra coisa. Aí eu fico com receio de cada UF implementar diferente a validação da assinatura do QR Code 3.0 em contingência.
Jair Pereira
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
QRCode 3.0 Assinatura de parâmetros
Direto da IA do Windows
Código: Selecionar todos
FUNCTION Main()
LOCAL oSigner, oSignedData
LOCAL cTexto := "Texto para assinar"
LOCAL cAssinatura
// Cria os objetos COM
oSigner := win_OleCreateObject( "CAPICOM.Signer" )
oSignedData := win_OleCreateObject( "CAPICOM.SignedData" )
// Seleciona o certificado (pode abrir a janela de seleção)
oSigner:Certificate := oSigner:Select()
// Define o conteúdo a ser assinado
oSignedData:Content := cTexto
// Assina o conteúdo
cAssinatura := oSignedData:Sign( oSigner, .F., 0 ) // .F. = retorna assinatura, 0 = formato base64
? "Assinatura gerada:"
? cAssinatura
RETURN NIL
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
QRCode 3.0 Assinatura de parâmetros
Note que a previsão inicial não era pra todas as UFs.
E mesmo assim, a data está duvidosa.
E mesmo assim, a data está duvidosa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
jairxpereira
- Usuário Nível 1

- Mensagens: 36
- Registrado em: 16 Out 2020 10:40
- Localização: São Paulo/SP
QRCode 3.0 Assinatura de parâmetros
Olá Quintas,
Eu consegui assinar o QRCode 3.0 off-line com o openssl.exe no ambiente de homologação da SEFAZ SP.
Eu gero uma chave privada PEM a partir do arquivo PFX do certificado, e depois assino a string com o certificado PEM.
Mas essa solução não resolve todos os problemas, porque meus clientes que usam certificado A3 vão ficar
descobertos porque o openssl não gera chave privada PEM a partir de certificado A3.
A solução ideal seria conseguir assinar pelo CAPICOM, vou ver o código que vc postou e aceito mais dicas se vc tiver
de como assinar com o CAPICOM com o algoritmo RSA SHA1.
A solução com o openssl.exe e certificado A1 foi essa aqui:
Eu consegui assinar o QRCode 3.0 off-line com o openssl.exe no ambiente de homologação da SEFAZ SP.
Eu gero uma chave privada PEM a partir do arquivo PFX do certificado, e depois assino a string com o certificado PEM.
Mas essa solução não resolve todos os problemas, porque meus clientes que usam certificado A3 vão ficar
descobertos porque o openssl não gera chave privada PEM a partir de certificado A3.
A solução ideal seria conseguir assinar pelo CAPICOM, vou ver o código que vc postou e aceito mais dicas se vc tiver
de como assinar com o CAPICOM com o algoritmo RSA SHA1.
A solução com o openssl.exe e certificado A1 foi essa aqui:
Código: Selecionar todos
// Cria o arquivo chave PEM a partir do arquivo do certificado PFX:
cCommand := "openssl.exe" + ;
" pkcs12" + ;
" -in " + cArquivoCertificadoPFX + ;
" -nocerts" + ;
" -nodes" + ;
" -passin pass:" + cPassWord + ;
" -out " + cArquivoPrivateKeyPEM
__RUN( cCommand ) // Mantem o foco.
// Cria o comando OpenSSL para assinar o string:
cCommand := "openssl.exe dgst -sha1" + ;
" -sign " + cPrivateKeyPEMFile + ;
" -out " + cSigned_File + ;
" " + cString_File
__RUN ( cCommand )
// Depois eu só leio o arquivo binário da assinatura cSigned_File e converto para base64.
-
jairxpereira
- Usuário Nível 1

- Mensagens: 36
- Registrado em: 16 Out 2020 10:40
- Localização: São Paulo/SP
QRCode 3.0 Assinatura de parâmetros
Aviso a todos!
Em resumo, eu consegui assinar os parâmetros do qr code 3.0 off-line da nfc-e usando o openssl.exe.
Porém, isso resolve se o certificado digital for tipo a1 - arquivo.
Para certificado a3, alguém se habilita em fazer uma solução usando capicom com o harbour 3.2? qual o custo?
obrigado.
Jair Pereira
Em resumo, eu consegui assinar os parâmetros do qr code 3.0 off-line da nfc-e usando o openssl.exe.
Porém, isso resolve se o certificado digital for tipo a1 - arquivo.
Para certificado a3, alguém se habilita em fazer uma solução usando capicom com o harbour 3.2? qual o custo?
obrigado.
Jair Pereira
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
QRCode 3.0 Assinatura de parâmetros
Acredito que seja igual essa que postei, que a IA mostrou.
Nessa rotina vai pedir pra escolher o certificado.
Faça o teste, se tudo ok, vai ser só trocar a parte de pedir certificado, pra usar um instalado, e isso já tem na sefazclass.
Nessa rotina vai pedir pra escolher o certificado.
Faça o teste, se tudo ok, vai ser só trocar a parte de pedir certificado, pra usar um instalado, e isso já tem na sefazclass.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
jairxpereira
- Usuário Nível 1

- Mensagens: 36
- Registrado em: 16 Out 2020 10:40
- Localização: São Paulo/SP
QRCode 3.0 Assinatura de parâmetros
Olá Quintas,
Obrigado pelas sugestões.
Vou testar o código que vc sugeriu que é da IA da Microsoft.
Jair
Obrigado pelas sugestões.
Vou testar o código que vc sugeriu que é da IA da Microsoft.
Jair