def error_bridge(error_code, command): cmd_id = 0x8012 cmd_id = utils.pack_u16(cmd_id) error_code = utils.pack_u8(error_code) command = utils.pack_u16(command) message = cmd_id + error_code + command return message
def authenticator(public_key_bridge, public_key_sl, challenge, key): cmd_id = 0x0005 cmd_id = utils.pack_u16(cmd_id) r = public_key_bridge + public_key_sl + challenge auth_h = nacl.bindings.crypto_auth_hmacsha256(r, key) message = cmd_id + auth_h return message
def authorization_id_confirmation(auth_id, nonce_abf, key): cmd_id = 0x001E cmd_id = utils.pack_u16(cmd_id) auth_id = utils.pack_u32(auth_id) message = auth_id + nonce_abf auth_h = nacl.bindings.crypto_auth_hmacsha256(message, key) message = cmd_id + auth_h + auth_id return message
def lock_action(auth_id, lock_action, bridge_id, flags, nonce_k): cmd_id = 0x000D cmd_id = utils.pack_u16(cmd_id) lock_action = utils.pack_u8(lock_action) bridge_id = utils.pack_u32(bridge_id) flags = utils.pack_u8(flags) message = cmd_id + lock_action + bridge_id + flags + nonce_k return message
def encrypt_tx(auth_id, message, key, nonce=''): auth_id = utils.pack_u32(auth_id) pdata = auth_id + message pdata = utils.add_crc(pdata) encrypted = encrypt(pdata, key, nonce) nonce = encrypted[:24] pdata = encrypted[24:] length = len(pdata) length = utils.pack_u16(length) message = nonce + auth_id + length + pdata return message
def authorization_data(id_type, bridge_id, name, nonce_abf, nonce_k, key): cmd_id = 0x0006 cmd_id = utils.pack_u16(cmd_id) id_type = utils.pack_u8(id_type) bridge_id = utils.pack_u32(bridge_id) z_fill = a2b_hex('0000000000000000000000000000000000000000000000000000000000000000') name = a2b_hex(hexlify(name))[:15] + z_fill name = name[:32] message = id_type + bridge_id + name + nonce_abf + nonce_k auth_h = nacl.bindings.crypto_auth_hmacsha256(message, key) message = cmd_id + auth_h + id_type + bridge_id + name + nonce_abf return message
def nuki_states_request(): cmd_id = 0x000C cmd_id = utils.pack_u16(cmd_id) message = request_data(cmd_id) return message
def challenge_request(auth_id, key): cmd_id = 0x0004 cmd_id = utils.pack_u16(cmd_id) message = request_data(cmd_id) return message
def public_key(key): cmd_id = 0x0003 cmd_id = utils.pack_u16(cmd_id) message = cmd_id + key return message
def public_key_request(): cmd_id = 0x0003 cmd_id = utils.pack_u16(cmd_id) message = request_data(cmd_id) return message
def request_data(additional_data): cmd_id = 0x0001 cmd_id = utils.pack_u16(cmd_id) message = cmd_id + additional_data return message
def update_time(time, nonce_k, sec_pin): cmd_id = 0x0021 cmd_id = utils.pack_u16(cmd_id) sec_pin = utils.pack_u16(sec_pin) message = cmd_id + time + nonce_k + sec_pin return message
def config_request_encode(): cmd_id = 0x0014 cmd_id = utils.pack_u16(cmd_id) message = cmd_id return message
def battery_report_request(): cmd_id = 0x0011 cmd_id = utils.pack_u16(cmd_id) message = request_data(cmd_id) return message