Have both a strict and non-strict mode in '.fromV3()'
This commit is contained in:
parent
2ea77fc006
commit
395f01a809
|
@ -24,7 +24,7 @@ Constructors:
|
|||
* `generate([icap])` - create an instance based on a new random key (setting `icap` to true will generate an address suitable for the `ICAP Direct mode`)
|
||||
* `fromPrivateKey(input)` - create an instance based on a raw key
|
||||
* `fromV1(input, password)` - import a wallet (Version 1 of the Ethereum wallet format)
|
||||
* `fromV3(input, password)` - import a wallet (Version 3 of the Ethereum wallet format)
|
||||
* `fromV3(input, password, [nonStrict])` - import a wallet (Version 3 of the Ethereum wallet format). Set `nonStrict` true to accept files with mixed-caps.
|
||||
* `fromEthSale(input, password)` - import an Ethereum Pre Sale wallet
|
||||
|
||||
For the V1, V3 and EthSale formats the input is a JSON serialized string. All these formats require a password.
|
||||
|
|
4
index.js
4
index.js
|
@ -150,8 +150,8 @@ Wallet.fromV1 = function (input, password) {
|
|||
return new Wallet(seed)
|
||||
}
|
||||
|
||||
Wallet.fromV3 = function (input, password) {
|
||||
var json = (typeof input === 'object') ? input : JSON.parse(input)
|
||||
Wallet.fromV3 = function (input, password, nonStrict) {
|
||||
var json = (typeof input === 'object') ? input : JSON.parse(nonStrict ? input.toLowerCase() : input)
|
||||
|
||||
if (json.version !== 3) {
|
||||
throw new Error('Not a V3 wallet')
|
||||
|
|
|
@ -108,6 +108,17 @@ describe('.fromV3()', function () {
|
|||
this.timeout(180000) // 3minutes
|
||||
assert.equal(wallet.getAddressString(), '0xa9886ac7489ecbcbd79268a79ef00d940e5fe1f2')
|
||||
})
|
||||
it('should work with (broken) mixed-case input files', function () {
|
||||
var w = '{"Crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"6087dab2f9fdbbfaddc31a909735c1e6"},"ciphertext":"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46","kdf":"pbkdf2","kdfparams":{"c":262144,"dklen":32,"prf":"hmac-sha256","salt":"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"},"mac":"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"},"id":"3198bc9c-6672-5ab3-d995-4942343ae5b6","version":3}'
|
||||
var wallet = Wallet.fromV3(w, 'testpassword', true)
|
||||
assert.equal(wallet.getAddressString(), '0x008aeeda4d805471df9b2a5b0f38a0c3bcba786b')
|
||||
})
|
||||
it('shouldn\'t work with (broken) mixed-case input files in strict mode', function () {
|
||||
var w = '{"Crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"6087dab2f9fdbbfaddc31a909735c1e6"},"ciphertext":"5318b4d5bcd28de64ee5559e671353e16f075ecae9f99c7a79a38af5f869aa46","kdf":"pbkdf2","kdfparams":{"c":262144,"dklen":32,"prf":"hmac-sha256","salt":"ae3cd4e7013836a3df6bd7241b12db061dbe2c6785853cce422d148a624ce0bd"},"mac":"517ead924a9d0dc3124507e3393d175ce3ff7c1e96529c6c555ce9e51205e9b2"},"id":"3198bc9c-6672-5ab3-d995-4942343ae5b6","version":3}'
|
||||
assert.throws(function () {
|
||||
Wallet.fromV3(w, 'testpassword')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('.fromEthSale()', function () {
|
||||
|
|
Loading…
Reference in New Issue