summaryrefslogtreecommitdiff
path: root/NK_C_API.h
diff options
context:
space:
mode:
Diffstat (limited to 'NK_C_API.h')
-rw-r--r--NK_C_API.h164
1 files changed, 153 insertions, 11 deletions
diff --git a/NK_C_API.h b/NK_C_API.h
index a739aff..b1bdf1e 100644
--- a/NK_C_API.h
+++ b/NK_C_API.h
@@ -25,6 +25,8 @@
#include <stdbool.h>
#include <stdint.h>
+#include "deprecated.h"
+
#ifdef _MSC_VER
#define NK_C_API __declspec(dllexport)
#else
@@ -56,16 +58,127 @@ extern "C" {
};
/**
- * Set debug level of messages written on stderr
- * @param state state=True - most messages, state=False - only errors level
- */
+ * Stores the status of a Storage device.
+ */
+ struct NK_storage_status {
+ /**
+ * Indicates whether the unencrypted volume is read-only.
+ */
+ bool unencrypted_volume_read_only;
+ /**
+ * Indicates whether the unencrypted volume is active.
+ */
+ bool unencrypted_volume_active;
+ /**
+ * Indicates whether the encrypted volume is read-only.
+ */
+ bool encrypted_volume_read_only;
+ /**
+ * Indicates whether the encrypted volume is active.
+ */
+ bool encrypted_volume_active;
+ /**
+ * Indicates whether the hidden volume is read-only.
+ */
+ bool hidden_volume_read_only;
+ /**
+ * Indicates whether the hidden volume is active.
+ */
+ bool hidden_volume_active;
+ /**
+ * The major firmware version, e. g. 0 in v0.40.
+ */
+ uint8_t firmware_version_major;
+ /**
+ * The minor firmware version, e. g. 40 in v0.40.
+ */
+ uint8_t firmware_version_minor;
+ /**
+ * Indicates whether the firmware is locked.
+ */
+ bool firmware_locked;
+ /**
+ * The serial number of the SD card in the Storage stick.
+ */
+ uint32_t serial_number_sd_card;
+ /**
+ * The serial number of the smart card in the Storage stick.
+ */
+ uint32_t serial_number_smart_card;
+ /**
+ * The number of remaining login attempts for the user PIN.
+ */
+ uint8_t user_retry_count;
+ /**
+ * The number of remaining login attempts for the admin PIN.
+ */
+ uint8_t admin_retry_count;
+ /**
+ * Indicates whether a new SD card was found.
+ */
+ bool new_sd_card_found;
+ /**
+ * Indicates whether the SD card is filled with random characters.
+ */
+ bool filled_with_random;
+ /**
+ * Indicates whether the stick has been initialized by generating
+ * the AES keys.
+ */
+ bool stick_initialized;
+ };
+
+ struct NK_storage_ProductionTest{
+ uint8_t FirmwareVersion_au8[2];
+ uint8_t FirmwareVersionInternal_u8;
+ uint8_t SD_Card_Size_u8;
+ uint32_t CPU_CardID_u32;
+ uint32_t SmartCardID_u32;
+ uint32_t SD_CardID_u32;
+ uint8_t SC_UserPwRetryCount;
+ uint8_t SC_AdminPwRetryCount;
+ uint8_t SD_Card_ManufacturingYear_u8;
+ uint8_t SD_Card_ManufacturingMonth_u8;
+ uint16_t SD_Card_OEM_u16;
+ uint16_t SD_WriteSpeed_u16;
+ uint8_t SD_Card_Manufacturer_u8;
+ };
+
+ NK_C_API int NK_get_storage_production_info(struct NK_storage_ProductionTest * out);
+
+
+/**
+ * Set debug level of messages written on stderr
+ * @param state state=True - most messages, state=False - only errors level
+ */
NK_C_API void NK_set_debug(bool state);
/**
* Set debug level of messages written on stderr
* @param level (int) 0-lowest verbosity, 5-highest verbosity
*/
- NK_C_API void NK_set_debug_level(const int level);
+ NK_C_API void NK_set_debug_level(const int level);
+
+ /**
+ * Get the major library version, e. g. the 3 in v3.2.
+ * @return the major library version
+ */
+ NK_C_API unsigned int NK_get_major_library_version();
+
+ /**
+ * Get the minor library version, e. g. the 2 in v3.2.
+ * @return the minor library version
+ */
+ NK_C_API unsigned int NK_get_minor_library_version();
+
+ /**
+ * Get the library version as a string. This is the output of
+ * `git describe --always` at compile time, for example "v3.3" or
+ * "v3.3-19-gaee920b".
+ * The return value is a string literal and must not be freed.
+ * @return the library version as a string
+ */
+ NK_C_API const char* NK_get_library_version();
/**
* Connect to device of given model. Currently library can be connected only to one device at once.
@@ -277,9 +390,9 @@ extern "C" {
/**
* Get TOTP code from the device
* @param slot_number TOTP slot number, slot_number<15
- * @param challenge TOTP challenge
- * @param last_totp_time last time
- * @param last_interval last interval
+ * @param challenge TOTP challenge -- unused
+ * @param last_totp_time last time -- unused
+ * @param last_interval last interval --unused
* @return TOTP code
*/
NK_C_API char * NK_get_totp_code(uint8_t slot_number, uint64_t challenge, uint64_t last_totp_time,
@@ -288,9 +401,9 @@ extern "C" {
/**
* Get TOTP code from the device (PIN protected)
* @param slot_number TOTP slot number, slot_number<15
- * @param challenge TOTP challenge
- * @param last_totp_time last time
- * @param last_interval last interval
+ * @param challenge TOTP challenge -- unused
+ * @param last_totp_time last time -- unused
+ * @param last_interval last interval -- unused
* @param user_temporary_password char[25] user temporary password if PIN protected OTP codes are enabled,
* otherwise should be set to empty string - ''
* @return TOTP code
@@ -306,6 +419,20 @@ 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 instead
+ DEPRECATED
NK_C_API int NK_totp_get_time();
//passwords
@@ -599,6 +726,17 @@ extern "C" {
NK_C_API char* NK_get_status_storage_as_string();
/**
+ * Get the Storage stick status and return the command processing
+ * error code. If the code is zero, i. e. the command was successful,
+ * the storage status is written to the output pointer's target.
+ * The output pointer must not be null.
+ *
+ * @param out the output pointer for the storage status
+ * @return command processing error code
+ */
+ NK_C_API int NK_get_status_storage(struct NK_storage_status* out);
+
+ /**
* Get SD card usage attributes as string.
* Usable during hidden volumes creation.
* Storage only
@@ -641,7 +779,11 @@ extern "C" {
*/
NK_C_API int NK_connect_with_ID(const char* id);
-
+ /**
+ * Blink red and green LED alternatively and infinitely (until device is reconnected).
+ * @return command processing error code
+ */
+ NK_C_API int NK_wink();
#ifdef __cplusplus
}