intiial commit
Dependencies: MAX8614X USBDevice max32630hsp_test
Diff: main.cpp
- Revision:
- 16:d0f8cf9f160d
- Parent:
- 15:2616528b4007
- Child:
- 17:e260080d3468
--- a/main.cpp Thu Aug 16 21:35:56 2018 +0000 +++ b/main.cpp Thu Aug 16 22:00:44 2018 +0000 @@ -36,8 +36,10 @@ #include "max32630hsp.h" #include "MAX8614X.h" #include "USBSerial.h" -void executeSha256(MAX8614X &m, uint8_t *challenge, unsigned int challengeLen, bool romID); +void executeSha256(MAX8614X &m, uint8_t *challenge, unsigned int challengeLen, bool romID, uint32_t *response); +bool isTheChipAuthenicated(uint32_t *expectedResponse, uint32_t *chipResponse); +#define RESPONSE_LEN32 8 MAX32630HSP icarus(MAX32630HSP::VIO_1V8); // MAX32630FTHR mbed_board(MAX32630FTHR::VIO_1V8); @@ -97,6 +99,19 @@ 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 chip_response[RESPONSE_LEN32]; + bool valid = 0; + #define MAC_SZ 32 @@ -113,11 +128,16 @@ // m.readRegister(MAX8614X::MAX8614X_PART_ID_REG, data, 1); // printf("device id should be 0x24, reg %02X = %02X\r\n", MAX8614X::MAX8614X_PART_ID_REG, data[0]); - executeSha256(m, challenge_A, CHALLENGE_SZ_NO_SECRET, 1); - executeSha256(m, challenge_1, CHALLENGE_SZ_NO_SECRET, 1); - executeSha256(m, challenge_2, CHALLENGE_SZ_NO_SECRET, 0); - executeSha256(m, challenge_3, CHALLENGE_SZ_NO_SECRET, 1); - executeSha256(m, challenge_4, CHALLENGE_SZ_NO_SECRET, 0); +// executeSha256(m, challenge_A, CHALLENGE_SZ_NO_SECRET, 1); + executeSha256(m, challenge_1, CHALLENGE_SZ_NO_SECRET, 1, chip_response); + valid = isTheChipAuthenicated(chip_response, expectedResponse_1_romID); + if (valid) + printf("\r\n Challenge 1 passed\r\n\r\n"); + else + printf("\r\n Challenge 1 failed\r\n\r\n"); +// executeSha256(m, challenge_2, CHALLENGE_SZ_NO_SECRET, 0); +// executeSha256(m, challenge_3, CHALLENGE_SZ_NO_SECRET, 1); +// executeSha256(m, challenge_4, CHALLENGE_SZ_NO_SECRET, 0); //- Compare MAC from MAX86140 wth Host's precalculated MAC. //- Check PASS or FAIL. //- Disable SHA_EN bit ( Write 0 to SHA_EN bit). @@ -127,6 +147,16 @@ } } +bool isTheChipAuthenicated(uint32_t *expectedResponse, uint32_t * chipResponse) +{ + int i; + for (i = 0; i < RESPONSE_LEN32; i++) { + if (expectedResponse[i] != chipResponse[i]) + return 0; + } + return 1; +} + #if 0 void transformData(uint8_t *inData, uint8_t *outData, unsigned int challengeLen) { @@ -160,7 +190,7 @@ } -void executeSha256(MAX8614X &m, uint8_t *challenge, unsigned int challengeLen, bool romID) +void executeSha256(MAX8614X &m, uint8_t *challenge, unsigned int challengeLen, bool romID, uint32_t *response) { int i, j, k; uint8_t macData[256]; @@ -298,6 +328,7 @@ printf("\r\n Formatted Response\r\n\r\n"); for (i = 0; i < responseLen32; i++) { printf(" %08X \r\n",x32Data[i]); + response[i] = x32Data[i]; }