Update keygen to conform to latest spec

This commit is contained in:
Fang 2018-11-12 18:12:22 -08:00
parent 2a23548a91
commit a7319a63e2
2 changed files with 48 additions and 69 deletions

View File

@ -7,68 +7,63 @@
=, keygen
::
|%
++ to-byts
|= a=@t
=+ (met 3 a)
[- (rev 3 - a)]
::
++ argon2u
|= inp=byts
|= [who=ship tic=byts]
^- @
~| [%who who (met 3 who)]
:: ?> (lte (met 3 who) 4)
%- (argon2-urbit:argon2:crypto 32)
[inp (to-byts 'urbitkeygen')]
:- tic
=- [(met 3 -) -]
%- crip
(weld "urbitkeygen" (a-co:co who))
::
++ child-node-from-seed
|= [seed=@ met=meta pass=(unit @t)]
|= [seed=@ typ=tape pass=(unit @t)]
^- node
=+ sed=(seed:ds 32^seed met)
=+ sed=(seed:ds 32^seed typ)
=+ nom=(from-entropy:bip39 32^sed)
:+ met nom
:+ typ nom
%- wallet:ds
%+ to-seed:bip39 nom
(trip (fall pass ''))
::
++ full-wallet-from-ticket
|= [ticket=byts sis=(set ship) revs=revisions pass=(unit @t)]
:: who: username
:: ticket: password
:: rev: network key revision
:: pass: optional passphrase
::
|= [who=ship ticket=byts rev=@ud pass=(unit @t)]
^- vault
=+ master-seed=(argon2u ticket)
=/ nn
|= [typ=tape rev=@ud]
%- ~(rep in sis)
|= [who=ship nos=nodes]
%+ ~(put by nos) who
%^ child-node-from-seed
master-seed
[typ rev who]
pass
=+ master-seed=(argon2u who ticket)
=/ cn :: child node
|= typ=nodetype
(child-node-from-seed master-seed typ pass)
::
:- ^= ownership ^- nodes
(nn "ownership" ownership.revs)
:- ^= ownership ^- node
(cn "ownership")
::
:- ^= voting ^- nodes
(nn "voting" voting.revs)
:- ^= voting ^- node
(cn "voting")
::
=/ management=nodes
(nn "management" management.revs)
=/ management=node
(cn "management")
:- management=management
::
:- ^= transfer ^- nodes
(nn "transfer" transfer.revs)
:- ^= transfer ^- node
(cn "transfer")
::
:- ^= spawn ^- nodes
(nn "spawn" spawn.revs)
:- ^= spawn ^- node
(cn "spawn")
::
^= network ^- uodes
%- ~(rep in sis)
|= [who=ship nus=uodes]
%+ ~(put by nus) who
=/ mad
^= network ^- uode
=/ mad :: management seed
%+ to-seed:bip39
seed:(~(got by management) who)
seed:management
(trip (fall pass ''))
=+ met=["network" network.revs who]
=+ sed=(seed:ds 64^mad met)
[met sed (urbit:ds sed)]
=+ sed=(seed:ds 64^mad (a-co:co rev))
[rev sed (urbit:ds sed)]
::
++ ds :: derive from raw seed
|%
@ -94,14 +89,8 @@
(rsh 3 33 sec)
::
++ seed
|= [seed=byts meta]
|= [seed=byts salt=tape]
^- @ux
=/ salt=tape
;: weld
typ
['-' (a-co:co who)]
['-' (a-co:co rev)]
==
%- sha-256l:sha
:- (add wid.seed (lent salt))
(cat 3 (crip (flop salt)) dat.seed)

View File

@ -1,33 +1,23 @@
|%
+= revision @ud
+= nodetype tape
+= mnemonic tape
::
+= vault
$: ownership=nodes
voting=nodes
management=nodes
transfer=nodes
spawn=nodes
network=uodes
$: ownership=node
voting=node
management=node
transfer=node
spawn=node
network=uode
==
::
+= nodes (map ship node)
+= uodes (map ship uode)
::
+= node [meta=meta seed=tape keys=wallet]
+= uode [meta=meta seed=@ux keys=edkeys]
::
+= meta [typ=tape rev=@ud who=ship]
+= node [type=nodetype seed=mnemonic keys=wallet]
+= uode [revi=revision seed=@ux keys=edkeys]
::
+= wallet [keys=[public=@ux private=@ux] addr=@ux chain=@ux]
::
+= edkeys [auth=keypair crypt=keypair]
::
+= keypair [public=@ux secret=@ux]
::
+= revisions
$: ownership=@ud
transfer=@ud
spawn=@ud
voting=@ud
management=@ud
network=@ud
==
--