aboutsummaryrefslogtreecommitdiff
path: root/NK_C_API.h
diff options
context:
space:
mode:
authorRobin Krahl <me@robin-krahl.de>2018-05-18 09:26:56 +0200
committerSzczepan Zalega <szczepan@nitrokey.com>2018-06-19 19:55:18 +0200
commit81a288088c4e54ffce81e1971c4ccdfe2ec80b8a (patch)
tree4811c6af860507f723571999d5fb879ff7a8a6e3 /NK_C_API.h
parentb46dbfa63f344cd7e5323139cf71cd100a179682 (diff)
downloadlibnitrokey-81a288088c4e54ffce81e1971c4ccdfe2ec80b8a.tar.gz
libnitrokey-81a288088c4e54ffce81e1971c4ccdfe2ec80b8a.tar.bz2
Add set_time_soft to replace get_time
The SetTime command supports two modes: set the time without checking the currently set time, or verify that the currently set time is not zero and not larger than the new time (see cmd_set_time(uint8_t*, uint8_t*) in src/keyboard/report_protocol.c, lines 678--710, in the Nitrokey Pro firmware). NitrokeyManager called these two modes set_time(uint64_t) and get_time(uint64_t), which is highly misleading -- the command does never get the time. Furthermore, the get_time method per default calls the command with the time zero, which will always result in an error. The C API has the methods NK_totp_set_time(uint64_t) and NK_totp_get_time(). NK_totp_get_time() calls get_time(uint64_t) with the time zero, leading to an error, and is therefore useless. This patch proposes a new wording. While it would make sense to call the first mode “reset” and the second mode “set”, this would break compatibility. Therefore, new methods set_time_soft(uint64_t) and NK_totp_set_time_soft(uint64_t) are introduced to represent the difference between a hard and a soft setting of the time. The old methods, get_time(uint64_t) and NK_totp_get_time(), are not removed but marked as deprecated. They should be removed in an upcoming major release.
Diffstat (limited to 'NK_C_API.h')
-rw-r--r--NK_C_API.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/NK_C_API.h b/NK_C_API.h
index 5bcc484..28e83b9 100644
--- a/NK_C_API.h
+++ b/NK_C_API.h
@@ -386,6 +386,19 @@ extern "C" {
*/
NK_C_API int NK_totp_set_time(uint64_t time);
+ /**
+ * Set the device time used for TOTP to the given time. Contrary to
+ * {@code set_time(uint64_t)}, this command fails if {@code old_time}
+ * &gt; {@code time} or if {@code old_time} is zero (where {@code
+ * old_time} is the current time on the device).
+ *
+ * @param time new device time as Unix timestamp (seconds since
+ * 1970-01-01)
+ * @return command processing error code
+ */
+ NK_C_API int NK_totp_set_time_soft(uint64_t time);
+
+ /* NK_totp_get_time() is deprecated -- use NK_totp_set_time_soft */
NK_C_API int NK_totp_get_time();
//passwords