Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
d1b52efd
Commit
d1b52efd
authored
Mar 24, 2015
by
zelig
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cli: implement ethereum presale wallet import via cli
parent
34d5a6c1
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
59 additions
and
27 deletions
+59
-27
account_manager.go
accounts/account_manager.go
+12
-0
main.go
cmd/ethereum/main.go
+47
-27
No files found.
accounts/account_manager.go
View file @
d1b52efd
...
...
@@ -239,3 +239,15 @@ func (am *Manager) Import(path string, keyAuth string) (Account, error) {
}
return
Account
{
Address
:
key
.
Address
},
nil
}
func
(
am
*
Manager
)
ImportPreSaleKey
(
keyJSON
[]
byte
,
password
string
)
(
acc
Account
,
err
error
)
{
var
key
*
crypto
.
Key
key
,
err
=
crypto
.
ImportPreSaleKey
(
am
.
keyStore
,
keyJSON
,
password
)
if
err
!=
nil
{
return
}
if
err
=
am
.
keyStore
.
StoreKey
(
key
,
password
);
err
!=
nil
{
return
}
return
Account
{
Address
:
key
.
Address
},
nil
}
cmd/ethereum/main.go
View file @
d1b52efd
...
...
@@ -23,6 +23,7 @@ package main
import
(
"bufio"
"fmt"
"io/ioutil"
"os"
"runtime"
"strconv"
...
...
@@ -74,6 +75,19 @@ Regular users do not need to execute it.
The output of this command is supposed to be machine-readable.
`
,
},
{
Action
:
accountList
,
Name
:
"wallet"
,
Usage
:
"ethereum presale wallet"
,
Subcommands
:
[]
cli
.
Command
{
{
Action
:
importWallet
,
Name
:
"import"
,
Usage
:
"import ethereum presale wallet"
,
},
},
},
{
Action
:
accountList
,
Name
:
"account"
,
...
...
@@ -280,22 +294,7 @@ func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (pass
var
err
error
// Load startup keys. XXX we are going to need a different format
// Attempt to unlock the account
passfile
:=
ctx
.
GlobalString
(
utils
.
PasswordFileFlag
.
Name
)
if
len
(
passfile
)
==
0
{
fmt
.
Println
(
"Please enter a passphrase now."
)
auth
,
err
:=
readPassword
(
"Passphrase: "
,
true
)
if
err
!=
nil
{
utils
.
Fatalf
(
"%v"
,
err
)
}
passphrase
=
auth
}
else
{
if
passphrase
,
err
=
common
.
ReadAllFile
(
passfile
);
err
!=
nil
{
utils
.
Fatalf
(
"Unable to read password file '%s': %v"
,
passfile
,
err
)
}
}
passphrase
:=
getPassPhrase
(
ctx
,
""
,
false
)
err
=
am
.
Unlock
(
common
.
FromHex
(
account
),
passphrase
)
if
err
!=
nil
{
utils
.
Fatalf
(
"Unlock account failed '%v'"
,
err
)
...
...
@@ -335,22 +334,23 @@ func accountList(ctx *cli.Context) {
}
}
func
getPassPhrase
(
ctx
*
cli
.
Context
)
(
passphrase
string
)
{
func
getPassPhrase
(
ctx
*
cli
.
Context
,
desc
string
,
confirmation
bool
)
(
passphrase
string
)
{
if
!
ctx
.
GlobalBool
(
utils
.
UnencryptedKeysFlag
.
Name
)
{
passfile
:=
ctx
.
GlobalString
(
utils
.
PasswordFileFlag
.
Name
)
if
len
(
passfile
)
==
0
{
fmt
.
Println
(
"The new account will be encrypted with a passphrase."
)
fmt
.
Println
(
"Please enter a passphrase now."
)
fmt
.
Println
(
desc
)
auth
,
err
:=
readPassword
(
"Passphrase: "
,
true
)
if
err
!=
nil
{
utils
.
Fatalf
(
"%v"
,
err
)
}
confirm
,
err
:=
readPassword
(
"Repeat Passphrase: "
,
false
)
if
err
!=
nil
{
utils
.
Fatalf
(
"%v"
,
err
)
}
if
auth
!=
confirm
{
utils
.
Fatalf
(
"Passphrases did not match."
)
if
confirmation
{
confirm
,
err
:=
readPassword
(
"Repeat Passphrase: "
,
false
)
if
err
!=
nil
{
utils
.
Fatalf
(
"%v"
,
err
)
}
if
auth
!=
confirm
{
utils
.
Fatalf
(
"Passphrases did not match."
)
}
}
passphrase
=
auth
...
...
@@ -366,7 +366,7 @@ func getPassPhrase(ctx *cli.Context) (passphrase string) {
func
accountCreate
(
ctx
*
cli
.
Context
)
{
am
:=
utils
.
GetAccountManager
(
ctx
)
passphrase
:=
getPassPhrase
(
ctx
)
passphrase
:=
getPassPhrase
(
ctx
,
"Your new account is locked with a password. Please give a password. Do not forget this password."
,
true
)
acct
,
err
:=
am
.
NewAccount
(
passphrase
)
if
err
!=
nil
{
utils
.
Fatalf
(
"Could not create the account: %v"
,
err
)
...
...
@@ -374,13 +374,33 @@ func accountCreate(ctx *cli.Context) {
fmt
.
Printf
(
"Address: %x
\n
"
,
acct
)
}
func
importWallet
(
ctx
*
cli
.
Context
)
{
keyfile
:=
ctx
.
Args
()
.
First
()
if
len
(
keyfile
)
==
0
{
utils
.
Fatalf
(
"keyfile must be given as argument"
)
}
keyJson
,
err
:=
ioutil
.
ReadFile
(
keyfile
)
if
err
!=
nil
{
utils
.
Fatalf
(
"Could not read wallet file: %v"
,
err
)
}
am
:=
utils
.
GetAccountManager
(
ctx
)
passphrase
:=
getPassPhrase
(
ctx
,
""
,
false
)
acct
,
err
:=
am
.
ImportPreSaleKey
(
keyJson
,
passphrase
)
if
err
!=
nil
{
utils
.
Fatalf
(
"Could not create the account: %v"
,
err
)
}
fmt
.
Printf
(
"Address: %x
\n
"
,
acct
)
}
func
accountImport
(
ctx
*
cli
.
Context
)
{
keyfile
:=
ctx
.
Args
()
.
First
()
if
len
(
keyfile
)
==
0
{
utils
.
Fatalf
(
"keyfile must be given as argument"
)
}
am
:=
utils
.
GetAccountManager
(
ctx
)
passphrase
:=
getPassPhrase
(
ctx
)
passphrase
:=
getPassPhrase
(
ctx
,
"Your new account is locked with a password. Please give a password. Do not forget this password."
,
true
)
acct
,
err
:=
am
.
Import
(
keyfile
,
passphrase
)
if
err
!=
nil
{
utils
.
Fatalf
(
"Could not create the account: %v"
,
err
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment