summaryrefslogtreecommitdiff
path: root/src/fido.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fido.h')
-rw-r--r--src/fido.h53
1 files changed, 20 insertions, 33 deletions
diff --git a/src/fido.h b/src/fido.h
index f85a41a..e41de89 100644
--- a/src/fido.h
+++ b/src/fido.h
@@ -14,24 +14,6 @@
14#include <stdint.h> 14#include <stdint.h>
15#include <stdlib.h> 15#include <stdlib.h>
16 16
17typedef void *fido_dev_io_open_t(const char *);
18typedef void fido_dev_io_close_t(void *);
19typedef int fido_dev_io_read_t(void *, unsigned char *, size_t, int);
20typedef int fido_dev_io_write_t(void *, const unsigned char *, size_t);
21
22typedef struct fido_dev_io {
23 fido_dev_io_open_t *open;
24 fido_dev_io_close_t *close;
25 fido_dev_io_read_t *read;
26 fido_dev_io_write_t *write;
27} fido_dev_io_t;
28
29typedef enum {
30 FIDO_OPT_OMIT = 0, /* use authenticator's default */
31 FIDO_OPT_FALSE, /* explicitly set option to false */
32 FIDO_OPT_TRUE, /* explicitly set option to true */
33} fido_opt_t;
34
35#ifdef _FIDO_INTERNAL 17#ifdef _FIDO_INTERNAL
36#include <cbor.h> 18#include <cbor.h>
37#include <limits.h> 19#include <limits.h>
@@ -39,28 +21,21 @@ typedef enum {
39#include "blob.h" 21#include "blob.h"
40#include "../openbsd-compat/openbsd-compat.h" 22#include "../openbsd-compat/openbsd-compat.h"
41#include "iso7816.h" 23#include "iso7816.h"
42#include "types.h"
43#include "extern.h" 24#include "extern.h"
44#endif 25#endif
45 26
46#include "fido/err.h" 27#include "fido/err.h"
47#include "fido/param.h" 28#include "fido/param.h"
29#include "fido/types.h"
48 30
49#ifndef _FIDO_INTERNAL 31#ifdef __cplusplus
50typedef struct fido_assert fido_assert_t; 32extern "C" {
51typedef struct fido_cbor_info fido_cbor_info_t; 33#endif /* __cplusplus */
52typedef struct fido_cred fido_cred_t;
53typedef struct fido_dev fido_dev_t;
54typedef struct fido_dev_info fido_dev_info_t;
55typedef struct es256_pk es256_pk_t;
56typedef struct es256_sk es256_sk_t;
57typedef struct rs256_pk rs256_pk_t;
58typedef struct eddsa_pk eddsa_pk_t;
59#endif
60 34
61fido_assert_t *fido_assert_new(void); 35fido_assert_t *fido_assert_new(void);
62fido_cred_t *fido_cred_new(void); 36fido_cred_t *fido_cred_new(void);
63fido_dev_t *fido_dev_new(void); 37fido_dev_t *fido_dev_new(void);
38fido_dev_t *fido_dev_new_with_info(const fido_dev_info_t *);
64fido_dev_info_t *fido_dev_info_new(size_t); 39fido_dev_info_t *fido_dev_info_new(size_t);
65fido_cbor_info_t *fido_cbor_info_new(void); 40fido_cbor_info_t *fido_cbor_info_new(void);
66 41
@@ -76,6 +51,7 @@ void fido_dev_info_free(fido_dev_info_t **, size_t);
76#define FIDO_DEBUG 0x01 51#define FIDO_DEBUG 0x01
77 52
78void fido_init(int); 53void fido_init(int);
54void fido_set_log_handler(fido_log_handler_t *);
79 55
80const unsigned char *fido_assert_authdata_ptr(const fido_assert_t *, size_t); 56const unsigned char *fido_assert_authdata_ptr(const fido_assert_t *, size_t);
81const unsigned char *fido_assert_clientdata_hash_ptr(const fido_assert_t *); 57const unsigned char *fido_assert_clientdata_hash_ptr(const fido_assert_t *);
@@ -121,19 +97,23 @@ int fido_assert_set_clientdata_hash(fido_assert_t *, const unsigned char *,
121int fido_assert_set_count(fido_assert_t *, size_t); 97int fido_assert_set_count(fido_assert_t *, size_t);
122int fido_assert_set_extensions(fido_assert_t *, int); 98int fido_assert_set_extensions(fido_assert_t *, int);
123int fido_assert_set_hmac_salt(fido_assert_t *, const unsigned char *, size_t); 99int fido_assert_set_hmac_salt(fido_assert_t *, const unsigned char *, size_t);
124int fido_assert_set_options(fido_assert_t *, bool, bool) __attribute__((__deprecated__)); 100int fido_assert_set_options(fido_assert_t *, bool, bool)
101 __attribute__((__deprecated__("use fido_assert_set_up/fido_assert_set_uv")));
125int fido_assert_set_rp(fido_assert_t *, const char *); 102int fido_assert_set_rp(fido_assert_t *, const char *);
126int fido_assert_set_up(fido_assert_t *, fido_opt_t); 103int fido_assert_set_up(fido_assert_t *, fido_opt_t);
127int fido_assert_set_uv(fido_assert_t *, fido_opt_t); 104int fido_assert_set_uv(fido_assert_t *, fido_opt_t);
128int fido_assert_set_sig(fido_assert_t *, size_t, const unsigned char *, size_t); 105int fido_assert_set_sig(fido_assert_t *, size_t, const unsigned char *, size_t);
129int fido_assert_verify(const fido_assert_t *, size_t, int, const void *); 106int fido_assert_verify(const fido_assert_t *, size_t, int, const void *);
130int fido_cred_exclude(fido_cred_t *, const unsigned char *, size_t); 107int fido_cred_exclude(fido_cred_t *, const unsigned char *, size_t);
108int fido_cred_prot(const fido_cred_t *);
131int fido_cred_set_authdata(fido_cred_t *, const unsigned char *, size_t); 109int fido_cred_set_authdata(fido_cred_t *, const unsigned char *, size_t);
132int fido_cred_set_authdata_raw(fido_cred_t *, const unsigned char *, size_t); 110int fido_cred_set_authdata_raw(fido_cred_t *, const unsigned char *, size_t);
133int fido_cred_set_clientdata_hash(fido_cred_t *, const unsigned char *, size_t); 111int fido_cred_set_clientdata_hash(fido_cred_t *, const unsigned char *, size_t);
134int fido_cred_set_extensions(fido_cred_t *, int); 112int fido_cred_set_extensions(fido_cred_t *, int);
135int fido_cred_set_fmt(fido_cred_t *, const char *); 113int fido_cred_set_fmt(fido_cred_t *, const char *);
136int fido_cred_set_options(fido_cred_t *, bool, bool) __attribute__((__deprecated__)); 114int fido_cred_set_options(fido_cred_t *, bool, bool)
115 __attribute__((__deprecated__("use fido_cred_set_rk/fido_cred_set_uv")));
116int fido_cred_set_prot(fido_cred_t *, int);
137int fido_cred_set_rk(fido_cred_t *, fido_opt_t); 117int fido_cred_set_rk(fido_cred_t *, fido_opt_t);
138int fido_cred_set_rp(fido_cred_t *, const char *, const char *); 118int fido_cred_set_rp(fido_cred_t *, const char *, const char *);
139int fido_cred_set_sig(fido_cred_t *, const unsigned char *, size_t); 119int fido_cred_set_sig(fido_cred_t *, const unsigned char *, size_t);
@@ -152,10 +132,12 @@ int fido_dev_get_cbor_info(fido_dev_t *, fido_cbor_info_t *);
152int fido_dev_get_retry_count(fido_dev_t *, int *); 132int fido_dev_get_retry_count(fido_dev_t *, int *);
153int fido_dev_info_manifest(fido_dev_info_t *, size_t, size_t *); 133int fido_dev_info_manifest(fido_dev_info_t *, size_t, size_t *);
154int fido_dev_make_cred(fido_dev_t *, fido_cred_t *, const char *); 134int fido_dev_make_cred(fido_dev_t *, fido_cred_t *, const char *);
135int fido_dev_open_with_info(fido_dev_t *);
155int fido_dev_open(fido_dev_t *, const char *); 136int fido_dev_open(fido_dev_t *, const char *);
156int fido_dev_reset(fido_dev_t *); 137int fido_dev_reset(fido_dev_t *);
157int fido_dev_set_io_functions(fido_dev_t *, const fido_dev_io_t *); 138int fido_dev_set_io_functions(fido_dev_t *, const fido_dev_io_t *);
158int fido_dev_set_pin(fido_dev_t *, const char *, const char *); 139int fido_dev_set_pin(fido_dev_t *, const char *, const char *);
140int fido_dev_set_transport_functions(fido_dev_t *, const fido_dev_transport_t *);
159 141
160size_t fido_assert_authdata_len(const fido_assert_t *, size_t); 142size_t fido_assert_authdata_len(const fido_assert_t *, size_t);
161size_t fido_assert_clientdata_hash_len(const fido_assert_t *); 143size_t fido_assert_clientdata_hash_len(const fido_assert_t *);
@@ -178,7 +160,7 @@ size_t fido_cred_sig_len(const fido_cred_t *);
178size_t fido_cred_x5c_len(const fido_cred_t *); 160size_t fido_cred_x5c_len(const fido_cred_t *);
179 161
180uint8_t fido_assert_flags(const fido_assert_t *, size_t); 162uint8_t fido_assert_flags(const fido_assert_t *, size_t);
181uint32_t fido_assert_sigcount(const fido_assert_t *, size_t); 163uint32_t fido_assert_sigcount(const fido_assert_t *, size_t);
182uint8_t fido_cred_flags(const fido_cred_t *); 164uint8_t fido_cred_flags(const fido_cred_t *);
183uint8_t fido_dev_protocol(const fido_dev_t *); 165uint8_t fido_dev_protocol(const fido_dev_t *);
184uint8_t fido_dev_major(const fido_dev_t *); 166uint8_t fido_dev_major(const fido_dev_t *);
@@ -188,7 +170,12 @@ uint8_t fido_dev_flags(const fido_dev_t *);
188int16_t fido_dev_info_vendor(const fido_dev_info_t *); 170int16_t fido_dev_info_vendor(const fido_dev_info_t *);
189int16_t fido_dev_info_product(const fido_dev_info_t *); 171int16_t fido_dev_info_product(const fido_dev_info_t *);
190uint64_t fido_cbor_info_maxmsgsiz(const fido_cbor_info_t *); 172uint64_t fido_cbor_info_maxmsgsiz(const fido_cbor_info_t *);
173uint64_t fido_cbor_info_fwversion(const fido_cbor_info_t *);
191 174
192bool fido_dev_is_fido2(const fido_dev_t *); 175bool fido_dev_is_fido2(const fido_dev_t *);
193 176
177#ifdef __cplusplus
178} /* extern "C" */
179#endif /* __cplusplus */
180
194#endif /* !_FIDO_H */ 181#endif /* !_FIDO_H */