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
Prezados, bom dia
Estou implementando no meu Sistema o QR Code 3.0 da NFCE que fala na Nota Técnica 2025.001.
Mas minha dificuldade está sendo assinar a string de parâmetros desse novo layout de QRCode.
Alguém sabe como assina uma string com o harbour no algoritmo RSA SHA1.
Eu tentei essa receitinha pra assinar mas meu código não funcionou:
'<?xml version="1.0" encoding="UTF-8"?>' +;
'<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">' +;
'<ds:SignedInfo>' +;
'<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>'+;
'<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>' +;
'<ds:Reference URI="#obj">'+;
'<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>'+;
'<ds:DigestValue/>' +;
'</ds:Reference>'+;
'</ds:SignedInfo>'+;
'<ds:SignatureValue/>'+;
'<ds:Object Id="obj">String de teste</ds:Object>'+;
'</ds:Signature>' )
Será que alguém consegue me dar uma luz no assunto?
Obrigado,
Jair
Estou implementando no meu Sistema o QR Code 3.0 da NFCE que fala na Nota Técnica 2025.001.
Mas minha dificuldade está sendo assinar a string de parâmetros desse novo layout de QRCode.
Alguém sabe como assina uma string com o harbour no algoritmo RSA SHA1.
Eu tentei essa receitinha pra assinar mas meu código não funcionou:
'<?xml version="1.0" encoding="UTF-8"?>' +;
'<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">' +;
'<ds:SignedInfo>' +;
'<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>'+;
'<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>' +;
'<ds:Reference URI="#obj">'+;
'<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>'+;
'<ds:DigestValue/>' +;
'</ds:Reference>'+;
'</ds:SignedInfo>'+;
'<ds:SignatureValue/>'+;
'<ds:Object Id="obj">String de teste</ds:Object>'+;
'</ds:Signature>' )
Será que alguém consegue me dar uma luz no assunto?
Obrigado,
Jair
-
jairxpereira
- Usuário Nível 1

