aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include
diff options
context:
space:
mode:
authorDavid M. Syzdek <david@syzdek.net>2023-01-03 13:23:21 -0900
committerDavid M. Syzdek <david@syzdek.net>2023-01-03 14:38:18 -0900
commite19a961d9166d892f2a9484441888701fa2d0dd8 (patch)
treed402c853114b6b59a4f7df91868ae6ada5461a03 /include
parent352502b06eb8de133d99a0fed13fcc0711398f45 (diff)
downloadotputils-e19a961d9166d892f2a9484441888701fa2d0dd8.tar.gz
otputils-e19a961d9166d892f2a9484441888701fa2d0dd8.tar.bz2
otputils-e19a961d9166d892f2a9484441888701fa2d0dd8.tar.xz
otputils-e19a961d9166d892f2a9484441888701fa2d0dd8.zip
libotputil: adding ability to specify HMAC for HOTP/TOTP
Diffstat (limited to 'include')
-rw-r--r--include/otputil.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/include/otputil.h b/include/otputil.h
index 429a4cc..c89edb5 100644
--- a/include/otputil.h
+++ b/include/otputil.h
@@ -112,11 +112,13 @@
112#define OTPUTIL_OPT_DESC 0x0001 112#define OTPUTIL_OPT_DESC 0x0001
113#define OTPUTIL_OPT_METHOD 0x0002 113#define OTPUTIL_OPT_METHOD 0x0002
114#define OTPUTIL_OPT_DIGITS 0x0003 // (int *) sets digits for both HOTP and TOTP 114#define OTPUTIL_OPT_DIGITS 0x0003 // (int *) sets digits for both HOTP and TOTP
115#define OTPUTIL_OPT_HMAC 0x0004 // (int *) sets HMAC for both HOTP and TOTP
115// HOTP options (RFC4226) 116// HOTP options (RFC4226)
116#define OTPUTIL_OPT_HOTP_K 0x0100 117#define OTPUTIL_OPT_HOTP_K 0x0100
117#define OTPUTIL_OPT_HOTP_KSTR 0x0101 // base32 encoded K 118#define OTPUTIL_OPT_HOTP_KSTR 0x0101 // base32 encoded K
118#define OTPUTIL_OPT_HOTP_C 0x0102 119#define OTPUTIL_OPT_HOTP_C 0x0102
119#define OTPUTIL_OPT_HOTP_DIGITS 0x0103 // (int *) 120#define OTPUTIL_OPT_HOTP_DIGITS 0x0103 // (int *)
121#define OTPUTIL_OPT_HOTP_HMAC 0x0104 // (int *)
120// TOTP options (RFC6238) 122// TOTP options (RFC6238)
121#define OTPUTIL_OPT_TOTP_K 0x0200 123#define OTPUTIL_OPT_TOTP_K 0x0200
122#define OTPUTIL_OPT_TOTP_KSTR 0x0201 // base32 encoded K 124#define OTPUTIL_OPT_TOTP_KSTR 0x0201 // base32 encoded K
@@ -124,6 +126,12 @@
124#define OTPUTIL_OPT_TOTP_X 0x0203 126#define OTPUTIL_OPT_TOTP_X 0x0203
125#define OTPUTIL_OPT_TOTP_TIME 0x0204 // current UNIX time 127#define OTPUTIL_OPT_TOTP_TIME 0x0204 // current UNIX time
126#define OTPUTIL_OPT_TOTP_DIGITS 0x0205 // (int *) 128#define OTPUTIL_OPT_TOTP_DIGITS 0x0205 // (int *)
129#define OTPUTIL_OPT_TOTP_HMAC 0x0206 // (int *)
130
131
132#define OTPUTIL_MD_SHA1 1
133#define OTPUTIL_MD_SHA256 2
134#define OTPUTIL_MD_SHA512 3
127 135
128 136
129#define OTPUTIL_METH_RFC4226 0x0001 137#define OTPUTIL_METH_RFC4226 0x0001
@@ -136,11 +144,13 @@
136// HOTP defaults 144// HOTP defaults
137#define OTPUTIL_DFLT_HOTP_C 1ULL 145#define OTPUTIL_DFLT_HOTP_C 1ULL
138#define OTPUTIL_DFLT_HOTP_DIGITS 6 146#define OTPUTIL_DFLT_HOTP_DIGITS 6
147#define OTPUTIL_DFLT_HOTP_HMAC OTPUTIL_MD_SHA1
139// TOTP defaults 148// TOTP defaults
140#define OTPUTIL_DFLT_TOTP_T0 0ULL 149#define OTPUTIL_DFLT_TOTP_T0 0ULL
141#define OTPUTIL_DFLT_TOTP_X 30ULL 150#define OTPUTIL_DFLT_TOTP_X 30ULL
142#define OTPUTIL_DFLT_TOTP_TIME 0ULL // current UNIX time 151#define OTPUTIL_DFLT_TOTP_TIME 0ULL // current UNIX time
143#define OTPUTIL_DFLT_TOTP_DIGITS 6 152#define OTPUTIL_DFLT_TOTP_DIGITS 6
153#define OTPUTIL_DFLT_TOTP_HMAC OTPUTIL_MD_SHA1
144 154
145 155
146#define OTPUTIL_MAX_CODE_SIZE 16 156#define OTPUTIL_MAX_CODE_SIZE 16
@@ -285,6 +295,7 @@ _OTPUTIL_F int
285otputil_hotp_code( 295otputil_hotp_code(
286 const otputil_bv_t * hotp_k, 296 const otputil_bv_t * hotp_k,
287 uint64_t hotp_c, 297 uint64_t hotp_c,
298 int hotp_hmac,
288 int hotp_digits ); 299 int hotp_digits );
289 300
290 301
@@ -292,6 +303,7 @@ _OTPUTIL_F char *
292otputil_hotp_str( 303otputil_hotp_str(
293 const otputil_bv_t * hotp_k, 304 const otputil_bv_t * hotp_k,
294 uint64_t hotp_c, 305 uint64_t hotp_c,
306 int hotp_hmac,
295 int hotp_digits, 307 int hotp_digits,
296 char * dst, 308 char * dst,
297 size_t dstlen ); 309 size_t dstlen );
@@ -308,6 +320,7 @@ otputil_totp_code(
308 uint64_t totp_t0, 320 uint64_t totp_t0,
309 uint64_t totp_tx, 321 uint64_t totp_tx,
310 uint64_t totp_time, 322 uint64_t totp_time,
323 int totp_hmac,
311 int totp_digits ); 324 int totp_digits );
312 325
313 326
@@ -317,6 +330,7 @@ otputil_totp_str(
317 uint64_t totp_t0, 330 uint64_t totp_t0,
318 uint64_t totp_tx, 331 uint64_t totp_tx,
319 uint64_t totp_time, 332 uint64_t totp_time,
333 int totp_hmac,
320 int totp_digits, 334 int totp_digits,
321 char * dst, 335 char * dst,
322 size_t dstlen ); 336 size_t dstlen );