#forge #wallet #language

forge_wallet

forge_wallet 的 Rust 语言实现

4 个版本

0.1.3 2019 年 10 月 21 日
0.1.2 2019 年 10 月 16 日
0.1.1 2019 年 10 月 14 日
0.1.0 2019 年 10 月 12 日

#16 in #forge


用于 2 crates

Apache-2.0

51KB
1K SLoC

简介

forge_walletRust 实现。基于 forge_crypterforge_hasherforge_signerforge_did

该包提供了一些帮助函数,以帮助用户创建钱包。

结构体 Wallet

    pub struct Wallet {
        pub w_type: WalletType,
        pub sk: Vec<u8>,
        pub pk: Vec<u8>,
        pub address: String,
    }

API

  • create_default_wallet() -> 结果<Wallet>
  • from_wallet_type(w_type: &WalletType) -> 结果<Wallet>
  • from_address(addr: &str) -> 结果<Wallet>
  • from_pk(pk: &[u8],w_type: &WalletType) -> 结果<Wallet>
  • from_sk(sk: &[u8],w_type: &WalletType) -> 结果<Wallet>
  • from_json(j:Value) -> 结果<Wallet>
  • to_json(&self) -> 结果<Value>
  • verify(&self,message: &[u8],signature: &[u8]) -> 结果<bool>
  • hash(&self,message: &[u8]) -> 结果<Vec<u8>>
  • sign(&self,message: &[u8]) -> 结果<Vec<u8>>
  • format_wallet(&mut self) -> 结果<()>
  • is_valid(wallet: &Wallet) -> bool

用法

    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))?;

依赖

~7.5MB
~110K SLoC