Skip to content

Commit 895537a

Browse files
author
Anton Cheng
committed
Remove window.crypto, and update syntax
1 parent 75b7f06 commit 895537a

File tree

7 files changed

+117
-87
lines changed

7 files changed

+117
-87
lines changed

.eslintignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
/packages/*/lib
1+
/packages/*/lib
2+
/packages/*/node_modules

packages/cws-wallet/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@coolwallets/wallet",
3-
"version": "0.0.13",
3+
"version": "0.0.14",
44
"description": "",
55
"main": "lib/index.js",
66
"scripts": {
Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,63 @@
1-
import * as pairing from '../pairing'
2-
import * as creation from '../create'
3-
import * as setting from '../settings'
4-
import { apdu } from '@coolwallets/core'
1+
import { apdu } from '@coolwallets/core';
2+
import * as pairing from '../pairing.js';
3+
import * as creation from '../create.js';
4+
import * as setting from '../settings.js';
55

66
export default class CoolWallet {
77
constructor(transport, appPrivateKey, appId = undefined) {
8-
this.transport = transport
9-
this.appPrivateKey = appPrivateKey
10-
this.appId = appId
8+
this.transport = transport;
9+
this.appPrivateKey = appPrivateKey;
10+
this.appId = appId;
1111

12-
this.setAppId = this.setAppId.bind(this)
13-
this.getSEVersion = this.getSEVersion.bind(this)
14-
this.register = this.register.bind(this)
15-
this.resetCard = this.resetCard.bind(this)
16-
this.getPairingPassword = this.getPairingPassword.bind(this)
12+
this.setAppId = this.setAppId.bind(this);
13+
this.getSEVersion = this.getSEVersion.bind(this);
14+
this.register = this.register.bind(this);
15+
this.resetCard = this.resetCard.bind(this);
16+
this.getPairingPassword = this.getPairingPassword.bind(this);
1717
}
1818

1919
setAppId(appId) {
20-
this.appId = appId
20+
this.appId = appId;
2121
}
2222

2323
async getCardInfo() {
24-
return await setting.getCardInfo(this.transport)
24+
return setting.getCardInfo(this.transport);
2525
}
2626

2727
async checkRegistered() {
28-
return await apdu.control.sayHi(this.transport, this.appId)
28+
return apdu.control.sayHi(this.transport, this.appId);
2929
}
3030

3131
async getSEVersion() {
32-
return await apdu.setting.getSEVersion(this.transport)
32+
return apdu.setting.getSEVersion(this.transport);
3333
}
3434

3535
async resetCard() {
36-
return await apdu.setting.resetCard(this.transport)
36+
return apdu.setting.resetCard(this.transport);
3737
}
3838

3939
async register(appPublicKey, password, deviceName) {
40-
return await pairing.register(this.transport, appPublicKey, password, deviceName)
40+
return pairing.register(this.transport, appPublicKey, password, deviceName);
4141
}
4242

4343
async getPairingPassword() {
44-
return await pairing.getPairingPassword(this.transport, this.appId, this.appPrivateKey)
44+
return pairing.getPairingPassword(this.transport, this.appId, this.appPrivateKey);
4545
}
4646

4747
async getPairedApps() {
48-
return await pairing.getPairedApps(this.transport, this.appId, this.appPrivateKey)
48+
return pairing.getPairedApps(this.transport, this.appId, this.appPrivateKey);
4949
}
5050

5151
// For wallet creation
5252
async createWallet(strength) {
53-
return await creation.createWallet(this.transport, this.appId, this.appPrivateKey, strength)
53+
return creation.createWallet(this.transport, this.appId, this.appPrivateKey, strength);
5454
}
5555

56-
async sendCheckSum(sum){
57-
return await creation.sendCheckSum(this.transport, sum)
56+
async sendCheckSum(sum) {
57+
return creation.sendCheckSum(this.transport, sum);
5858
}
5959

6060
async setSeed(seedHex) {
61-
return await creation.setSeed(this.transport, this.appId, this.appPrivateKey, seedHex)
61+
return creation.setSeed(this.transport, this.appId, this.appPrivateKey, seedHex);
6262
}
6363
}

packages/cws-wallet/src/create.js

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1-
import { apdu, core, crypto, config } from '@coolwallets/core'
2-
const SEPublicKey = config.KEY.SEPublicKey
1+
import {
2+
apdu, core, crypto, config
3+
} from '@coolwallets/core';
4+
5+
const { SEPublicKey } = config.KEY;
36

47
/**
58
* Create a new seed with SE.
@@ -10,11 +13,17 @@ const SEPublicKey = config.KEY.SEPublicKey
1013
* @return {Promise<boolean>}
1114
*/
1215
export async function createWallet(transport, appId, appPrivateKey, strength) {
13-
let strengthHex = strength.toString(16)
14-
if (strengthHex.length % 2 > 0) strengthHex = '0' + strengthHex
15-
const signature = await core.auth.generalAuthorization(transport, appId, appPrivateKey, 'CREATE_WALLET', strengthHex)
16-
const strengthWithSig = strengthHex + signature
17-
return await apdu.wallet.createWallet(transport, strengthWithSig)
16+
let strengthHex = strength.toString(16);
17+
if (strengthHex.length % 2 > 0) strengthHex = `0${strengthHex}`;
18+
const signature = await core.auth.generalAuthorization(
19+
transport,
20+
appId,
21+
appPrivateKey,
22+
'CREATE_WALLET',
23+
strengthHex
24+
);
25+
const strengthWithSig = strengthHex + signature;
26+
return apdu.wallet.createWallet(transport, strengthWithSig);
1827
}
1928

