Embedded SDK
Embedded SDK
Loading...
Searching...
No Matches
u2f_io.c
Go to the documentation of this file.
1
2/*******************************************************************************
3 * Ledger Nano S - Secure firmware
4 * (c) 2022 Ledger
5 *
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 ********************************************************************************/
18
19#include <stdint.h>
20#include <string.h>
21
22#ifdef HAVE_IO_U2F
23
24#include "os.h"
25#include "u2f_service.h"
26#include "u2f_transport.h"
27#include "u2f_processing.h"
28#include "u2f_impl.h"
29
30#include "os_io_seproxyhal.h"
31
32#ifdef HAVE_BLE
33#include "ledger_ble.h"
34#endif
35
36void u2f_io_send(uint8_t *buffer, uint16_t length, u2f_transport_media_t media)
37{
38 if (media == U2F_MEDIA_USB) {
39 memmove(G_io_usb_ep_buffer, buffer, length);
40 // wipe the remaining to avoid :
41 // 1/ data leaks
42 // 2/ invalid junk
43 memset(G_io_usb_ep_buffer + length, 0, sizeof(G_io_usb_ep_buffer) - length);
44 }
45 switch (media) {
46 case U2F_MEDIA_USB:
47 io_usb_send_ep(U2F_EPIN_ADDR, G_io_usb_ep_buffer, USB_SEGMENT_SIZE, 0);
48 break;
49#ifdef HAVE_BLE
50 case U2F_MEDIA_BLE:
51 LEDGER_BLE_send(buffer, length);
52 break;
53#endif
54 default:
55 PRINTF("Request to send on unsupported media %d\n", media);
56 break;
57 }
58}
59
60#endif // HAVE_IO_U2F
void LEDGER_BLE_send(const uint8_t *packet, uint16_t packet_length)
void u2f_io_send(uint8_t *buffer, uint16_t length, u2f_transport_media_t media)
u2f_transport_media_t
Definition u2f_service.h:47
@ U2F_MEDIA_BLE
Definition u2f_service.h:51
@ U2F_MEDIA_USB
Definition u2f_service.h:49
unsigned short uint16_t
Definition usbd_conf.h:54
unsigned char uint8_t
Definition usbd_conf.h:53