diff options
Diffstat (limited to 'src/keys/YkChallengeResponseKeyCLI.cpp')
-rw-r--r-- | src/keys/YkChallengeResponseKeyCLI.cpp | 42 |
1 files changed, 12 insertions, 30 deletions
diff --git a/src/keys/YkChallengeResponseKeyCLI.cpp b/src/keys/YkChallengeResponseKeyCLI.cpp index 48420fb8c..4c78e4d0a 100644 --- a/src/keys/YkChallengeResponseKeyCLI.cpp +++ b/src/keys/YkChallengeResponseKeyCLI.cpp @@ -23,48 +23,30 @@ #include "crypto/Random.h" #include <QFile> -#include <QtCore/qglobal.h> QUuid YkChallengeResponseKeyCLI::UUID("e2be77c0-c810-417a-8437-32f41d00bd1d"); -YkChallengeResponseKeyCLI::YkChallengeResponseKeyCLI(int slot, - bool blocking, - QString messageInteraction, - QIODevice* out) +YkChallengeResponseKeyCLI::YkChallengeResponseKeyCLI(YubiKeySlot keySlot, QString interactionMessage, QTextStream& out) : ChallengeResponseKey(UUID) - , m_slot(slot) - , m_blocking(blocking) - , m_messageInteraction(messageInteraction) + , m_keySlot(keySlot) + , m_interactionMessage(interactionMessage) + , m_out(out.device()) { - m_out.setDevice(out); + connect(YubiKey::instance(), SIGNAL(userInteractionRequest()), SLOT(showInteractionMessage())); } -QByteArray YkChallengeResponseKeyCLI::rawKey() const +void YkChallengeResponseKeyCLI::showInteractionMessage() { - return m_key; + m_out << m_interactionMessage << "\n\n" << flush; } -/** - * Assumes yubikey()->init() was called - */ -bool YkChallengeResponseKeyCLI::challenge(const QByteArray& c) +QByteArray YkChallengeResponseKeyCLI::rawKey() const { - return challenge(c, 2); + return m_key; } -bool YkChallengeResponseKeyCLI::challenge(const QByteArray& challenge, unsigned int retries) +bool YkChallengeResponseKeyCLI::challenge(const QByteArray& challenge) { - do { - --retries; - - if (m_blocking) { - m_out << m_messageInteraction << endl; - } - YubiKey::ChallengeResult result = YubiKey::instance()->challenge(m_slot, m_blocking, challenge, m_key); - if (result == YubiKey::SUCCESS) { - return true; - } - } while (retries > 0); - - return false; + auto result = YubiKey::instance()->challenge(m_keySlot, challenge, m_key); + return result == YubiKey::SUCCESS; } |