Após algumas pesquisas na internet e no manual da prefeitura eu consegui gerar essa assinatura, abaixo vou mostrar como fazer isso em java utilizando um certificado A1. O que veremos nesse post é como gerar o hash de assinatura de RPS (conteúdo da tag assinatura) e não como assinar o XML para envio.
Antes de mais nada você precisa ter a sequencia de caracateres ASCII a ser assinada, se não sabe como gerá-la consulte o manual NFe-Web-Service-v2-2 da prefeitura da página 23 a 25, pois lá explica detalhadamente como montar essa sequencia.
Primeiro importe as classes Signature e BASE64Encoder
Agora inclua o método que faz a assinatura da sequencia ASCII
Primeiro é obtida uma instância do algorítimo RSA-SHA1, em seguida é informada a chave privada do certificado, a sequencia é convertida para bytes e finalmente o HASH é gerado.
O método getPrivateKey pode ser substituido pelo seu próprio método que obtem a chave privada do certificado, ou se preferir pode utilizar o exemplo abaixo:
Espero que isso ajude vocês em seus projetos de NFS-e para São Paulo. Valeu!!!
Código claro e simples.
ResponderExcluirGero a string assinada mas quando envio o lote dá Assinatura Digital Incorreta. Alguma ideia?
Alguém ja assinou A TAG Assinatura da NFSe de São Paulo em ABAP?
ResponderExcluirPra mim também dá sempre o mesmo erro: Assinatura Digital do RPS incorreta. Todos os valores da string estão conforme o manual informa.
ResponderExcluirAlguém ja assinou A TAG Assinatura da NFSe de São Paulo.