```rust ... let libname = ehsmlibraryname(); let ehsm = EHSMContext::new(libname.aspath()).expect("Failed to load ehsm library functions"); let session = getloggedinsession(&ctx,SUPIN, 0,None, None).expect("Failed to get session"); let mut oh: CKOBJECTHANDLE = CKINVALIDHANDLE; if ehsm.hasbitcoinkey(session, &mut oh).unwrap() { println!("already has btc key."); } else { ehsm.importbitcoin_key(session, &hex::decode("000102030405060708090a0b0c0d0e0f").unwrap()) .expect("Failed to import key"); }
// empty index vector is the root key or "m"
// for "m/0", just add 0 to indexes, i.e. indexes.push(0) etc. to build the BIP32 path
let mut indexes: Vec<u32> = Vec::new();
let net: u32 = 0x0488B21Eu32;
let xpub = ehsm.get_bitcoin_pub(session, &indexes, net).expect("Failed to get btc xpub");
...
// sign a 32 byte transaction hash
let sig = ehsm.sign_bitcoin_hash(session,&vec![0;32],&indexes).expect("Failed to sign hash");
``` Also see the integration tests here: * tests.rs