diff options
Diffstat (limited to 'src/fido.h')
-rw-r--r-- | src/fido.h | 53 |
1 files changed, 20 insertions, 33 deletions
@@ -14,24 +14,6 @@ | |||
14 | #include <stdint.h> | 14 | #include <stdint.h> |
15 | #include <stdlib.h> | 15 | #include <stdlib.h> |
16 | 16 | ||
17 | typedef void *fido_dev_io_open_t(const char *); | ||
18 | typedef void fido_dev_io_close_t(void *); | ||
19 | typedef int fido_dev_io_read_t(void *, unsigned char *, size_t, int); | ||
20 | typedef int fido_dev_io_write_t(void *, const unsigned char *, size_t); | ||
21 | |||
22 | typedef 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 | |||
29 | typedef 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 |
50 | typedef struct fido_assert fido_assert_t; | 32 | extern "C" { |
51 | typedef struct fido_cbor_info fido_cbor_info_t; | 33 | #endif /* __cplusplus */ |
52 | typedef struct fido_cred fido_cred_t; | ||
53 | typedef struct fido_dev fido_dev_t; | ||
54 | typedef struct fido_dev_info fido_dev_info_t; | ||
55 | typedef struct es256_pk es256_pk_t; | ||
56 | typedef struct es256_sk es256_sk_t; | ||
57 | typedef struct rs256_pk rs256_pk_t; | ||
58 | typedef struct eddsa_pk eddsa_pk_t; | ||
59 | #endif | ||
60 | 34 | ||
61 | fido_assert_t *fido_assert_new(void); | 35 | fido_assert_t *fido_assert_new(void); |
62 | fido_cred_t *fido_cred_new(void); | 36 | fido_cred_t *fido_cred_new(void); |
63 | fido_dev_t *fido_dev_new(void); | 37 | fido_dev_t *fido_dev_new(void); |
38 | fido_dev_t *fido_dev_new_with_info(const fido_dev_info_t *); | ||
64 | fido_dev_info_t *fido_dev_info_new(size_t); | 39 | fido_dev_info_t *fido_dev_info_new(size_t); |
65 | fido_cbor_info_t *fido_cbor_info_new(void); | 40 | fido_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 | ||
78 | void fido_init(int); | 53 | void fido_init(int); |
54 | void fido_set_log_handler(fido_log_handler_t *); | ||
79 | 55 | ||
80 | const unsigned char *fido_assert_authdata_ptr(const fido_assert_t *, size_t); | 56 | const unsigned char *fido_assert_authdata_ptr(const fido_assert_t *, size_t); |
81 | const unsigned char *fido_assert_clientdata_hash_ptr(const fido_assert_t *); | 57 | const 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 *, | |||
121 | int fido_assert_set_count(fido_assert_t *, size_t); | 97 | int fido_assert_set_count(fido_assert_t *, size_t); |
122 | int fido_assert_set_extensions(fido_assert_t *, int); | 98 | int fido_assert_set_extensions(fido_assert_t *, int); |
123 | int fido_assert_set_hmac_salt(fido_assert_t *, const unsigned char *, size_t); | 99 | int fido_assert_set_hmac_salt(fido_assert_t *, const unsigned char *, size_t); |
124 | int fido_assert_set_options(fido_assert_t *, bool, bool) __attribute__((__deprecated__)); | 100 | int fido_assert_set_options(fido_assert_t *, bool, bool) |
101 | __attribute__((__deprecated__("use fido_assert_set_up/fido_assert_set_uv"))); | ||
125 | int fido_assert_set_rp(fido_assert_t *, const char *); | 102 | int fido_assert_set_rp(fido_assert_t *, const char *); |
126 | int fido_assert_set_up(fido_assert_t *, fido_opt_t); | 103 | int fido_assert_set_up(fido_assert_t *, fido_opt_t); |
127 | int fido_assert_set_uv(fido_assert_t *, fido_opt_t); | 104 | int fido_assert_set_uv(fido_assert_t *, fido_opt_t); |
128 | int fido_assert_set_sig(fido_assert_t *, size_t, const unsigned char *, size_t); | 105 | int fido_assert_set_sig(fido_assert_t *, size_t, const unsigned char *, size_t); |
129 | int fido_assert_verify(const fido_assert_t *, size_t, int, const void *); | 106 | int fido_assert_verify(const fido_assert_t *, size_t, int, const void *); |
130 | int fido_cred_exclude(fido_cred_t *, const unsigned char *, size_t); | 107 | int fido_cred_exclude(fido_cred_t *, const unsigned char *, size_t); |
108 | int fido_cred_prot(const fido_cred_t *); | ||
131 | int fido_cred_set_authdata(fido_cred_t *, const unsigned char *, size_t); | 109 | int fido_cred_set_authdata(fido_cred_t *, const unsigned char *, size_t); |
132 | int fido_cred_set_authdata_raw(fido_cred_t *, const unsigned char *, size_t); | 110 | int fido_cred_set_authdata_raw(fido_cred_t *, const unsigned char *, size_t); |
133 | int fido_cred_set_clientdata_hash(fido_cred_t *, const unsigned char *, size_t); | 111 | int fido_cred_set_clientdata_hash(fido_cred_t *, const unsigned char *, size_t); |
134 | int fido_cred_set_extensions(fido_cred_t *, int); | 112 | int fido_cred_set_extensions(fido_cred_t *, int); |
135 | int fido_cred_set_fmt(fido_cred_t *, const char *); | 113 | int fido_cred_set_fmt(fido_cred_t *, const char *); |
136 | int fido_cred_set_options(fido_cred_t *, bool, bool) __attribute__((__deprecated__)); | 114 | int fido_cred_set_options(fido_cred_t *, bool, bool) |
115 | __attribute__((__deprecated__("use fido_cred_set_rk/fido_cred_set_uv"))); | ||
116 | int fido_cred_set_prot(fido_cred_t *, int); | ||
137 | int fido_cred_set_rk(fido_cred_t *, fido_opt_t); | 117 | int fido_cred_set_rk(fido_cred_t *, fido_opt_t); |
138 | int fido_cred_set_rp(fido_cred_t *, const char *, const char *); | 118 | int fido_cred_set_rp(fido_cred_t *, const char *, const char *); |
139 | int fido_cred_set_sig(fido_cred_t *, const unsigned char *, size_t); | 119 | int 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 *); | |||
152 | int fido_dev_get_retry_count(fido_dev_t *, int *); | 132 | int fido_dev_get_retry_count(fido_dev_t *, int *); |
153 | int fido_dev_info_manifest(fido_dev_info_t *, size_t, size_t *); | 133 | int fido_dev_info_manifest(fido_dev_info_t *, size_t, size_t *); |
154 | int fido_dev_make_cred(fido_dev_t *, fido_cred_t *, const char *); | 134 | int fido_dev_make_cred(fido_dev_t *, fido_cred_t *, const char *); |
135 | int fido_dev_open_with_info(fido_dev_t *); | ||
155 | int fido_dev_open(fido_dev_t *, const char *); | 136 | int fido_dev_open(fido_dev_t *, const char *); |
156 | int fido_dev_reset(fido_dev_t *); | 137 | int fido_dev_reset(fido_dev_t *); |
157 | int fido_dev_set_io_functions(fido_dev_t *, const fido_dev_io_t *); | 138 | int fido_dev_set_io_functions(fido_dev_t *, const fido_dev_io_t *); |
158 | int fido_dev_set_pin(fido_dev_t *, const char *, const char *); | 139 | int fido_dev_set_pin(fido_dev_t *, const char *, const char *); |
140 | int fido_dev_set_transport_functions(fido_dev_t *, const fido_dev_transport_t *); | ||
159 | 141 | ||
160 | size_t fido_assert_authdata_len(const fido_assert_t *, size_t); | 142 | size_t fido_assert_authdata_len(const fido_assert_t *, size_t); |
161 | size_t fido_assert_clientdata_hash_len(const fido_assert_t *); | 143 | size_t fido_assert_clientdata_hash_len(const fido_assert_t *); |
@@ -178,7 +160,7 @@ size_t fido_cred_sig_len(const fido_cred_t *); | |||
178 | size_t fido_cred_x5c_len(const fido_cred_t *); | 160 | size_t fido_cred_x5c_len(const fido_cred_t *); |
179 | 161 | ||
180 | uint8_t fido_assert_flags(const fido_assert_t *, size_t); | 162 | uint8_t fido_assert_flags(const fido_assert_t *, size_t); |
181 | uint32_t fido_assert_sigcount(const fido_assert_t *, size_t); | 163 | uint32_t fido_assert_sigcount(const fido_assert_t *, size_t); |
182 | uint8_t fido_cred_flags(const fido_cred_t *); | 164 | uint8_t fido_cred_flags(const fido_cred_t *); |
183 | uint8_t fido_dev_protocol(const fido_dev_t *); | 165 | uint8_t fido_dev_protocol(const fido_dev_t *); |
184 | uint8_t fido_dev_major(const fido_dev_t *); | 166 | uint8_t fido_dev_major(const fido_dev_t *); |
@@ -188,7 +170,12 @@ uint8_t fido_dev_flags(const fido_dev_t *); | |||
188 | int16_t fido_dev_info_vendor(const fido_dev_info_t *); | 170 | int16_t fido_dev_info_vendor(const fido_dev_info_t *); |
189 | int16_t fido_dev_info_product(const fido_dev_info_t *); | 171 | int16_t fido_dev_info_product(const fido_dev_info_t *); |
190 | uint64_t fido_cbor_info_maxmsgsiz(const fido_cbor_info_t *); | 172 | uint64_t fido_cbor_info_maxmsgsiz(const fido_cbor_info_t *); |
173 | uint64_t fido_cbor_info_fwversion(const fido_cbor_info_t *); | ||
191 | 174 | ||
192 | bool fido_dev_is_fido2(const fido_dev_t *); | 175 | bool 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 */ |