kopia lustrzana https://github.com/conorpp/u2f-zero
how 2 lists
rodzic
2d501f88ed
commit
e597754a35
56
README.md
56
README.md
|
@ -35,27 +35,27 @@ The program generally follows this execution flow:
|
||||||
|
|
||||||
Main loop:
|
Main loop:
|
||||||
|
|
||||||
* Check if USB is busy and schedule a read if USB is free
|
* Check if USB is busy and schedule a read if USB is free
|
||||||
* If USB interrupted with a read, pass the newly read message to HID layer
|
* If USB interrupted with a read, pass the newly read message to HID layer
|
||||||
|
|
||||||
HID layer:
|
HID layer:
|
||||||
* Read a HID packet passed to it
|
* Read a HID packet passed to it
|
||||||
* Implement HID commands and sequencing as described in the
|
* Implement HID commands and sequencing as described in the
|
||||||
[U2F HID layer spec](https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-hid-protocol.html)
|
[U2F HID layer spec](https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-hid-protocol.html)
|
||||||
* If the HID message contains a U2F packet, buffer it or pass complete U2F packet to the U2F layer
|
* If the HID message contains a U2F packet, buffer it or pass complete U2F packet to the U2F layer
|
||||||
|
|
||||||
U2F layer:
|
U2F layer:
|
||||||
* Read a U2F packet
|
* Read a U2F packet
|
||||||
* Implement authenticate and register commands as described in
|
* Implement authenticate and register commands as described in
|
||||||
[U2F raw message spec](https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-raw-message-formats.html)
|
[U2F raw message spec](https://fidoalliance.org/specs/fido-u2f-v1.0-nfc-bt-amendment-20150514/fido-u2f-raw-message-formats.html)
|
||||||
* Handle any key generation, signatures, and atomic counting through I2C commands with ATECC508A
|
* Handle any key generation, signatures, and atomic counting through I2C commands with ATECC508A
|
||||||
|
|
||||||
I2C layer:
|
I2C layer:
|
||||||
* Receives a command and empty buffer for ATECC508A response
|
* Receives a command and empty buffer for ATECC508A response
|
||||||
* Wake the ATECC508A from suspension
|
* Wake the ATECC508A from suspension
|
||||||
* Send the formatted command with CRC16.
|
* Send the formatted command with CRC16.
|
||||||
* Receive ATECC508A response and check for errors and verify received CRC16.
|
* Receive ATECC508A response and check for errors and verify received CRC16.
|
||||||
* I2C I/O and CRC calculations are interrupt based and done byte by byte.
|
* I2C I/O and CRC calculations are interrupt based and done byte by byte.
|
||||||
|
|
||||||
### Code organization
|
### Code organization
|
||||||
|
|
||||||
|
@ -63,27 +63,27 @@ The HID and U2F layers are written to not be device specific and can
|
||||||
easily be ported elsewhere.
|
easily be ported elsewhere.
|
||||||
|
|
||||||
EFM8UB1 USB driver:
|
EFM8UB1 USB driver:
|
||||||
* descriptors.c
|
* descriptors.c
|
||||||
* descriptors.h
|
* descriptors.h
|
||||||
* callback.c
|
* callback.c
|
||||||
|
|
||||||
EFM8UB1 I2C driver:
|
EFM8UB1 I2C driver:
|
||||||
* Interrupts.c
|
* Interrupts.c
|
||||||
* i2c.c
|
* i2c.c
|
||||||
* i2c.h
|
* i2c.h
|
||||||
|
|
||||||
ATECC508A I2C layer:
|
ATECC508A I2C layer:
|
||||||
* atecc508a.c
|
* atecc508a.c
|
||||||
* atecc508a.h
|
* atecc508a.h
|
||||||
|
|
||||||
HID layer:
|
HID layer:
|
||||||
* u2f_hid.c
|
* u2f_hid.c
|
||||||
* u2f_hid.h
|
* u2f_hid.h
|
||||||
|
|
||||||
U2F layer:
|
U2F layer:
|
||||||
* u2f.c
|
* u2f.c
|
||||||
* u2f.h
|
* u2f.h
|
||||||
* u2f-atecc.c // device specific implementation
|
* u2f-atecc.c // device specific implementation
|
||||||
|
|
||||||
## Build a U2F Zero token yourself
|
## Build a U2F Zero token yourself
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue