Libu2f-emu  0.0.0
Universal 2nd Factor (U2F) Emulation C Library
Functions | Variables
usb.c File Reference
#include <errno.h>
#include <stdlib.h>
#include "cmd.h"
#include "packet.h"
#include "time.h"
#include "usb.h"
Include dependency graph for usb.c:

Functions

bool u2f_emu_vdev_usb_has_response (void *state)
 Check the precense of a response from the USB transport. More...
 
size_t u2f_emu_vdev_usb_get_response (void *state, uint8_t **data)
 Get the response frim the USB transport. More...
 
static struct messagepacket_init_handle (struct usb_state *state, const struct packet_init *packet)
 The packet init handler. More...
 
static struct messagepacket_cont_handle (struct usb_state *state, const struct packet_cont *packet)
 The packet cont handler. More...
 
void u2f_emu_vdev_usb_process (void *state, const void *packet, size_t size)
 Process incoming data from an USB HID packet. More...
 
void u2f_emu_vdev_usb_state_free (void *state)
 Free the USB state. More...
 
int u2f_emu_vdev_usb_state_init (u2f_emu_vdev *vdev, void **state_ref)
 Init the USB state. More...
 

Variables

transport_info_t usb_transport
 The USB transport. More...
 

Function Documentation

static struct message* packet_cont_handle ( struct usb_state state,
const struct packet_cont packet 
)
static

The packet cont handler.

Parameters
stateThe usb state.
packetThe cont packet.
Returns
Sucess: The response. Failure / No response: NULL.
static struct message* packet_init_handle ( struct usb_state state,
const struct packet_init packet 
)
static

The packet init handler.

Parameters
stateThe usb state.
packetThe init packet.
Returns
Success: The response. Failure / No response: NULL.
size_t u2f_emu_vdev_usb_get_response ( void *  state,
uint8_t **  data 
)

Get the response frim the USB transport.

Parameters
stateThe USB transport state.
dataThe data ref buffer to put rhe resonse
Returns
The size of the allocated data.
bool u2f_emu_vdev_usb_has_response ( void *  state)

Check the precense of a response from the USB transport.

Parameters
stateThe USB transport state.
Returns
Has response: true. Has no response: false.
void u2f_emu_vdev_usb_process ( void *  state,
const void *  packet,
size_t  size 
)

Process incoming data from an USB HID packet.

Parameters
stateThe USB transport state.
packetThe USB HID packet.
sizeThe size of the USB HID packet.

< Invalid command

< Channel is busy

< Invalid command

void u2f_emu_vdev_usb_state_free ( void *  state)

Free the USB state.

Parameters
stateThe USB transport state.
int u2f_emu_vdev_usb_state_init ( u2f_emu_vdev vdev,
void **  state_ref 
)

Init the USB state.

Parameters
vdevThe virtual device.
state_refThe USB transport state ref.
Returns
Sucess: 0. Failure: -errno.

Variable Documentation

transport_info_t usb_transport
Initial value:
=
{
.type = U2F_EMU_USB,
.input_handler = u2f_emu_vdev_usb_process,
}
void u2f_emu_vdev_usb_state_free(void *state)
Free the USB state.
Definition: usb.c:174
void u2f_emu_vdev_usb_process(void *state, const void *packet, size_t size)
Process incoming data from an USB HID packet.
Definition: usb.c:119
Definition: u2f-emu-types.h:25
bool u2f_emu_vdev_usb_has_response(void *state)
Check the precense of a response from the USB transport.
Definition: usb.c:10
int u2f_emu_vdev_usb_state_init(u2f_emu_vdev *vdev, void **state_ref)
Init the USB state.
Definition: usb.c:199
size_t u2f_emu_vdev_usb_get_response(void *state, uint8_t **data)
Get the response frim the USB transport.
Definition: usb.c:18

The USB transport.