on master help sign in
Merge pull request #303 from urbit/revert-295-view-code
663561cAnthony Arroyo
src/lib/keys.js+4−4
@@ -59,9 +59,6 @@ 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−
65/**
62/**
66 * @param {object} pair
63 * @param {object} pair
67 * @param {number} point
64 * @param {number} point
@@ -69,7 +66,10 @@ export const createRing = pair =>
69 * @return {string}
66 * @return {string}
70 */
67 */
71export const compileNetworkingKey = (pair, point, revision) => {
68export const compileNetworkingKey = (pair, point, revision) => {
72− const bnsec = new BN(createRing(pair), 'hex');
69+ const bnsec = new BN(
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.jsdeleted−50
@@ -1,50 +0,0 @@
1−import { hex2patp } from 'urbit-ob';
2−import { createRing } from 'lib/keys';
3−
4−import jssha256 from 'js-sha256';
5−
6−function shax(buf) {
7− const hashed = jssha256.sha256.array(buf);
8− return Buffer.from(hashed);
9−}
10−
11−function hex2buf(hex) {
12− return Buffer.from(hex, 'hex').reverse();
13−}
14−
15−function buf2hex(buf) {
16− return Buffer.from(buf)
17− .reverse()
18− .toString('hex');
19−}
20−
21−function shas(buf, salt) {
22− return shax(xor(salt, shax(buf)));
23−}
24−
25−function xor(a, b) {
26− const length = Math.max(a.byteLength, b.byteLength);
27− const result = new Uint8Array(length);
28− for (let i = 0; i < length; i++) {
29− result[i] = a[i] ^ b[i];
30− }
31− return result;
32−}
33−
34−function shaf(buf, salt) {
35− const result = shas(buf, salt);
36− const halfway = result.length / 2;
37− const front = result.slice(0, halfway);
38− const back = result.slice(halfway, result.length);
39− return xor(front, back);
40−}
41−
42−export const generateCode = pair => {
43− const ring = hex2buf(createRing(pair));
44− const salt = hex2buf('73736170'); // salt is the noun %pass
45− const hash = shax(ring);
46− const result = shaf(hash, salt);
47− const half = result.slice(0, result.length / 2);
48−
49− return hex2patp(buf2hex(half));
50−};
src/lib/useKeyfileGenerator.js−7
@@ -8,7 +8,6 @@ import { useWallet } from 'store/wallet';
8import { usePointCursor } from 'store/pointCursor';
8import { usePointCursor } from 'store/pointCursor';
9
9
10import * as need from 'lib/need';
10import * as need from 'lib/need';
11−import { generateCode } from 'lib/networkCode';
12
11
13import {
12import {
14 attemptNetworkSeedDerivation,
13 attemptNetworkSeedDerivation,
@@ -29,8 +28,6 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
29 const [generating, setGenerating] = useState(true);
28 const [generating, setGenerating] = useState(true);
30 const [keyfile, setKeyfile] = useState(false);
29 const [keyfile, setKeyfile] = useState(false);
31
30
32− const [code, setCode] = useState(false);
33−
34 const _point = need.point(pointCursor);
31 const _point = need.point(pointCursor);
35 const _details = need.details(getDetails(_point));
32 const _details = need.details(getDetails(_point));
36
33
@@ -74,8 +71,6 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
74
71
75 const pair = deriveNetworkKeys(_networkSeed);
72 const pair = deriveNetworkKeys(_networkSeed);
76
73
77− setCode(generateCode(pair));
78−
79 if (!keysMatchChain(pair, _details)) {
74 if (!keysMatchChain(pair, _details)) {
80 setGenerating(false);
75 setGenerating(false);
81 setNotice('Derived networking keys do not match on-chain details.');
76 setNotice('Derived networking keys do not match on-chain details.');
@@ -93,7 +88,6 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
93 urbitWallet,
88 urbitWallet,
94 wallet,
89 wallet,
95 authMnemonic,
90 authMnemonic,
96− setCode,
97 _details,
91 _details,
98 _point,
92 _point,
99 ]);
93 ]);
@@ -119,7 +113,6 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
119 downloaded,
113 downloaded,
120 download,
114 download,
121 notice,
115 notice,
122− code,
123 };
116 };
124
117
125 return { ...values, bind: values };
118 return { ...values, bind: values };
src/views/Point.js−14
@@ -9,7 +9,6 @@ import View from 'components/View';
9import Greeting from 'components/Greeting';
9import Greeting from 'components/Greeting';
10import Passport from 'components/Passport';
10import Passport from 'components/Passport';
11import { ForwardButton, BootArvoButton } from 'components/Buttons';
11import { ForwardButton, BootArvoButton } from 'components/Buttons';
12−import CopyButton from 'components/CopyButton';
13import { matchBlinky } from 'components/Blinky';
12import { matchBlinky } from 'components/Blinky';
14import DownloadSigilButton from 'components/DownloadSigilButton';
13import DownloadSigilButton from 'components/DownloadSigilButton';
15
14
@@ -18,7 +17,6 @@ import useInvites from 'lib/useInvites';
18import { useSyncOwnedPoints } from 'lib/useSyncPoints';
17import { useSyncOwnedPoints } from 'lib/useSyncPoints';
19import useCurrentPermissions from 'lib/useCurrentPermissions';
18import useCurrentPermissions from 'lib/useCurrentPermissions';
20import { useLocalRouter } from 'lib/LocalRouter';
19import { useLocalRouter } from 'lib/LocalRouter';
21−import useKeyfileGenerator from 'lib/useKeyfileGenerator';
22
20
23export default function Point() {
21export default function Point() {
24 const { pop, push, names } = useLocalRouter();
22 const { pop, push, names } = useLocalRouter();
@@ -26,8 +24,6 @@ export default function Point() {
26
24
27 const point = need.point(pointCursor);
25 const point = need.point(pointCursor);
28
26
29− const { code, notice } = useKeyfileGenerator();
30−
31 const {
27 const {
32 isParent,
28 isParent,
33 isActiveOwner,
29 isActiveOwner,
@@ -105,16 +101,6 @@ export default function Point() {
105 Admin
101 Admin
106 </Grid.Item>
102 </Grid.Item>
107 <Grid.Divider />
103 <Grid.Divider />
108− <Grid.Item
109− full
110− as={ForwardButton}
111− accessory={code && <CopyButton text={code} />}
112− detail={code || notice}
113− disabled={!code}
114− detailClassName="mono">
115− Login Code
116− </Grid.Item>
117− <Grid.Divider />
118 {isParent && (
104 {isParent && (
119 <>
105 <>
120 <Grid.Item
106 <Grid.Item