use bsv_rs::primitives::{sha256, to_hex, PrivateKey};
fn main() {
let private_key = PrivateKey::random();
let public_key = private_key.public_key();
let address = public_key.to_address();
let wif = private_key.to_wif();
assert_eq!(PrivateKey::from_wif(&wif).unwrap().to_wif(), wif);
let digest = sha256(b"Hello, BSV!");
let signature = private_key.sign(&digest).unwrap();
assert!(public_key.verify(&digest, &signature));
assert_eq!(
private_key.sign(&digest).unwrap().to_der(),
signature.to_der()
);
println!("address {address}");
println!("pubkey {}", to_hex(&public_key.to_compressed()));
println!("signature {}", to_hex(&signature.to_der()));
}