QtDataSync  4.2.0
A simple offline-first synchronisation framework, to synchronize data of Qt applications between devices
Public Member Functions | Protected Member Functions | List of all members
QtDataSync::KeyStore Class Referenceabstract

An interface for a generic keystore to securely store secret cryptographic keys. More...

#include <keystore.h>

+ Inheritance diagram for QtDataSync::KeyStore:

Public Member Functions

 KeyStore (const Defaults &defaults, QObject *parent=nullptr)
 Default constructor for a specific setup.
 
QString setupName () const
 Returns the name of the setup this class operates on. More...
 
virtual QString providerName () const =0
 Returns the provider type the keystore is of. More...
 
virtual bool isOpen () const =0
 Checks if the store is currently open. More...
 
virtual void openStore ()=0
 Opens the store so the library can access it. More...
 
virtual void closeStore ()=0
 Closes the connection to the store. More...
 
virtual bool contains (const QString &key) const =0
 Checks if a key already exists in the store. More...
 
virtual void save (const QString &key, const QByteArray &pKey)=0
 Saves a secret key with the given identifier in the store. More...
 
virtual QByteArray load (const QString &key)=0
 Loads a previously saved key for the given identifier from the store. More...
 
virtual void remove (const QString &key)=0
 Removes the key for the given identifier from the store permanently. More...
 
- Public Member Functions inherited from QObject
virtual const QMetaObjectmetaObject () const const
 
virtual void * qt_metacast (const char *)
 
virtual int qt_metacall (QMetaObject::Call, int, void **)
 
 QObject (QObject *parent)
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
QString objectName () const const
 
void setObjectName (const QString &name)
 
bool isWidgetType () const const
 
bool isWindowType () const const
 
bool signalsBlocked () const const
 
bool blockSignals (bool block)
 
QThreadthread () const const
 
void moveToThread (QThread *targetThread)
 
int startTimer (int interval, Qt::TimerType timerType)
 
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
 
void killTimer (int id)
 
findChild (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectList & children () const const
 
void setParent (QObject *parent)
 
void installEventFilter (QObject *filterObj)
 
void removeEventFilter (QObject *obj)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
 
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
 
bool disconnect (const QObject *receiver, const char *method) const const
 
void dumpObjectTree ()
 
void dumpObjectInfo ()
 
void dumpObjectTree () const const
 
void dumpObjectInfo () const const
 
bool setProperty (const char *name, const QVariant &value)
 
QVariant property (const char *name) const const
 
QList< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 

Protected Member Functions

Defaults defaults () const
 Returns the defaults of the datasync instance the store is operated from.
 
- Protected Member Functions inherited from QObject
QObjectsender () const const
 
int senderSignalIndex () const const
 
int receivers (const char *signal) const const
 
bool isSignalConnected (const QMetaMethod &signal) const const
 
virtual void timerEvent (QTimerEvent *event)
 
virtual void childEvent (QChildEvent *event)
 
virtual void customEvent (QEvent *event)
 
virtual void connectNotify (const QMetaMethod &signal)
 
virtual void disconnectNotify (const QMetaMethod &signal)
 

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
 
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
bool disconnect (const QMetaObject::Connection &connection)
 
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
 
- Properties inherited from QObject
 objectName
 

Detailed Description

An interface for a generic keystore to securely store secret cryptographic keys.

The datasync library makes use of keystores to securely store secret encryption keys. Since there are many different stores on all platforms, the stores are provided via plugins. If you want to create your own store, you can create a custom KeyStorePlugin and implement this class to give the library access to the keystore.

The following keystores are already support via a plugin that is part of the Library:

Note
All methods must be synchronous. The keystore is only used from within an extra thread, and thus will not block the UI. It is save to wait for asynchronos operations within your methods
See also
KeyStorePlugin

Definition at line 37 of file keystore.h.

Member Function Documentation

◆ closeStore()

QtDataSync::KeyStore::closeStore ( )
pure virtual

Closes the connection to the store.

Exceptions
KeyStoreExceptionIf the store could not be successfully closed

If this method returns without an exception, the store must be closed and isOpen() must return false. If anything goes wrong that prevents the store from beeing closed, throw an exception. If the store is not open to begin with, simply return without doing anything.

See also
KeyStore::isOpen, KeyStore::openStore

◆ contains()

QtDataSync::KeyStore::contains ( const QString key) const
pure virtual

Checks if a key already exists in the store.

Parameters
keyThe identifier of the key that is checked for existance
Returns
true if a key with that id exists in the store, false if not
Exceptions
KeyStoreExceptionIf the store is not open, or something went wrong checking the existance
See also
KeyStore::load

◆ isOpen()

QtDataSync::KeyStore::isOpen ( ) const
pure virtual

Checks if the store is currently open.

Returns
true if the store is open, false if not
Exceptions
KeyStoreExceptionIn case an internal error occured

A store should be closed after it's creation. If an error occures while checking you can throw an exception, but you should prefer to simply return false instead.

See also
KeyStore::openStore, KeyStore::closeStore

◆ load()

QtDataSync::KeyStore::load ( const QString key)
pure virtual

Loads a previously saved key for the given identifier from the store.

Parameters
keyThe identifier of the key to be loaded
Returns
The secrect cryptographic key stored under that id
Exceptions
KeyStoreExceptionIf the store is not open, or the store failed to load the key

If the key does not exist, simply throw an exception as well. Whatever is returned from this method is assumed to be a valid key.

See also
KeyStore::save, KeyStore::remove, KeyStore::contains

◆ openStore()

QtDataSync::KeyStore::openStore ( )
pure virtual

Opens the store so the library can access it.

Exceptions
KeyStoreExceptionIf the store could not be successfully opened

If this method returns without an exception, the store must be open and isOpen() must return true. If anything goes wrong that prevents the store from beeing opened, throw an exception. If the store is already open, simply return without doing anything.

See also
KeyStore::isOpen, KeyStore::closeStore

◆ providerName()

QtDataSync::KeyStore::providerName ( ) const
pure virtual

Returns the provider type the keystore is of.

Returns
The name of the provide the store represents
Note
This must be the same that was used to construct the keystore with via KeyStorePlugin::createInstance
See also
KeyStorePlugin::createInstance

◆ remove()

QtDataSync::KeyStore::remove ( const QString key)
pure virtual

Removes the key for the given identifier from the store permanently.

Parameters
keyThe identifier of the key to be removed
Exceptions
KeyStoreExceptionIf the store is not open, or the store failed to remove the key

If this method returns without an exception, it is assumed that the key was successfully removed from the store. If it did not exist to begin with, simply return without doing anything.

See also
KeyStore::save

◆ save()

QtDataSync::KeyStore::save ( const QString key,
const QByteArray pKey 
)
pure virtual

Saves a secret key with the given identifier in the store.

Parameters
keyThe identifier of the key that is beeing stored
pKeyThe secrect cryptographic key to be stored
Exceptions
KeyStoreExceptionIf the store is not open, or the store failed to save the key

If a key with the same name already exists, it should simply be overwritten. If this method returns without an exception, it is assumed that the key was successfully stored and contains() must return true now. Also, load with the same key should work.

See also
KeyStore::load, KeyStore::remove, KeyStore::contains

◆ setupName()

QtDataSync::KeyStore::setupName ( ) const

Returns the name of the setup this class operates on.

Returns
The name of the setup
See also
QtDataSync::Setup

The documentation for this class was generated from the following files: