#forge #wallet #language

forge_wallet

The rust language implementation of forge_wallet

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

#12 in #forge


Used in 2 crates

Apache-2.0

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

~7.5MB
~109K SLoC