2029
/**
@@ -24,8 +33,8 @@ export async function createWallet(transport, appId, appPrivateKey, strength) {
2433
* @return {Promise<boolean>}
2534
*/
2635
export async function sendCheckSum(transport, checkSum) {
27-
let sumHex = checkSum.toString(16).padStart(8, '0')
28-
return await apdu.wallet.submitCheckSum(transport, sumHex)
36+
const sumHex = checkSum.toString(16).padStart(8, '0');
37+
return apdu.wallet.submitCheckSum(transport, sumHex);
2938
}
3039

3140
/**
@@ -36,8 +45,14 @@ export async function sendCheckSum(transport, checkSum) {
3645
* @return {Promise<boolean>}
3746
*/
3847
export async function setSeed(transport, appId, appPrivateKey, seedHex) {
39-
const encryptedSeed = crypto.encryption.ECIESenc(SEPublicKey, seedHex)
40-
const signature = await core.auth.generalAuthorization(transport, appId, appPrivateKey, 'SET_SEED', encryptedSeed)
41-
const signedSeed = encryptedSeed + signature
42-
return await apdu.wallet.setSeed(transport, signedSeed)
48+
const encryptedSeed = crypto.encryption.ECIESenc(SEPublicKey, seedHex);
49+
const signature = await core.auth.generalAuthorization(
50+
transport,
51+
appId,
52+
appPrivateKey,
53+
'SET_SEED',
54+
encryptedSeed
55+
);
56+
const signedSeed = encryptedSeed + signature;
57+
return apdu.wallet.setSeed(transport, signedSeed);
4358
}

packages/cws-wallet/src/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import CoolWallet from './Wallet'
2-
import { generateKeyPair } from './keypair'
1+
import CoolWallet from './Wallet/index.js';
2+
import { generateKeyPair } from './keypair.js';
33

4-
export { generateKeyPair }
5-
export default CoolWallet
4+
export { generateKeyPair };
5+
export default CoolWallet;

packages/cws-wallet/src/keypair.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
const elliptic = require('elliptic')
2-
const ec = new elliptic.ec('secp256k1')
1+
import crypto from 'crypto';
2+
3+
const elliptic = require('elliptic');
4+
5+
const ec = new elliptic.ec('secp256k1');
36

47
export const generateKeyPair = () => {
5-
let random = new Uint8Array(32)
6-
window.crypto.getRandomValues(random)
7-
const keyPair = ec.keyFromPrivate(random)
8-
const publicKey = keyPair.getPublic(false, 'hex')
9-
const privateKey = keyPair.getPrivate('hex')
10-
return { privateKey, publicKey }
11-
}
8+
const random = crypto.randomBytes(32);
9+
const keyPair = ec.keyFromPrivate(random);
10+
const publicKey = keyPair.getPublic(false, 'hex');
11+
const privateKey = keyPair.getPrivate('hex');
12+
return { privateKey, publicKey };
13+
};

packages/cws-wallet/src/pairing.js

Lines changed: 47 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,77 @@
1-
import { apdu, crypto, config, core } from '@coolwallets/core'
1+
import {
2+
apdu, crypto, config, core
3+
} from '@coolwallets/core';
24

