intiial commit
Dependencies: MAX8614X USBDevice max32630hsp_test
Diff: main.cpp
- 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]);