Ledger Tests
This commit is contained in:
parent
3d94b41c25
commit
6ef1b31f9e
|
@ -1095,6 +1095,8 @@ impl DbAdapter {
|
||||||
)?;
|
)?;
|
||||||
self.connection
|
self.connection
|
||||||
.execute("DELETE FROM messages WHERE account = ?1", params![account])?;
|
.execute("DELETE FROM messages WHERE account = ?1", params![account])?;
|
||||||
|
self.connection
|
||||||
|
.execute("DELETE FROM hw_wallets WHERE account = ?1", params![account])?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ fn handle_error_code(code: u16) -> Result<()> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn apdu_hid(data: &[u8]) -> Result<Vec<u8>> {
|
async fn apdu(data: &[u8]) -> Result<Vec<u8>> {
|
||||||
let api = HidApi::new()?;
|
let api = HidApi::new()?;
|
||||||
let transport = TransportNativeHID::new(&api)?;
|
let transport = TransportNativeHID::new(&api)?;
|
||||||
let command = APDUCommand {
|
let command = APDUCommand {
|
||||||
|
@ -43,8 +43,9 @@ async fn apdu_hid(data: &[u8]) -> Result<Vec<u8>> {
|
||||||
|
|
||||||
const TEST_SERVER_IP: Option<&'static str> = option_env!("LEDGER_IP");
|
const TEST_SERVER_IP: Option<&'static str> = option_env!("LEDGER_IP");
|
||||||
|
|
||||||
async fn apdu_http(data: &[u8]) -> Vec<u8> {
|
async fn apdu_http(data: &[u8]) -> Result<Vec<u8>> {
|
||||||
let client = Client::new();
|
let client = Client::new();
|
||||||
|
let response = client
|
||||||
.post(&format!("http://{}:5000/apdu", TEST_SERVER_IP.unwrap()))
|
.post(&format!("http://{}:5000/apdu", TEST_SERVER_IP.unwrap()))
|
||||||
.body(format!("{{\"data\": \"{}\"}}", hex::encode(data)))
|
.body(format!("{{\"data\": \"{}\"}}", hex::encode(data)))
|
||||||
.send()
|
.send()
|
||||||
|
@ -155,7 +156,7 @@ pub async fn ledger_set_orchard_merkle_proof(
|
||||||
|
|
||||||
pub async fn ledger_add_t_input(amount: u64) -> Result<()> {
|
pub async fn ledger_add_t_input(amount: u64) -> Result<()> {
|
||||||
let mut bb: Vec<u8> = vec![];
|
let mut bb: Vec<u8> = vec![];
|
||||||
bb.write_all(&hex!("E015010008"))?;
|
bb.write_all(&hex!("E015000008"))?;
|
||||||
bb.write_u64::<LE>(amount)?;
|
bb.write_u64::<LE>(amount)?;
|
||||||
apdu(&bb).await?;
|
apdu(&bb).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -301,11 +302,20 @@ pub async fn ledger_pedersen_hash(data: &[u8]) -> Result<Vec<u8>> {
|
||||||
Ok(cmu)
|
Ok(cmu)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn ledger_test_math(data: &[u8]) -> Result<Vec<u8>> {
|
pub async fn ledger_get_debug(i: u8) -> Result<Vec<u8>> {
|
||||||
let mut bb: Vec<u8> = vec![];
|
let mut bb: Vec<u8> = vec![];
|
||||||
bb.write_all(&hex!("E0FF0000"))?;
|
bb.write_all(&hex!("E0FE"))?;
|
||||||
bb.write_u8(data.len() as u8)?;
|
bb.write_u8(i)?;
|
||||||
bb.write_all(data)?;
|
bb.write_all(&hex!("0000"))?;
|
||||||
|
let res = apdu(&bb).await?;
|
||||||
|
Ok(res)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn ledger_test_math(i: u8) -> Result<Vec<u8>> {
|
||||||
|
let mut bb: Vec<u8> = vec![];
|
||||||
|
bb.write_all(&hex!("E0FF"))?;
|
||||||
|
bb.write_u8(i)?;
|
||||||
|
bb.write_all(&hex!("0000"))?;
|
||||||
let res = apdu(&bb).await?;
|
let res = apdu(&bb).await?;
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,17 +4,17 @@ use group::{Group, GroupEncoding};
|
||||||
use std::{
|
use std::{
|
||||||
fs::File,
|
fs::File,
|
||||||
io::{Read, Write},
|
io::{Read, Write},
|
||||||
path::Path,
|
path::Path, env,
|
||||||
};
|
};
|
||||||
|
|
||||||
use halo2_proofs::pasta::pallas::{self};
|
use halo2_proofs::pasta::pallas::{self};
|
||||||
use orchard::{
|
use orchard::{
|
||||||
circuit::{Circuit, ProvingKey},
|
circuit::{Circuit, ProvingKey},
|
||||||
keys::{Scope, SpendValidatingKey},
|
keys::{Scope, SpendValidatingKey, SpendingKey, SpendAuthorizingKey, FullViewingKey},
|
||||||
note::{ExtractedNoteCommitment, Nullifier, RandomSeed},
|
note::{ExtractedNoteCommitment, Nullifier, RandomSeed},
|
||||||
primitives::redpallas::{Signature, SpendAuth},
|
primitives::redpallas::{Signature, SpendAuth},
|
||||||
tree::MerklePath,
|
tree::MerklePath,
|
||||||
value::ValueCommitTrapdoor,
|
value::ValueCommitTrapdoor, Note,
|
||||||
};
|
};
|
||||||
use rand::{RngCore, SeedableRng};
|
use rand::{RngCore, SeedableRng};
|
||||||
use rand_chacha::ChaCha20Rng;
|
use rand_chacha::ChaCha20Rng;
|
||||||
|
@ -25,7 +25,7 @@ use warp_api_ffi::{
|
||||||
connect_lightwalletd,
|
connect_lightwalletd,
|
||||||
ledger::{
|
ledger::{
|
||||||
build_broadcast_tx, ledger_add_o_action, ledger_confirm_fee, ledger_init, ledger_init_tx,
|
build_broadcast_tx, ledger_add_o_action, ledger_confirm_fee, ledger_init, ledger_init_tx,
|
||||||
ledger_set_net_orchard, ledger_set_orchard_merkle_proof, ledger_set_stage,
|
ledger_set_net_orchard, ledger_set_orchard_merkle_proof, ledger_set_stage, ledger_test_math, ledger_get_o_fvk, ledger_get_debug, ledger_cmu,
|
||||||
},
|
},
|
||||||
TransactionPlan,
|
TransactionPlan,
|
||||||
};
|
};
|
||||||
|
@ -45,11 +45,63 @@ use hex_literal::hex;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
|
// let args = env::args();
|
||||||
|
// let device: u32 = args.next().unwrap().parse().unwrap();
|
||||||
// orchard_bundle::build_orchard().await.unwrap();
|
// orchard_bundle::build_orchard().await.unwrap();
|
||||||
|
// ledger_init().await.unwrap();
|
||||||
|
|
||||||
|
// let sk = ledger_test_math(0).await.unwrap();
|
||||||
|
// println!("SK {}", hex::encode(&sk));
|
||||||
|
|
||||||
|
let mut rng = ChaCha20Rng::from_seed([4u8; 32]);
|
||||||
|
let (_, _, note) = Note::dummy(&mut rng, None);
|
||||||
|
let cmx: ExtractedNoteCommitment = note.commitment().into();
|
||||||
|
println!("cmx {:?}", cmx);
|
||||||
|
|
||||||
|
let address = note.recipient().to_raw_address_bytes();
|
||||||
|
let value = note.value().inner();
|
||||||
|
let rseed = note.rseed().as_bytes();
|
||||||
|
let rho = note.rho().to_bytes();
|
||||||
|
|
||||||
|
println!("{}", hex::encode(&address));
|
||||||
|
println!("{} {}", value, hex::encode(value.to_le_bytes()));
|
||||||
|
println!("{}", hex::encode(rseed));
|
||||||
|
println!("{}", hex::encode(&rho));
|
||||||
|
|
||||||
|
let mut buffer = vec![];
|
||||||
|
buffer.write(&address).unwrap();
|
||||||
|
buffer.write_u64::<LE>(value).unwrap();
|
||||||
|
buffer.write(rseed).unwrap();
|
||||||
|
buffer.write(&rho).unwrap();
|
||||||
|
|
||||||
|
let cmu = ledger_cmu(&buffer).await.unwrap();
|
||||||
|
println!("cmx {:?}", hex::encode(&cmu));
|
||||||
|
|
||||||
|
// for i in 0..3 {
|
||||||
|
// let debug_data = ledger_get_debug(i).await.unwrap();
|
||||||
|
// println!("debug {}", hex::encode(&debug_data));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// for i in 0..10 {
|
||||||
|
// let sk = ledger_test_math(i).await.unwrap();
|
||||||
|
// println!("SK {}", hex::encode(&sk));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let o_fvk = ledger_get_o_fvk().await.unwrap();
|
||||||
|
// println!("FVK {}", hex::encode(&o_fvk));
|
||||||
|
|
||||||
|
// let sk = hex::decode("19778746bfdf33616075940a21c4011263e974ff7b7341a9a8e5713908d39dab").unwrap();
|
||||||
|
// let sk = SpendingKey::from_bytes(sk.try_into().unwrap()).unwrap();
|
||||||
|
// let ask = SpendAuthorizingKey::from(&sk);
|
||||||
|
// println!("ask {:?}", ask);
|
||||||
|
// let fvk = FullViewingKey::from(&sk);
|
||||||
|
// println!("fvk {}", hex::encode(fvk.to_bytes()));
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main2() -> Result<()> {
|
async fn main1() -> Result<()> {
|
||||||
let params_dir = Path::new(&std::env::var("HOME").unwrap()).join(".zcash-params");
|
let params_dir = Path::new(&std::env::var("HOME").unwrap()).join(".zcash-params");
|
||||||
let prover = LocalTxProver::new(
|
let prover = LocalTxProver::new(
|
||||||
¶ms_dir.join("sapling-spend.params"),
|
¶ms_dir.join("sapling-spend.params"),
|
||||||
|
|
Loading…
Reference in New Issue