summaryrefslogtreecommitdiff
path: root/src/reset.c
diff options
context:
space:
mode:
authornicoo <nicoo@debian.org>2020-02-12 13:43:18 +0100
committerNicolas Braud-Santoni <nicolas@braud-santoni.eu>2020-02-12 13:43:18 +0100
commit88a8bdd35ca7fb0c1ce70abdd8262d958fedafc1 (patch)
treece42d9d46d371c05eed82d8bb1e8aa7b2522a769 /src/reset.c
parent4e06e4554b69e678110563b1cf00a258a202dd7b (diff)
parentc79050aa44b8836d836c5dd22a383a073c28b74b (diff)
Merge upstream release 1.3.0 into debian/sid
Diffstat (limited to 'src/reset.c')
-rw-r--r--src/reset.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/reset.c b/src/reset.c
new file mode 100644
index 0000000..4b2c88a
--- /dev/null
+++ b/src/reset.c
@@ -0,0 +1,40 @@
1/*
2 * Copyright (c) 2018 Yubico AB. All rights reserved.
3 * Use of this source code is governed by a BSD-style
4 * license that can be found in the LICENSE file.
5 */
6
7#include <stdlib.h>
8#include "fido.h"
9
10static int
11fido_dev_reset_tx(fido_dev_t *dev)
12{
13 const unsigned char cbor[] = { CTAP_CBOR_RESET };
14 const uint8_t cmd = CTAP_FRAME_INIT | CTAP_CMD_CBOR;
15
16 if (fido_tx(dev, cmd, cbor, sizeof(cbor)) < 0) {
17 fido_log_debug("%s: fido_tx", __func__);
18 return (FIDO_ERR_TX);
19 }
20
21 return (FIDO_OK);
22}
23
24static int
25fido_dev_reset_wait(fido_dev_t *dev, int ms)
26{
27 int r;
28
29 if ((r = fido_dev_reset_tx(dev)) != FIDO_OK ||
30 (r = fido_rx_cbor_status(dev, ms)) != FIDO_OK)
31 return (r);
32
33 return (FIDO_OK);
34}
35
36int
37fido_dev_reset(fido_dev_t *dev)
38{
39 return (fido_dev_reset_wait(dev, -1));
40}