Libu2f-emu  0.0.0
Universal 2nd Factor (U2F) Emulation C Library
raw.h
Go to the documentation of this file.
1 #ifndef RAW_H
2 #define RAW_H
3 
4 #include <stddef.h>
5 #include <stdint.h>
6 
7 #include "payload.h"
8 #include "u2f-emu-types.h"
9 
10 
11 /* Packed macro */
12 #define __packed __attribute__((__packed__))
13 
18 {
19  uint8_t cla;
20  uint8_t ins;
21  uint8_t p1;
22  uint8_t p2;
23  uint8_t optional[4];
25 
26 /* Commands bits */
27 #define U2F_REGISTER 0x01
28 #define U2F_AUTHENTICATE 0x02
29 #define U2F_VERSION 0x03
30 
31 /* Status code */
32 #define SW_NO_ERROR 0x9000
33 #define SW_CONDITIONS_NOT_SATISFIED 0x6985
34 #define SW_WRONG_DATA 0x6A80
35 #define SW_WRONG_LENGTH 0x6700
36 #define SW_CLA_NOT_SUPPORTED 0x6E00
37 #define SW_INS_NOT_SUPPORTED 0x6D00
38 
39 /* Authenticate bits */
40 #define U2F_AUTH_CHECK 0x07
41 #define U2F_AUTH_ENFORCE 0x03
42 #define U2F_AUTH_NO_ENFORCE 0x08
43 
44 /* U2F version */
45 #define VERSION_STR "U2F_V2"
46 
47 
54 struct payload *u2f_emu_vdev_raw_generate_error(uint16_t error);
55 
65  const void *apdu, size_t size);
66 
76  const uint8_t *apdu, size_t size);
77 
86 struct payload *raw_register(u2f_emu_vdev *vdev,
87  const uint8_t *apdu, size_t size);
88 
89 
90 
91 #endif
APDU Frame header.
Definition: raw.h:17
uint16_t size
Definition: payload.h:18
uint8_t optional[4]
Definition: raw.h:23
struct payload * u2f_emu_vdev_raw_generate_error(uint16_t error)
Generate an error raw payload response.
Definition: raw.c:62
U2F virtual emulated device.
Definition: u2f-vdev.h:13
uint8_t cla
Definition: raw.h:19
Payload represenation.
Definition: payload.h:16
struct payload * u2f_emu_vdev_raw_process(u2f_emu_vdev *vdev, const void *apdu, size_t size)
Process incoming data from a RAW APDU.
Definition: raw.c:105
#define __packed
Definition: raw.h:12
uint8_t p1
Definition: raw.h:21
uint8_t ins
Definition: raw.h:20
struct payload * raw_register(u2f_emu_vdev *vdev, const uint8_t *apdu, size_t size)
Handle registration request.
Definition: register.c:266
struct payload * raw_authenticate(u2f_emu_vdev *vdev, const uint8_t *apdu, size_t size)
Handle authentification request.
Definition: authenticate.c:382
uint8_t p2
Definition: raw.h:22