Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
def nuki_states_request():
    cmd_id  = 0x000C
    cmd_id  = utils.pack_u16(cmd_id)
    message = request_data(cmd_id)
    return message
Esempio n. 8
0
def challenge_request(auth_id, key):
    cmd_id  = 0x0004
    cmd_id  = utils.pack_u16(cmd_id)
    message = request_data(cmd_id)
    return message
Esempio n. 9
0
def public_key(key):
    cmd_id  = 0x0003
    cmd_id  = utils.pack_u16(cmd_id)
    message = cmd_id + key
    return message
Esempio n. 10
0
def public_key_request():
    cmd_id  = 0x0003
    cmd_id  = utils.pack_u16(cmd_id)
    message = request_data(cmd_id)
    return message
Esempio n. 11
0
def request_data(additional_data):
    cmd_id  = 0x0001
    cmd_id  = utils.pack_u16(cmd_id)
    message = cmd_id + additional_data
    return message
Esempio n. 12
0
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
Esempio n. 13
0
def config_request_encode():
    cmd_id     = 0x0014
    cmd_id     = utils.pack_u16(cmd_id)
    message = cmd_id
    return message
Esempio n. 14
0
def battery_report_request():
    cmd_id    = 0x0011
    cmd_id    = utils.pack_u16(cmd_id)
    message   = request_data(cmd_id)
    return message