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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 20415
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
- Curtiram: 1 vez
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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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