Repository URL to install this package:
|
Version:
3.3.202-c2ee258 ▾
|
# -*- coding: utf-8 -*-
'''
Created on 2017-12-20
@author: liuqun
'''
import base64
import json
import rsa
from alipay.aop.api.constant.CommonConstants import PYTHON_VERSION_3
from alipay.aop.api.util.StringUtils import *
def get_sign_content(all_params):
sign_content = ""
for (k, v) in sorted(all_params.items()):
value = v
if not isinstance(value, str):
value = json.dumps(value, ensure_ascii=False)
sign_content += ("&" + k + "=" + value)
sign_content = sign_content[1:]
return sign_content
def fill_private_key_marker(private_key):
return add_start_end(private_key, "-----BEGIN RSA PRIVATE KEY-----\n", "\n-----END RSA PRIVATE KEY-----")
def fill_public_key_marker(public_key):
return add_start_end(public_key, "-----BEGIN PUBLIC KEY-----\n", "\n-----END PUBLIC KEY-----")
def sign_with_rsa(private_key, sign_content, charset):
if PYTHON_VERSION_3:
sign_content = sign_content.encode(charset)
private_key = fill_private_key_marker(private_key)
signature = rsa.sign(sign_content, rsa.PrivateKey.load_pkcs1(private_key, format='PEM'), 'SHA-1')
sign = base64.b64encode(signature)
if PYTHON_VERSION_3:
sign = str(sign, encoding=charset)
return sign
def sign_with_rsa2(private_key, sign_content, charset):
if PYTHON_VERSION_3:
sign_content = sign_content.encode(charset)
private_key = fill_private_key_marker(private_key)
signature = rsa.sign(sign_content, rsa.PrivateKey.load_pkcs1(private_key, format='PEM'), 'SHA-256')
sign = base64.b64encode(signature)
if PYTHON_VERSION_3:
sign = str(sign, encoding=charset)
return sign
def verify_with_rsa(public_key, message, sign):
public_key = fill_public_key_marker(public_key)
sign = base64.b64decode(sign)
return bool(rsa.verify(message, sign, rsa.PublicKey.load_pkcs1_openssl_pem(public_key)))