use eth2_wallet::{Error, KeystoreError, Wallet}; fn assert_bad_json(json: &str) { match Wallet::from_json_str(&json) { 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 } "#; assert_bad_json(&vector); } #[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" } "#; assert_bad_json(&vector); } #[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 } "#; assert_bad_json(&vector); } #[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 } "#; assert_bad_json(&vector); } #[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 } "#; assert_bad_json(&vector); } #[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 } "#; assert_bad_json(&vector); }