- Mensagens: 36
- Registrado em: 16 Out 2020 10:40
- Localização: São Paulo/SP
- 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
E qual foi a solução ?
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/
-
Ana Mitoooo
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 17 Out 2018 10:00
- Localização: Sobradinho/DF
QRCode 3.0 Assinatura de parâmetros
Basta ajusta a URL
Exemplo de QR Code gerado na versão 2.0 em emissão normal:
Exemplo de QR Code gerado na versão 3.0 em emissão normal:
Exemplo de QR Code gerado na versão 2.0 em emissão normal:
Código: Selecionar todos
<qrCode>
http://www.fazenda.pr.gov.br/nfce/qrcode?p=412507XXXXXXXXXXXXXX65001000000001116XXXXX53|2|2|1|3E8725A9C4CBBCDFF6B014DFXXXXXXF73ED4CAEE
</qrCode>
Código: Selecionar todos
<qrCode>
http://www.fazenda.pr.gov.br/nfce/qrcode?p=412507XXXXXXXXXXXXXX65001000000001164XXXXX18|3|2
</qrCode>
-
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
Comemorei cedo demais os resultados.
Ainda estou sofrendo aqui na elaboração do QR Code 3.0 em contingência off-line.
Quando envio o XML da NFCE pra SEFAZ DE SP me dá essa rejeição:
583 Valor da assinatura do qrCode difere do valor calculado.
Estou aceitando dicas.
Isso não está funcionando:
<qrCode>https://www.homologacao.nfce.fazenda.sp ... xxxxxxxxxx 0000111549010006775|3|2|15|100.00|2|zzz0923zzzz|U05qaEVIeWJCbjF1eXU1WGhqWTVtdU9SYk9IZ1A4QjNGRlR3KzF5NkVoQjcwNTEyajlaUkNNMDdSQXQxQmVINE5OZkZ2dkRreXhNMzNENklvSTNXMTRNeFVDcWMxOVBBSm00cjFZWDEwdUJsYWMwOStvU25QWVFybzRvL1hXcURCUVd5dGx6MDlsRjN6cXdFY0tycjg0T2FnVEVLZ1JQOWx0VHNIYkFNcHRmWG11d09EcDhsajZDVE51K0toTHgvbDFQaVZEWnRwMTRSL3crdElPcE51TTNLaHJpTjkrZjFvYkw5WGc0Q0pDN0VXb2RzamxuOUo0dUh4VmQ4Y3hiWXdOYnZKSE0vNk1UWkhMUi94WHVIRFV3d2dNSklrUERWQjZWc0c4NWJFdlBZUW5uUlZ5SFk4L2ZYNkVYdDR2Z0FSVzVEOTdKN1Z0YzdJRTFzRFdpdVRBPT0=</qrCode>
Ainda estou sofrendo aqui na elaboração do QR Code 3.0 em contingência off-line.
Quando envio o XML da NFCE pra SEFAZ DE SP me dá essa rejeição:
583 Valor da assinatura do qrCode difere do valor calculado.
Estou aceitando dicas.
Isso não está funcionando:
<qrCode>https://www.homologacao.nfce.fazenda.sp ... xxxxxxxxxx 0000111549010006775|3|2|15|100.00|2|zzz0923zzzz|U05qaEVIeWJCbjF1eXU1WGhqWTVtdU9SYk9IZ1A4QjNGRlR3KzF5NkVoQjcwNTEyajlaUkNNMDdSQXQxQmVINE5OZkZ2dkRreXhNMzNENklvSTNXMTRNeFVDcWMxOVBBSm00cjFZWDEwdUJsYWMwOStvU25QWVFybzRvL1hXcURCUVd5dGx6MDlsRjN6cXdFY0tycjg0T2FnVEVLZ1JQOWx0VHNIYkFNcHRmWG11d09EcDhsajZDVE51K0toTHgvbDFQaVZEWnRwMTRSL3crdElPcE51TTNLaHJpTjkrZjFvYkw5WGc0Q0pDN0VXb2RzamxuOUo0dUh4VmQ4Y3hiWXdOYnZKSE0vNk1UWkhMUi94WHVIRFV3d2dNSklrUERWQjZWc0c4NWJFdlBZUW5uUlZ5SFk4L2ZYNkVYdDR2Z0FSVzVEOTdKN1Z0YzdJRTFzRFdpdVRBPT0=</qrCode>
- 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
Isso de assinatura é chato, porque qualquer letra diferente acusa erro.
Tente apenas com a string, sem adicionar bloco de assinatura.
Veja o manual, se deixou passar algum detalhe sobre a assinatura, alguma letra a mais ou a menos.
Essa barra separadora, por exemplo, é diferente conforme codepage, e dá diferença na assinatura.
É pra pensar se a barra faz parte da assinatura.
Tente apenas com a string, sem adicionar bloco de assinatura.
Veja o manual, se deixou passar algum detalhe sobre a assinatura, alguma letra a mais ou a menos.
Essa barra separadora, por exemplo, é diferente conforme codepage, e dá diferença na assinatura.
É pra pensar se a barra faz parte da assinatura.
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
Resposta interessante da IA do Windows:
também isto:
também isto:
Como gerar a assinatura do QR Code 3.0?
- Leia a Nota Técnica 2025/001: Ela define os campos que devem ser assinados e o novo leiaute do QR Code.
- Use o manual do DANFE NFC-e e QR Code: Disponível no portal da SEFAZ, ele detalha como gerar a assinatura.
..
- Utilize bibliotecas como ACBr (se aplicável): Se você usa o componente ACBr, a funcionalidade já está implementada
...
Sim, José — a codificação da string para assinatura deve ser em UTF-8, sem BOM (Byte Order Mark). Isso é essencial para garantir que o hash gerado seja exatamente o esperado pela SEFAZ.
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/
-
Ana Mitoooo
- Usuário Nível 3

