OSDN Git Service

add get_gm_new_key
authorChengcheng Zhang <943420582@qq.com>
Fri, 15 Feb 2019 07:39:21 +0000 (15:39 +0800)
committerChengcheng Zhang <943420582@qq.com>
Fri, 15 Feb 2019 07:39:21 +0000 (15:39 +0800)
app/api/__init__.py
app/api/resources.py
app/model/key_gm.py

index 19e5dc9..51d2748 100644 (file)
@@ -33,6 +33,7 @@ from app.api.resources import Gm_Xpub_Verify
 from app.api.resources import Gm_Xprv_Sign
 from app.api.resources import Get_Gm_P2WPKH_Program
 from app.api.resources import Get_Gm_Address
+from app.api.resources import Get_Gm_New_Key
 
 
 blueprint = Blueprint('api', __name__, url_prefix='/api/v1')
@@ -69,4 +70,5 @@ api.add_resource(Get_Gm_Child_Xpub, '/get_gm_child_xpub')
 api.add_resource(Gm_Xpub_Verify, '/gm_xpub_verify')
 api.add_resource(Gm_Xprv_Sign, '/gm_xprv_sign')
 api.add_resource(Get_Gm_P2WPKH_Program, '/get_gm_P2WPKH_program')
-api.add_resource(Get_Gm_Address, '/get_gm_address')
\ No newline at end of file
+api.add_resource(Get_Gm_Address, '/get_gm_address')
+api.add_resource(Get_Gm_New_Key, '/get_gm_new_key')
\ No newline at end of file
index e10b847..0e35bb1 100644 (file)
@@ -33,6 +33,7 @@ from app.model.key_gm import gm_xpub_verify
 from app.model.key_gm import gm_xprv_sign
 from app.model.receiver import get_gm_P2WPKH_program
 from app.model.receiver import get_gm_address
+from app.model.key_gm import get_gm_new_key
 
 
 parser = reqparse.RequestParser()
@@ -332,3 +333,8 @@ class Get_Gm_Address(Resource):
         network = args.get('network_str')
         address = get_gm_address(control_program, network)
         return address
+
+class Get_Gm_New_Key(Resource):
+
+    def post(self):
+        return get_gm_new_key()
index 00f90e2..f699212 100644 (file)
@@ -3,6 +3,8 @@ import hashlib
 from gmssl import sm2, func
 import random
 from app.model import pn
+from app.model import key
+from app.model import receiver
 
 # get_gm_root_xprv create rootxprv from seed
 # seed_str length is 512 bits.
@@ -269,4 +271,21 @@ def gm_xpub_verify(xpub_str, message_str, signature_str):
     result = sm2_crypt.verify(signature_str, data)
     return {
         "result": result
+    }
+
+
+def get_gm_new_key():
+    entropy_str = key.create_entropy()['entropy']
+    mnemonic_str = key.entropy_to_mnemonic(entropy_str)['mnemonic']
+    seed_str = key.mnemonic_to_seed(mnemonic_str)['seed']
+    root_xprv_str = get_gm_root_xprv(seed_str)['root_xprv']
+    xpub_str = get_gm_xpub(root_xprv_str)['xpub']
+    xprv_base64 = receiver.create_qrcode_base64(root_xprv_str)['base64']
+    return {
+        "entropy": entropy_str,
+        "mnemonic": mnemonic_str,
+        "seed": seed_str,
+        "xprv": root_xprv_str,
+        "xpub": xpub_str,
+        "xprv_base64": xprv_base64
     }
\ No newline at end of file