Класс Provider(абстрактный)
Публичные функции
virtual Context * | clone () const =0 |
virtual void | configChanged (const QVariantMap &config) |
virtual Context * | createContext (const QString &type)=0 |
virtual QString | credit () const |
virtual QVariantMap | defaultConfig () const |
virtual void | deinit () |
virtual QStringList | features () const =0 |
virtual void | init () |
virtual QString | name () const =0 |
virtual void | prepareUnitTest (const QHash< QString, QString > &properties=QHash< QString, QString >(), bool preInitKeyStore=true) |
Provider * | provider () const |
virtual int | qcaVersion () const =0 |
bool | sameProvider (const Context *c) const |
virtual void | teardownUnitTest () |
QString | type () const |
virtual int | version () const |
Защищённые методы
Context (const Context &from) |
Context (Provider *parent, const QString &type) |
Подробное описание
Криптопровайдер Algorithm.
Provider представляет собой криптопровайдера плагина (или, в особом случае, встроенного криптопровайдера). Это класс, от которого нужно унаследоваться, чтобы создать свой собственный плагин. Обычно не нужно беспокоиться об этом классе, если просто используются существующие возможности и плагины QCA, однако ничто не мешает использовать его для получения информации о конкретных плагинах, как показано в примере ниже.
Примеры
aes-cmac.cpp и providertest.cpp.
Описание методов
init()
virtual void QCA::Provider::init () | virtual |
Процедура инициализации.
Данная процедура будет вызываться при загрузке плагина, так что это хорошее место для выполнения любых одноразовых задач инициализации. Если инициализация не нужна, следует её реализовать как пустую процедуру.
deinit()
virtual void QCA::Provider::deinit () | virtual |
Процедура деинициализации.
Эта процедура будет вызываться непосредственно перед уничтожением криптопровайдера. Примечательно, что во время выключения QCA, deinit() будет вызываться для всех криптопровайдеров до того, как какой-либо криптопровайдер будет уничтожен. Следует использовать эту возможность, чтобы освободить любые ресурсы, которые могут использоваться другими криптопровайдерами.
version()
virtual int QCA::Provider::version () const | virtual |
Номер версии плагина.
Формат такой же, как и у QCA. Версия
1.2.3 будет представлена как 0x010203
.
По умолчанию возвращается 0
(версия 0.0.0).
qcaVersion()
virtual int QCA::Provider::qcaVersion () const | pure virtual |
Целевая версия QCA для криптопровайдера.
Метод используется для проверки совместимости между криптопровайдером и QCA. Чтобы криптопровайдер можно было использовать, необходимо указать здесь старший и дополнительный номера версий, которые меньше или равны фактической версии QCA (номер версии патча игнорируется). Это означает, что старый провайдер можно использовать с новым QCA, но новый провайдер нельзя использовать со старым QCA.
Примеры
name()
virtual QString QCA::Provider::name () const | pure virtual |
Имя криптопровайдера.
Обычно возвращается строка, содержащая удобное имя.
QString name() const
{
return "qca-myplugin";
}
Примечание.
Имя используется, чтобы определить, загружен ли уже криптопровайдер, поэтому нужно убедиться, что оно уникально среди различных плагинов.
Примеры
features()
virtual QStringList QCA::Provider::features () const | pure virtual |
Возможности (алгоритмы) криптопровайдера.
Обычно просто возвращается фиксированный QStringList
:
QStringList features() const
{
QStringList list;
list += "sha1";
list += "sha256";
list += "hmac(sha1)";
return list;
}
Примеры
credit()
virtual QString QCA::Provider::credit () const | virtual |
Необязательный текст для титров криптопровайдера.
Можно отобразить эту информацию в титрах или диалоговом окне «О программе». Возвращает пустую строку, если у криптопровайдера нет текста титров. Следует сообщать текст титров только в случае крайней необходимости (например, «рекламный пункт», связанный с лицензированием). Не нужно его использовать для сообщения общей информации об авторе.
createContext()
virtual Context* QCA::Provider::createContext (const QString & type) | pure virtual |
Процедура создания контекста плагина.
Нужно вернуть указатель на алгоритм Context, который соответствует указанному имени алгоритма.
Параметры
type | Требуется название алгоритма |
Context *createContext(const QString &type)
{
if ( type == "sha1" )
return new SHA1Context( this );
else if ( type == "sha256" )
return new SHA0256Context( this );
else if ( type == "hmac(sha1)" )
return new HMACSHA1Context( this );
else
return 0;
}
И конечно, также необходимо реализовать указанные подклассы Context.
Примеры
defaultConfig()
virtual QVariantMap QCA::Provider::defaultConfig () const | virtual |
Метод для установки параметров конфигурации по умолчанию.
Если криптопровайдеру требуются некоторые параметры конфигурации, этот метод позволяет установить параметры по умолчанию. Затем пользователь может изменять параметры конфигурации по мере необходимости и устанавливать их с помощью configChanged().
Требуется вернуть объект QVariantMap
, в котором опции конфигурации являются ключами, а
конфигурация по умолчанию — значениями, как показано ниже:
QVariantMap defaultConfig() const
{
QVariantMap myConfig;
myConfig[ "firstOption" ] = QString("firstOptionValue");
myConfig[ "secondOption" ] = true;
myConfig[ "thirdOpt" ] = 1243;
return myConfig;
}
См. также configChanged для настройки конфигурации;
configChanged()
virtual void QCA::Provider::configChanged (const QVariantMap & config) | virtual |
Метод для установки параметров конфигурации.
Если провайдер поддерживает параметры конфигурации, при вызове этого метода будут приходить уведомления об изменениях конфигурации пользователем.
Параметры
config | Новая конфигурация, которая будет использоваться криптопровайдером |
prepareUnitTest()
virtual void QCA::Provider::prepareUnitTest (const QHash< QString, QString > & properties = QHash<QString,QString >(), bool preInitKeyStore = true) | virtual |
Метод настройки специфического для провайдера окружения для юнит-тестирования.
Аргументы зависят от теста и должны содержать общую информацию о настройках. Метод вызывается один раз в каждом тестовом случае.
Параметры
Свойства | Релевантная для тестирования информация о ключах-значениях. Содержание и интерпретация различные. |
teardownUnitTest()
virtual void QCA::Provider::teardownUnitTest () | virtual |
Метод удаления специфической для провайдера среды для юнит-тестирования.
Метод вызывается один раз в каждом тестовом случае.
provider()
Provider* QCA::Provider::provider () const |
Объект Provider
, связанный с этим
Context.
type()
QString QCA::Provider::type () const |
Тип контекста, переданный конструктору.
clone()
virtual Context* QCA::Provider::clone () const | pure virtual |
Создаёт дубликат этого Context.
sameProvider()
bool QCA::Provider::sameProvider (const Context * c) const |
Проверяет, имеют ли два контекста одного и того же
Provider
.
Параметры
c | Указатель на Context для сравнения |
Возвращает true
, если аргумент и этот
Context
имеют одного и того же криптопровайдера.
Context() [1/2]
QCA::Provider::Context (Provider * parent, const QString & type ) | protected |
Стандартный конструктор.
Параметры
parent | Родительский криптопровайдер для этого контекста |
type | Название типа контекста криптопровайдера |
Context() [2/2]
QCA::Provider::Context (const Context & from) | protected |
Конструктор копирования.
Параметры
from | Context для копирования |