From a5d11eab6003a6ed0f7c78ecb7136b28ee938a23 Mon Sep 17 00:00:00 2001 From: Szczepan Zalega Date: Mon, 18 Jul 2016 18:04:34 +0200 Subject: Initial version of C/Python bindings Signed-off-by: Szczepan Zalega --- NK_C_API.cc | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 NK_C_API.cc (limited to 'NK_C_API.cc') diff --git a/NK_C_API.cc b/NK_C_API.cc new file mode 100644 index 0000000..cc35794 --- /dev/null +++ b/NK_C_API.cc @@ -0,0 +1,69 @@ +#include +#include "NK_C_API.h" + +using namespace nitrokey; + +extern "C" +{ +extern int NK_login(const char *pin, const char *temporary_password) { + auto m = NitrokeyManager::instance(); + return m->connect() && m->authorize(pin, temporary_password); +} + +extern int NK_logout() { + auto m = NitrokeyManager::instance(); + return m->disconnect(); +} +extern const char * NK_status() { + auto m = NitrokeyManager::instance(); + string s = m->get_status(); + return strdup(s.c_str()); +} + +extern uint32_t NK_get_hotp_code(uint8_t slot_number){ + auto m = NitrokeyManager::instance(); + return m->get_HOTP_code(slot_number); +} + +extern uint32_t NK_get_totp_code(uint8_t slot_number, uint64_t challenge, uint64_t last_totp_time, + uint8_t last_interval){ + auto m = NitrokeyManager::instance(); + return m->get_TOTP_code(slot_number, 0, 0, 0); +} + +extern int NK_erase_hotp_slot(uint8_t slot_number) { + auto m = NitrokeyManager::instance(); + return m->erase_hotp_slot(slot_number); +} +extern int NK_erase_totp_slot(uint8_t slot_number) { + auto m = NitrokeyManager::instance(); + return m->erase_totp_slot(slot_number); +} + +extern int NK_write_hotp_slot(uint8_t slot_number, const char *slot_name, const char *secret, uint8_t hotp_counter, + const char *temporary_password) { + auto m = NitrokeyManager::instance(); + return m->write_HOTP_slot(slot_number, slot_name, secret, hotp_counter, temporary_password); +} + +extern int NK_write_totp_slot(uint8_t slot_number, const char *secret, uint16_t time_window) { + auto m = NitrokeyManager::instance(); + return m->write_TOTP_slot(slot_number, secret, time_window); +} + +extern const char* NK_get_totp_slot_name(uint8_t slot_number){ + auto m = NitrokeyManager::instance(); + return m->get_totp_slot_name(slot_number); +} +extern const char* NK_get_hotp_slot_name(uint8_t slot_number){ + auto m = NitrokeyManager::instance(); + return m->get_hotp_slot_name(slot_number); +} + +extern void NK_set_debug(bool state){ + auto m = NitrokeyManager::instance(); + m->set_debug(state); +} + + +} \ No newline at end of file -- cgit v1.2.1