intiial commit
Dependencies: MAX8614X USBDevice max32630hsp_test
Diff: main.cpp
- Revision:
- 20:39857996a7c7
- Parent:
- 18:a0356b3e6ed9
- Child:
- 21:0a4f90fb3451
diff -r a4999b26812c -r 39857996a7c7 main.cpp
--- 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) {