sign doing regular signing
This commit is contained in:
parent
a2fa178c16
commit
72a62849e1
|
@ -23,12 +23,13 @@ required-features = ["dotenv"]
|
|||
#name = "ledger"
|
||||
#path = "src/main/ledger.rs"
|
||||
|
||||
#[[bin]]
|
||||
#name = "sign"
|
||||
#path = "src/main/sign.rs"
|
||||
[[bin]]
|
||||
name = "sign"
|
||||
path = "src/main/sign.rs"
|
||||
|
||||
[lib]
|
||||
name = "warp_api_ffi"
|
||||
# cdylib
|
||||
crate-type = ["rlib"]
|
||||
|
||||
[dependencies]
|
||||
|
|
127
src/main/sign.rs
127
src/main/sign.rs
|
@ -1,65 +1,86 @@
|
|||
use clap::{Arg, Command};
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Write};
|
||||
use std::str::FromStr;
|
||||
use sync::{KeyHelpers, Tx};
|
||||
use zcash_client_backend::encoding::decode_extended_spending_key;
|
||||
// use clap::{Arg, Command};
|
||||
// use std::fs::File;
|
||||
// use std::io::{Read, Write};
|
||||
// use std::str::FromStr;
|
||||
// use sync::{KeyHelpers, Tx};
|
||||
// use zcash_client_backend::encoding::decode_extended_spending_key;
|
||||
// use zcash_params::coin::CoinType;
|
||||
// use zcash_primitives::consensus::{Network, Parameters};
|
||||
// use zcash_proofs::prover::LocalTxProver;
|
||||
|
||||
use std::fs;
|
||||
|
||||
use warp_api_ffi::TransactionPlan;
|
||||
use zcash_params::coin::CoinType;
|
||||
use zcash_primitives::consensus::{Network, Parameters};
|
||||
use zcash_proofs::prover::LocalTxProver;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> anyhow::Result<()> {
|
||||
let matches = Command::new("Cold wallet Signer CLI")
|
||||
.version("1.0")
|
||||
.arg(Arg::new("coin").short('c').long("coin").takes_value(true))
|
||||
.arg(
|
||||
Arg::new("tx_filename")
|
||||
.short('t')
|
||||
.long("tx")
|
||||
.takes_value(true),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("out_filename")
|
||||
.short('o')
|
||||
.long("out")
|
||||
.takes_value(true),
|
||||
)
|
||||
.get_matches();
|
||||
println!("Hello world!");
|
||||
|
||||
let coin = matches.value_of("coin").expect("coin argument missing");
|
||||
let tx_filename = matches
|
||||
.value_of("tx_filename")
|
||||
.expect("input filename missing");
|
||||
let out_filename = matches
|
||||
.value_of("out_filename")
|
||||
.expect("output filename missing");
|
||||
let tx_plan = fs::read_to_string("tx.json").expect("Should have been able to read the file");
|
||||
let coin = 0;
|
||||
let account = 1;
|
||||
|
||||
let (coin_type, network) = match coin {
|
||||
"zcash" => (CoinType::Zcash, Network::MainNetwork),
|
||||
"ycash" => (CoinType::Ycash, Network::YCashMainNetwork),
|
||||
_ => panic!("Invalid coin"),
|
||||
let res = async {
|
||||
warp_api_ffi::init_coin(coin, "/home/conrado/databases/zec.db").unwrap();
|
||||
let tx_plan: TransactionPlan = serde_json::from_str(&tx_plan)?;
|
||||
let raw_tx = warp_api_ffi::api::payment_v2::sign_plan(coin, account, &tx_plan)?;
|
||||
let tx_str = base64::encode(&raw_tx);
|
||||
Ok::<_, anyhow::Error>(tx_str)
|
||||
};
|
||||
let key = dotenv::var("KEY").unwrap();
|
||||
let index = u32::from_str(&dotenv::var("INDEX").unwrap_or_else(|_| "0".to_string())).unwrap();
|
||||
let kh = KeyHelpers::new(coin_type);
|
||||
let (_seed, sk, _ivk, _address) = kh.decode_key(&key, index)?;
|
||||
let res = res.await.unwrap();
|
||||
println!("{}", res);
|
||||
|
||||
let sk = sk.unwrap();
|
||||
let sk =
|
||||
decode_extended_spending_key(network.hrp_sapling_extended_spending_key(), &sk)?.unwrap();
|
||||
// let matches = Command::new("Cold wallet Signer CLI")
|
||||
// .version("1.0")
|
||||
// .arg(Arg::new("coin").short('c').long("coin").takes_value(true))
|
||||
// .arg(
|
||||
// Arg::new("tx_filename")
|
||||
// .short('t')
|
||||
// .long("tx")
|
||||
// .takes_value(true),
|
||||
// )
|
||||
// .arg(
|
||||
// Arg::new("out_filename")
|
||||
// .short('o')
|
||||
// .long("out")
|
||||
// .takes_value(true),
|
||||
// )
|
||||
// .get_matches();
|
||||
|
||||
let mut file = File::open(tx_filename)?;
|
||||
let mut s = String::new();
|
||||
file.read_to_string(&mut s).unwrap();
|
||||
let tx: Tx = serde_json::from_str(&s)?;
|
||||
let prover = LocalTxProver::with_default_location()
|
||||
.ok_or_else(|| anyhow::anyhow!("Cannot create prover. Missing zcash-params?"))?;
|
||||
let raw_tx = tx.sign(None, &sk, &prover, |p| {
|
||||
println!("Progress {}", p.cur());
|
||||
})?;
|
||||
// let coin = matches.value_of("coin").expect("coin argument missing");
|
||||
// let tx_filename = matches
|
||||
// .value_of("tx_filename")
|
||||
// .expect("input filename missing");
|
||||
// let out_filename = matches
|
||||
// .value_of("out_filename")
|
||||
// .expect("output filename missing");
|
||||
|
||||
let mut out_file = File::create(out_filename)?;
|
||||
writeln!(out_file, "{}", hex::encode(&raw_tx))?;
|
||||
// let (coin_type, network) = match coin {
|
||||
// "zcash" => (CoinType::Zcash, Network::MainNetwork),
|
||||
// "ycash" => (CoinType::Ycash, Network::YCashMainNetwork),
|
||||
// _ => panic!("Invalid coin"),
|
||||
// };
|
||||
// let key = dotenv::var("KEY").unwrap();
|
||||
// let index = u32::from_str(&dotenv::var("INDEX").unwrap_or_else(|_| "0".to_string())).unwrap();
|
||||
// let kh = KeyHelpers::new(coin_type);
|
||||
// let (_seed, sk, _ivk, _address) = kh.decode_key(&key, index)?;
|
||||
|
||||
// let sk = sk.unwrap();
|
||||
// let sk =
|
||||
// decode_extended_spending_key(network.hrp_sapling_extended_spending_key(), &sk)?.unwrap();
|
||||
|
||||
// let mut file = File::open(tx_filename)?;
|
||||
// let mut s = String::new();
|
||||
// file.read_to_string(&mut s).unwrap();
|
||||
// let tx: Tx = serde_json::from_str(&s)?;
|
||||
// let prover = LocalTxProver::with_default_location()
|
||||
// .ok_or_else(|| anyhow::anyhow!("Cannot create prover. Missing zcash-params?"))?;
|
||||
// let raw_tx = tx.sign(None, &sk, &prover, |p| {
|
||||
// println!("Progress {}", p.cur());
|
||||
// })?;
|
||||
|
||||
// let mut out_file = File::create(out_filename)?;
|
||||
// writeln!(out_file, "{}", hex::encode(&raw_tx))?;
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue