aboutsummaryrefslogtreecommitdiff
path: root/NK_C_API.h
Commit message (Collapse)AuthorAge
* Replace NK_status with NK_get_status_as_stringRobin Krahl2019-01-29
| | | | | For naming consistency, this patch adds the NK_get_status_as_string function to replace NK_status and marks NK_status as deprecated.
* Add NK_get_status function to get status structRobin Krahl2019-01-29
| | | | | | | | | Currently, the C API provides access to the device status using the NK_get_{major,minor}_firmware_version, NK_device_serial_number and NK_read_config functions. Each function sends a command to the device, although the data is returned in a single response. This patch adds a NK_status struct and a NK_get_status function that provide access to this data with a single command.
* Merge branch 'pr_148'Szczepan Zalega2019-01-24
|\ | | | | | | | | | | Generate documentation for C API using Doxygen Fixes #148
| * Add \mainpage to the C API documentationRobin Krahl2019-01-16
| | | | | | | | | | The main page contains a reference to the header containing all functions of the C API and a short example of how to use it.
| * Add a \file doc comment to libnitrokeyRobin Krahl2019-01-16
| | | | | | | | | | | | Doxygen does not include top-level functions unless the file is documented. Therefore we have to add a \file doc comment so that the functions show up in the Doxygen output.
* | Merge branch 'pr_149'Szczepan Zalega2019-01-24
|\ \ | | | | | | | | | | | | | | | Return uint8_t from version getters Fixes #149
| * | Return firmware version parts as uint8_t instead of intfix/get-firmware-versionRobin Krahl2019-01-17
| | | | | | | | | | | | | | | | | | | | | | | | The firmware version parts returned by the Nitrokey devices are uint8_t values. This is part of the public API as part of the NK_storage_status struct. For consistency with this API, this patch changes the functions NK_get_major_firmware_version and NK_get_minor_firmware_version to return uint8_t instead of int.
* | | Export PWS slot count in C APIpws-slot-countRobin Krahl2019-01-24
|/ / | | | | | | | | | | | | The C++ API already defines the number of slots in device_proto.h. This patch adds it to the C API. It is especially important to have this constant in the C API as it is the length of the array returned by NK_get_password_safe_slot_status.
* | Merge branch 'pr_138' into contributionsSzczepan Zalega2019-01-15
|\ \ | | | | | | | | | | | | | | | Improve support for multiple devices Fixes #138
| * | Add NK_device_info, NK_list_devices and NK_free_device_infoRobin Krahl2019-01-13
| | | | | | | | | | | | | | | | | | NK_list_devices corresponds to NitrokeyManager::list_devices. It returns a linked list of NK_device_info, which has to be freed using the NK_free_device_info function.
| * | Add NK_connect_with_path to C APIRobin Krahl2019-01-13
| |/ | | | | | | NK_connect_with_path corresponds to NitrokeyManager::connect_with_path.
* | Merge branch 'pr_145' into contributionsSzczepan Zalega2019-01-15
|\ \ | | | | | | | | | | | | | | | Add NK_get_SD_usage_data function to C API Fixes #145
| * | Add NK_get_SD_usage_data function to C APIfeature/sd-usage-data-structRobin Krahl2019-01-14
| |/ | | | | | | | | | | The NK_get_SD_usage_data function returns the minimum and maximum write level for the SD card. This function cannot be tested due to the missing struct support in the Python tests.
* / Return -2 if an error occured in NK_get_progress_bar_valuefix/progress-bar-errorRobin Krahl2019-01-14
|/ | | | | | | | NK_get_progress_bar_value returns the progress value from 0 to 100 or -1 if there is no pending operation. In the previous implementation, it also returned zero if an error occurred, making it impossible to distinguish progress zero and an error. Therefore, we change the return value to -2 if an error occured.
* Merge branch 'pr_116'Szczepan Zalega2018-07-07
|\ | | | | | | | | | | Allow to connect to device with model specified by enum. Fixes #116
| * Replace *out function parameter with return valueSzczepan Zalega2018-06-20
| | | | | | | | | | | | | | Using return value instead of memory manipulation seem to be cleaner solution and less error prone due to avoiding pointer usage. Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
| * Expose device model in C APIRobin Krahl2018-05-25
| | | | | | | | | | | | | | | | | | The C++ API already provides access to the model of the connected device in NitrokeyManager::get_connected_device_model(). This patch also exposes this information in the C API by adding NK_get_device_model. As there might be no device connected, the function returns a boolean indicating the connection status and writes the model of the connected device to a pointer passed as an argument.
* | Add general DEPRECATED macro for marking deprecated functions.Szczepan Zalega2018-07-07
| | | | | | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* | Replace deprecated attribute in C API with a commentRobin Krahl2018-07-05
| | | | | | | | | | | | Attribute specifiers are a C++-only feature. Therefore this patch removes the [[deprecated(...)]] attribute from the NK_totp_get_time method in NK_C_API.h and replaces it with a comment.
* | Handle command for getting production dataSzczepan Zalega2018-06-28
| | | | | | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* | Handle WINK commandSzczepan Zalega2018-06-23
| | | | | | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* | Add "deprecated" tags to get_time and NK_totp_get_time functionsSzczepan Zalega2018-06-19
| | | | | | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* | Add set_time_soft to replace get_timeRobin Krahl2018-06-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Merge branch 'pr_117'Szczepan Zalega2018-06-19
|\ \ | | | | | | | | | | | | | | | | | | | | | Library version getter for C API Fixes #117 Fixes #35 Fixes #62
| * | Add getters for the library versionRobin Krahl2018-05-25
| | | | | | | | | | | | | | | | | | | | | CMake generates version.h from version.h.in and sets the major and minor version as specified in CMakeLists.txt and the current git version as returned by `git describe --always`. These values are also added to the C API as NK_get{_major,_minor,}_library_version.
* | | Add missing struct keywordSzczepan Zalega2018-06-19
| | | | | | | | | | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* | | Add getter for Storage status to C APIRobin Krahl2018-05-25
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | The C++ API currently provides the Storage status in NitrokeyManager::get_status_storage(). The C API only provides a string version of this data (NK_get_status_storage_as_string). This patch adds a struct to the C API that can store the storage status and a function that can retrieve it. The interpretation of the fields of the internal struct is based on the following code in the Nitrokey Storage firmware: - src/HighLevelFunctions/FlashStorage.h, lines 73 to 90 (struct definition with comments) - src/OTP/report_protocol.c, lines 241 to 376 (debug output of the data)
* / Mark NK_get_totp_code arguments as unusedRobin Krahl2018-05-19
|/ | | | | | | | According to the GetTOTP class in stick10_commands_0.8.h and after firmware inspection, the challenge, last_totp_time and last_interval arguments for the get_TOTP_code method are unused. This patch adds this information to the doc comment for NK_get_totp_code and NK_get_totp_code_PIN.
* Change const char* to char* for functions returning duplicated strings.Szczepan Zalega2018-04-19
| | | | | | | All functions returning duplicated C-strings, which needs to be deallocated on caller side, are typed char* instead of const char* Issue #110 Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Return allocated string instead of pointer to a string literalSzczepan Zalega2018-04-19
| | | | | | Issue #110 Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Remove (Pro) marks from C API docsSzczepan Zalega2018-04-19
| | | | | | | These were to meant, that the sizes were confirmed for Pro and not for Storage, during library development. Storage has maintained the compatibility, hence there is no need for the mentioned marks. Issue #106 Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* C API docs - mention 320-bits secret for Pro v0.8Szczepan Zalega2018-04-19
| | | | | | Same for C-string requirements for fields and sizes Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Correct documentation for NK_write_{hotp,totp}_slotRobin Krahl2018-04-19
| | | | | | | While the actual secret is 20 bytes, the functions accept a hex string. That means that every byte of the secret is represented by two bytes (characters) in the hex string. So the argument secret for the functions NK_write_{hotp,totp}_slot is char[40], not char[20].
* Add missing `enum` specifier in the C APIRobin Krahl2018-04-10
| | | | | Contrary to C++, C requires the type `enum NK_device_model` instead of only `NK_device_model` when refering to the enum with that name.
* Merge branch '102-get_status_invalid'Szczepan Zalega2018-04-10
|\ | | | | | | Fixes #102
| * Correct C API documentationSzczepan Zalega2018-04-10
| | | | | | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* | Add NK_login_enum to the C APIRobin Krahl2018-04-10
|/ | | | | | | | 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.
* C API wrapper for NK_set_unencrypted_volume_rorw_pin_type_userSzczepan Zalega2018-03-09
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Add documentation for C API / multiple devicesSzczepan Zalega2018-03-01
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* List devices by unique SC:SD idSzczepan Zalega2018-02-28
| | | | | | | Add C API and tests Add mutexes Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Divide unencrypted volume ro/rw commands for backward compatibilitySzczepan Zalega2018-02-23
| | | | | | | | | | Unencrypted volume ro/rw: rename user_admin_pin -> admin_pin to be consistent with latest API. Update description. Document PIN requirements in C++ API Extract pin type function Add C API for separate unencrypted volume read write handling Use correct commands to set ro/rw mode of unencrypted volume Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Correct variable name for unencrypted ro/rw switchSzczepan Zalega2018-02-23
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* C API for Encrypted volume ro/rw switchSzczepan Zalega2018-02-23
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Correct getting minor and major from firmware versionSzczepan Zalega2018-02-23
| | | | | | | | | Add get_minor_firmware_version Correct get_major_firmware version (was returning minor instead) Name 3rd version field for test builds Use minor firmware version in tests Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Include stdbool.h in NK_C_API.hRobin Krahl2018-02-12
| | | | | | | NK_C_API.h uses the type bool although it is not defined in standard C. Since C99, the header stdbool.h provides this type, so this patch includes it in NK_C_API.h to make it valid C code. (Note that the API already required C99 for the "//"-style comments.)
* Add test for enabling firmware updateSzczepan Zalega2018-02-01
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Expose enabling firmware update in C APISzczepan Zalega2018-02-01
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Update license/copyright linesSzczepan Zalega2018-01-16
| | | | | | Remove redundant file Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Add DEBUG_L1 level and set it as default for Python testsSzczepan Zalega2017-10-10
| | | | Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
* Export C API functionsSzczepan Zalega2017-07-03
| | | | Guard extern to only C++