Вы можете сделать это с BitcoinLib . Импортируйте необработанный гекс транзакции как объект транзакции, а затем подпишите его закрытым ключом.
private = "5c1a005d669f8521036f7c13138830f15b2d6a016facf9c6361362573e41a083"
raw_tx = "" # Insert your raw tx in Hex format
t = Transaction.import_raw(raw_tx)
t.sign(private)
В этом примере закрытый ключ имеет шестнадцатеричный формат, но также принимаются байты, ключевые объекты или строки в кодировке WIF.