mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-01-14 08:50:08 -05:00
Restructure doc comments and make hard-coded strings translatable
This commit is contained in:
parent
2d4e08e060
commit
8d3e0687a0
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user