use ccl::{Bridge, Network};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let bridge = Bridge::new()?;
let mnemonic = bridge.crypto().generate_mnemonic(24)?;
println!("Generated 24-word mnemonic: {}", mnemonic);
println!(" valid? {}", bridge.crypto().validate_mnemonic(&mnemonic));
println!(
" 'not a real mnemonic' valid? {}",
bridge.crypto().validate_mnemonic("not a real mnemonic")
);
println!("Blake2b-256('Hello'): {}", bridge.crypto().blake2b_256("48656c6c6f")?);
println!("Blake2b-224('Hello'): {}", bridge.crypto().blake2b_224("48656c6c6f")?);
let created = bridge.account().create(Network::Testnet)?;
let account: serde_json::Value = serde_json::from_str(&created)?;
let mnemonic = account["mnemonic"].as_str().unwrap();
let priv_ext = bridge.account().get_private_key(mnemonic, Network::Testnet, 0, 0)?;
let pub_key = bridge.account().get_public_key(mnemonic, Network::Testnet, 0, 0)?;
let message_hex = "68656c6c6f"; let signature = bridge.crypto().sign(message_hex, &priv_ext[..64])?;
println!("Ed25519 signature: {}", signature);
let fake_sig = "00".repeat(64);
println!(
" verify(fake signature) -> {}",
bridge.crypto().verify(&fake_sig, message_hex, &pub_key)
);
let addr = account["base_address"].as_str().unwrap();
println!("Address valid? {}", bridge.address().validate(addr));
println!("Address info : {}", bridge.address().info(addr)?);
let raw = bridge.address().to_bytes(addr)?;
println!(
"Address -> bytes -> address round-trips: {}",
bridge.address().from_bytes(&raw)? == addr
);
Ok(())
}