OSDN Git Service

update
authorChengcheng Zhang <943420582@qq.com>
Tue, 25 Dec 2018 08:39:54 +0000 (16:39 +0800)
committerChengcheng Zhang <943420582@qq.com>
Tue, 25 Dec 2018 08:39:54 +0000 (16:39 +0800)
app/api/__init__.py
app/api/resources.py
app/model/key.py
requirements.txt

index be60c27..367f5b7 100644 (file)
@@ -11,6 +11,7 @@ from app.api.resources import Seed_To_Root_Xprv
 from app.api.resources import Xprv_To_Expanded_Private_Key
 from app.api.resources import Xpub_To_Public_Key
 from app.api.resources import Xpub_Verify
+from app.api.resources import Xprv_Sign
 
 blueprint = Blueprint('api', __name__, url_prefix='/api/v1')
 api = Api(blueprint)
@@ -24,4 +25,5 @@ api.add_resource(Mnemonic_To_Seed, '/mnemonic_to_seed')
 api.add_resource(Seed_To_Root_Xprv, '/seed_to_root_xprv')
 api.add_resource(Xprv_To_Expanded_Private_Key, '/xprv_to_expanded_private_key')
 api.add_resource(Xpub_To_Public_Key, '/xpub_to_public_key')
-api.add_resource(Xpub_Verify, '/xpub_verify')
\ No newline at end of file
+api.add_resource(Xpub_Verify, '/xpub_verify')
+api.add_resource(Xprv_Sign, '/xprv_sign')
\ No newline at end of file
index 13eb107..89d7301 100644 (file)
@@ -10,6 +10,7 @@ from app.model.key import seed_to_root_xprv
 from app.model.key import xprv_to_expanded_private_key
 from app.model.key import xpub_to_public_key
 from app.model.key import xpub_verify
+from app.model.key import xprv_sign
 
 parser = reqparse.RequestParser()
 parser.add_argument('private_key_str', type=str)
@@ -100,4 +101,13 @@ class Xpub_Verify(Resource):
         message = args.get('message_str')
         signature = args.get('signature_str')
         result = xpub_verify(xpub, message, signature)
-        return result
\ No newline at end of file
+        return result
+
+class Xprv_Sign(Resource):
+
+    def post(self):
+        args = parser.parse_args()
+        xprv = args.get('xprv_str')
+        message = args.get('message_str')
+        signature = xprv_sign(xprv, message)
+        return signature
\ No newline at end of file
index d078d87..3d2bbdf 100644 (file)
@@ -116,14 +116,34 @@ def seed_to_root_xprv(seed_str):
 
     return root_xprv_str
 
-
-##################################################
-# def xprv_to_xpub(xprv_str):
-# private_key = ed25519.SigningKey(bytes.fromhex(xprv_str[:64]))
-# public_key = private_key.get_verifying_key().to_ascii(encoding='hex')
-# xpub_str = public_key.decode() + xprv_str[64:]
-#     return xpub_str
-##################################################
+# # private_key_str: c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759
+# # publick_key_str: 1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563
+# def private_key_to_public_key(private_key_str):
+# private_key = ed25519.SigningKey(bytes.fromhex(private_key_str))
+# public_key_str = private_key.get_verifying_key().to_ascii(encoding='hex').decode()
+
+############# ERR!!!!!!!!!########################
+############# ERR!!!!!!!!!########################
+############# ERR!!!!!!!!!########################
+############# ERR!!!!!!!!!########################
+# xprv_to_xpub derives new xpub from xprv
+# xprv length is 64 bytes.
+# xpub length is 64 bytes.
+# You can verify or get more test data from: https://gist.github.com/zcc0721/d872a219fa91621d60357278bc62a512
+# test data 1:
+#   xprv_str: c003f4bcccf9ad6f05ad2c84fa5ff98430eb8e73de5de232bc29334c7d074759d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c
+#   xpub_str: 1b0541a7664cee929edb54d9ef21996b90546918a920a77e1cd6015d97c56563d513bc370335cac51d77f0be5dfe84de024cfee562530b4d873b5f5e2ff4f57c
+# test data 2:
+#   xprv_str: 4dff4ea340f0a823f15d3f4f01ab62eae0e5da579ccb851f8db9dfe84c58b2b37b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a
+#   xpub_str: bf852a7c36fe9c90c5fd2066c0407148f6e9ccf16324eb9f5cc01d9a2afe28957b89903a740e1ee172da793a6e79d560e5f7f9bd058a12a280433ed6fa46510a
+# test data 3:
+#   xprv_str: 74a49c698dbd3c12e36b0b287447d833f74f3937ff132ebff7054baa18623c35a705bb18b82e2ac0384b5127db97016e63609f712bc90e3506cfbea97599f46f
+#   xpub_str: 522940d6440fdc45363df2097e9cac29a9a8a33ac339f8b7cff848c199db5a1ca705bb18b82e2ac0384b5127db97016e63609f712bc90e3506cfbea97599f46f
+def xprv_to_xpub(xprv_str):
+    private_key = ed25519.SigningKey(bytes.fromhex(xprv_str[:64]))
+    public_key = private_key.get_verifying_key().to_ascii(encoding='hex')
+    xpub_str = public_key.decode() + xprv_str[64:]
+    return xpub_str
 
 
 # def xprv_to_child_xprv(xprv_str, path_str):
@@ -166,10 +186,14 @@ def xpub_to_public_key(xpub_str):
     return public_key_str
 
 
-# def xprv_sign(xprv_str, message_str):
-#     expanded_private_key = xprv_to_expanded_private_key(xprv_str)
-
-#     return signature_str
+# some err occur
+# some err occur
+# some err occur
+# some err occur
+def xprv_sign(xprv_str, message_str):
+    # expanded_private_key = xprv_to_expanded_private_key(xprv_str)
+    signature_str = sign(xprv_str[:64], message_str)
+    return signature_str
     
 
 # xpub_verify verify signature
index b5c7197..65312a1 100644 (file)
@@ -2,12 +2,14 @@ aniso8601==4.0.1
 atomicwrites==1.2.1
 attrs==18.2.0
 Click==7.0
+ed25519==1.4
 Flask==1.0.2
 Flask-RESTful==0.3.6
 itsdangerous==1.1.0
 Jinja2==2.10
 MarkupSafe==1.1.0
 more-itertools==4.3.0
+pbkdf2==1.3
 pluggy==0.8.0
 py==1.7.0
 pytest==4.0.1