intiial commit

Dependencies:   MAX8614X USBDevice max32630hsp_test

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) {