forge_wallet

Crates.ioforge_wallet
lib.rsforge_wallet
version0.1.3
sourcesrc
created_at2019-10-12 02:33:40.93981
updated_at2019-10-21 00:23:06.239131
descriptionThe rust language implementation of forge_wallet
homepagehttps://github.com/ArcBlock/forge-rust-sdk
repositoryhttps://github.com/ArcBlock/forge-rust-sdk
max_upload_size
id171823
size11,654
Pang Wei (qiangshou007)

documentation

https://docs.rs/forge-rust-sdk

README

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))?;
Commit count: 0

cargo fmt