Prezados, boa tarde.
Estou desenvolvendo o envio de notas fiscais para prefeitura de São Paulo utilizando Python.
Mas, estou há um tempo tendo esse erro:
1057 - Rejeição: Assinatura difere do calculado
Estou seguindo o padrão definido na documentação da prefeitura de SP, para a geração da string que vai ser assinada pelo Hash na versão 2 do XML.

A minha string base exatamente com essa. Mas, não consigo superar o erro:
def assinar_rsa_sha1(self, dados_bytes):
assinatura = self.private_key.sign(dados_bytes, padding.PKCS1v15(), hashes.SHA1())
return base64.b64encode(assinatura).decode()
def gerar_assinatura_rps_v2(self, nota):
im = nota['inscricao_prestador'].zfill(12)
serie = nota['serie'].ljust(5)
numero = nota['numero'].zfill(12)
data = nota['data'].replace("-", "") # AAAAMMDD
trib = nota['tributacao'] # T, F, A, B, D, M ou N
retido = "S" if nota['iss_retido'].lower() == "true" else "N"
situacao = nota['status'] # N, C ou E
valor_final = str(int(float(nota['valor']) * 100)).zfill(15)
deducoes = str(int(float(nota['deducoes']) * 100)).zfill(15)
cod_servico = nota['codigo_servico'].zfill(5)
tipo_tomador = "1" # Exemplo fixo CPF # Tomador: 1=CPF, 2=CNPJ, 3=Não informado, 4=NIF
doc_tomador = nota['cnpj_tomador'].zfill(14)
intermediario = "2"
cnpj_intermediario = "09999999000106"
iss_intermediario = "S"
# nif = "2"
string_final = f"{im}{serie}{numero}{data}{trib}{situacao}{retido}{valor_final}{deducoes}{cod_servico}{tipo_tomador}{doc_tomador}"
print(string_final)
return self.assinar_rsa_sha1(string_final.encode('ascii'))
Alguém já passou por isso e poderia me ajudar?