on master help sign in
keys: crash on non-buffer xor input
101a2a2Fang
src/lib/keys.js+2−1
@@ -148,7 +148,8 @@ const deriveNetworkSeedFromMnemonic = async (
148 * @return {Maybe<string>}
148 * @return {Maybe<string>}
149 */
149 */
150export const deriveNetworkSeedFromAuthToken = (authToken, revision, point) => {
150export const deriveNetworkSeedFromAuthToken = (authToken, revision, point) => {
151+ const salt = Buffer.from(`revision-${point}-${revision}`);
151− const networkSeed = shas(authToken, `revision-${point}-${revision}`)
152+ const networkSeed = shas(authToken, salt)
152 .toString('hex')
153 .toString('hex')
153 .slice(0, 32);
154 .slice(0, 32);
154 return Just(networkSeed);
155 return Just(networkSeed);
src/lib/networkCode.js+5
@@ -23,6 +23,11 @@ export function shas(buf, salt) {
23}
23}
24
24
25function xor(a, b) {
25function xor(a, b) {
26+ if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
27+ console.log('a', a);
28+ console.log('b', b);
29+ throw new Error('only xor buffers!');
30+ }
26 const length = Math.max(a.byteLength, b.byteLength);
31 const length = Math.max(a.byteLength, b.byteLength);
27 const result = new Uint8Array(length);
32 const result = new Uint8Array(length);
28 for (let i = 0; i < length; i++) {
33 for (let i = 0; i < length; i++) {