35
/**
46
* @param {Transport} transport
57
* @param {string} appPublicKey
68
* @param {String} password
7-
* @param {String} device_name
9+
* @param {String} deviceName
810
* @returns {Promise}
911
*/
10-
export const register = async (transport, appPublicKey, password, device_name) => {
11-
let nameToUTF = Buffer.from(device_name, 'utf8')
12-
const maxLen = 30
12+
export const register = async (transport, appPublicKey, password, deviceName) => {
13+
let nameToUTF = Buffer.from(deviceName, 'utf8');
14+
const maxLen = 30;
1315

1416
if (nameToUTF.length < maxLen) {
15-
let diff = maxLen - nameToUTF.length
16-
let temp = Buffer.allocUnsafe(diff)
17-
temp.fill(0)
18-
nameToUTF = Buffer.concat([temp, nameToUTF])
17+
const diff = maxLen - nameToUTF.length;
18+
const temp = Buffer.allocUnsafe(diff);
19+
temp.fill(0);
20+
nameToUTF = Buffer.concat([temp, nameToUTF]);
1921
} else {
20-
nameToUTF = nameToUTF.slice(0, maxLen)
22+
nameToUTF = nameToUTF.slice(0, maxLen);
2123
}
22-
const addedPassword = password.padStart(8, 'F')
24+
const addedPassword = password.padStart(8, 'F');
2325

24-
nameToUTF = nameToUTF.toString('hex')
25-
let data = addedPassword + appPublicKey + nameToUTF,
26-
P1 = '00'
26+
nameToUTF = nameToUTF.toString('hex');
27+
let data = addedPassword + appPublicKey + nameToUTF;
28+
let P1 = '00';
2729

28-
const supportEncryptedRegister = true
30+
const supportEncryptedRegister = true;
2931
if (supportEncryptedRegister) {
30-
data = crypto.encryption.ECIESenc(config.KEY.SEPublicKey, data)
31-
P1 = '01'
32+
data = crypto.encryption.ECIESenc(config.KEY.SEPublicKey, data);
33+
P1 = '01';
3234
}
33-
const appId = await apdu.pairing.registerDevice(transport, data, P1)
34-
return appId
35-
}
35+
const appId = await apdu.pairing.registerDevice(transport, data, P1);
36+
return appId;
37+
};
3638

3739
/**
38-
*
39-
* @param {Transport} transport
40-
* @param {string} appId
40+
*
41+
* @param {Transport} transport
42+
* @param {string} appId
4143
* @param {string} appPrivKey
4244
* @return {Promise<Array<{appId:string, }>>}
4345
*/
4446
export const getPairedApps = async (transport, appId, appPrivKey) => {
45-
const signature = await core.auth.generalAuthorization(transport, appId, appPrivKey, 'GET_PAIRED_DEVICES');
46-
const apps = await apdu.pairing.getPairedApps(transport, signature)
47-
return apps
48-
}
47+
const signature = await core.auth.generalAuthorization(
48+
transport,
49+
appId,
50+
appPrivKey,
51+
'GET_PAIRED_DEVICES'
52+
);
53+
const apps = await apdu.pairing.getPairedApps(transport, signature);
54+
return apps;
55+
};
4956

5057
/**
5158
* Get Pairing password for current device
52-
* @param {Transport} transport
53-
* @param {string} appId
54-
* @param {string} appPrivKey
59+
* @param {Transport} transport
60+
* @param {string} appId
61+
* @param {string} appPrivKey
5562
* @return {Promise<string>}
5663
*/
5764
export const getPairingPassword = async (transport, appId, appPrivKey) => {
58-
const signature = await core.auth.generalAuthorization(transport, appId, appPrivKey, 'GET_PAIR_PWD');
65+
const signature = await core.auth.generalAuthorization(
66+
transport,
67+
appId,
68+
appPrivKey,
69+
'GET_PAIR_PWD'
70+
);
5971
const encryptedPassword = await apdu.pairing.getPairingPassword(transport, signature);
60-
await apdu.control.powerOff(transport)
61-
72+
await apdu.control.powerOff(transport);
73+
6274
let password = crypto.encryption.ECIESDec(appPrivKey, encryptedPassword);
6375
password = password.replace(/f/gi, '');
64-
return password
65-
}
76+
return password;
77+
};

0 commit comments

Comments
 (0)