intiial commit

Dependencies:   MAX8614X USBDevice max32630hsp_test

Revision:
23:4afef8872432
Parent:
22:1be3a5f0223e
Child:
24:3981488a0abd
--- a/main.cpp	Fri Aug 17 02:26:39 2018 +0000
+++ b/main.cpp	Fri Aug 17 02:46:36 2018 +0000
@@ -41,7 +41,6 @@
 
 void executeSha256(MAX8614X &m, uint32_t *challenge, unsigned int challengeLen, bool romID, uint32_t *response);
 bool isTheChipAuthenicated(uint32_t *expectedResponse, uint32_t *chipResponse);
-void xxx(uint32_t *inData);
 
 #define RESPONSE_LEN32 8
 
@@ -58,13 +57,13 @@
 DigitalOut bLED(LED3);
 int main()
 {
-    #define CHALLENGE8_LEN 20
-    uint8_t challenge_A[CHALLENGE8_LEN] = {  // 160 bit, no ROM
-        0x00, 0x00, 0x00, 0x01,
-        0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00,
-        0x00, 0x00, 0x00, 0x00
+    #define CHALLENGE32_LEN 5
+    uint32_t challenge_A[CHALLENGE32_LEN] = {  // 160 bit, no ROM
+        0x00000001,
+        0x00000000,
+        0x00000000,
+        0x00000000,
+        0x00000000
     };
     uint32_t expectedResponse_A_romID[RESPONSE_LEN32] = {  // 160 bit, no ROM
         0xf987d79a,
@@ -76,12 +75,12 @@
         0x218e53ee,
         0x904e0c6b
     };
-    uint8_t challenge_1[CHALLENGE8_LEN] = {  // 160 bit
-        0x5e, 0x81, 0x35, 0x24,
-        0x56, 0x63, 0xd6, 0x09,
-        0x99, 0x8d, 0x7b, 0x0d,
-        0x52, 0x12, 0x84, 0x65,
-        0xcd, 0x0d, 0xe3, 0x01
+    uint32_t challenge_1[CHALLENGE32_LEN] = {  // 160 bit
+        0x5e813524,
+        0x5663d609,
+        0x998d7b0d,
+        0x52128465,
+        0xcd0de301
     };
     uint32_t expectedResponse_1_romID[RESPONSE_LEN32] = {  // 160 bit
         0xfe3f805f,
@@ -94,12 +93,12 @@
         0x685981a3
     };
 
-    uint8_t challenge_2[CHALLENGE8_LEN] = {  // 160 bit, no ROM
-        0xd2, 0xaa, 0x84, 0xc5,
-        0x72, 0x77, 0xf7, 0xe5,
-        0xdb, 0x8f, 0xd6, 0x12,
-        0x96, 0xce, 0x69, 0xf2,
-        0x4e, 0xc5, 0x7a, 0xe8
+    uint32_t challenge_2[CHALLENGE32_LEN] = {  // 160 bit, no ROM
+        0xd2aa84c5,
+        0x7277f7e5,
+        0xdb8fd612,
+        0x96ce69f2,
+        0x4ec57ae8
     };
 
     uint32_t expectedResponse_2_noRomID[RESPONSE_LEN32] = {  // 160 bit, no ROM
@@ -112,12 +111,12 @@
         0x828afe4d,
         0x9cb3de6d
     };
-    uint8_t challenge_3[CHALLENGE8_LEN] = {  // 160 bit
-        0x21, 0x20, 0x22, 0x80,
-        0xcc, 0x9d, 0x45, 0xaa,
-        0xb8, 0x13, 0x3e, 0x96,
-        0xd6, 0x53, 0x38, 0x0d,
-        0x2a, 0xd5, 0xdd, 0x6b
+    uint32_t challenge_3[CHALLENGE32_LEN] = {  // 160 bit
+        0x21202280,
+        0xcc9d45aa,
+        0xb8133e96,
+        0xd653380d,
+        0x2ad5dd6b
     };
     uint32_t expectedResponse_3_romID[RESPONSE_LEN32] = {  // 160 bit
         0xe7750b8d,
@@ -129,7 +128,7 @@
         0xfb0fc974,
         0x2da0781e
     };
-    uint32_t challenge_4[CHALLENGE8_LEN] = {  // 160 bit, no ROM
+    uint32_t challenge_4[CHALLENGE32_LEN] = {  // 160 bit, no ROM
         0x4c3c0aca,
         0x618abdf2,
         0x34d8b341,
@@ -147,17 +146,9 @@
         0xe5ae5983
     };
 
-    uint32_t challenge_14[CHALLENGE8_LEN] = {  // 160 bit, no ROM
-0x4c3c0aca,
-0x618abdf2,
-0x34d8b341,
-0x1289f378,
-0x65b60deb
-};
     uint32_t chip_response[RESPONSE_LEN32];
     bool valid = 0;
 
-
     rLED = LED_OFF;
     gLED = LED_ON;
     bLED = LED_OFF;
@@ -167,7 +158,7 @@
     m.init();
 
     //● Compare MAC from MAX86140 wth Host's precalculated MAC.
-//    executeSha256(m, challenge_A, CHALLENGE8_LEN, 1, chip_response);
+    executeSha256(m, challenge_A, CHALLENGE32_LEN, 1, chip_response);
     //● Check PASS or FAIL.
     valid = isTheChipAuthenicated(chip_response, expectedResponse_A_romID);
     if (valid)
@@ -176,7 +167,7 @@
         printf("\r\n             Challenge A failed\r\n\r\n");
 
     //● Compare MAC from MAX86140 wth Host's precalculated MAC.
-//    executeSha256(m, challenge_1, CHALLENGE8_LEN, 1, chip_response);
+    executeSha256(m, challenge_1, CHALLENGE32_LEN, 1, chip_response);
     //● Check PASS or FAIL.
     valid = isTheChipAuthenicated(chip_response, expectedResponse_1_romID);
     if (valid)
@@ -184,35 +175,27 @@
     else
         printf("\r\n             Challenge 1 failed\r\n\r\n");
 
-//    executeSha256(m, challenge_2, CHALLENGE8_LEN, 0, chip_response);
+    executeSha256(m, challenge_2, CHALLENGE32_LEN, 0, chip_response);
     valid = isTheChipAuthenicated(chip_response, expectedResponse_2_noRomID);
     if (valid)
         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, CHALLENGE8_LEN, 1, chip_response);
+    executeSha256(m, challenge_3, CHALLENGE32_LEN, 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, CHALLENGE8_LEN, 0, chip_response);
+    executeSha256(m, challenge_4, CHALLENGE32_LEN, 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");
-#if 0
-    xxx(challenge_14);
-    executeSha(m, challenge_14, CHALLENGE8_LEN, 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");
-#endif
+
     //● Disable SHA_EN bit ( Write 0 to SHA_EN bit).     
     m.writeRegister(MAX8614X::MAX8614X_SHA_CFG_REG, 0);
     while(1) {
@@ -242,31 +225,6 @@
         }
     }
 }
-void xxx(uint32_t *inData)
-{
-    int i, j, k;
-    uint8_t macData[256];
-    uint8_t xData[256];
-    uint32_t x32Data[64];
-    k = 0;
-    for (i = 0; i < 5; i++) {
-        printf("%08x\n\r", inData[i]);
-        x32Data[i] = inData[i];
-        for (j = 0; j <= 3; j++) {
-            xData[(i*4)+j] = x32Data[i] & 0xFF;
-//        printf("%02x %d \n\r", xData[k], k);
-            x32Data[i] = x32Data[i] >> 8;
-        //printf("%08x\n\r", x32Data[i]);
-            k++;
-        }
-    }
-    for (i = 0; i < 20; i++) {
-        if (!(i % 4))
-            printf("\r\n ");
-        printf("%02x", xData[i]);
-    }
-            printf("\r\n ");
-}
 void executeSha256(MAX8614X &m, uint32_t *challenge, unsigned int challengeLen, bool romID, uint32_t *response)
 {
     int i, j, k;
@@ -290,23 +248,18 @@
     m.writeRegister(MAX8614X::MAX8614X_MEMORY_CONTROL_REG, MAX8614X::MAX8614X_MEMCNTRL_WR_EN_MASK | MAX8614X::MAX8614X_MEMCNTRL_BANK0_MASK);
 
     for (i = 0; i < 5; i++) {
-        printf("%08x\n\r", challenge[i]);
         x32Data[i] = challenge[i];
         for (j = 0; j <= 3; j++) {
             xData[(i*4)+j] = x32Data[i] & 0xFF;
-//        printf("%02x %d \n\r", xData[k], k);
             x32Data[i] = x32Data[i] >> 8;
-        //printf("%08x\n\r", x32Data[i]);
             k++;
         }
     }
 
-#ifdef 0
+#ifdef DEBUG_ON
     printf("\r\n Raw Input Data\r\n\r\n");
     for (i = 0; i < challengeLen; i++) {
-        if (!(i % 4))
-            printf("\r\n ");
-        printf("%02x", challenge[i]);
+        printf("%08x\r\n", challenge[i]);
     }
     printf("\r\n");
 #endif
@@ -315,7 +268,7 @@
 
 #ifdef DEBUG_ON
     printf("\r\n Transformed Input Data\r\n\r\n");
-    for (i = 0; i < challengeLen; i++) {
+    for (i = 0; i < challengeLen*4; i++) {
         if (!(i % 4))
             printf("\r\n ");
         printf("%02x", xData[i]);
@@ -323,7 +276,7 @@
         printf("\r\n ");
 #endif
         
-    for (i = 0; i < (challengeLen); i++) {
+    for (i = 0; i < (challengeLen*4); i++) {
         m.writeRegister(MAX8614X::MAX8614X_MEMORY_INDEX_REG, i);
         m.writeRegister(MAX8614X::MAX8614X_MEMORY_DATA_REG, xData[i]);
     //}
@@ -375,7 +328,7 @@
     transformData(xData,macData, 32);
 #ifdef DEBUG_ON
     printf("\r\n Formatted Response\r\n\r\n");
-    for (i = 0; i < 32; i++) {
+    for (i = 0; i < responseLen32*4; i++) {
         if (!(i % 4))
             printf("\r\n ");
         printf("%02x", macData[i]);