on master help sign in
Name constants
c9ab246Liam Fitzgerald
src/lib/keys.js+4−4
@@ -59,6 +59,9 @@ const jam = seed => {
59// simple alias to avoid importing kg into component scope
59// simple alias to avoid importing kg into component scope
60export const deriveNetworkKeys = seed => kg.deriveNetworkKeys(seed);
60export const deriveNetworkKeys = seed => kg.deriveNetworkKeys(seed);
61
61
62+export const createRing = pair =>
63+ pair.crypt.private + pair.auth.private + NETWORK_KEY_CURVE_PARAMETER;
64+
62/**
65/**
63 * @param {object} pair
66 * @param {object} pair
64 * @param {number} point
67 * @param {number} point
@@ -66,10 +69,7 @@ export const deriveNetworkKeys = seed => kg.deriveNetworkKeys(seed);
66 * @return {string}
69 * @return {string}
67 */
70 */
68export const compileNetworkingKey = (pair, point, revision) => {
71export const compileNetworkingKey = (pair, point, revision) => {
69− const bnsec = new BN(
72+ const bnsec = new BN(createRing(pair), 'hex');
70− pair.crypt.private + pair.auth.private + NETWORK_KEY_CURVE_PARAMETER,
71− 'hex'
72− );
73
73
74 const sed = noun.dwim(
74 const sed = noun.dwim(
75 noun.Atom.fromInt(point),
75 noun.Atom.fromInt(point),
src/lib/networkCode.js+6−5
@@ -1,4 +1,5 @@
1import { hex2patp } from 'urbit-ob';
1import { hex2patp } from 'urbit-ob';
2+import { createRing } from 'lib/keys';
2
3
3import jssha256 from 'js-sha256';
4import jssha256 from 'js-sha256';
4
5
@@ -7,7 +8,7 @@ function shax(buf) {
7 return Buffer.from(hashed);
8 return Buffer.from(hashed);
8}
9}
9
10
10−function hexToArrayBuffer(hex) {
11+function hex2buf(hex) {
11 return Buffer.from(hex, 'hex').reverse();
12 return Buffer.from(hex, 'hex').reverse();
12}
13}
13
14
@@ -38,10 +39,10 @@ function shaf(buf, salt) {
38 return xor(front, back);
39 return xor(front, back);
39}
40}
40
41
41−export const generateCode = async privKeyHex => {
42+export const generateCode = pair => {
42− const privKey = hexToArrayBuffer(privKeyHex);
43+ const ring = hex2buf(createRing(pair));
43− const salt = hexToArrayBuffer('73736170');
44+ const salt = hex2buf('73736170'); // salt is the noun %pass
44− const hash = shax(privKey);
45+ const hash = shax(ring);
45 const result = shaf(hash, salt);
46 const result = shaf(hash, salt);
46 const half = result.slice(0, result.length / 2);
47 const half = result.slice(0, result.length / 2);
47
48
src/lib/useKeyfileGenerator.js+1−1
@@ -74,7 +74,7 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
74
74
75 const pair = deriveNetworkKeys(_networkSeed);
75 const pair = deriveNetworkKeys(_networkSeed);
76
76
77− generateCode(pair.crypt.private + pair.auth.private + '42').then(setCode);
77+ setCode(generateCode(pair));
78
78
79 if (!keysMatchChain(pair, _details)) {
79 if (!keysMatchChain(pair, _details)) {
80 setGenerating(false);
80 setGenerating(false);