From f7a6ee1a371071959d08a0aa331a187f78bea5b8 Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Mon, 5 Sep 2022 17:30:17 +0200 Subject: [PATCH] Adding msg version. Signed-off-by: Pol Henarejos --- CMakeLists.txt | 1 + src/fido/cmd_version.c | 26 ++++++++++++++++++++++++++ src/fido/fido.c | 5 ++++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/fido/cmd_version.c diff --git a/CMakeLists.txt b/CMakeLists.txt index 63b3cf1..f1af33a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,7 @@ target_sources(pico_fido PUBLIC ${CMAKE_CURRENT_LIST_DIR}/src/fido/files.c ${CMAKE_CURRENT_LIST_DIR}/src/fido/cmd_register.c ${CMAKE_CURRENT_LIST_DIR}/src/fido/cmd_authenticate.c + ${CMAKE_CURRENT_LIST_DIR}/src/fido/cmd_version.c ) set(HSM_DRIVER "hid") include(pico-hsm-sdk/pico_hsm_sdk_import.cmake) diff --git a/src/fido/cmd_version.c b/src/fido/cmd_version.c new file mode 100644 index 0000000..5bff13d --- /dev/null +++ b/src/fido/cmd_version.c @@ -0,0 +1,26 @@ +/* + * This file is part of the Pico FIDO distribution (https://github.com/polhenarejos/pico-fido). + * Copyright (c) 2022 Pol Henarejos. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include +#include "apdu.h" +#include "hsm.h" + +int cmd_version() { + memcpy(res_APDU, "U2F_V2", strlen("U2F_V2")); + res_APDU_size = strlen("U2F_V2"); + return SW_OK(); +} diff --git a/src/fido/fido.c b/src/fido/fido.c index 08e31da..983bad2 100644 --- a/src/fido/fido.c +++ b/src/fido/fido.c @@ -194,15 +194,18 @@ typedef struct cmd extern int cmd_register(); extern int cmd_authenticate(); +extern int cmd_version(); static const cmd_t cmds[] = { { U2F_REGISTER, cmd_register }, { U2F_AUTHENTICATE, cmd_authenticate }, + { U2F_VERSION, cmd_version }, { 0x00, 0x0} }; int fido_process_apdu() { - for (const cmd_t *cmd = cmds; cmd->ins != 0x00; cmd++) { + for (const cmd_t *cmd = cmds; cmd->ins != 0x00; cmd++) + { if (cmd->ins == INS(apdu)) { int r = cmd->cmd_handler(); return r;