Libu2f-emu  0.0.0
Universal 2nd Factor (U2F) Emulation C Library
transport.h
Go to the documentation of this file.
1 #ifndef TRANSPORT_H
2 #define TRANSPORT_H
3 
4 #include <stdbool.h>
5 #include <stdint.h>
6 
7 #include "u2f-emu-types.h"
8 
9 
13 struct transport_core;
14 
18 typedef int (*state_init_t)(u2f_emu_vdev *vdev, void **state);
19 
23 typedef void (*state_free_t)(void *state);
24 
28 typedef void (*input_handler_t)(void *state,
29  const void *data, size_t size);
30 
34 typedef bool (*has_response_t)(void *state);
35 
39 typedef size_t (*get_response_t)(void *state, uint8_t **data);
40 
44 typedef void (*set_apdu_t)(void *state, u2f_emu_apdu apdu);
45 
49 typedef struct transport_info
50 {
59 
63 struct transport
64 {
66  void *state;
67 };
68 
78  struct transport_core **core_ref);
79 
85 void transport_core_free(struct transport_core *core);
86 
95 const struct transport *transport_get(
96  const struct transport_core *core,
97  u2f_emu_transport type);
98 
107 
108 #endif
int(* state_init_t)(u2f_emu_vdev *vdev, void **state)
Transport state init handler.
Definition: transport.h:18
u2f_emu_apdu
U2F-emu APDU format length.
Definition: u2f-emu-types.h:33
state_free_t state_free
Definition: transport.h:53
input_handler_t input_handler
Definition: transport.h:54
Transport info representation.
Definition: transport.h:49
void(* set_apdu_t)(void *state, u2f_emu_apdu apdu)
APDU format setter.
Definition: transport.h:44
struct transport_info transport_info_t
Transport info representation.
U2F virtual emulated device.
Definition: u2f-vdev.h:13
Transport representation.
Definition: transport.h:63
void(* state_free_t)(void *state)
Transport state free handler.
Definition: transport.h:23
set_apdu_t set_apdu
Definition: transport.h:57
void * state
Definition: transport.h:66
const transport_info_t * transport_info_get(u2f_emu_transport type)
Get the transport info for a specific transport type.
Definition: transport.c:32
state_init_t state_init
Definition: transport.h:52
has_response_t has_response
Definition: transport.h:55
u2f_emu_transport type
Definition: transport.h:51
get_response_t get_response
Definition: transport.h:56
u2f_emu_transport
U2F-emu transport emulation.
Definition: u2f-emu-types.h:22
bool transport_core_new(u2f_emu_vdev *vdev, struct transport_core **core_ref)
Create a new transport_core that manage all transports.
Definition: transport.c:72
uint8_t data[(64-7)]
Definition: packet.h:45
const struct transport * transport_get(const struct transport_core *core, u2f_emu_transport type)
Get a transport from a transport core.
Definition: transport.c:43
size_t(* get_response_t)(void *state, uint8_t **data)
Response getter.
Definition: transport.h:39
const transport_info_t * info
Definition: transport.h:65
void(* input_handler_t)(void *state, const void *data, size_t size)
Input data handler.
Definition: transport.h:28
void transport_core_free(struct transport_core *core)
Free all ressource allocated by a transport core.
Definition: transport.c:56
bool(* has_response_t)(void *state)
Response precense checker.
Definition: transport.h:34