diff options
| author | Robin Krahl <me@robin-krahl.de> | 2018-04-04 23:54:07 +0200 | 
|---|---|---|
| committer | Szczepan Zalega <szczepan@nitrokey.com> | 2018-04-10 08:14:23 +0200 | 
| commit | 5a56b83084d797728e5ed557cce2637b3a1e7e56 (patch) | |
| tree | c153252fee78ad705c7784737606d750b3eb9978 | |
| parent | 45a0b1cecde0eeecf8b8be75ec24d1ecc3ad884f (diff) | |
| download | libnitrokey-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.
| -rw-r--r-- | NK_C_API.cc | 16 | ||||
| -rw-r--r-- | NK_C_API.h | 22 | 
2 files changed, 38 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([&]() { @@ -34,6 +34,21 @@  #ifdef __cplusplus  extern "C" {  #endif + +        /** +         * The Nitrokey device models supported by the API. +         */ +        enum NK_device_model { +            /** +             * Nitrokey Pro. +             */ +            NK_PRO, +            /** +             * Nitrokey Storage. +             */ +            NK_STORAGE +        }; +  	/**  	 * Set debug level of messages written on stderr  	 * @param state state=True - most messages, state=False - only errors level @@ -54,6 +69,13 @@ extern "C" {  	NK_C_API int NK_login(const char *device_model);  	/** +	 * Connect to device of given model. Currently library can be connected only to one device at once. +	 * @param device_model NK_device_model: NK_PRO: Nitrokey Pro, NK_STORAGE: Nitrokey Storage +	 * @return 1 if connected, 0 if wrong model or cannot connect +	 */ +        NK_C_API int NK_login_enum(NK_device_model device_model); + +	/**  	 * Connect to first available device, starting checking from Pro 1st to Storage 2nd.  	 * @return 1 if connected, 0 if wrong model or cannot connect  	 */ | 
