from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA256
import base64
import warnings

warnings.filterwarnings("ignore")


def rsa_sign(data):
    private_key = '''-----BEGIN RSA PRIVATE KEY-----
MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQC4tGv3CtJYQxF6Jk1VfHRA4MVP53juA9SnxXNj9kQUcpeUXCqWU3N4oo+hEKH+KpMRNWvKD6uQt7+YmEeUBO5OD9sFcEi4R1/UoWF+OO/hIgCLlp03bfYkRtB5ISL2VDcNOwTxg9UJd6CdifEriwmCuV+W5oILPGIpzcZiR3PoLxTMBhMKpYXJNQ7tqhyIqnK0airTqEJ1xmZTtaODCxDOqk1s9K7ekI07gMH1oXaWKpg9yOculUle5skwYbkY8d1Qt+T5w/Z9PAQ6dPl4IDimWNeyzfbIpyHXDPvW5ZU4PMalIJDhw9tYAmqLpQHS+sJfEqa5sjLuX8ZbvNHmjZbDAgMBAAECgf8F8JePnISLPaz5MZYhP7yKDp8B1rVnjgn4CUBiGLSALrwZ6dfX0TxFHALshcKPFJPbDY/HMqe9NOI/wmsDVT1bAbS+zQcX36gu7WoTwC1qyxfiuUuSQd2WeDwROWH2g0qusHZx4HFv4ocWPZT1Vl7Vy1XeNc5qlMcfP7e4GgpGKpLXPU/8cwot2ATrlpr7L6Ejxuao+hPNelJTTMgK/Wx/ISX3Tv0CPdd5ySHt40xSUg0Q6bVtZHcGmayvkS9zAJ+hhJDkfhkghVPz8JnUkxEZXvu5P/Mb5Sr7eHegCayKwyWrHRKxhldmCUiIrI6asP83/9+1faeeZYWOSXRK9DECgYEA2b04I6xs67C8XZpxf9ircesiuzERHxgLWys8VQtChWAZwaQ3AownmhQHvxa4OapPHio7Qp05iWWZxGmrrehqSiANP9YBzWguPUZxTKbAyeUqxWQhJ5VeEWeRL7jcAgyyoc9zLUr/TaOUT3Bo6c6szwn8bADH40pkgPZgcgo8ECcCgYEA2SkvHXqFOxx1C/K7sinCJbmsmdB/uElWW4AXj3PBeDKEQY7MOLCD6mKeHBNnIGCWVU0NaUqygm93yj+u/nImMhoPQ1fgkdTued6O3hMDJhB8j5uRVEM/erfRsE4RTex2yVEGhY4trrIysUC8hKGmXM2OJYvL2zEPK7la9q9aSgUCgYAlfxZp3kmrlPX7UJt3HsL3jTyf6+U865EZFCsBojzEZzZISJVIlQZE3GoxGCKFm7SgRzmJUTYVWS/PyTrNahbTyQ0/DwWkb+p2lujwAE929UYWVBX5kRlv+dvg0f7hQ3qHrwfwptescR0bSQpoKTVNOjUEDGZf1/HS25rkSKrrRQKBgEegPdoLP0Zv7Gs0dJQfEdo/k55oFrhB+CnV5e96zqVGhDjbUKCiF+CHBn9cJveW4/7emz3PVXGQMoKS3rUuEUsVLVOY+IkhIkcwEQ9OVguIBI2ZUiXoyFdBqffsx+hbxhJAl1YVvxuPywiLwaI9bxHM+sWHhoWVeNuDF22mCLHBAoGBANEoHIMBELld12/xBfKXYhtJQ5FwIRC1l0kg63LoiF+JBrERrFcE/ATqaTLrS1GoZ0U62nDh7r/HjKZABZGUCuR7cN6q3wgXFlV78O1gG/8oPGyxF1dUoKJ9G14S/7qqeqvlIZbRqLN1+oqYXOlmy2lx0w104ZGFMyZMS+AG0oT1
-----END RSA PRIVATE KEY-----'''

    signer = PKCS1_v1_5.new(RSA.importKey(private_key))
    hash_obj = SHA256.new(data.encode('utf-8'))
    signature = base64.b64encode(signer.sign(hash_obj))
    return signature


if __name__ == '__main__':
    data = "{\"handlePhone\":\"171****6060\",\"productId\":\"185475742531348048\"}"
    res_sign1 = rsa_sign(data)
    signature = res_sign1.decode('utf8')
    print(signature)
