Skip to Content
avatar image
Former Member

Assinatura RPS NFS-e São Paulo

Boa tarde!

Estou com um problema para assinar as notas de serviço para o município de São Paulo.

A prefeitura retorna o erro 1206:

"Assinatura Digital do RPS incorreta - String verificada
(11095776FFFFF00000056522920140123INN00000000003001500000000000121500001201524606000199)"

Já conferimos a string enviada antes de passar pela criptografia e está idêntica a essa string que retorna. Alguém já passou por esse tipo de situação?

Muito Obrigada!

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

6 Answers

  • Best Answer
    avatar image
    Former Member
    Jan 29, 2014 at 06:41 PM

    Oi Thiago,

    Sim... estão iguais e os espaços eu eliminei.

    Henrique,

    Estamos desenvolvendo toda a interface e o assinador também. Criamos uma UDF que no mapeamento pega a string e gera a assinatura. A minha assinatura está ficando assim:

    8d1838d601fc7ee79729521ce491596f62e7344a

    Estou vendo alguns exemplos de XML e o formato da assinatura parece diferente, por exemplo:

    jkTucEqcj8Qkes8RalHZW+p6Zc6weeqnPabOK7IHSkyVTO9reNqpMclEh8n6nHXSPGcnsvhQx4JWx/sK26IxVTOMKp3i41/1w3OyC9SvL0VPtzrARKQMEqTf2kqwu9skHMzw5d4T/jfjYLrp5n/YAbMqKQ5zaa4qAcY0A066OAc=

    Talvez esteja faltando fazer algum passo para que ela fique dessa forma acima...

    Esse validador faz a validação da assinatura do lote certo? Porque ele está informando que a minha assinatura está correta mas o erro persiste. Aparentemente a assinatura do lote está ok... o que está apresentando erro é a assinatura de cada RPS.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Feb 10, 2014 at 06:34 PM

    Olá Senhores!

    Conseguimos fazer funcionar na última sexta-feira. Realmente o problema era no java que estava fazendo a assinatura de cada RPS. Criamos uma UDF com o seguinte código:

      String senhaCertificado = <senha>;
      InitialContext ctx = null;
      String signedElement = null;
     
      AbstractTrace trace;
      trace = container.getTrace();

      try {
       ctx = new InitialContext();
      
        Object o = null;
           o = ctx.lookup("keystore");
          
           KeystoreManager manager = (KeystoreManager) o;
         String keyStorageView = <view>;
          
           java.security.KeyStore keyStore = manager.getKeystore(keyStorageView);
             
           String alias = <entry>;
           KeyStore.PrivateKeyEntry keyEntry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias, new KeyStore.PasswordProtection(senhaCertificado.toCharArray()));
           PrivateKey pk = keyEntry.getPrivateKey();
           Signature dsa = Signature.getInstance("SHA1withRSA");
           dsa.initSign(pk);
           dsa.update(a.getBytes());
           signedElement = new BASE64Encoder().encode(dsa.sign());

      } catch (Exception e) {
       trace.addWarning("Erro na assinatura:"+e.getMessage());
      }
      return signedElement;

    Estamos com problemas para testar pois o webservice da prefeitura não retorna todas as informações mas vou abrir uma nova discussão para isso.

    Muito Obrigada pela ajuda de todos!

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Bom dia,

      Estou assinando para prefeitura de São Paulo e ele me "Assinatura difere do calculado".

      Pelo que vi, o SSFC ou SSFA trabalham da mesma maneira, mas por via das dúvidas, no SSFA que vc utilizava para assinar, havia apenas o certificado do CNPJ final?

      Obrigado,

      Renato Bertizini

  • avatar image
    Former Member
    Jan 29, 2014 at 03:47 PM

    Certifique-se de que os valores das tags dos RPS(s) estão iguais as da string assinada.

    Verifique se as tags de valores não contêm espaços em branco, se tiver, elimine-os.

    Abraço.

    Add comment
    10|10000 characters needed characters exceeded

  • Jan 29, 2014 at 04:22 PM

    Vc está desenvolvendo na mao essa interface?

    E a assinatura digital tb?

    Pesquisando no Google, me parece que um erro comum é que o pessoal que desenvolve a assinatura na mao acaba assinando duas vezes sem querer o hash, veja o que o manual fala no item 4.3.2. Envio de RPS, na sessão Observação: Assinatura Adicional.

    Ele fala:

    ATENÇÃO! Na maioria das linguagens de programação, os passos 3 e 4 são feitos através de uma única função. Verifique a documentação de sua linguagem para evitar assinar um hash de um hash.

    Link: http://nfpaulistana.prefeitura.sp.gov.br/arquivos/manual/NFe_Web_Service_v2.3.pdf

    Tente validar sua assinatura tb nesse serviço da Receita:

    https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATBHE/assinadoc/ValidadorAssinaturas.app/valida.aspx

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Feb 10, 2014 at 04:56 PM

    Maria, com as respostas acima, sua pergunta não foi respondida?

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Feb 10, 2014 at 04:59 PM

    Olá Maria

    Por favor dê um feedback a thread qualificando as respostas que lhe foram dadas.

    Grato

    Eduardo Chagas

    Add comment
    10|10000 characters needed characters exceeded