4 releases
0.1.3 | Oct 21, 2019 |
---|---|
0.1.2 | Oct 16, 2019 |
0.1.1 | Oct 14, 2019 |
0.1.0 | Oct 12, 2019 |
#17 in #forge
Used in 2 crates
51KB
1K
SLoC
Intro
forge_wallet
implement by Rust
. Based on forge_crypter, forge_hasher, forge_signer, forge_did.
The crate provides some help functions to help user create wallet.
Struct Wallet
pub struct Wallet {
pub w_type: WalletType,
pub sk: Vec<u8>,
pub pk: Vec<u8>,
pub address: String,
}
API
create_default_wallet() -> Result<Wallet>
from_wallet_type(w_type: &WalletType) -> Result<Wallet>
from_address(addr: &str) -> Result<Wallet>
from_pk(pk: &[u8], w_type: &WalletType) -> Result<Wallet>
from_sk(sk: &[u8], w_type: &WalletType) -> Result<Wallet>
from_json(j: Value) -> Result<Wallet>
to_json(&self) -> Result<Value>
verify(&self, message: &[u8], signature: &[u8]) -> Result<bool>
hash(&self, message: &[u8]) -> Result<Vec<u8>>
sign(&self, message: &[u8]) -> Result<Vec<u8>>
format_wallet(&mut self) -> Result<()>
is_valid(wallet: &Wallet) -> bool
Usage
let wallet_type = WalletType {
role_type: Some(RoleType::Application),
key_type: Some(KeyType::Ed25519),
hash_type: Some(HashType::Sha3),
};
let wallet = from_wallet_type(&wallet_type)?;
assert_eq!(wallet, from_sk(&wallet.sk, &wallet_type)?);
let message = b"hello rust";
let signature = wallet.sign(message)?;
assert!(wallet.verify(message, &signature))?;
Dependencies
~8MB
~116K SLoC