@@ -13,12 +13,28 @@ module.exports = function preStart (self) {
13
13
return ( callback ) => {
14
14
self . log ( 'pre-start' )
15
15
16
+ const pass = self . _options . pass
17
+ let importSelf = false
16
18
waterfall ( [
17
19
( cb ) => self . _repo . config . get ( cb ) ,
18
20
( config , cb ) => {
19
- const pass = self . _options . pass
21
+ // Upgrade to keychain?
22
+ if ( ! pass || config . Keychain ) {
23
+ return cb ( null , config )
24
+ }
25
+ config . Keychain = Keychain . generateOptions ( )
26
+ self . config . set ( 'Keychain' , config . Keychain , ( err ) => {
27
+ if ( err ) return cb ( err )
28
+ const keychainOptions = Object . assign ( { passPhrase : pass } , config . Keychain )
29
+ self . _keychain = new Keychain ( self . _repo . keys , keychainOptions )
30
+ importSelf = true
31
+ self . log ( 'Upgrade repo for a keychain' )
32
+ cb ( null , config )
33
+ } )
34
+ } ,
35
+ ( config , cb ) => {
20
36
if ( self . _keychain ) {
21
- // most likely an init has happened
37
+ // most likely an init or upgrade has happened
22
38
} else if ( pass ) {
23
39
const keychainOptions = Object . assign ( { passPhrase : pass } , config . Keychain )
24
40
self . _keychain = new Keychain ( self . _repo . keys , keychainOptions )
@@ -32,7 +48,12 @@ module.exports = function preStart (self) {
32
48
( config , cb ) => {
33
49
const privKey = config . Identity . PrivKey
34
50
35
- peerId . createFromPrivKey ( privKey , ( err , id ) => cb ( err , config , id ) )
51
+ peerId . createFromPrivKey ( privKey , ( err , id ) => {
52
+ if ( ! err && importSelf ) {
53
+ return self . _keychain . importPeer ( 'self' , id , ( err ) => cb ( err , config , id ) )
54
+ }
55
+ cb ( err , config , id )
56
+ } )
36
57
} ,
37
58
( config , id , cb ) => {
38
59
self . log ( 'peer created' )
0 commit comments