intiial commit
Dependencies: MAX8614X USBDevice max32630hsp_test
Revision 23:4afef8872432, committed 2018-08-17
- Comitter:
- phonemacro
- Date:
- Fri Aug 17 02:46:36 2018 +0000
- Parent:
- 22:1be3a5f0223e
- Child:
- 24:3981488a0abd
- Commit message:
- update to use uint32 inputs
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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]);