Emissão NFSE SP, dificuldade em gerar assinatura RPS

Bom dia pessoal, andei pesquisando achei muito sobre este assunto porém mesmo assim não consegui resolver
Não estou conseguindo preencher a tag assinatura da forma correta, tenho o seguinte retorno do XML da sefaz

1206
Assinatura Digital do RPS incorreta - String verificada (45616744AB00100000000000120180725TNN00000000000010000000000000000002692228809765000196)

Minha string gerada : 45616744AB00100000000000120180725TNN00000000000000100000000000000002692228809765000196

Minha tag assinatura preenchida

C3mqlV8lVuKTdJM8ON1FkHOPWvALmY1Ow1BZvS5+0t/SGeQVM1csMdrE0r1RaeDWxQ7zRJxmjPUhOnJTXbz+edNPHuf6AaK1He+MkzlkUNvUruL2ik/qdHU+oDkWK21+cxJDvwCA0MKNrF3xLuUzty
pYmJ1LkdNQInDwOKeGpxrBviiKpTROfwOFxpNJoTaw5ahI4YaA9BDtaWoD3PnvAtAdr5tca1QON8GMMsybc7QfpW75rrU4G7aJx4Ysy4z0Yiprk9NjQ3TwNQC9Q32tcB9ZDruQuHXgxSnTR/besyelo+53s1uegFLYVxRznUb7RL8cWu+PE3SljwKzwDSBKg==

Segundo os passos da sefaz diz:
1º - Monte a string de caracteres conforme a tabela a apresentada anteriormente
2º - Converta a cadeia de caracteres ASCII para bytes.
3º - Gere o HASH (array de bytes) utilizando SHA1.
4º - Assine o HASH (array de bytes) utilizando RSA-SHA1

Estou usando estes métodos:

Primeiro chamo o método para preparar o string de 86 caracteres exigido para montar o hash

assinarPedidoEnvioRps(rps);

   private static void assinarPedidoEnvioRps(NFeRpsBuild rps) {  

    StringBuilder buffer = new StringBuilder();  
    buffer.append(rps.getChaveRps().getInscricaoPrestador())// inscricaoMunicipalPrestador  
            .append(rps.getChaveRps().getSerieRps())// serieRPS  
            .append("00000000000" + rps.getChaveRps().getNumeroRps())// numeroRPS  
            .append(rps.getDataEmissao().replace("-", "")) // Data de emissao  
            .append(rps.getTributacaoRps())// tipoTributacaoRPS  
            .append(rps.getStatusRps())// statusRPS  
            .append(rps.isIssRetido() == false ? "N" : "S")// iss  
            .append("00000000000000" + rps.getValorServicos())// valor total servico  
            .append("00000000000000" + rps.getValorDeducoes()) // valor total deducoes  
            .append(rps.getCodigoServico())// codigoServicoPrestado  
            .append("2") // indicador cnpj  
            .append(rps.getCpfCnpjTomador().getCnpj()); // cnpj do tomador  

    rps.comAssinatura(assinar(buffer.toString().getBytes(StandardCharsets.US_ASCII),  
            "C:/certificado/" + "certificado", "XXXXXXX"));  

E dentro do mesmo metodo já chamo o método para assinar

    public static String assinar(byte[] textoParaAssinar, String certificadoFullName, String senha) {  
    Signature signer = null;  
    String hash = "";  
    try {  
      
          
        signer = Signature.getInstance("SHA1withRSA");  
        signer.initSign(getPrivateKey(certificadoFullName, senha));  
        signer.update(textoParaAssinar);  

        hash = Base64.getEncoder().encodeToString(signer.sign());  

        // hash = new Base64Encoder().encode(signer.sign());  

    } catch (SignatureException | InvalidKeyException | NoSuchAlgorithmException ex) {  
        return null;  
    } catch (KeyStoreException | IOException | CertificateException | UnrecoverableEntryException ex) {  
        // logger.error(ex.getMessage());  
    }  
    return hash;  
}  

Agradeço a ajuda se possível, obrigado

Update: consegui resolver a questão, estava gerando a string incorretamente