// Copyright 2015-2019 Parity Technologies (UK) Ltd. // This file is part of Parity Ethereum. // Parity Ethereum is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity Ethereum is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity Ethereum. If not, see . //! Parity Accounts-related rpc interface. use std::collections::BTreeMap; use jsonrpc_core::Result; use jsonrpc_derive::rpc; use ethkey::Password; use ethstore::KeyFile; use v1::types::{H160, H256, H520, DeriveHash, DeriveHierarchical, ExtAccountInfo}; /// Personal Parity rpc interface. #[rpc] pub trait ParityAccounts { /// Returns accounts information. #[rpc(name = "parity_allAccountsInfo")] fn all_accounts_info(&self) -> Result>; /// Creates new account from the given phrase using standard brainwallet mechanism. /// Second parameter is password for the new account. #[rpc(name = "parity_newAccountFromPhrase")] fn new_account_from_phrase(&self, String, Password) -> Result; /// Creates new account from the given JSON wallet. /// Second parameter is password for the wallet and the new account. #[rpc(name = "parity_newAccountFromWallet")] fn new_account_from_wallet(&self, String, Password) -> Result; /// Creates new account from the given raw secret. /// Second parameter is password for the new account. #[rpc(name = "parity_newAccountFromSecret")] fn new_account_from_secret(&self, H256, Password) -> Result; /// Returns true if given `password` would unlock given `account`. /// Arguments: `account`, `password`. #[rpc(name = "parity_testPassword")] fn test_password(&self, H160, Password) -> Result; /// Changes an account's password. /// Arguments: `account`, `password`, `new_password`. #[rpc(name = "parity_changePassword")] fn change_password(&self, H160, Password, Password) -> Result; /// Permanently deletes an account. /// Arguments: `account`, `password`. #[rpc(name = "parity_killAccount")] fn kill_account(&self, H160, Password) -> Result; /// Permanently deletes an address from the addressbook /// Arguments: `address` #[rpc(name = "parity_removeAddress")] fn remove_address(&self, H160) -> Result; /// Set an account's name. #[rpc(name = "parity_setAccountName")] fn set_account_name(&self, H160, String) -> Result; /// Set an account's metadata string. #[rpc(name = "parity_setAccountMeta")] fn set_account_meta(&self, H160, String) -> Result; /// Imports a number of Geth accounts, with the list provided as the argument. #[rpc(name = "parity_importGethAccounts")] fn import_geth_accounts(&self, Vec) -> Result>; /// Returns the accounts available for importing from Geth. #[rpc(name = "parity_listGethAccounts")] fn geth_accounts(&self) -> Result>; /// Create new vault. #[rpc(name = "parity_newVault")] fn create_vault(&self, String, Password) -> Result; /// Open existing vault. #[rpc(name = "parity_openVault")] fn open_vault(&self, String, Password) -> Result; /// Close previously opened vault. #[rpc(name = "parity_closeVault")] fn close_vault(&self, String) -> Result; /// List all vaults. #[rpc(name = "parity_listVaults")] fn list_vaults(&self) -> Result>; /// List all currently opened vaults. #[rpc(name = "parity_listOpenedVaults")] fn list_opened_vaults(&self) -> Result>; /// Change vault password. #[rpc(name = "parity_changeVaultPassword")] fn change_vault_password(&self, String, Password) -> Result; /// Change vault of the given address. #[rpc(name = "parity_changeVault")] fn change_vault(&self, H160, String) -> Result; /// Get vault metadata string. #[rpc(name = "parity_getVaultMeta")] fn get_vault_meta(&self, String) -> Result; /// Set vault metadata string. #[rpc(name = "parity_setVaultMeta")] fn set_vault_meta(&self, String, String) -> Result; /// Derive new address from given account address using specific hash. /// Resulting address can be either saved as a new account (with the same password). #[rpc(name = "parity_deriveAddressHash")] fn derive_key_hash(&self, H160, Password, DeriveHash, bool) -> Result; /// Derive new address from given account address using /// hierarchical derivation (sequence of 32-bit integer indices). /// Resulting address can be either saved as a new account (with the same password). #[rpc(name = "parity_deriveAddressIndex")] fn derive_key_index(&self, H160, Password, DeriveHierarchical, bool) -> Result; /// Exports an account with given address if provided password matches. #[rpc(name = "parity_exportAccount")] fn export_account(&self, H160, Password) -> Result; /// Sign raw hash with the key corresponding to address and password. #[rpc(name = "parity_signMessage")] fn sign_message(&self, H160, Password, H256) -> Result; /// Send a PinMatrixAck to a hardware wallet, unlocking it #[rpc(name = "parity_hardwarePinMatrixAck")] fn hardware_pin_matrix_ack(&self, String, String) -> Result; }