EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
use eth2_wallet::{Error, KeystoreError, Wallet};
|
|
|
|
|
|
|
|
fn assert_bad_json(json: &str) {
|
2021-07-30 01:11:47 +00:00
|
|
|
match Wallet::from_json_str(json) {
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
Err(Error::KeystoreError(KeystoreError::InvalidJson(_))) => {}
|
|
|
|
_ => panic!("expected invalid json error"),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Note: the `crypto` object is inherited from the `eth2_keystore` crate so we don't test it here.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn additional_top_level_param() {
|
|
|
|
let vector = r#"
|
|
|
|
{
|
|
|
|
"crypto": {
|
|
|
|
"checksum": {
|
|
|
|
"function": "sha256",
|
|
|
|
"message": "8bdadea203eeaf8f23c96137af176ded4b098773410634727bd81c4e8f7f1021",
|
|
|
|
"params": {}
|
|
|
|
},
|
|
|
|
"cipher": {
|
|
|
|
"function": "aes-128-ctr",
|
|
|
|
"message": "7f8211b88dfb8694bac7de3fa32f5f84d0a30f15563358133cda3b287e0f3f4a",
|
|
|
|
"params": {
|
|
|
|
"iv": "9476702ab99beff3e8012eff49ffb60d"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"kdf": {
|
|
|
|
"function": "pbkdf2",
|
|
|
|
"message": "",
|
|
|
|
"params": {
|
|
|
|
"c": 16,
|
|
|
|
"dklen": 32,
|
|
|
|
"prf": "hmac-sha256",
|
|
|
|
"salt": "dd35b0c08ebb672fe18832120a55cb8098f428306bf5820f5486b514f61eb712"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"name": "Test wallet 2",
|
|
|
|
"nextaccount": 0,
|
|
|
|
"type": "hierarchical deterministic",
|
|
|
|
"uuid": "b74559b8-ed56-4841-b25c-dba1b7c9d9d5",
|
|
|
|
"version": 1,
|
|
|
|
"cats": 42
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
|
2021-07-30 01:11:47 +00:00
|
|
|
assert_bad_json(vector);
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn missing_top_level_param() {
|
|
|
|
let vector = r#"
|
|
|
|
{
|
|
|
|
"crypto": {
|
|
|
|
"checksum": {
|
|
|
|
"function": "sha256",
|
|
|
|
"message": "8bdadea203eeaf8f23c96137af176ded4b098773410634727bd81c4e8f7f1021",
|
|
|
|
"params": {}
|
|
|
|
},
|
|
|
|
"cipher": {
|
|
|
|
"function": "aes-128-ctr",
|
|
|
|
"message": "7f8211b88dfb8694bac7de3fa32f5f84d0a30f15563358133cda3b287e0f3f4a",
|
|
|
|
"params": {
|
|
|
|
"iv": "9476702ab99beff3e8012eff49ffb60d"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"kdf": {
|
|
|
|
"function": "pbkdf2",
|
|
|
|
"message": "",
|
|
|
|
"params": {
|
|
|
|
"c": 16,
|
|
|
|
"dklen": 32,
|
|
|
|
"prf": "hmac-sha256",
|
|
|
|
"salt": "dd35b0c08ebb672fe18832120a55cb8098f428306bf5820f5486b514f61eb712"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"name": "Test wallet 2",
|
|
|
|
"nextaccount": 0,
|
|
|
|
"type": "hierarchical deterministic",
|
|
|
|
"uuid": "b74559b8-ed56-4841-b25c-dba1b7c9d9d5"
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
|
2021-07-30 01:11:47 +00:00
|
|
|
assert_bad_json(vector);
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn bad_version() {
|
|
|
|
let vector = r#"
|
|
|
|
{
|
|
|
|
"crypto": {
|
|
|
|
"checksum": {
|
|
|
|
"function": "sha256",
|
|
|
|
"message": "8bdadea203eeaf8f23c96137af176ded4b098773410634727bd81c4e8f7f1021",
|
|
|
|
"params": {}
|
|
|
|
},
|
|
|
|
"cipher": {
|
|
|
|
"function": "aes-128-ctr",
|
|
|
|
"message": "7f8211b88dfb8694bac7de3fa32f5f84d0a30f15563358133cda3b287e0f3f4a",
|
|
|
|
"params": {
|
|
|
|
"iv": "9476702ab99beff3e8012eff49ffb60d"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"kdf": {
|
|
|
|
"function": "pbkdf2",
|
|
|
|
"message": "",
|
|
|
|
"params": {
|
|
|
|
"c": 16,
|
|
|
|
"dklen": 32,
|
|
|
|
"prf": "hmac-sha256",
|
|
|
|
"salt": "dd35b0c08ebb672fe18832120a55cb8098f428306bf5820f5486b514f61eb712"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"name": "Test wallet 2",
|
|
|
|
"nextaccount": 0,
|
|
|
|
"type": "hierarchical deterministic",
|
|
|
|
"uuid": "b74559b8-ed56-4841-b25c-dba1b7c9d9d5",
|
|
|
|
"version": 2
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
|
2021-07-30 01:11:47 +00:00
|
|
|
assert_bad_json(vector);
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn bad_uuid() {
|
|
|
|
let vector = r#"
|
|
|
|
{
|
|
|
|
"crypto": {
|
|
|
|
"checksum": {
|
|
|
|
"function": "sha256",
|
|
|
|
"message": "8bdadea203eeaf8f23c96137af176ded4b098773410634727bd81c4e8f7f1021",
|
|
|
|
"params": {}
|
|
|
|
},
|
|
|
|
"cipher": {
|
|
|
|
"function": "aes-128-ctr",
|
|
|
|
"message": "7f8211b88dfb8694bac7de3fa32f5f84d0a30f15563358133cda3b287e0f3f4a",
|
|
|
|
"params": {
|
|
|
|
"iv": "9476702ab99beff3e8012eff49ffb60d"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"kdf": {
|
|
|
|
"function": "pbkdf2",
|
|
|
|
"message": "",
|
|
|
|
"params": {
|
|
|
|
"c": 16,
|
|
|
|
"dklen": 32,
|
|
|
|
"prf": "hmac-sha256",
|
|
|
|
"salt": "dd35b0c08ebb672fe18832120a55cb8098f428306bf5820f5486b514f61eb712"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"name": "Test wallet 2",
|
|
|
|
"nextaccount": 0,
|
|
|
|
"type": "hierarchical deterministic",
|
|
|
|
"uuid": "!b74559b8-ed56-4841-b25c-dba1b7c9d9d5",
|
|
|
|
"version": 1
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
|
2021-07-30 01:11:47 +00:00
|
|
|
assert_bad_json(vector);
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn bad_type() {
|
|
|
|
let vector = r#"
|
|
|
|
{
|
|
|
|
"crypto": {
|
|
|
|
"checksum": {
|
|
|
|
"function": "sha256",
|
|
|
|
"message": "8bdadea203eeaf8f23c96137af176ded4b098773410634727bd81c4e8f7f1021",
|
|
|
|
"params": {}
|
|
|
|
},
|
|
|
|
"cipher": {
|
|
|
|
"function": "aes-128-ctr",
|
|
|
|
"message": "7f8211b88dfb8694bac7de3fa32f5f84d0a30f15563358133cda3b287e0f3f4a",
|
|
|
|
"params": {
|
|
|
|
"iv": "9476702ab99beff3e8012eff49ffb60d"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"kdf": {
|
|
|
|
"function": "pbkdf2",
|
|
|
|
"message": "",
|
|
|
|
"params": {
|
|
|
|
"c": 16,
|
|
|
|
"dklen": 32,
|
|
|
|
"prf": "hmac-sha256",
|
|
|
|
"salt": "dd35b0c08ebb672fe18832120a55cb8098f428306bf5820f5486b514f61eb712"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"name": "Test wallet 2",
|
|
|
|
"nextaccount": 0,
|
|
|
|
"type": "something else",
|
|
|
|
"uuid": "b74559b8-ed56-4841-b25c-dba1b7c9d9d5",
|
|
|
|
"version": 1
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
|
2021-07-30 01:11:47 +00:00
|
|
|
assert_bad_json(vector);
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn more_that_u32_nextaccount() {
|
|
|
|
let vector = r#"
|
|
|
|
{
|
|
|
|
"crypto": {
|
|
|
|
"checksum": {
|
|
|
|
"function": "sha256",
|
|
|
|
"message": "8bdadea203eeaf8f23c96137af176ded4b098773410634727bd81c4e8f7f1021",
|
|
|
|
"params": {}
|
|
|
|
},
|
|
|
|
"cipher": {
|
|
|
|
"function": "aes-128-ctr",
|
|
|
|
"message": "7f8211b88dfb8694bac7de3fa32f5f84d0a30f15563358133cda3b287e0f3f4a",
|
|
|
|
"params": {
|
|
|
|
"iv": "9476702ab99beff3e8012eff49ffb60d"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"kdf": {
|
|
|
|
"function": "pbkdf2",
|
|
|
|
"message": "",
|
|
|
|
"params": {
|
|
|
|
"c": 16,
|
|
|
|
"dklen": 32,
|
|
|
|
"prf": "hmac-sha256",
|
|
|
|
"salt": "dd35b0c08ebb672fe18832120a55cb8098f428306bf5820f5486b514f61eb712"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"name": "Test wallet 2",
|
|
|
|
"nextaccount": 4294967297,
|
|
|
|
"type": "hierarchical deterministic",
|
|
|
|
"uuid": "b74559b8-ed56-4841-b25c-dba1b7c9d9d5",
|
|
|
|
"version": 1
|
|
|
|
}
|
|
|
|
"#;
|
|
|
|
|
2021-07-30 01:11:47 +00:00
|
|
|
assert_bad_json(vector);
|
EIP-2386 (draft): Eth2 wallet (#1117)
* Add test to understand flow of key storage
* First commit
* Committing to save trait stuff
* Working naive design
* Add keystore struct
* Move keystore files into their own module
* Add serde (de)serialize_with magic
* Add keystore test
* Fix tests
* Add comments and minor fixes
* Pass optional params to `to_keystore` function
* Add `path` field to keystore
* Add function to read Keystore from file
* Add test vectors and fix Version serialization
* Checksum params is empty object
* Add public key to Keystore
* Add function for saving keystore into file
* Deleted account_manager main.rs
* Move keystore module to validator_client
* Add save_keystore method to validator_directory
* Add load_keystore function. Minor refactorings
* Fixed dependencies
* Address some review comments
* Add Password newtype; derive Zeroize
* Fix test
* Move keystore into own crate
* Remove padding
* Add error enum, zeroize more things
* Fix comment
* Add keystore builder
* Remove keystore stuff from val client
* Add more tests, comments
* Add more comments, test vectors
* Progress on improving JSON validation
* More JSON verification
* Start moving JSON into own mod
* Remove old code
* Add more tests, reader/writers
* Tidy
* Move keystore into own file
* Move more logic into keystore file
* Tidy
* Tidy
* Allow for odd-character hex
* Add more json missing field checks
* Use scrypt by default
* Tidy, address comments
* Test path and uuid in vectors
* Fix comment
* Add checks for kdf params
* Enforce empty kdf message
* Expose json_keystore mod
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* First commits on path derivation
* Progress with implementation
* Move key derivation into own crate
* Start defining JSON wallet
* Add progress
* Split out encrypt/decrypt
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Replace some password usage with slice
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add progress
* Expose PlainText struct
* First commits on path derivation
* Progress with implementation
* More progress
* Passing intermediate test vectors
* Tidy, add comments
* Add DerivedKey structs
* Move key derivation into own crate
* Add zeroize structs
* Return error for empty seed
* Add tests
* Tidy
* Add builder
* Expose consts, remove Password
* Minor progress
* Expose SALT_SIZE
* First compiling version
* Add test vectors
* Move dbg assert statement
* Add mnemonic, tidy
* Tidy
* Add testing
* Fix broken test
* Address review comments
Co-authored-by: pawan <pawandhananjay@gmail.com>
2020-05-11 22:54:59 +00:00
|
|
|
}
|