intiial commit
Dependencies: MAX8614X USBDevice max32630hsp_test
Diff: main.cpp
- Revision:
- 20:39857996a7c7
- Parent:
- 18:a0356b3e6ed9
- Child:
- 21:0a4f90fb3451
--- a/main.cpp Thu Aug 16 22:46:35 2018 +0000 +++ b/main.cpp Thu Aug 16 23:46:00 2018 +0000 @@ -63,6 +63,16 @@ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; + uint32_t expectedResponse_A_romID[RESPONSE_LEN32] = { // 160 bit, no ROM + 0xf987d79a, + 0xeb778ec7, + 0x33861bc8, + 0x745d4082, + 0x921e02fe, + 0x727d93c8, + 0x218e53ee, + 0x904e0c6b + }; uint8_t challenge_1[CHALLENGE_SZ_NO_SECRET] = { // 160 bit 0x5e, 0x81, 0x35, 0x24, 0x56, 0x63, 0xd6, 0x09, @@ -70,6 +80,16 @@ 0x52, 0x12, 0x84, 0x65, 0xcd, 0x0d, 0xe3, 0x01 }; + uint32_t expectedResponse_1_romID[RESPONSE_LEN32] = { // 160 bit + 0xfe3f805f, + 0x0af066bc, + 0xda0f55e2, + 0x0020ac16, + 0x13fa3406, + 0x59d0e5ae, + 0x79def309, + 0x685981a3 + }; uint8_t challenge_2[CHALLENGE_SZ_NO_SECRET] = { // 160 bit, no ROM 0xd2, 0xaa, 0x84, 0xc5, @@ -79,30 +99,6 @@ 0x4e, 0xc5, 0x7a, 0xe8 }; - uint8_t challenge_3[CHALLENGE_SZ_NO_SECRET] = { // 160 bit, no ROM - 0x21, 0x20, 0x22, 0x80, - 0xcc, 0x9d, 0x45, 0xaa, - 0xb8, 0x13, 0x3e, 0x96, - 0xd6, 0x53, 0x38, 0x0d, - 0x2a, 0xd5, 0xdd, 0x6b - }; - uint8_t challenge_4[CHALLENGE_SZ_NO_SECRET] = { // 160 bit, no ROM - 0x4c, 0x3c, 0x0a, 0xca, - 0x61, 0x8a, 0xbd, 0xf2, - 0x34, 0xd8, 0xb3, 0x41, - 0x12, 0x89, 0xf3, 0x78, - 0x65, 0xb6, 0x0d, 0xeb - }; - uint32_t expectedResponse_1_romID[RESPONSE_LEN32] = { // 160 bit, no ROM - 0xfe3f805f, - 0x0af066bc, - 0xda0f55e2, - 0x0020ac16, - 0x13fa3406, - 0x59d0e5ae, - 0x79def309, - 0x685981a3 - }; uint32_t expectedResponse_2_noRomID[RESPONSE_LEN32] = { // 160 bit, no ROM 0x1a7135a2, 0x51b99ca8, @@ -113,6 +109,40 @@ 0x828afe4d, 0x9cb3de6d }; + uint8_t challenge_3[CHALLENGE_SZ_NO_SECRET] = { // 160 bit + 0x21, 0x20, 0x22, 0x80, + 0xcc, 0x9d, 0x45, 0xaa, + 0xb8, 0x13, 0x3e, 0x96, + 0xd6, 0x53, 0x38, 0x0d, + 0x2a, 0xd5, 0xdd, 0x6b + }; + uint32_t expectedResponse_3_romID[RESPONSE_LEN32] = { // 160 bit + 0xe7750b8d, + 0xe29d9279, + 0x7cdc7053, + 0xa9f92519, + 0xa1e59d93, + 0x19cd930d, + 0xfb0fc974, + 0x2da0781e + }; + uint8_t challenge_4[CHALLENGE_SZ_NO_SECRET] = { // 160 bit, no ROM + 0x4c, 0x3c, 0x0a, 0xca, + 0x61, 0x8a, 0xbd, 0xf2, + 0x34, 0xd8, 0xb3, 0x41, + 0x12, 0x89, 0xf3, 0x78, + 0x65, 0xb6, 0x0d, 0xeb + }; + uint32_t expectedResponse_4_noRomID[RESPONSE_LEN32] = { // 160 bit, no ROM + 0xae740f91, + 0x8d6f2d58, + 0x7486b0ba, + 0xe9a84580, + 0xfe9ce593, + 0x58d66c7d, + 0xc993d165, + 0xe5ae5983 + }; uint32_t chip_response[RESPONSE_LEN32]; bool valid = 0; @@ -134,8 +164,15 @@ // printf("device id should be 0x24, reg %02X = %02X\r\n", MAX8614X::MAX8614X_PART_ID_REG, data[0]); //● Compare MAC from MAX86140 wth Host's precalculated MAC. -// executeSha256(m, challenge_A, CHALLENGE_SZ_NO_SECRET, 1, chip_response); + executeSha256(m, challenge_A, CHALLENGE_SZ_NO_SECRET, 1, chip_response); + //● Check PASS or FAIL. + valid = isTheChipAuthenicated(chip_response, expectedResponse_A_romID); + if (valid) + printf("\r\n Challenge A passed\r\n\r\n"); + else + printf("\r\n Challenge A failed\r\n\r\n"); + //● Compare MAC from MAX86140 wth Host's precalculated MAC. executeSha256(m, challenge_1, CHALLENGE_SZ_NO_SECRET, 1, chip_response); //● Check PASS or FAIL. valid = isTheChipAuthenicated(chip_response, expectedResponse_1_romID); @@ -150,9 +187,21 @@ printf("\r\n Challenge 2 passed\r\n\r\n"); else printf("\r\n Challenge 2 failed\r\n\r\n"); -// executeSha256(m, challenge_3, CHALLENGE_SZ_NO_SECRET, 1); -// executeSha256(m, challenge_4, CHALLENGE_SZ_NO_SECRET, 0); - //● Check PASS or FAIL. + + executeSha256(m, challenge_3, CHALLENGE_SZ_NO_SECRET, 1, chip_response); + valid = isTheChipAuthenicated(chip_response, expectedResponse_3_romID); + if (valid) + printf("\r\n Challenge 3 passed\r\n\r\n"); + else + printf("\r\n Challenge 3 failed\r\n\r\n"); + + executeSha256(m, challenge_4, CHALLENGE_SZ_NO_SECRET, 0, chip_response); + valid = isTheChipAuthenicated(chip_response, expectedResponse_4_noRomID); + if (valid) + printf("\r\n Challenge 4 passed\r\n\r\n"); + else + printf("\r\n Challenge 4 failed\r\n\r\n"); + //● Disable SHA_EN bit ( Write 0 to SHA_EN bit). m.writeRegister(MAX8614X::MAX8614X_SHA_CFG_REG, 0); while(1) {