This commit is contained in:
Aditya Kulkarni 2019-10-12 15:09:13 -07:00
parent a9efbac3bd
commit 2c2afcc442
18 changed files with 104 additions and 135 deletions

View File

@ -4,74 +4,13 @@ version = "0.1.0"
edition = "2018" edition = "2018"
[dependencies] [dependencies]
tower-grpc = { git = "https://github.com/tower-rs/tower-grpc" } rustyline = "5.0.2"
futures = "0.1" clap = "2.33"
bytes = "0.4"
base58 = "0.1.0"
log = "0.4" log = "0.4"
log4rs = "0.8.3" log4rs = "0.8.3"
dirs = "2.0.2"
http = "0.1"
prost = "0.5"
tokio = "0.1"
tower-request-modifier = { git = "https://github.com/tower-rs/tower-http" }
tower-util = "0.1"
hex = "0.3"
protobuf = "2"
rustyline = "5.0.2"
byteorder = "1"
json = "0.12.0"
shellwords = "1.0.0" shellwords = "1.0.0"
tiny-bip39 = "0.6.2"
clap = "2.33"
secp256k1 = "=0.15.0"
sha2 = "0.8.0"
ripemd160 = "0.8.0"
ring = "0.14.0"
lazy_static = "1.2.0"
tower-service = "0.2"
tokio-rustls = "0.10.0-alpha.3"
rustls = { version = "0.15.2", features = ["dangerous_configuration"] }
webpki = "0.19.1"
webpki-roots = "0.16.0"
tower-h2 = { git = "https://github.com/tower-rs/tower-h2" }
rust-embed = "5.1.0"
rand = "0.7.2"
[dependencies.bellman]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
default-features = false
features = ["groth16"]
[dependencies.pairing]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
[dependencies.zcash_client_backend]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
default-features = false
[dependencies.zcash_primitives]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
default-features = false
features = ["transparent-inputs"]
[dependencies.zcash_proofs]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
default-features = false
[dependencies.ff]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "188537ea025fcb7fbdfc11266f307a084a5451e4"
features = ["ff_derive"]
[build-dependencies]
tower-grpc-build = { git = "https://github.com/tower-rs/tower-grpc", features = ["tower-hyper"] }
zecwalletlitelib = { path = "./lib/" }
[profile.release] [profile.release]

75
lib/Cargo.toml Normal file
View File

@ -0,0 +1,75 @@
[package]
name = "zecwalletlitelib"
version = "0.1.0"
edition = "2018"
[dependencies]
tower-grpc = { git = "https://github.com/tower-rs/tower-grpc" }
futures = "0.1"
bytes = "0.4"
base58 = "0.1.0"
log = "0.4"
log4rs = "0.8.3"
dirs = "2.0.2"
http = "0.1"
prost = "0.5"
tokio = "0.1"
tower-request-modifier = { git = "https://github.com/tower-rs/tower-http" }
tower-util = "0.1"
hex = "0.3"
protobuf = "2"
byteorder = "1"
rand = "0.5.6"
json = "0.12.0"
tiny-bip39 = "0.6.2"
secp256k1 = "=0.15.0"
sha2 = "0.8.0"
ripemd160 = "0.8.0"
ring = "0.14.0"
lazy_static = "1.2.0"
tower-service = "0.2"
tokio-rustls = "0.10.0-alpha.3"
webpki = "0.19.1"
webpki-roots = "0.16.0"
tower-h2 = { git = "https://github.com/tower-rs/tower-h2" }
rust-embed = "5.1.0"
[dependencies.bellman]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
default-features = false
features = ["groth16"]
[dependencies.pairing]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
[dependencies.zcash_client_backend]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
default-features = false
[dependencies.zcash_primitives]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
default-features = false
features = ["transparent-inputs"]
[dependencies.zcash_proofs]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
default-features = false
[dependencies.ff]
git = "https://github.com/adityapk00/librustzcash.git"
rev = "0743dadcd017b60a0ac7123d04f0d6e7ce1e8016"
features = ["ff_derive"]
[build-dependencies]
tower-grpc-build = { git = "https://github.com/tower-rs/tower-grpc", features = ["tower-hyper"] }
[dev-dependencies]
rand_core = "0.5.1"
[profile.release]
debug = false

View File

@ -1,7 +1,7 @@
use std::collections::HashMap; use std::collections::HashMap;
use json::{object}; use json::{object};
use crate::LightClient; use crate::lightclient::LightClient;
pub trait Command { pub trait Command {
fn help(&self) -> String; fn help(&self) -> String;

19
lib/src/lib.rs Normal file
View File

@ -0,0 +1,19 @@
#[macro_use]
extern crate rust_embed;
pub mod lightclient;
pub mod grpcconnector;
pub mod lightwallet;
pub mod commands;
#[derive(RustEmbed)]
#[folder = "zcash-params/"]
pub struct SaplingParams;
pub const ANCHOR_OFFSET: u32 = 4;
pub mod grpc_client {
include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs"));
}

View File

@ -40,7 +40,7 @@ use zcash_primitives::{
}; };
use crate::{LightClientConfig}; use crate::lightclient::{LightClientConfig};
mod data; mod data;
mod extended_key; mod extended_key;
@ -1308,7 +1308,7 @@ pub mod tests {
use sha2::{Sha256, Digest}; use sha2::{Sha256, Digest};
use super::LightWallet; use super::LightWallet;
use crate::LightClientConfig; use super::LightClientConfig;
use secp256k1::{Secp256k1, key::PublicKey, key::SecretKey}; use secp256k1::{Secp256k1, key::PublicKey, key::SecretKey};
use crate::SaplingParams; use crate::SaplingParams;

View File

@ -27,17 +27,6 @@ pub enum KeyIndex {
impl KeyIndex { impl KeyIndex {
/// Check index range. /// Check index range.
///
/// # Examples
///
/// ```rust
/// # extern crate hdwallet;
/// use hdwallet::KeyIndex;
///
/// assert!(KeyIndex::Normal(0).is_valid());
/// assert!(!KeyIndex::Normal(2_147_483_648).is_valid());
/// assert!(KeyIndex::Hardened(2_147_483_648).is_valid());
/// ```
pub fn is_valid(self) -> bool { pub fn is_valid(self) -> bool {
match self { match self {
KeyIndex::Normal(i) => i < HARDENED_KEY_START_INDEX, KeyIndex::Normal(i) => i < HARDENED_KEY_START_INDEX,
@ -46,20 +35,6 @@ impl KeyIndex {
} }
/// Generate Hardened KeyIndex from normalize index value. /// Generate Hardened KeyIndex from normalize index value.
///
/// # Examples
///
/// ```rust
/// # extern crate hdwallet;
/// use hdwallet::KeyIndex;
///
/// // hardended key from zero
/// let hardened_index_zero = KeyIndex::hardened_from_normalize_index(0).unwrap();
/// assert_eq!(hardened_index_zero, KeyIndex::Hardened(2_147_483_648));
/// // also allow raw index for convernient
/// let hardened_index_zero = KeyIndex::hardened_from_normalize_index(2_147_483_648).unwrap();
/// assert_eq!(hardened_index_zero, KeyIndex::Hardened(2_147_483_648));
/// ```
pub fn hardened_from_normalize_index(i: u32) -> Result<KeyIndex, Error> { pub fn hardened_from_normalize_index(i: u32) -> Result<KeyIndex, Error> {
if i < HARDENED_KEY_START_INDEX { if i < HARDENED_KEY_START_INDEX {
Ok(KeyIndex::Hardened(HARDENED_KEY_START_INDEX + i)) Ok(KeyIndex::Hardened(HARDENED_KEY_START_INDEX + i))
@ -69,18 +44,6 @@ impl KeyIndex {
} }
/// Generate KeyIndex from raw index value. /// Generate KeyIndex from raw index value.
///
/// # Examples
///
/// ```rust
/// # extern crate hdwallet;
/// use hdwallet::KeyIndex;
///
/// let normal_key = KeyIndex::from_index(0).unwrap();
/// assert_eq!(normal_key, KeyIndex::Normal(0));
/// let hardened_key = KeyIndex::from_index(2_147_483_648).unwrap();
/// assert_eq!(hardened_key, KeyIndex::Hardened(2_147_483_648));
/// ```
pub fn from_index(i: u32) -> Result<Self, Error> { pub fn from_index(i: u32) -> Result<Self, Error> {
if i < HARDENED_KEY_START_INDEX { if i < HARDENED_KEY_START_INDEX {
Ok(KeyIndex::Normal(i)) Ok(KeyIndex::Normal(i))
@ -99,19 +62,6 @@ impl From<u32> for KeyIndex {
/// ExtendedPrivKey is used for child key derivation. /// ExtendedPrivKey is used for child key derivation.
/// See [secp256k1 crate documentation](https://docs.rs/secp256k1) for SecretKey signatures usage. /// See [secp256k1 crate documentation](https://docs.rs/secp256k1) for SecretKey signatures usage.
///
/// # Examples
///
/// ```rust
/// # extern crate hdwallet;
/// use hdwallet::{ExtendedPrivKey, KeyIndex};
///
/// let master_key = ExtendedPrivKey::random().unwrap();
/// let hardened_key_index = KeyIndex::hardened_from_normalize_index(0).unwrap();
/// let hardended_child_priv_key = master_key.derive_private_key(hardened_key_index).unwrap();
/// let normal_key_index = KeyIndex::Normal(0);
/// let noamal_child_priv_key = master_key.derive_private_key(normal_key_index).unwrap();
/// ```
#[derive(Debug, Clone, PartialEq, Eq)] #[derive(Debug, Clone, PartialEq, Eq)]
pub struct ExtendedPrivKey { pub struct ExtendedPrivKey {
pub private_key: SecretKey, pub private_key: SecretKey,

Binary file not shown.

Binary file not shown.

View File

@ -1,17 +1,12 @@
#[macro_use]
extern crate rust_embed;
mod lightclient;
mod grpcconnector;
mod lightwallet;
mod commands;
use std::io::{Result, Error, ErrorKind}; use std::io::{Result, Error, ErrorKind};
use std::sync::{Arc}; use std::sync::{Arc};
use std::sync::mpsc::{channel, Sender, Receiver}; use std::sync::mpsc::{channel, Sender, Receiver};
use std::time::Duration; use std::time::Duration;
use lightclient::{LightClient, LightClientConfig}; use zecwalletlitelib::{grpcconnector, commands,
lightclient::{self, LightClient, LightClientConfig},
ANCHOR_OFFSET,
};
use log::{info, error, LevelFilter}; use log::{info, error, LevelFilter};
use log4rs::append::rolling_file::RollingFileAppender; use log4rs::append::rolling_file::RollingFileAppender;
@ -29,15 +24,6 @@ use rustyline::Editor;
use clap::{Arg, App}; use clap::{Arg, App};
pub mod grpc_client {
include!(concat!(env!("OUT_DIR"), "/cash.z.wallet.sdk.rpc.rs"));
}
#[derive(RustEmbed)]
#[folder = "zcash-params/"]
pub struct SaplingParams;
const ANCHOR_OFFSET: u32 = 4;
/// Build the Logging config /// Build the Logging config
fn get_log_config(config: &LightClientConfig) -> Result<Config> { fn get_log_config(config: &LightClientConfig) -> Result<Config> {