OSDN Git Service

add key
authorChengcheng Zhang <943420582@qq.com>
Tue, 15 Jan 2019 07:52:26 +0000 (15:52 +0800)
committerChengcheng Zhang <943420582@qq.com>
Tue, 15 Jan 2019 07:52:26 +0000 (15:52 +0800)
app/api/__init__.py
app/api/resources.py
app/model/key.py
assets/main.js
bytom-kit.html [deleted file]
key.html [new file with mode: 0644]

index 0cba20e..b1e7e66 100644 (file)
@@ -20,6 +20,7 @@ from app.api.resources import Create_Address
 from app.api.resources import Get_Path_From_Index
 from app.api.resources import Broadcast_Transaction
 from app.api.resources import Create_QRcode_Base64
+from app.api.resources import Create_New_Key
 
 blueprint = Blueprint('api', __name__, url_prefix='/api/v1')
 api = Api(blueprint)
@@ -42,4 +43,5 @@ api.add_resource(Create_P2WPKH_Program, '/create_P2WPKH_program')
 api.add_resource(Create_Address, '/create_address')
 api.add_resource(Get_Path_From_Index, '/get_path_from_index')
 api.add_resource(Broadcast_Transaction, '/broadcast_transaction')
-api.add_resource(Create_QRcode_Base64, '/create_qrcode_base64')
\ No newline at end of file
+api.add_resource(Create_QRcode_Base64, '/create_qrcode_base64')
+api.add_resource(Create_New_Key, '/create_new_key')
\ No newline at end of file
index 18f7555..0ba347d 100644 (file)
@@ -21,6 +21,7 @@ from app.model.receiver import create_address
 from app.model.receiver import get_path_from_index
 from app.model.receiver import create_qrcode_base64
 from app.model.transaction import broadcast_transaction
+from app.model.key import create_new_key
 
 
 parser = reqparse.RequestParser()
@@ -204,4 +205,9 @@ class Create_QRcode_Base64(Resource):
         args = parser.parse_args()
         s = args.get('s')
         img = create_qrcode_base64(s)
-        return img
\ No newline at end of file
+        return img
+
+class Create_New_Key(Resource):
+
+    def post(self):
+        return create_new_key()
\ No newline at end of file
index 7fc1041..db9ddac 100644 (file)
@@ -6,6 +6,7 @@ import ed25519
 from app.model.signature import *
 from app.model.edwards25519 import *
 from app.model.utils import *
+from app.model import receiver
 
 # create_key create 128 bits entropy
 def create_entropy():