- Mensagens: 118
- Registrado em: 17 Out 2018 10:00
- Localização: Sobradinho/DF
QRCode 3.0 Assinatura de parâmetros
URL que esta usando esta errada, v3.0 não se informa o CSC
Gera o XML como sempre fez (até a v2.0) e assina com a ze_NFe ou acbr e vai ter o arquivo valido
- 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
Com a sefazclass ainda não.Ana Mitoooo escreveu:Gera o XML como sempre fez (até a v2.0) e assina com a ze_NFe ou acbr e vai ter o arquivo valido
Ainda não atualizei pra QRCode 3.0.
Por isso meu interesse.
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
Segue a função que escrevi em Harbour e usando openssl.exe para assinar os parâmetros do QR Code da NFC-e versão 3.0.
O cComand_Dois que assina a string com o openssl.exe não funciona!
Alguém pode me ajudar a identificar o que tem de errado nessa função?
Obrigado, Pessoal
Jair Pereira
O cComand_Dois que assina a string com o openssl.exe não funciona!
Alguém pode me ajudar a identificar o que tem de errado nessa função?
Código: Selecionar todos
///////////////////////////////
FUNCTION Main( cStr_a_assinar )
///////////////////////////////
LOCAL cSignature := ""
LOCAL cCertificadoPFXFile := "certificado.pfx" // CERTIFICADO DIGITAL DO CLIENTE.
LOCAL cPrivateKeyPEMFile := "TempFile.pem" // Arquivo "pem" extraído do certificado acima.
LOCAL cCommand_Um := ""
LOCAL cCommand_Dois := ""
LOCAL cFile_Str_a_Assinar := "a_assinar.txt" // Arquivo que contem a string a ser assinada.
LOCAL cFile_Str_Assinada := "assinado.txt" // Arquivo que contera o string assinado.
LOCAL nHandle := 0
// Gera o arquivo .pem
cCommand_Um := "openssl.exe pkcs12 -in " + cCertificadoPFXFile + ;
" -clcerts -passin pass:abc123 -nokeys" + ; // abc123 é a senha do certificado digital
" -out " + cPrivateKeyPEMFile
__RUN( cCommand_Um ) // Aqui gera corretamente.
// Cria o arquivo "cFile_Str_a_Assinar" contendo o string a ser assinado.
nHandle := FOPEN( cFile_Str_a_Assinar )
FWRITE( nHandle, cStr_a_assinar )
FCLOSE( nHandle )
// Aqui não funciona
cCommand_Dois := "openssl dgst -sha1 -sign " + cPrivateKeyPEMFile + " -out " + cFile_Str_Assinada + " " + cFile_Str_a_Assinar
__RUN( cCommand_Dois )
// Aqui não funciona
// Lê os dados assinados do arquivo temporário
IF FILE( cFile_Str_Assinada )
cSignature := MEMOREAD( cFile_Str_Assinada )
FILEDELETE( cFile_Str_Assinada )
RETURN( cSignature )
ENDIF
RETURN( "" )
////////////
// EOF Main()
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
Vamos lá às partes que encontrei
02. Visão Geral
02.1 NFC-e: Leiaute QR-Code versão 3
Nesta NT está definido o novo leiaute do QR-Code da NFC-e (versão 3). Nesta nova versão, o
controle sobre a autenticidade do conteúdo do QR-Code impresso no DANFE NFC-e será feito
pela assinatura de campos específicos do QR-Code. Esse controle será feito unicamente para
as NFC-e emitidas em Contingência, com a inclusão do resultado da assinatura no próprio QR
Code.
Neste novo modelo, não será mais necessário o controle do CSC-Código de Segurança do
Contribuinte pelas empresas.
Futuramente (sem data definida) está prevista a eliminação do CSC (Código de Segurança do
Contribuinte), com a adoção unicamente do leiaute do QR-Code versão 3.
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
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
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
Então... um desvia pro outro, o último pede pra olhar o manual do danfe.
Esse manual, ao que parece, ainda não existe.
Também diz que depende da UF.
Esse manual, ao que parece, ainda não existe.
Também diz que depende da UF.
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
Pra assinatura, mais prático capicom
Vai ser diferente da usada pra NFE, porque essa não é XML e não tem URI - id do bloco xml a ser assinado
Vai ser diferente da usada pra NFE, porque essa não é XML e não tem URI - id do bloco xml a ser assinado
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/