1 import {createKey, resetKeyPassword, createPubkey} from '../wasm/func';
2 import {getDB} from '../db/db';
6 * Represents a keysSDK.
15 * @param {String}} rootXPub
16 * @param {String} oldPassword
17 * @param {String} newPassword
19 keysSDK.prototype.resetKeyPassword = function(rootXPub, oldPassword, newPassword) {
20 let retPromise = new Promise((resolve, reject) => {
21 let data = {rootXPub: rootXPub, oldPassword:oldPassword, newPassword:newPassword};
22 resetKeyPassword(data).then(res => {
24 let objectStore = db.transaction(['keys'], 'readwrite').objectStore('keys');
25 let index = objectStore.index('xpub');
26 let keyRange = IDBKeyRange.only(rootXPub);
27 let getRequest = index.openCursor(keyRange);
28 getRequest.onsuccess = function (event) {
29 const cursor = event.target.result;
30 if(cursor && cursor.value.xpub === rootXPub) {
31 const updateData = cursor.value;
32 updateData.key = res.data;
33 const request = cursor.update(updateData);
34 request.onsuccess = function() {
37 request.onerror = function() {
38 reject(new Error('db update error'));
41 reject(new Error('db update error: not found by rootXPub'));
44 getRequest.onerror = function () {
45 reject(new Error('db get error'));
60 * @param {String} xpub
62 keysSDK.prototype.getKeyByXPub = function(xpub) {
63 let retPromise = new Promise((resolve, reject) => {
65 let getRequest = db.transaction(['keys'], 'readonly')
69 getRequest.onsuccess = function(e) {
71 resolve(e.target.result.key);
73 reject(new Error('not found by XPub'));
76 getRequest.onerror = function() {
77 reject(new Error('db get error'));
91 keysSDK.prototype.list = function() {
92 let retPromise = new Promise((resolve, reject) => {
94 let transaction = db.transaction(['keys'], 'readonly');
95 let objectStore = transaction.objectStore('keys');
96 let oc = objectStore.openCursor();
98 oc.onsuccess = function (event) {
99 var cursor = event.target.result;
101 ret.push({alias: cursor.value.alias, xpub: cursor.value.xpub});
107 oc.onerror = function(e){
120 * @param {String} alias - User specified, unique identifier.
121 * @param {String} password - User specified, key password.
123 keysSDK.prototype.create = function(alias, password) {
124 var normalizedAlias = alias.toLowerCase().trim();
125 let retPromise = new Promise((resolve, reject) => {
127 let getRequest = db.transaction(['keys'], 'readonly')
130 .get(normalizedAlias);
131 getRequest.onsuccess = function (e) {
132 if (e.target.result) {
133 reject(new Error('key alias already exists'));
137 data.alias = normalizedAlias;
138 data.auth = password;
139 createKey(data).then((res) => {
140 let jsonData = JSON.parse(res.data);
146 let request = db.transaction(['keys'], 'readwrite')
149 request.onsuccess = function () {
150 resolve({xpub:jsonData.xpub, alias: alias});
152 request.onerror = function () {
153 reject(new Error('db insert error'));
159 getRequest.onerror = function () {
160 reject(new Error('db get error'));
173 * @param {String} xpub - xpub.
175 keysSDK.prototype.createPubkey = function(xpub) {
176 let retPromise = new Promise((resolve, reject) => {
180 createPubkey(data).then((res) => {
181 let jsonData = JSON.parse(res.data);
190 export default keysSDK;