1 import {createKey, resetKeyPassword, createPubkey, convertArgument} from '../wasm/func';
2 import {getDB} from '../db/db';
10 * @param {String}} rootXPub
11 * @param {String} oldPassword
12 * @param {String} newPassword
14 keysSDK.prototype.resetKeyPassword = function(rootXPub, oldPassword, newPassword) {
15 let retPromise = new Promise((resolve, reject) => {
16 let data = {rootXPub: rootXPub, oldPassword:oldPassword, newPassword:newPassword};
17 resetKeyPassword(data).then(res => {
19 let objectStore = db.transaction(['keys'], 'readwrite').objectStore('keys');
20 let index = objectStore.index('xpub');
21 let keyRange = IDBKeyRange.only(rootXPub);
22 let getRequest = index.openCursor(keyRange);
23 getRequest.onsuccess = function (event) {
24 const cursor = event.target.result;
25 if(cursor && cursor.value.xpub === rootXPub) {
26 const updateData = cursor.value;
27 updateData.key = res.data;
28 const request = cursor.update(updateData);
29 request.onsuccess = function() {
32 request.onerror = function() {
33 reject(new Error('db update error'));
36 reject(new Error('db update error: not found by rootXPub'));
39 getRequest.onerror = function () {
40 reject(new Error('db get error'));
55 * @param {String} xpub
57 keysSDK.prototype.getKeyByXPub = function(xpub) {
58 let retPromise = new Promise((resolve, reject) => {
60 let getRequest = db.transaction(['keys'], 'readonly')
64 getRequest.onsuccess = function(e) {
66 resolve(e.target.result.key);
68 reject(new Error('not found by XPub'));
71 getRequest.onerror = function() {
72 reject(new Error('db get error'));
86 keysSDK.prototype.list = function() {
87 let retPromise = new Promise((resolve, reject) => {
89 let transaction = db.transaction(['keys'], 'readonly');
90 let objectStore = transaction.objectStore('keys');
91 let oc = objectStore.openCursor();
93 oc.onsuccess = function (event) {
94 var cursor = event.target.result;
96 ret.push({alias: cursor.value.alias, xpub: cursor.value.xpub});
102 oc.onerror = function(e){
115 * @param {String} alias - User specified, unique identifier.
116 * @param {String} password - User specified, key password.
118 keysSDK.prototype.create = function(alias, password) {
119 var normalizedAlias = alias.toLowerCase().trim();
120 let retPromise = new Promise((resolve, reject) => {
122 let getRequest = db.transaction(['keys'], 'readonly')
125 .get(normalizedAlias);
126 getRequest.onsuccess = function (e) {
127 if (e.target.result) {
128 reject(new Error('key alias already exists'));
132 data.alias = normalizedAlias;
133 data.auth = password;
134 createKey(data).then((res) => {
135 let jsonData = JSON.parse(res.data);
141 let request = db.transaction(['keys'], 'readwrite')
144 request.onsuccess = function () {
145 resolve({xpub:jsonData.xpub, alias: alias});
147 request.onerror = function () {
148 reject(new Error('db insert error'));
154 getRequest.onerror = function () {
155 reject(new Error('db get error'));
168 * @param {String} xpub - xpub.
170 keysSDK.prototype.createPubkey = function(xpub) {
171 let retPromise = new Promise((resolve, reject) => {
175 createPubkey(data).then((res) => {
176 let jsonData = JSON.parse(res.data);
189 * @param {String} type - type.
190 * @param {String} value - value.
192 keysSDK.prototype.convertArgument = function(type, value) {
193 let retPromise = new Promise((resolve, reject) => {
196 data.raw_data = {value};
197 convertArgument(data).then((res) => {
198 let jsonData = JSON.parse(res.data);
199 resolve({data:jsonData});
207 export default keysSDK;