OSDN Git Service

add get_gm_public_key
authorChengcheng Zhang <943420582@qq.com>
Tue, 29 Jan 2019 10:29:38 +0000 (18:29 +0800)
committerChengcheng Zhang <943420582@qq.com>
Tue, 29 Jan 2019 10:29:38 +0000 (18:29 +0800)
app/api/__init__.py
app/api/resources.py
app/model/key_gm.py

index 1a20e3d..314892a 100644 (file)
@@ -26,6 +26,8 @@ from app.api.resources import Decode_Raw_Transaction
 from app.api.resources import Get_Gm_Root_Xprv
 from app.api.resources import Get_Gm_Xpub
 from app.api.resources import Get_Gm_Xprv
+from app.api.resources import Get_Gm_Public_Key
+
 
 blueprint = Blueprint('api', __name__, url_prefix='/api/v1')
 api = Api(blueprint)
@@ -54,4 +56,5 @@ api.add_resource(Create_New_Address, '/create_new_address')
 api.add_resource(Decode_Raw_Transaction, '/decode_raw_transaction')
 api.add_resource(Get_Gm_Root_Xprv, '/get_gm_root_xprv')
 api.add_resource(Get_Gm_Xpub, '/get_gm_xpub')
-api.add_resource(Get_Gm_Xprv, '/get_gm_xprv')
\ No newline at end of file
+api.add_resource(Get_Gm_Xprv, '/get_gm_xprv')
+api.add_resource(Get_Gm_Public_Key, '/get_gm_public_key')
\ No newline at end of file
index 58fbed4..fed950d 100644 (file)
@@ -26,6 +26,7 @@ from app.model.transaction import decode_raw_transaction
 from app.model.key_gm import get_gm_root_xprv
 from app.model.key_gm import get_gm_xpub
 from app.model.key_gm import get_gm_xprv
+from app.model.key_gm import get_gm_public_key
 
 
 parser = reqparse.RequestParser()
@@ -259,4 +260,12 @@ class Get_Gm_Xprv(Resource):
         args = parser.parse_args()
         xprv = args.get('xprv_str')
         xprv = get_gm_xprv(xprv)
-        return xprv
\ No newline at end of file
+        return xprv
+
+class Get_Gm_Public_Key(Resource):
+
+    def post(self):
+        args = parser.parse_args()
+        xpub = args.get('xpub_str')
+        public_key = get_gm_public_key(xpub)
+        return public_key
\ No newline at end of file
index 002f456..f660084 100644 (file)
@@ -65,4 +65,21 @@ def get_gm_xprv(xprv_str):
         "expanded_private_key": expanded_private_key_str
     }
 
\ No newline at end of file
+
+# get_gm_public_key create 33 bytes public key from xpub
+# xpub length is 65 bytes.
+# You can get more test data from: https://gist.github.com/zcc0721/e159677bf776fe0209bca5b890cb87c3
+# test data 1:
+#   xpub_str: 03c74f3a946940d43e0f8c6da40680c0078e6e1008ca6ea869d57536c31b7ede20adc168c3698fa538fa587c4e519d1eb7a2593f178bfe0c93890a0f09e1634607
+#   public_key_str: 03c74f3a946940d43e0f8c6da40680c0078e6e1008ca6ea869d57536c31b7ede20
+# test data 2:
+#   xpub_str: 02914d51fcc3b90a87ffe3424995a9db8757a9d67812edd85207c47edc9f7f34e368684ae4d706f68c710fe1dbd20d73a8faaaf34966678a5d58486ac193a851ca
+#   public_key_str: 02914d51fcc3b90a87ffe3424995a9db8757a9d67812edd85207c47edc9f7f34e3
+# test data 3:
+#   xpub_str: 03603b2eb079257513d253a92ad45ce5ef12cc285dd8c13fc77c95844468f5eb4482f33c577c3a71ac733136b17d68b65a184b225431ab658555735e436fdb13e6
+#   public_key_str: 03603b2eb079257513d253a92ad45ce5ef12cc285dd8c13fc77c95844468f5eb44
+def get_gm_public_key(xpub_str):
+    public_key_str = xpub_str[:66]
+    return {
+        "public_key": public_key_str
+    }