Página 2 de 2
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 14:01
por jairxpereira
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
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 14:05
por jairxpereira
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
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 14:08
por JoséQuintas
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
QRCode 3.0 Assinatura de parâmetros
Enviado: 19 Ago 2025 14:16
por JoséQuintas
Note que a previsão inicial não era pra todas as UFs.
E mesmo assim, a data está duvidosa.
QRCode 3.0 Assinatura de parâmetros
Enviado: 20 Ago 2025 17:38
por jairxpereira
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:
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.
QRCode 3.0 Assinatura de parâmetros
Enviado: 21 Ago 2025 14:07
por jairxpereira
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
QRCode 3.0 Assinatura de parâmetros
Enviado: 21 Ago 2025 15:06
por JoséQuintas
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.
QRCode 3.0 Assinatura de parâmetros
Enviado: 21 Ago 2025 17:34
por jairxpereira
Olá Quintas,
Obrigado pelas sugestões.
Vou testar o código que vc sugeriu que é da IA da Microsoft.
Jair