apple-ble 0.2.2

A library for interfacing with apple devices via BLE.
Documentation
use std::error::Error;

use sha2::{Digest, Sha256};

use crate::session::Session;
pub fn get_first_two_bytes_of_sha256(input: impl AsRef<[u8]>) -> [u8; 2] {
    let mut hasher = Sha256::new();
    hasher.update(input);
    let result = hasher.finalize();
    [result[0], result[1]]
}
pub fn set_device_addr(session: &mut Session, device_addr: &[u8]) -> Result<(), Box<dyn Error>> {
    assert!(!session.mac_changed, "Can only change mac once.");
    session.mac_changed = true;
    sudo::escalate_if_needed()?;
    std::process::Command::new("bdaddr").args([
        "-i",
        session.adapter.name(),
        &eui48::MacAddress::from_bytes(device_addr)?.to_hex_string(),
    ]);
    systemctl::restart("bluetooth.service")?;
    Ok(())
}