unc-ledger 0.7.2

Transport library to integrate with UNC Ledger app
Documentation
# unc-ledger-rs

[![Rust](https://github.com/khorolets/unc-ledger-rs/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/khorolets/unc-ledger-rs/actions/workflows/rust.yml)
[![](http://meritbadge.herokuapp.com/unc-ledger)](https://crates.io/crates/unc-ledger)
[![]( https://docs.rs/unc-ledger/badge.svg)]( https://docs.rs/unc-ledger/)

It is UNC <-> Ledger transport


Provides a set of commands that can be executed to communicate with UNC App installed on Ledger device:

* Read PublicKey from Ledger device by HD Path
* Sign a Transaction


## Examples


### Get PublicKey from Ledger


```rust
use unc_ledger::get_public_key;
use slip10::BIP32Path;
use std::str::FromStr;

let hd_path = BIP32Path::from_str("44'/397'/0'/0'/1'").unwrap();
let public_key = get_public_key(hd_path).unwrap();
println!("{:#?}", public_key);
```


#### Trick


To convert the answer into `unc_crypto::PublicKey` do:

```rust
let public_key = unc_crypto::PublicKey::ED25519(
    unc_crypto::ED25519PublicKey::from(
        public_key.to_bytes(),
    )
);
```


### How to sign a transaction


```rust
use unc_ledger::{sign_transaction, SignTarget};
use unc_primitives::borsh::BorshSerialize;
use slip10::BIP32Path;
use std::str::FromStr;

let hd_path = BIP32Path::from_str("44'/397'/0'/0'/1'").unwrap();
let borsh_transaction = unc_unsigned_transaction.try_to_vec().unwrap();
let signature = sign_transaction(SignTarget::BorshUnsignedTx(borsh_transaction), hd_path).unwrap();
println!("{:#?}", signature);
```


#### Trick

To convert the answer into `unc_crypto::Signature` do:


```rust
let signature = unc_crypto::Signature::from_parts(unc_crypto::KeyType::ED25519, &signature)
    .expect("Signature is not expected to fail on deserialization");
```

## Executable examples

### Get version

```bash
RUST_LOG=info cargo run --example get_version
```

### Get PublicKey from Ledger

#### Display

```bash
RUST_LOG=info cargo run --example get_public_key_display
```
#### Silent

```bash
RUST_LOG=info cargo run --example get_public_key_silent
```

### Get WalletID from Ledger

```bash
RUST_LOG=info cargo run --example get_wallet_id
```
### Sign a transaction

#### Transfer

```bash
RUST_LOG=info cargo run --example sign_transfer
```

#### Other

```bash
export RUST_LOG=info
cargo run --example sign_create_account
cargo run --example sign_delete_account_short
cargo run --example sign_delete_account_long
cargo run --example sign_delete_key_ed25519
cargo run --example sign_delete_key_secp256k1
cargo run --example sign_stake
cargo run --example sign_add_key_fullaccess
cargo run --example sign_add_key_functioncall
cargo run --example sign_deploy_contract
cargo run --example sign_functioncall_str
cargo run --example sign_functioncall_bin
cargo run --example sign_functioncall_str_parse_err
cargo run --example sign_batch_all_actions
```

### Sign a NEP-413 message

```bash
RUST_LOG=info cargo run --example sign_nep_413_message
```

### Sign a NEP-366 delegate action

```bash
RUST_LOG=info cargo run --example sign_nep_366_delegate_action
```