diff options
| author | David M. Syzdek <david@syzdek.net> | 2023-01-03 13:23:21 -0900 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2023-01-03 14:38:18 -0900 |
| commit | e19a961d9166d892f2a9484441888701fa2d0dd8 (patch) | |
| tree | d402c853114b6b59a4f7df91868ae6ada5461a03 /include | |
| parent | 352502b06eb8de133d99a0fed13fcc0711398f45 (diff) | |
| download | otputils-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.h | 14 |
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 | |||
| 285 | otputil_hotp_code( | 295 | otputil_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 * | |||
| 292 | otputil_hotp_str( | 303 | otputil_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 ); |
