blatann.gap.smp_crypto module
- blatann.gap.smp_crypto.lesc_pubkey_to_raw(public_key, little_endian=True)
Converts from a python public key to the raw (x, y) bytes for the nordic
- Return type:
- blatann.gap.smp_crypto.lesc_pubkey_from_raw(raw_key, little_endian=True)
Converts from raw (x, y) bytes to a public key that can be used for the DH request
- Return type:
EllipticCurvePublicKey
- blatann.gap.smp_crypto.lesc_privkey_from_raw(raw_priv_key, raw_pub_key, little_endian=True)
- Return type:
EllipticCurvePrivateKey
- blatann.gap.smp_crypto.lesc_generate_private_key()
Generates a new private key that can be used for LESC pairing
- Return type:
EllipticCurvePrivateKey- Returns:
The generated private key
- blatann.gap.smp_crypto.lesc_compute_dh_key(private_key, peer_public_key, little_endian=False)
Computes the DH key for LESC pairing given our private key and the peer’s public key
- Parameters:
private_key (
EllipticCurvePrivateKey) – Our private keypeer_public_key (
EllipticCurvePublicKey) – The peer’s public keylittle_endian – whether or not to return the shared secret in little endian
- Return type:
- Returns:
The shared secret
- blatann.gap.smp_crypto.ble_ah(key, p_rand)
Function for calculating the ah() hash function described in Bluetooth core specification 4.2 section 3.H.2.2.2.
This is used for resolving private addresses where a private address is prand[3] || aes-128(irk, prand[3]) % 2^24
- blatann.gap.smp_crypto.private_address_resolves(peer_addr, irk)
Checks if the given peer address can be resolved with the IRK
Private Resolvable Peer Addresses are in the format [4x:xx:xx:yy:yy:yy], where 4x:xx:xx is a random number hashed with the IRK to generate yy:yy:yy This function checks if the random number portion hashed with the IRK equals the hashed part of the address
- Parameters:
peer_addr (
PeerAddress) – The peer address to checkirk (
bytes) – The identity resolve key to try
- Return type:
- Returns:
True if it resolves, False if not