@@ -384,4 +385,22 @@ def xpub_verify(xpub_str, message_str, signature_str):
     result = verify(xpub_to_public_key(xpub_str)['public_key'], signature_str, message_str)
     return {
         "result": result
-        }
\ No newline at end of file
+        }
+
+
+def create_new_key():
+    entropy_str = create_entropy()['entropy']
+    mnemonic_str = entropy_to_mnemonic(entropy_str)['mnemonic']
+    seed_str = mnemonic_to_seed(mnemonic_str)['seed']
+    root_xprv_str = seed_to_root_xprv(seed_str)['root_xprv']
+    xpub_str = xprv_to_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
+    }
+
index 7b65582..8f46e92 100644 (file)
@@ -1,59 +1,31 @@
 $(function(){
+  // 生成新熵
   $('#btnCreateNewKey').click(function(){
     console.log('创建新密钥');
     $.ajax({
       method: 'post',  //get or post
-      url: 'http://127.0.0.1:5000/api/v1/create_entropy',
+      url: 'http://127.0.0.1:5000/api/v1/create_new_key',
       data: {},
       dataType: 'json',
     }).done(function(data){
       console.log(data);
       layer.msg('创建成功')
+      $('#txtEntropy').val(data.entropy)
+      $('#txtMnemonics').val(data.mnemonic)
+      $('#txtSeed').val(data.seed)
+      $('#txtRootXprv').val(data.xprv)
+      $('#txtRootXpub').val(data.xpub)
     }).fail(function(err){
       layer.alert('创建失败' + err);
     });
-    appendKey({}, '#keyContainer');  // 创建成功后传入返回数据调用,此处示例
   })
-  // 创建脚本
-  $('#btnCreateScript').click(function(){
-    console.log('创建脚本');
-    $.ajax({
-      method: 'get',  //get or post
-      url: '/test',
-      data: {},
-      dataType: 'json',
-    }).done(function(data){
-      console.log(data);
-      layer.msg('创建成功')
-    }).fail(function(err){
-      layer.alert('创建失败' + err);
-    });
-    appendKey({}, '#scriptContainer');
-  })
-  // 追加内容到页面
-  function appendKey(data, domId) {
-    var html = '<tr><td>xxxxxxxxxxxxxxxxx</td><td>xxxxxxxxxxxxxxx</td></tr>';
-    $(domId).append(html);
-  }
-
-  // 发送
-  $('#btnSendToSide').click(function(e){
-    e.stopPropagation();
-    e.preventDefault();
-    var data = $('#formToSide').serializeArray();
-    var obj = {};
-    $.each(data, function () {
-      obj[this.name] = this.value;
-    });
-    $.ajax({
-      method: 'post',
-      dataType: 'json',
-      url: '',
-      data: {data: JSON.stringify(obj)},
-    }).done(function(res){
-      console.log(res);
-    }).fail(function(err) {
-      layer.alert('err');
-    });
+  // 清除熵
+  $('#btnReset').click(function(){
+    console.log('清除');
+    $('#txtEntropy').val('')
+    $('#txtMnemonics').val('')
+    $('#txtSeed').val('')
+    $('#txtRootXprv').val('')
+    $('#txtRootXpub').val('')
   })
-});
\ No newline at end of file
+});
diff --git a/bytom-kit.html b/bytom-kit.html
deleted file mode 100644 (file)
index ead5c6a..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-
-<head>
-  <meta charset="UTF-8">
-  <meta name="viewport" content="width=device-width, initial-scale=1.0">
-  <meta http-equiv="X-UA-Compatible" content="ie=edge">
-  <title>Bytom Kit</title>
-  <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css">
-  <link rel="stylesheet" href="./assets/main.css">
-  <script src="./node_modules/jquery/dist/jquery.min.js"></script>
-  <script src="./node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
-  <script src="./node_modules/layer/layer.js"></script>
-  <script src="./assets/main.js"></script>
-</head>
-
-<body>
-  <nav class="navbar navbar-default">
-    <div class="navbar-header">
-      <a href="#" class="navbar-brand">Bytom Kit</a>
-    </div>
-  </nav>
-  <div class="panel panel-default sc-bd">
-    <div class="panel-heading">
-      <h3 class="panel-title">Key </h3>
-    </div>
-    <div class="panel-body">
-      <form class="form-horizontal">
-        <!-- <div class="well well-sm">主网参数</div> -->
-        <div class="form-group">
-          <label class="col-sm-2 control-label">Entropy</label>
-          <div class="col-sm-10">
-            <input type="text" class="form-control" id="entropy" placeholder="16 Bytes entropy, e.g. 1db8b283eb4623e749732a341396e0c9">
-          </div>
-        </div>
-        <div class="form-group">
-          <div class="col-sm-offset-2 col-sm-10">
-            <button id="btnCteateNewKey" type="submit" class="btn btn-primary">Create New Key</button> 
-            <button id="btnReset" type="submit" class="btn btn-primary">Reset</button>
-          </div>
-        </div>
-      </form>
-    </div>
-  </div>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/key.html b/key.html
new file mode 100644 (file)
index 0000000..0b57f9a
--- /dev/null
+++ b/key.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+  <meta charset="UTF-8">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  <meta http-equiv="X-UA-Compatible" content="ie=edge">
+  <title>Bytom Kit</title>
+  <link rel="stylesheet" href="./node_modules/bootstrap/dist/css/bootstrap.min.css">
+  <link rel="stylesheet" href="./assets/main.css">
+  <script src="./node_modules/jquery/dist/jquery.min.js"></script>
+  <script src="./node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
+  <script src="./node_modules/layer/layer.js"></script>
+  <script src="./assets/main.js"></script>
+</head>
+
+<body>
+  <nav class="navbar navbar-default">
+    <div class="navbar-header">
+      <a href="#" class="navbar-brand">Bytom Kit</a>
+    </div>
+  </nav>
+  <div class="panel panel-default sc-bd">
+    <div class="panel-heading">
+      <h3 class="panel-title">Key </h3>
+    </div>
+    <div class="panel-body">
+      <form class="form-horizontal">
+        <!-- 熵 -->
+        <div class="form-group">
+          <label class="col-sm-2 control-label">Entropy</label>
+          <div class="col-sm-10">
+            <input type="text" class="form-control" id="txtEntropy" placeholder="16 Bytes entropy, e.g. 58b39966f63d490314134c0f583018db">
+          </div>
+        </div>
+        <!-- 助记词 -->
+        <div class="form-group">
+          <label class="col-sm-2 control-label">Mnemonics</label>
+          <div class="col-sm-10">
+            <input type="text" class="form-control" id="txtMnemonics" placeholder="12 mnemonics, e.g. flavor orphan fluid unaware stand light expect hat aunt screen alert response">
+          </div>
+        </div>
+        <!-- 种子 -->
+        <div class="form-group">
+          <label class="col-sm-2 control-label">Seed</label>
+          <div class="col-sm-10">
+            <input type="text" class="form-control" id="txtSeed" placeholder="64 Bytes seed, e.g. ba87798bdf2def688ecfdae52b039ce1c9b05881d762e64a6a3a9e9472bdf1381e7517fcbb9c92ca666edb4f22a58be4883f133736634da09e7b389a3de6f1d1">
+          </div>
+        </div>
+        <!-- 根扩展私钥 -->
+        <div class="form-group">
+          <label class="col-sm-2 control-label">Root Expanded Private Key</label>
+          <div class="col-sm-10">
+            <input type="text" class="form-control" id="txtRootXprv" placeholder="64 Bytes root expanded private key, e.g. 20c96e3a582684c4bffc71be0c8aa06b8948a65bdf7cfac4533f9e07c98afc47c976554fbd99c9f63c7fcefb089f65c5db6a1af4429600384b1d9f2751cef942">
+          </div>
+        </div>
+        <!-- 根扩展公钥 -->
+        <div class="form-group">
+          <label class="col-sm-2 control-label">Root Expanded Public Key</label>
+          <div class="col-sm-10">
+            <input type="text" class="form-control" id="txtRootXpub" placeholder="64 Bytes root expanded public key, e.g. 8680afdf7c21f5315d6a40183653c8def35679f8bae870687bc786df54317863c976554fbd99c9f63c7fcefb089f65c5db6a1af4429600384b1d9f2751cef942">
+          </div>
+        </div>
+        <!-- 根扩展私钥二维码
+        <div class="form-group">
+          <label class="col-sm-2 control-label">Root Expanded Public Key</label>
+          <div class="col-sm-10">
+            <input type="img" class="form-control" id="" placeholder="64 Bytes root expanded public key, e.g. afa3a86bbec2f40bb32833fc6324593824c4fc7821ed32eac1f762b5893e56745f66a6c6f2588b3d627680aa4e0e50efd25065097b3daa8c6a19d606838fe7d4">
+          </div>
+        </div> -->
+        <div class="form-group">
+          <div class="col-sm-offset-2 col-sm-10">
+            <a id="btnCreateNewKey" class="btn btn-primary">Create New Key</a> 
+            <a id="btnReset" class="btn btn-primary">Reset</a>
+          </div>
+        </div>
+      </form>
+    </div>
+  </div>
+</body>
+
+</html>
\ No newline at end of file