Restructure doc comments and make hard-coded strings translatable

This commit is contained in:
Janek Bevendorff 2017-02-21 00:28:01 +01:00
parent 2d4e08e060
commit 8d3e0687a0
No known key found for this signature in database
GPG Key ID: CFEC2F6850BFFA53
3 changed files with 53 additions and 56 deletions

View File

@ -27,6 +27,7 @@
#include "keys/drivers/YubiKey.h" #include "keys/drivers/YubiKey.h"
#include <QDebug> #include <QDebug>
#include <QObject>
YkChallengeResponseKey::YkChallengeResponseKey(int slot, YkChallengeResponseKey::YkChallengeResponseKey(int slot,
bool blocking) bool blocking)
@ -58,10 +59,12 @@ bool YkChallengeResponseKey::challenge(const QByteArray& chal, int retries)
return true; return true;
} }
/* If challenge failed, retry to detect YubiKeys int the event the YubiKey /* If challenge failed, retry to detect YubiKeys in the event the YubiKey
* was un-plugged and re-plugged */ * was un-plugged and re-plugged */
while (retries > 0) { while (retries > 0) {
#ifdef QT_DEBUG
qDebug() << "Attempt" << retries << "to re-detect YubiKey(s)"; qDebug() << "Attempt" << retries << "to re-detect YubiKey(s)";
#endif
retries--; retries--;
if (YubiKey::instance()->init() != true) { if (YubiKey::instance()->init() != true) {
@ -79,13 +82,13 @@ bool YkChallengeResponseKey::challenge(const QByteArray& chal, int retries)
QString YkChallengeResponseKey::getName() const QString YkChallengeResponseKey::getName() const
{ {
unsigned int serial; unsigned int serial;
QString fmt("YubiKey[%1] Challenge Response - Slot %2 - %3"); QString fmt(QObject::tr("YubiKey[%1] Challenge Response - Slot %2 - %3"));
YubiKey::instance()->getSerial(serial); YubiKey::instance()->getSerial(serial);
return fmt.arg(QString::number(serial), return fmt.arg(QString::number(serial),
QString::number(m_slot), QString::number(m_slot),
(m_blocking) ? "Press" : "Passive"); (m_blocking) ? QObject::tr("Press") : QObject::tr("Passive"));
} }
bool YkChallengeResponseKey::isBlocking() const bool YkChallengeResponseKey::isBlocking() const

View File

@ -29,9 +29,8 @@
#include "YubiKey.h" #include "YubiKey.h"
/* Cast the void pointer from the generalized class definition // Cast the void pointer from the generalized class definition
* to the proper pointer type from the now included system headers // to the proper pointer type from the now included system headers
*/
#define m_yk (static_cast<YK_KEY*>(m_yk_void)) #define m_yk (static_cast<YK_KEY*>(m_yk_void))
#define m_ykds (static_cast<YK_STATUS*>(m_ykds_void)) #define m_ykds (static_cast<YK_STATUS*>(m_ykds_void))
@ -41,10 +40,6 @@ YubiKey::YubiKey() : m_yk_void(NULL), m_ykds_void(NULL)
YubiKey* YubiKey::m_instance(Q_NULLPTR); YubiKey* YubiKey::m_instance(Q_NULLPTR);
/**
* @brief YubiKey::instance - get instance of singleton
* @return
*/
YubiKey* YubiKey::instance() YubiKey* YubiKey::instance()
{ {
if (!m_instance) { if (!m_instance) {
@ -54,20 +49,16 @@ YubiKey* YubiKey::instance()
return m_instance; return m_instance;
} }
/**
* @brief YubiKey::init - initialize yubikey library and hardware
* @return
*/
bool YubiKey::init() bool YubiKey::init()
{ {
/* Previously initalized */ // previously initialized
if (m_yk != NULL && m_ykds != NULL) { if (m_yk != NULL && m_ykds != NULL) {
if (yk_get_status(m_yk, m_ykds)) { if (yk_get_status(m_yk, m_ykds)) {
/* Still connected */ // Still connected
return true; return true;
} else { } else {
/* Initialized but not connected anymore, re-init */ // Initialized but not connected anymore, re-init
deinit(); deinit();
} }
} }
@ -76,7 +67,7 @@ bool YubiKey::init()
return false; return false;
} }
/* TODO: handle multiple attached hardware devices, currently own one */ // TODO: handle multiple attached hardware devices
m_yk_void = static_cast<void*>(yk_open_first_key()); m_yk_void = static_cast<void*>(yk_open_first_key());
if (m_yk == NULL) { if (m_yk == NULL) {
return false; return false;
@ -92,10 +83,6 @@ bool YubiKey::init()
return true; return true;
} }
/**
* @brief YubiKey::deinit - cleanup after init
* @return true on success
*/
bool YubiKey::deinit() bool YubiKey::deinit()
{ {
if (m_yk) { if (m_yk) {
@ -111,9 +98,6 @@ bool YubiKey::deinit()
return true; return true;
} }
/**
* @brief YubiKey::detect - probe for attached YubiKeys
*/
void YubiKey::detect() void YubiKey::detect()
{ {
if (init()) { if (init()) {
@ -133,11 +117,6 @@ void YubiKey::detect()
emit notFound(); emit notFound();
} }
/**
* @brief YubiKey::getSerial - serial number of yubikey
* @param serial
* @return
*/
bool YubiKey::getSerial(unsigned int& serial) const bool YubiKey::getSerial(unsigned int& serial) const
{ {
if (!yk_get_serial(m_yk, 1, 0, &serial)) { if (!yk_get_serial(m_yk, 1, 0, &serial)) {
@ -162,23 +141,7 @@ static inline QString printByteArray(const QByteArray& a)
} }
#endif #endif
/** YubiKey::ChallengeResult YubiKey::challenge(int slot, bool mayBlock, const QByteArray& chal, QByteArray& resp) const
* @brief YubiKey::challenge - issue a challenge
*
* This operation could block if the YubiKey requires a touch to trigger.
*
* TODO: Signal to the UI that the system is waiting for challenge response
* touch.
*
* @param slot YubiKey configuration slot
* @param mayBlock operation is allowed to block
* @param chal challenge input to YubiKey
* @param resp response output from YubiKey
* @return SUCCESS when successful
*/
YubiKey::ChallengeResult YubiKey::challenge(int slot, bool mayBlock,
const QByteArray& chal,
QByteArray& resp) const
{ {
int yk_cmd = (slot == 1) ? SLOT_CHAL_HMAC1 : SLOT_CHAL_HMAC2; int yk_cmd = (slot == 1) ? SLOT_CHAL_HMAC1 : SLOT_CHAL_HMAC2;
QByteArray paddedChal = chal; QByteArray paddedChal = chal;
@ -188,7 +151,7 @@ YubiKey::ChallengeResult YubiKey::challenge(int slot, bool mayBlock,
return ERROR; return ERROR;
} }
/* yk_challenge_response() insists on 64 byte response buffer */ // yk_challenge_response() insists on 64 byte response buffer */
resp.resize(64); resp.resize(64);
/* The challenge sent to the yubikey should always be 64 bytes for /* The challenge sent to the yubikey should always be 64 bytes for
@ -239,7 +202,7 @@ YubiKey::ChallengeResult YubiKey::challenge(int slot, bool mayBlock,
} }
} }
/* Actual HMAC-SHA1 response is only 20 bytes */ // actual HMAC-SHA1 response is only 20 bytes
resp.resize(20); resp.resize(20);
#ifdef QT_DEBUG #ifdef QT_DEBUG

View File

@ -30,21 +30,52 @@ class YubiKey : public QObject
public: public:
enum ChallengeResult { ERROR = -1, SUCCESS = 0, WOULDBLOCK }; enum ChallengeResult { ERROR = -1, SUCCESS = 0, WOULDBLOCK };
/**
* @brief YubiKey::instance - get instance of singleton
* @return instance
*/
static YubiKey* instance(); static YubiKey* instance();
/** Initialize the underlying yubico libraries */ /**
* @brief YubiKey::init - initialize yubikey library and hardware
* @return true on success
*/
bool init(); bool init();
/**
* @brief YubiKey::deinit - cleanup after init
* @return true on success
*/
bool deinit(); bool deinit();
/** Issue a challenge to the hardware */ /**
* @brief YubiKey::challenge - issue a challenge
*
* This operation could block if the YubiKey requires a touch to trigger.
*
* TODO: Signal to the UI that the system is waiting for challenge response
* touch.
*
* @param slot YubiKey configuration slot
* @param mayBlock operation is allowed to block
* @param chal challenge input to YubiKey
* @param resp response output from YubiKey
* @return true on success
*/
ChallengeResult challenge(int slot, bool mayBlock, ChallengeResult challenge(int slot, bool mayBlock,
const QByteArray& chal, const QByteArray& chal,
QByteArray& resp) const; QByteArray& resp) const;
/** Read the serial number from the hardware */ /**
* @brief YubiKey::getSerial - serial number of YubiKey
* @param serial serial number
* @return true on success
*/
bool getSerial(unsigned int& serial) const; bool getSerial(unsigned int& serial) const;
/** Start looking for attached hardware devices */ /**
* @brief YubiKey::detect - probe for attached YubiKeys
*/
void detect(); void detect();
Q_SIGNALS: Q_SIGNALS:
@ -65,9 +96,9 @@ private:
explicit YubiKey(); explicit YubiKey();
static YubiKey* m_instance; static YubiKey* m_instance;
/* Create void ptr here to avoid ifdef header include mess */ // Create void ptr here to avoid ifdef header include mess
void *m_yk_void; void* m_yk_void;
void *m_ykds_void; void* m_ykds_void;
Q_DISABLE_COPY(YubiKey) Q_DISABLE_COPY(YubiKey)
}; };