CLI: Use stderr for password prompt
Fixes #3398. Convert to QTextStream for all CLI IO and greatly improve CLI tests * Completely overhaul CLI tests to be much more streamlined and easy to read. Removed unnecessary code blocks by using existing functions. Co-authored-by: Emma Brooks <me@pluvano.com>
This commit is contained in:
@@ -30,13 +30,13 @@ QUuid YkChallengeResponseKeyCLI::UUID("e2be77c0-c810-417a-8437-32f41d00bd1d");
|
||||
YkChallengeResponseKeyCLI::YkChallengeResponseKeyCLI(int slot,
|
||||
bool blocking,
|
||||
QString messageInteraction,
|
||||
FILE* outputDescriptor)
|
||||
QIODevice* out)
|
||||
: ChallengeResponseKey(UUID)
|
||||
, m_slot(slot)
|
||||
, m_blocking(blocking)
|
||||
, m_messageInteraction(messageInteraction)
|
||||
, m_out(outputDescriptor)
|
||||
{
|
||||
m_out.setDevice(out);
|
||||
}
|
||||
|
||||
QByteArray YkChallengeResponseKeyCLI::rawKey() const
|
||||
@@ -54,12 +54,11 @@ bool YkChallengeResponseKeyCLI::challenge(const QByteArray& c)
|
||||
|
||||
bool YkChallengeResponseKeyCLI::challenge(const QByteArray& challenge, unsigned int retries)
|
||||
{
|
||||
QTextStream out(m_out, QIODevice::WriteOnly);
|
||||
do {
|
||||
--retries;
|
||||
|
||||
if (m_blocking) {
|
||||
out << m_messageInteraction << endl;
|
||||
m_out << m_messageInteraction << endl;
|
||||
}
|
||||
YubiKey::ChallengeResult result = YubiKey::instance()->challenge(m_slot, m_blocking, challenge, m_key);
|
||||
if (result == YubiKey::SUCCESS) {
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "keys/drivers/YubiKey.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QSharedPointer>
|
||||
#include <QTextStream>
|
||||
|
||||
class YkChallengeResponseKeyCLI : public QObject, public ChallengeResponseKey
|
||||
@@ -32,7 +33,7 @@ class YkChallengeResponseKeyCLI : public QObject, public ChallengeResponseKey
|
||||
public:
|
||||
static QUuid UUID;
|
||||
|
||||
explicit YkChallengeResponseKeyCLI(int slot, bool blocking, QString messageInteraction, FILE* outputDescriptor);
|
||||
explicit YkChallengeResponseKeyCLI(int slot, bool blocking, QString messageInteraction, QIODevice* out);
|
||||
|
||||
QByteArray rawKey() const override;
|
||||
bool challenge(const QByteArray& challenge) override;
|
||||
@@ -43,7 +44,7 @@ private:
|
||||
int m_slot;
|
||||
bool m_blocking;
|
||||
QString m_messageInteraction;
|
||||
FILE* m_out;
|
||||
QTextStream m_out;
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_YK_CHALLENGERESPONSEKEYCLI_H
|
||||
|
||||
Reference in New Issue
Block a user