Página 1 de 2
QRCode 3.0 Assinatura de parâmetros
Enviado: 12 Ago 2025 10:18
por jairxpereira
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
QRCode 3.0 Assinatura de parâmetros
Enviado: 12 Ago 2025 11:43
por jairxpereira
Pessoal,
Já deu certo aqui. Obrigado.
QRCode 3.0 Assinatura de parâmetros
Enviado: 12 Ago 2025 12:01
por JoséQuintas
E qual foi a solução ?
QRCode 3.0 Assinatura de parâmetros
Enviado: 12 Ago 2025 12:32
por Ana Mitoooo
Basta ajusta a URL
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>
Exemplo de QR Code gerado na versão 3.0 em emissão normal:
Código: Selecionar todos
<qrCode>
http://www.fazenda.pr.gov.br/nfce/qrcode?p=412507XXXXXXXXXXXXXX65001000000001164XXXXX18|3|2
</qrCode>
QRCode 3.0 Assinatura de parâmetros
Enviado: 15 Ago 2025 10:56
por jairxpereira
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>
QRCode 3.0 Assinatura de parâmetros
Enviado: 15 Ago 2025 12:28
por JoséQuintas
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.
QRCode 3.0 Assinatura de parâmetros
Enviado: 15 Ago 2025 12:38
por JoséQuintas
Resposta interessante da IA do Windows:
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.
QRCode 3.0 Assinatura de parâmetros
Enviado: 15 Ago 2025 18:25
por Ana Mitoooo
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
QRCode 3.0 Assinatura de parâmetros
Enviado: 17 Ago 2025 10:07
por JoséQuintas
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
Com a sefazclass ainda não.
Ainda não atualizei pra QRCode 3.0.
Por isso meu interesse.
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 11:56
por jairxpereira
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?
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()
Obrigado, Pessoal
Jair Pereira
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 13:36
por JoséQuintas
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.
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 13:38
por JoséQuintas
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 13:42
por JoséQuintas
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 13:42
por JoséQuintas
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.
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 13:53
por JoséQuintas
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