refactoring

This commit is contained in:
merlokk
2019-01-27 11:44:33 +02:00
parent 1857482617
commit 2049020b92
8 changed files with 65 additions and 41 deletions

View File

@@ -8,7 +8,7 @@ all:
$(MAKE) -f application.mk -j8 solo.hex PREFIX=$(PREFIX) DEBUG=$(DEBUG) EXTRA_DEFINES='-DFLASH_ROP=1'
all-hacker:
$(MAKE) -f application.mk -j8 solo.hex PREFIX=$(PREFIX) DEBUG=$(DEBUG) EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0'
$(MAKE) -f application.mk solo.hex PREFIX=$(PREFIX) DEBUG=$(DEBUG) EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0'
all-locked:
$(MAKE) -f application.mk -j8 solo.hex PREFIX=$(PREFIX) EXTRA_DEFINES='-DFLASH_ROP=2'

View File

@@ -336,12 +336,7 @@ void nfc_process_iblock(uint8_t * buf, int len)
}
t1 = millis();
uint8_t u2fbuffer[7 + 64 + 1] = {0};
memcpy(u2fbuffer, &buf[1], 4);
memcpy(&u2fbuffer[6], &buf[5], plen + 1);
ctap_response_init(&ctap_resp);
u2f_request((struct u2f_request_apdu *)u2fbuffer, &ctap_resp, true);
u2f_request_nfc(&buf[1], len, &ctap_resp);
printf1(TAG_NFC, "U2F resp len: %d\r\n", ctap_resp.length);
printf1(TAG_NFC,"U2F Register processing %d (took %d)\r\n", millis(), millis() - t1);
@@ -356,10 +351,10 @@ void nfc_process_iblock(uint8_t * buf, int len)
{
printf1(TAG_NFC, "U2F Authenticate request length error. len=%d keyhlen=%d.\r\n", plen, buf[65]);
nfc_write_response(buf[0], SW_WRONG_LENGTH);
return;
//return;
}
nfc_write_response(buf[0], SW_COND_USE_NOT_SATISFIED);
u2f_request_nfc(&buf[1], len, &ctap_resp);
break;
case APDU_FIDO_NFCCTAP_MSG:

View File

@@ -2,6 +2,7 @@
#define _NFC_H_
#include <stdint.h>
#include "apdu.h"
void nfc_loop();
void nfc_init();
@@ -18,15 +19,6 @@ typedef struct
uint8_t tlv[8];
} __attribute__((packed)) CAPABILITY_CONTAINER;
typedef struct
{
uint8_t cla;
uint8_t ins;
uint8_t p1;
uint8_t p2;
uint8_t lc;
} __attribute__((packed)) APDU_HEADER;
#define NFC_CMD_REQA 0x26
#define NFC_CMD_WUPA 0x52
#define NFC_CMD_HLTA 0x50
@@ -45,13 +37,6 @@ typedef struct
#define NFC_SBLOCK_DESELECT 0x32
#define NFC_SBLOCK_WTX 0xf2
#define APDU_FIDO_U2F_REGISTER 0x01
#define APDU_FIDO_U2F_AUTHENTICATE 0x02
#define APDU_FIDO_U2F_VERSION 0x03
#define APDU_FIDO_NFCCTAP_MSG 0x10
#define APDU_INS_SELECT 0xA4
#define APDU_INS_READ_BINARY 0xB0
#define AID_NDEF_TYPE_4 "\xD2\x76\x00\x00\x85\x01\x01"
#define AID_NDEF_MIFARE_TYPE_4 "\xD2\x76\x00\x00\x85\x01\x00"
#define AID_CAPABILITY_CONTAINER "\xE1\x03"
@@ -67,12 +52,4 @@ typedef enum
APP_FIDO,
} APPLETS;
#define SW_SUCCESS 0x9000
#define SW_GET_RESPONSE 0x6100 // Command successfully executed; 'XX' bytes of data are available and can be requested using GET RESPONSE.
#define SW_WRONG_LENGTH 0x6700
#define SW_COND_USE_NOT_SATISFIED 0x6985
#define SW_FILE_NOT_FOUND 0x6a82
#define SW_INS_INVALID 0x6d00 // Instruction code not supported or invalid
#define SW_INTERNAL_EXCEPTION 0x6f00
#endif