kopia lustrzana https://github.com/conorpp/u2f-zero
cleanup, starting u2f
rodzic
6538dd36da
commit
03544ba25f
|
@ -8,73 +8,73 @@
|
|||
#ifndef ATECC508A_H_
|
||||
#define ATECC508A_H_
|
||||
|
||||
#define ATECC508A_ADDR 0xc0
|
||||
#define ATECC508A_ADDR 0xc0
|
||||
|
||||
#define ATECC_CMD_COUNTER 0x24
|
||||
#define ATECC_COUNTER0 0
|
||||
#define ATECC_COUNTER1 1
|
||||
#define ATECC_COUNTER_READ 0
|
||||
#define ATECC_COUNTER_INC 1
|
||||
#define ATECC_CMD_COUNTER 0x24
|
||||
#define ATECC_COUNTER0 0
|
||||
#define ATECC_COUNTER1 1
|
||||
#define ATECC_COUNTER_READ 0
|
||||
#define ATECC_COUNTER_INC 1
|
||||
|
||||
#define ATECC_CMD_RNG 0x1B
|
||||
#define ATECC_RNG_P1 0
|
||||
#define ATECC_RNG_P2 0
|
||||
#define ATECC_CMD_RNG 0x1B
|
||||
#define ATECC_RNG_P1 0
|
||||
#define ATECC_RNG_P2 0
|
||||
|
||||
#define ATECC_CMD_SHA 0x47
|
||||
#define ATECC_CMD_SHA 0x47
|
||||
// P1
|
||||
#define ATECC_SHA_START 0x0
|
||||
#define ATECC_SHA_UPDATE 0x1
|
||||
#define ATECC_SHA_END 0x2
|
||||
#define ATECC_SHA_START 0x0
|
||||
#define ATECC_SHA_UPDATE 0x1
|
||||
#define ATECC_SHA_END 0x2
|
||||
|
||||
#define ATECC_CMD_READ 0x02
|
||||
#define ATECC_CMD_READ 0x02
|
||||
// P1
|
||||
#define ATECC_RW_CONFIG 0x00
|
||||
#define ATECC_RW_OTP 0x01
|
||||
#define ATECC_RW_DATA 0x02
|
||||
#define ATECC_RW_EXT 0x80
|
||||
#define ATECC_RW_CONFIG 0x00
|
||||
#define ATECC_RW_OTP 0x01
|
||||
#define ATECC_RW_DATA 0x02
|
||||
#define ATECC_RW_EXT 0x80
|
||||
// P2 read addr
|
||||
|
||||
#define ATECC_CMD_WRITE 0x12
|
||||
#define ATECC_CMD_WRITE 0x12
|
||||
// P1 same for read
|
||||
// P2 write addr
|
||||
|
||||
#define ATECC_EEPROM_SLOT(x) (0x5 + ((x)>>1))
|
||||
#define ATECC_EEPROM_SLOT(x) (0x5 + ((x)>>1))
|
||||
#define ATECC_EEPROM_SLOT_OFFSET(x) ( (x) & 1 ? 2 : 0 )
|
||||
#define ATECC_EEPROM_SLOT_SIZE 0x2
|
||||
#define ATECC_EEPROM_SLOT_SIZE 0x2
|
||||
|
||||
#define ATECC_EEPROM_KEY(x) (24 + ((x)>>1))
|
||||
#define ATECC_EEPROM_KEY_OFFSET(x) ( (x) & 1 ? 2 : 0 )
|
||||
#define ATECC_EEPROM_KEY(x) (24 + ((x)>>1))
|
||||
#define ATECC_EEPROM_KEY_OFFSET(x) ( (x) & 1 ? 2 : 0 )
|
||||
#define ATECC_EEPROM_KEY_SIZE 0x2
|
||||
|
||||
#define ATECC_EEPROM_B2A(b) ((b)>>2)
|
||||
#define ATECC_EEPROM_B2O(b) ((b)&0x3)
|
||||
#define ATECC_EEPROM_B2A(b) ((b)>>2)
|
||||
#define ATECC_EEPROM_B2O(b) ((b)&0x3)
|
||||
|
||||
#define ATECC_CMD_LOCK 0x17
|
||||
#define ATECC_CMD_LOCK 0x17
|
||||
// P1 flags
|
||||
#define ATECC_LOCK_CONFIG 0x00
|
||||
#define ATECC_LOCK_DATA_OTP 0x01
|
||||
#define ATECC_LOCK_SLOT 0x02
|
||||
#define ATECC_LOCK_SLOTNUM(x) (((x)&0xf)<<2)
|
||||
#define ATECC_LOCK_IGNORE_SUMMARY 0x08
|
||||
#define ATECC_LOCK_CONFIG 0x00
|
||||
#define ATECC_LOCK_DATA_OTP 0x01
|
||||
#define ATECC_LOCK_SLOT 0x02
|
||||
#define ATECC_LOCK_SLOTNUM(x) (((x)&0xf)<<2)
|
||||
#define ATECC_LOCK_IGNORE_SUMMARY 0x08
|
||||
// P2 is CRC or 0
|
||||
|
||||
#define ATECC_CMD_GENKEY 0x40
|
||||
#define ATECC_CMD_GENKEY 0x40
|
||||
// P1
|
||||
#define ATECC_GENKEY_PRIVATE 0x04
|
||||
#define ATECC_GENKEY_PUBDIGEST 0x08
|
||||
#define ATECC_GENKEY_PUBDIGEST2 0x10
|
||||
#define ATECC_GENKEY_PRIVATE 0x04
|
||||
#define ATECC_GENKEY_PUBDIGEST 0x08
|
||||
#define ATECC_GENKEY_PUBDIGEST2 0x10
|
||||
// P2 is keyid
|
||||
|
||||
#define ATECC_CMD_NONCE 0x16
|
||||
#define ATECC_CMD_NONCE 0x16
|
||||
// P1
|
||||
#define ATECC_NONCE_RNG_UPDATE 0x0
|
||||
#define ATECC_NONCE_TEMP_UPDATE 0x3
|
||||
#define ATECC_NONCE_RNG_UPDATE 0x0
|
||||
#define ATECC_NONCE_TEMP_UPDATE 0x3
|
||||
// P2 is 0
|
||||
|
||||
#define ATECC_CMD_SIGN 0x41
|
||||
#define ATECC_CMD_SIGN 0x41
|
||||
// P1
|
||||
#define ATECC_SIGN_INTERNAL 0x00
|
||||
#define ATECC_SIGN_EXTERNAL 0x80
|
||||
#define ATECC_SIGN_INTERNAL 0x00
|
||||
#define ATECC_SIGN_EXTERNAL 0x80
|
||||
// P2 is keyid
|
||||
|
||||
struct atecc_response
|
||||
|
|
|
@ -10,12 +10,46 @@
|
|||
|
||||
#include <stdint.h>
|
||||
|
||||
#define SW_NO_ERROR 0x00
|
||||
#define SW_CONDITIONS_NOT_SATISFIED 0x01
|
||||
#define SW_WRONG_DATA 0x02
|
||||
|
||||
#define U2F_EC_FMT_UNCOMPRESSED 0x04
|
||||
|
||||
#define U2F_EC_POINT_SIZE 32
|
||||
#define U2F_EC_PUBKEY_SIZE 65
|
||||
|
||||
// U2F native commands
|
||||
#define U2F_REGISTER 0x01
|
||||
#define U2F_AUTHENTICATE 0x02
|
||||
#define U2F_VERSION 0x03
|
||||
#define U2F_VENDOR_FIRST 0xc0
|
||||
#define U2F_VENDOR_LAST 0xff
|
||||
|
||||
// U2F_CMD_REGISTER command defines
|
||||
#define U2F_REGISTER_ID 0x05
|
||||
#define U2F_REGISTER_HASH_ID 0x00
|
||||
|
||||
struct u2f_message
|
||||
{
|
||||
uint8_t hihuht[8];
|
||||
int wat;
|
||||
uint8_t cla;
|
||||
uint8_t ins;
|
||||
uint8_t p1;
|
||||
uint8_t p2;
|
||||
uint8_t LC1;
|
||||
uint8_t LC2;
|
||||
uint8_t LC3;
|
||||
};
|
||||
|
||||
struct u2f_ec_point
|
||||
{
|
||||
uint8_t fmt;
|
||||
uint8_t x[U2F_EC_POINT_SIZE];
|
||||
uint8_t y[U2F_EC_POINT_SIZE];
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
int u2f_request(struct u2f_message* req, struct u2f_message* res);
|
||||
|
||||
|
|
|
@ -76,7 +76,6 @@ int8_t test_ecc508a()
|
|||
|
||||
int16_t main(void) {
|
||||
|
||||
uint8_t zeros[] = {0,0,0,0};
|
||||
data uint8_t i = 0;
|
||||
data uint16_t last_ms = get_ms();
|
||||
data uint16_t ms_heart;
|
||||
|
|
Ładowanie…
Reference in New Issue