| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- From e932e57c04a8e2af39624f1207c9411eb0e976db Mon Sep 17 00:00:00 2001
- From: root <you@example.com>
- Date: Tue, 15 Jun 2021 21:33:43 +0000
- Subject: [PATCH] No console
- ---
- include/QtCrypto/qca_support.h | 430 ---------------------------------
- src/CMakeLists.txt | 42 ++--
- 2 files changed, 21 insertions(+), 451 deletions(-)
- diff --git a/include/QtCrypto/qca_support.h b/include/QtCrypto/qca_support.h
- index 8e46bb7..2de8830 100644
- --- a/include/QtCrypto/qca_support.h
- +++ b/include/QtCrypto/qca_support.h
- @@ -497,436 +497,6 @@ private:
- Private *d;
- };
-
- -class ConsolePrivate;
- -class ConsoleReferencePrivate;
- -class ConsoleReference;
- -
- -/**
- - \class Console qca_support.h QtCrypto
- -
- - %QCA %Console system
- -
- - %QCA provides an API for asynchronous, event-based access to
- - the console and stdin/stdout, as these facilities are
- - otherwise not portable. The primary use of this system within
- - %QCA is for passphrase prompting in command-line applications,
- - using the tty console type.
- -
- - How it works: Create a %Console object for the type of console
- - desired, and then use ConsoleReference to act on the console.
- - Only one ConsoleReference may operate on a %Console at a time.
- -
- - A %Console object takes over either the physical console (Console::Tty
- - type) or stdin/stdout (Console::Stdio type). Only one of each type
- - may be created at a time.
- -
- - Whenever code is written that needs a tty or stdio object, the
- - code should first call one of the static methods (ttyInstance()
- - or stdioInstance()) to see if a console object for the desired
- - type exists already. If the object exists, use it. If it does
- - not exist, the rule is that the relevant code should create the
- - object, use the object, and then destroy the object when the
- - operation is completed.
- -
- - By following the above rule, you can write code that utilizes
- - a console without the application having to create some master
- - console object for you. Of course, if the application has
- - created a console then it will be used.
- -
- - The reason why there is a master console object is that it
- - is not guaranteed that all I/O will survive creation and
- - destruction of a console object. If you are using the Stdio
- - Type, then you probably want a long-lived console object. It
- - is possible to capture unprocessed I/O by calling
- - bytesLeftToRead or bytesLeftToWrite. However, it is not
- - expected that general console-needing code will call these
- - functions when utilizing a temporary console. Thus, an
- - application developer would need to create his own console
- - object, invoke the console-needing code, and then do his own
- - extraction of the unprocessed I/O if necessary. Another reason
- - to extract unprocessed I/O is if you need to switch from
- - %Console back to standard functions (e.g. fgets() ).
- -
- - \ingroup UserAPI
- -*/
- -class QCA_EXPORT Console : public QObject
- -{
- - Q_OBJECT
- -public:
- - /**
- - The type of console object
- - */
- - enum Type
- - {
- - Tty, ///< physical console
- - Stdio ///< stdin/stdout
- - };
- - /**
- - The type of I/O to use with the console object.
- - */
- - enum ChannelMode
- - {
- - Read, ///< Read only (equivalent to stdin)
- - ReadWrite ///< Read/write (equivalent to stdin and stdout)
- - };
- -
- - /**
- - The nature of the console operation
- - */
- - enum TerminalMode
- - {
- - Default, ///< use default terminal settings
- - Interactive ///< char-by-char input, no echo
- - };
- -
- - /**
- - Standard constructor
- -
- - Note that library code should not create a new Console object
- - without checking whether there is already a Console object of
- - the required Type. See the main documentation for Console for the
- - rationale for this.
- -
- - \param type the Type of Console object to create
- - \param cmode the ChannelMode (I/O type) to use
- - \param tmode the TerminalMode to use
- - \param parent the parent object for this object
- -
- - \sa ttyInstance() and stdioInstance for static methods that allow
- - you to test whether there is already a Console object of the
- - required Type, and if there is, obtain a reference to that object.
- - */
- - Console(Type type, ChannelMode cmode, TerminalMode tmode, QObject *parent = nullptr);
- - ~Console() override;
- -
- - /**
- - The Type of this Console object
- - */
- - Type type() const;
- -
- - /**
- - The ChannelMode of this Console object
- - */
- - ChannelMode channelMode() const;
- -
- - /**
- - The TerminalMode of this Console object
- - */
- - TerminalMode terminalMode() const;
- -
- - /**
- - Test whether standard input is redirected.
- -
- - \sa type() and channelMode()
- - */
- - static bool isStdinRedirected();
- -
- - /**
- - Test whether standard output is redirected.
- -
- - \sa type() and channelMode()
- - */
- - static bool isStdoutRedirected();
- -
- - /**
- - The current terminal-type console object
- -
- - \return null if there is no current Console
- - of this type, otherwise the Console to use
- - */
- - static Console *ttyInstance();
- -
- - /**
- - The current stdio-type console object
- -
- - \return null if there is no current Console
- - of this type, otherwise the Console to use
- - */
- - static Console *stdioInstance();
- -
- - /**
- - Release the Console
- -
- - This allows access to buffers containing any remaining data
- - */
- - void release();
- -
- - /**
- - Obtain remaining data from the Console, awaiting
- - a read operation
- - */
- - QByteArray bytesLeftToRead();
- -
- - /**
- - Obtain remaining data from the Console, awaiting
- - a write operation
- - */
- - QByteArray bytesLeftToWrite();
- -
- -private:
- - Q_DISABLE_COPY(Console)
- -
- - friend class ConsolePrivate;
- - ConsolePrivate *d;
- -
- - friend class ConsoleReference;
- -};
- -
- -/**
- - \class ConsoleReference qca_support.h QtCrypto
- -
- - Manager for a Console
- -
- - \note Only one %ConsoleReference object can be active at a time
- -
- - \ingroup UserAPI
- -*/
- -class QCA_EXPORT ConsoleReference : public QObject
- -{
- - Q_OBJECT
- -public:
- - /**
- - The security setting to use for the Console being managed.
- - */
- - enum SecurityMode
- - {
- - SecurityDisabled,
- - SecurityEnabled
- - };
- -
- - /**
- - Standard constructor
- -
- - \param parent the parent object for this object
- - */
- - ConsoleReference(QObject *parent = nullptr);
- - ~ConsoleReference() override;
- -
- - /**
- - Set the Console object to be managed, and start processing.
- -
- - You typically want to use Console::ttyInstance() or
- - Console::stdioInstance() to obtain the required Console
- - reference.
- -
- - \param console reference to the Console to be managed
- - \param mode the SecurityMode to use for this Console.
- -
- - \sa QCA::Console for more information on how to handle the
- - console aspects of your application or library code.
- - */
- - bool start(Console *console, SecurityMode mode = SecurityDisabled);
- -
- - /**
- - Stop processing, and release the Console
- - */
- - void stop();
- -
- - /**
- - The Console object managed by this object
- -
- - \sa start() to set the Console to be managed
- - */
- - Console *console() const;
- -
- - /**
- - The security mode setting for the Console object
- - managed by this object.
- -
- - \sa start() to set the SecurityMode
- - */
- - SecurityMode securityMode() const;
- -
- - /**
- - Read data from the Console.
- -
- - \param bytes the number of bytes to read. The default
- - is to read all available bytes
- -
- - \sa readSecure() for a method suitable for reading
- - sensitive data.
- - */
- - QByteArray read(int bytes = -1);
- -
- - /**
- - Write data to the Console.
- -
- - \param a the array of data to write to the Console
- -
- - \sa writeSecure() for a method suitable for writing
- - sensitive data.
- - */
- - void write(const QByteArray &a);
- -
- - /**
- - Read secure data from the Console
- -
- - \param bytes the number of bytes to read. The default
- - is to read all available bytes
- -
- - \sa read() which is suitable for non-sensitive data
- - */
- - SecureArray readSecure(int bytes = -1);
- -
- - /**
- - Write secure data to the Console
- -
- - \param a the array of data to write to the Console
- -
- - \sa write() which is suitable for non-sensitive data
- - */
- - void writeSecure(const SecureArray &a);
- -
- - /**
- - Close the write channel
- -
- - You only need to call this if writing is enabled
- - on the Console being managed.
- - */
- - void closeOutput();
- -
- - /**
- - The number of bytes available to read from the
- - Console being managed.
- - */
- - int bytesAvailable() const;
- -
- - /**
- - The number of bytes remaining to be written
- - to the Console being managed
- - */
- - int bytesToWrite() const;
- -
- -Q_SIGNALS:
- - /**
- - Emitted when there are bytes available to read from
- - the Console being managed
- - */
- - void readyRead();
- -
- - /**
- - Emitted when bytes are written to the Console
- -
- - \param bytes the number of bytes that were written
- -
- - \sa bytesAvailable()
- - */
- - void bytesWritten(int bytes);
- -
- - /**
- - Emitted when the console input is closed
- - */
- - void inputClosed();
- -
- - /**
- - Emitted when the console output is closed
- - */
- - void outputClosed();
- -
- -private:
- - Q_DISABLE_COPY(ConsoleReference)
- -
- - friend class ConsoleReferencePrivate;
- - ConsoleReferencePrivate *d;
- -
- - friend class Console;
- -};
- -
- -/**
- - \class ConsolePrompt qca_support.h QtCrypto
- -
- - Console prompt handler.
- -
- - This class provides a convenient way to get user input in a secure way,
- -as shown below:
- -\code
- -QCA::ConsolePrompt prompt;
- -prompt.getHidden("Passphrase");
- -prompt.waitForFinished();
- -QCA:SecureArray pass = prompt.result();
- -\endcode
- -
- - \note It is not necessary to use waitForFinished(), because you can
- - just connect the finished() signal to a suitable method, however
- - command line (console) applications often require waitForFinished().
- -
- - \ingroup UserAPI
- -*/
- -class QCA_EXPORT ConsolePrompt : public QObject
- -{
- - Q_OBJECT
- -public:
- - /**
- - Standard constructor
- -
- - \param parent the parent object for this object
- - */
- - ConsolePrompt(QObject *parent = nullptr);
- - ~ConsolePrompt() override;
- -
- - /**
- - Allow the user to enter data without it being echo'd to
- - the terminal. This is particularly useful for entry
- - of passwords, passphrases and PINs.
- -
- - \param promptStr the prompt to display to the user
- -
- - \sa result() for how to get the input back.
- - */
- - void getHidden(const QString &promptStr);
- -
- - /**
- - Obtain one character from the user
- -
- - \sa resultChar() for how to get the input back.
- - */
- - void getChar();
- -
- - /**
- - Block waiting for user input.
- -
- - You may wish to use the finished() signal to
- - avoid blocking.
- - */
- - void waitForFinished();
- -
- - /**
- - Obtain the result of the user input.
- -
- - This method is usually called to obtain data
- - from the user that was requested by the getHidden()
- - call.
- - */
- - SecureArray result() const;
- -
- - /**
- - Obtain the result of the user input.
- -
- - This method is usually called to obtain data
- - from the user that was requested by the getChar()
- - call.
- - */
- - QChar resultChar() const;
- -
- -Q_SIGNALS:
- - /**
- - Emitted when the user input activity has been
- - completed.
- -
- - This corresponds to the provision of a string
- - for getHidden() or a single character for getChar().
- -
- - \sa waitForFinished
- - */
- - void finished();
- -
- -private:
- - Q_DISABLE_COPY(ConsolePrompt)
- -
- - class Private;
- - friend class Private;
- - Private *d;
- -};
-
- class AbstractLogDevice;
-
- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
- index 7066839..85ae0d7 100644
- --- a/src/CMakeLists.txt
- +++ b/src/CMakeLists.txt
- @@ -44,7 +44,7 @@ SET( SOURCES
- qca_securelayer.cpp
- qca_securemessage.cpp
- support/qpipe.cpp
- - support/console.cpp
- + # support/console.cpp
- support/synchronizer.cpp
- support/dirwatch.cpp
- support/syncthread.cpp
- @@ -52,8 +52,8 @@ SET( SOURCES
-
- IF (WIN32)
- SET( SOURCES ${SOURCES} qca_systemstore_win.cpp )
- -elseif(APPLE)
- - set( SOURCES ${SOURCES} qca_systemstore_mac.cpp)
- + #elseif(APPLE)
- + # set( SOURCES ${SOURCES} qca_systemstore_mac.cpp)
- else()
- SET( SOURCES ${SOURCES} qca_systemstore_flatfile.cpp )
- endif()
- @@ -130,24 +130,24 @@ if(WIN32)
- TARGET_LINK_LIBRARIES(${QCA_LIB_NAME} crypt32 ws2_32)
- endif()
-
- -if(APPLE)
- - set(COREFOUNDATION_LIBRARY "-framework CoreFoundation")
- - set(COREFOUNDATION_LIBRARY_SECURITY "-framework Security")
- - TARGET_LINK_LIBRARIES(${QCA_LIB_NAME} ${COREFOUNDATION_LIBRARY} ${COREFOUNDATION_LIBRARY_SECURITY})
- -
- - if(NOT USE_RELATIVE_PATHS)
- - set_target_properties(${QCA_LIB_NAME} PROPERTIES
- - INSTALL_NAME_DIR "${QCA_LIBRARY_INSTALL_DIR}"
- - )
- - endif()
- -endif()
- -
- -if(NOT ANDROID)
- - set_target_properties(${QCA_LIB_NAME} PROPERTIES
- - VERSION ${QCA_LIB_MAJOR_VERSION}.${QCA_LIB_MINOR_VERSION}.${QCA_LIB_PATCH_VERSION}
- - SOVERSION ${QCA_LIB_MAJOR_VERSION}
- - )
- -endif()
- +#if(APPLE)
- +# set(COREFOUNDATION_LIBRARY "-framework CoreFoundation")
- +# set(COREFOUNDATION_LIBRARY_SECURITY "-framework Security")
- +# TARGET_LINK_LIBRARIES(${QCA_LIB_NAME} ${COREFOUNDATION_LIBRARY} ${COREFOUNDATION_LIBRARY_SECURITY})
- +#
- +# if(NOT USE_RELATIVE_PATHS)
- +# set_target_properties(${QCA_LIB_NAME} PROPERTIES
- +# INSTALL_NAME_DIR "${QCA_LIBRARY_INSTALL_DIR}"
- +# )
- +# endif()
- +#endif()
- +
- +#if(NOT ANDROID)
- +# set_target_properties(${QCA_LIB_NAME} PROPERTIES
- +# VERSION ${QCA_LIB_MAJOR_VERSION}.${QCA_LIB_MINOR_VERSION}.${QCA_LIB_PATCH_VERSION}
- +# SOVERSION ${QCA_LIB_MAJOR_VERSION}
- +# )
- +#endif()
-
- set_target_properties(${QCA_LIB_NAME} PROPERTIES
- DEFINE_SYMBOL QCA_MAKEDLL
- --
- 2.25.1
|