Lines Matching +full:0 +full:x01
25 #define NET_MIC_LEN(pdu) (((pdu)[1] & 0x80) ? 8 : 4)
49 return 0; in bt_mesh_aes_cmac()
58 if (err < 0) { in bt_mesh_k1()
88 pad = 0x01; in bt_mesh_k2()
90 sg[0].data = NULL; in bt_mesh_k2()
91 sg[0].len = 0; in bt_mesh_k2()
102 net_id[0] = out[15] & 0x7f; in bt_mesh_k2()
104 sg[0].data = out; in bt_mesh_k2()
105 sg[0].len = sizeof(out); in bt_mesh_k2()
106 pad = 0x02; in bt_mesh_k2()
115 pad = 0x03; in bt_mesh_k2()
124 BT_DBG("NID 0x%02x enc_key %s", net_id[0], bt_hex(enc_key, 16)); in bt_mesh_k2()
127 return 0; in bt_mesh_k2()
132 u8_t id64[] = { 'i', 'd', '6', '4', 0x01 }; in bt_mesh_k3()
154 return 0; in bt_mesh_k3()
159 u8_t id6[] = { 'i', 'd', '6', 0x01 }; in bt_mesh_k4()
179 out[0] = tmp[15] & BIT_MASK(6); in bt_mesh_k4()
181 return 0; in bt_mesh_k4()
186 const char *id128 = "id128\x01"; in bt_mesh_id128()
208 if (msg_len < 1 || aad_len >= 0xff00) { in bt_mesh_ccm_decrypt()
212 /* C_mic = e(AppKey, 0x01 || nonce || 0x0000) */ in bt_mesh_ccm_decrypt()
213 pmsg[0] = 0x01; in bt_mesh_ccm_decrypt()
215 sys_put_be16(0x0000, pmsg + 14); in bt_mesh_ccm_decrypt()
222 /* X_0 = e(AppKey, 0x09 || nonce || length) */ in bt_mesh_ccm_decrypt()
224 pmsg[0] = 0x19 | (aad_len ? 0x40 : 0x00); in bt_mesh_ccm_decrypt()
226 pmsg[0] = 0x09 | (aad_len ? 0x40 : 0x00); in bt_mesh_ccm_decrypt()
241 for (i = 0; i < sizeof(u16_t); i++) { in bt_mesh_ccm_decrypt()
245 j = 0; in bt_mesh_ccm_decrypt()
254 i = 0; in bt_mesh_ccm_decrypt()
262 for (i = 0; i < aad_len; i++, j++) { in bt_mesh_ccm_decrypt()
282 for (j = 0; j < blk_cnt; j++) { in bt_mesh_ccm_decrypt()
284 /* C_1 = e(AppKey, 0x01 || nonce || 0x0001) */ in bt_mesh_ccm_decrypt()
285 pmsg[0] = 0x01; in bt_mesh_ccm_decrypt()
294 /* Encrypted = Payload[0-15] ^ C_1 */ in bt_mesh_ccm_decrypt()
295 for (i = 0; i < last_blk; i++) { in bt_mesh_ccm_decrypt()
301 /* X_1 = e(AppKey, X_0 ^ Payload[0-15]) */ in bt_mesh_ccm_decrypt()
302 for (i = 0; i < last_blk; i++) { in bt_mesh_ccm_decrypt()
307 pmsg[i] = Xn[i] ^ 0x00; in bt_mesh_ccm_decrypt()
316 for (i = 0; i < sizeof(mic); i++) { in bt_mesh_ccm_decrypt()
320 /* C_1 = e(AppKey, 0x01 || nonce || 0x0001) */ in bt_mesh_ccm_decrypt()
321 pmsg[0] = 0x01; in bt_mesh_ccm_decrypt()
330 /* Encrypted = Payload[0-15] ^ C_1 */ in bt_mesh_ccm_decrypt()
331 for (i = 0; i < 16; i++) { in bt_mesh_ccm_decrypt()
337 /* X_1 = e(AppKey, X_0 ^ Payload[0-15]) */ in bt_mesh_ccm_decrypt()
338 for (i = 0; i < 16; i++) { in bt_mesh_ccm_decrypt()
353 return 0; in bt_mesh_ccm_decrypt()
372 if (aad_len >= 0xff00) { in bt_mesh_ccm_encrypt()
376 /* C_mic = e(AppKey, 0x01 || nonce || 0x0000) */ in bt_mesh_ccm_encrypt()
377 pmsg[0] = 0x01; in bt_mesh_ccm_encrypt()
379 sys_put_be16(0x0000, pmsg + 14); in bt_mesh_ccm_encrypt()
386 /* X_0 = e(AppKey, 0x09 || nonce || length) */ in bt_mesh_ccm_encrypt()
388 pmsg[0] = 0x19 | (aad_len ? 0x40 : 0x00); in bt_mesh_ccm_encrypt()
390 pmsg[0] = 0x09 | (aad_len ? 0x40 : 0x00); in bt_mesh_ccm_encrypt()
405 for (i = 0; i < sizeof(u16_t); i++) { in bt_mesh_ccm_encrypt()
409 j = 0; in bt_mesh_ccm_encrypt()
418 i = 0; in bt_mesh_ccm_encrypt()
426 for (i = 0; i < aad_len; i++, j++) { in bt_mesh_ccm_encrypt()
446 for (j = 0; j < blk_cnt; j++) { in bt_mesh_ccm_encrypt()
448 /* X_1 = e(AppKey, X_0 ^ Payload[0-15]) */ in bt_mesh_ccm_encrypt()
449 for (i = 0; i < last_blk; i++) { in bt_mesh_ccm_encrypt()
453 pmsg[i] = Xn[i] ^ 0x00; in bt_mesh_ccm_encrypt()
462 for (i = 0; i < sizeof(mic); i++) { in bt_mesh_ccm_encrypt()
466 /* C_1 = e(AppKey, 0x01 || nonce || 0x0001) */ in bt_mesh_ccm_encrypt()
467 pmsg[0] = 0x01; in bt_mesh_ccm_encrypt()
476 /* Encrypted = Payload[0-15] ^ C_1 */ in bt_mesh_ccm_encrypt()
477 for (i = 0; i < last_blk; i++) { in bt_mesh_ccm_encrypt()
482 /* X_1 = e(AppKey, X_0 ^ Payload[0-15]) */ in bt_mesh_ccm_encrypt()
483 for (i = 0; i < 16; i++) { in bt_mesh_ccm_encrypt()
492 /* C_1 = e(AppKey, 0x01 || nonce || 0x0001) */ in bt_mesh_ccm_encrypt()
493 pmsg[0] = 0x01; in bt_mesh_ccm_encrypt()
502 /* Encrypted = Payload[0-15] ^ C_N */ in bt_mesh_ccm_encrypt()
503 for (i = 0; i < 16; i++) { in bt_mesh_ccm_encrypt()
513 return 0; in bt_mesh_ccm_encrypt()
521 nonce[0] = 0x03; in create_proxy_nonce()
524 nonce[1] = 0x00; in create_proxy_nonce()
536 nonce[7] = 0; in create_proxy_nonce()
537 nonce[8] = 0; in create_proxy_nonce()
548 nonce[0] = 0x00; in create_net_nonce()
563 nonce[7] = 0; in create_net_nonce()
564 nonce[8] = 0; in create_net_nonce()
573 u8_t priv_rand[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, }; in bt_mesh_net_obfuscate()
589 for (i = 0; i < 6; i++) { in bt_mesh_net_obfuscate()
593 return 0; in bt_mesh_net_obfuscate()
620 NULL, 0, &buf->om_data[7], mic_len); in bt_mesh_net_encrypt()
653 NULL, 0, &buf->om_data[7], mic_len); in bt_mesh_net_decrypt()
661 nonce[0] = 0x02; in create_app_nonce()
663 nonce[0] = 0x01; in create_app_nonce()
682 BT_DBG("dev_key %u src 0x%04x dst 0x%04x", dev_key, src, dst); in bt_mesh_app_encrypt()
683 BT_DBG("seq_num 0x%08x iv_index 0x%08x", seq_num, iv_index); in bt_mesh_app_encrypt()
691 ad ? 16 : 0, buf->om_data, APP_MIC_LEN(aszmic)); in bt_mesh_app_encrypt()
716 ad ? 16 : 0, out->om_data, APP_MIC_LEN(aszmic)); in bt_mesh_app_decrypt()
724 /* reversed, 8-bit, poly=0x07 */
726 0x00, 0x91, 0xe3, 0x72, 0x07, 0x96, 0xe4, 0x75,
727 0x0e, 0x9f, 0xed, 0x7c, 0x09, 0x98, 0xea, 0x7b,
728 0x1c, 0x8d, 0xff, 0x6e, 0x1b, 0x8a, 0xf8, 0x69,
729 0x12, 0x83, 0xf1, 0x60, 0x15, 0x84, 0xf6, 0x67,
731 0x38, 0xa9, 0xdb, 0x4a, 0x3f, 0xae, 0xdc, 0x4d,
732 0x36, 0xa7, 0xd5, 0x44, 0x31, 0xa0, 0xd2, 0x43,
733 0x24, 0xb5, 0xc7, 0x56, 0x23, 0xb2, 0xc0, 0x51,
734 0x2a, 0xbb, 0xc9, 0x58, 0x2d, 0xbc, 0xce, 0x5f,
736 0x70, 0xe1, 0x93, 0x02, 0x77, 0xe6, 0x94, 0x05,
737 0x7e, 0xef, 0x9d, 0x0c, 0x79, 0xe8, 0x9a, 0x0b,
738 0x6c, 0xfd, 0x8f, 0x1e, 0x6b, 0xfa, 0x88, 0x19,
739 0x62, 0xf3, 0x81, 0x10, 0x65, 0xf4, 0x86, 0x17,
741 0x48, 0xd9, 0xab, 0x3a, 0x4f, 0xde, 0xac, 0x3d,
742 0x46, 0xd7, 0xa5, 0x34, 0x41, 0xd0, 0xa2, 0x33,
743 0x54, 0xc5, 0xb7, 0x26, 0x53, 0xc2, 0xb0, 0x21,
744 0x5a, 0xcb, 0xb9, 0x28, 0x5d, 0xcc, 0xbe, 0x2f,
746 0xe0, 0x71, 0x03, 0x92, 0xe7, 0x76, 0x04, 0x95,
747 0xee, 0x7f, 0x0d, 0x9c, 0xe9, 0x78, 0x0a, 0x9b,
748 0xfc, 0x6d, 0x1f, 0x8e, 0xfb, 0x6a, 0x18, 0x89,
749 0xf2, 0x63, 0x11, 0x80, 0xf5, 0x64, 0x16, 0x87,
751 0xd8, 0x49, 0x3b, 0xaa, 0xdf, 0x4e, 0x3c, 0xad,
752 0xd6, 0x47, 0x35, 0xa4, 0xd1, 0x40, 0x32, 0xa3,
753 0xc4, 0x55, 0x27, 0xb6, 0xc3, 0x52, 0x20, 0xb1,
754 0xca, 0x5b, 0x29, 0xb8, 0xcd, 0x5c, 0x2e, 0xbf,
756 0x90, 0x01, 0x73, 0xe2, 0x97, 0x06, 0x74, 0xe5,
757 0x9e, 0x0f, 0x7d, 0xec, 0x99, 0x08, 0x7a, 0xeb,
758 0x8c, 0x1d, 0x6f, 0xfe, 0x8b, 0x1a, 0x68, 0xf9,
759 0x82, 0x13, 0x61, 0xf0, 0x85, 0x14, 0x66, 0xf7,
761 0xa8, 0x39, 0x4b, 0xda, 0xaf, 0x3e, 0x4c, 0xdd,
762 0xa6, 0x37, 0x45, 0xd4, 0xa1, 0x30, 0x42, 0xd3,
763 0xb4, 0x25, 0x57, 0xc6, 0xb3, 0x22, 0x50, 0xc1,
764 0xba, 0x2b, 0x59, 0xc8, 0xbd, 0x2c, 0x5e, 0xcf
769 u8_t fcs = 0xff; in bt_mesh_fcs_calc()
775 BT_DBG("fcs 0x%02x", 0xff - fcs); in bt_mesh_fcs_calc()
777 return 0xff - fcs; in bt_mesh_fcs_calc()
784 u8_t fcs = 0xff; in bt_mesh_fcs_check()
790 return crc_table[fcs ^ received_fcs] == 0xcf; in bt_mesh_fcs_check()
809 *addr = (sys_get_be16(&tmp[14]) & 0x3fff) | 0x8000; in bt_mesh_virtual_addr()
811 return 0; in bt_mesh_virtual_addr()
816 const u8_t conf_salt_key[16] = { 0 }; in bt_mesh_prov_conf_salt()
842 return bt_mesh_ccm_decrypt(key, nonce, data, 25, NULL, 0, out, 8); in bt_mesh_prov_decrypt()
854 BT_DBG("IV Index 0x%08x", iv_index); in bt_mesh_beacon_auth()
856 msg[0] = flags; in bt_mesh_beacon_auth()