aboutsummaryrefslogtreecommitdiff
path: root/NK_C_API.cc
diff options
context:
space:
mode:
authorRobin Krahl <me@robin-krahl.de>2018-04-04 23:54:07 +0200
committerSzczepan Zalega <szczepan@nitrokey.com>2018-04-10 08:14:23 +0200
commit5a56b83084d797728e5ed557cce2637b3a1e7e56 (patch)
treec153252fee78ad705c7784737606d750b3eb9978 /NK_C_API.cc
parent45a0b1cecde0eeecf8b8be75ec24d1ecc3ad884f (diff)
downloadlibnitrokey-5a56b83084d797728e5ed557cce2637b3a1e7e56.tar.gz
libnitrokey-5a56b83084d797728e5ed557cce2637b3a1e7e56.tar.bz2
Add NK_login_enum to the C API
As with the C++ API, identifying the model by the first character of a string is not intuitive. This patch adds the NK_login_enum function to the C API that accepts an enum value instead of a string. It also adds a new enum NK_device_model as device::DeviceModel is an enum class and therefore cannot be used in C.
Diffstat (limited to 'NK_C_API.cc')
-rw-r--r--NK_C_API.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/NK_C_API.cc b/NK_C_API.cc
index 64355f5..b245940 100644
--- a/NK_C_API.cc
+++ b/NK_C_API.cc
@@ -161,6 +161,22 @@ extern "C" {
return 0;
}
+ NK_C_API int NK_login_enum(NK_device_model device_model) {
+ const char *model_string;
+ switch (device_model) {
+ case NK_PRO:
+ model_string = "P";
+ break;
+ case NK_STORAGE:
+ model_string = "S";
+ break;
+ default:
+ /* no such enum value -- return error code */
+ return 0;
+ }
+ return NK_login(model_string);
+ }
+
NK_C_API int NK_logout() {
auto m = NitrokeyManager::instance();
return get_without_result([&]() {