Документация
ОС Аврора 5.0.1

Класс KeyStoreEntry

Публичные типы

enum Type { TypeKeyBundle , TypeCertificate , TypeCRL , TypePGPSecretKey , TypePGPPublicKey , TypeSymmetricKey }

Публичные функции

Certificate certificate () const
CRL crl () const
bool ensureAccess ()
bool ensureAvailable ()
QString id () const
bool isAccessible () const
bool isAvailable () const
bool isNull () const
KeyBundle keyBundle () const
KeyStoreEntry ()
KeyStoreEntry (const KeyStoreEntry &from)
KeyStoreEntry (const QString &serialized)
QString name () const
KeyStoreEntry & operator= (const KeyStoreEntry &from)
PGPKey pgpPublicKey () const
PGPKey pgpSecretKey () const
QString storeId () const
QString storeName () const
SymmetricKey symmetricKey () const
QString toString () const
Type type () const

Публичные функции, унаследованные от QCA::Algorithm

Algorithm (const Algorithm &from)
void change (const QString &type, const QString &provider)
void change (Provider::Context *c)
Provider::Context * context ()
const Provider::Context * context () const
Algorithm & operator= (const Algorithm &from)
Provider * provider () const
Provider::Context * takeContext ()
QString type () const

Статические публичные функции

static KeyStoreEntry fromString (const QString &serialized)

Дружественные функции и классы

class KeyStoreTracker

Дополнительные унаследованные члены

Защищённые функции, унаследованные от QCA::Algorithm

Algorithm ()
Algorithm (const QString &type, const QString &provider)

Подробное описание

Одна запись в KeyStore.

Это контейнер для объекта любого типа в KeyStore (например, ключей PGP или сертификатов / закрытых ключей X.509).

Объекты KeyStoreEntry получаются через KeyStore или загружаются из сериализованного строкового формата. Последний метод требует, чтобы KeyStoreEntry, полученный через KeyStore, был сериализован для будущей загрузки. Например:

QString str = someKeyStoreEntry.toString();
[ app saves str to disk ]
[ app quits ]
…
[ app launches ]
[ app reads str from disk ]
KeyStoreEntry entry(str);
printf("Имя записи: [%s]\n", qPrintable(entry.name()));

Объекты KeyStoreEntry могут быть доступны или недоступны. Запись недоступна, если у неё нет частного содержимого. Частное содержимое может существовать на внешнем оборудовании. Чтобы определить, доступна ли запись, следует вызвать isAvailable(). Чтобы убедиться, что запись доступна перед выполнением операции с закрытым ключом, следует вызвать ensureAvailable. Например:

if(entry.ensureAvailable())
{
entry.keyBundle().privateKey().signMessage(…);
…
}

ensureAvailable() блокирует и/или организовывает доступ к физическому оборудованию, но если он завершится успешно, можно будет использовать частное содержимое записи. В случае токена смарт-карты это также означает, что она, вероятно, вставлена.

Чтобы просмотреть запись асинхронно, нужно сделать следующее:

KeyStoreEntryWatcher *watcher = new KeyStoreEntryWatcher(entry);
connect(watcher, &KeyStoreEntryWatcher::available, this, &YourClass::entry_available);
…
void entry_available()
{
   // запись сейчас доступна
watcher->entry().keyBundle().privateKey().signMessage(…);
}

Общедоступное содержимое всегда можно использовать, даже если запись недоступна. Сериализованные данные записи содержат все метаданные, необходимые для восстановления общедоступного контента.

Теперь, даже если запись может быть доступна, это не означает, что имеется доступ к её использованию для операций. Например, даже если запись KeyBundle, предлагаемая смарт-картой, может быть доступна, как только приложение попытается использовать объект PrivateKey для операции подписи, может потребоваться PIN-код. Можно вызвать функцию ensureAccess(), если нужно синхронно предоставить PIN-код на ранней стадии:

if(entry.ensureAccess())
{
   // работа с закрытым ключом
…
}

Следует обратить внимание, что не нужно вызывать ensureAvailable() перед ensureAccess(). Вызвать последнее достаточно, чтобы подразумевать и то, и другое.

После того, как приложение настроено на использование определённого ключа, ожидается, что его обычная процедура выполнения будет следующей:

1) Создать KeyStoreEntry из сериализованных данных. 2) Если объект содержимого недоступен, дождаться его (с помощью ensureAvailable() или KeyStoreEntryWatcher). 3) Передать объект(ы) содержимого операции высокого уровня, такой как TLS.

В этом случае любой запрос PIN-кода и операции с закрытым ключом будут вызываться/обрабатываться из объекта TLS. Если пропустить шаг 2, то операции с закрытым ключом могут вызвать запрос токена.

Примеры

eventhandlerdemo.cpp.

Описание перечислений

Type

enum QCA::KeyStoreEntry::Type

Тип записи в KeyStore.

Описание конструкторов и деструктора

KeyStoreEntry() [1/3]

QCA::KeyStoreEntry::KeyStoreEntry ()

Создаёт пустой KeyStoreEntry.

KeyStoreEntry() [2/3]

QCA::KeyStoreEntry::KeyStoreEntry (const QString & serialized)

Создаёт пассивный KeyStoreEntry на основе сериализованной строки.

Параметры

serialized Строка, содержащая информацию о записи в хранилище ключей

См. также fromString

KeyStoreEntry() [3/3]

QCA::KeyStoreEntry::KeyStoreEntry (const KeyStoreEntry & from)

Стандартный конструктор копирования.

Параметры

from Исходная запись

Описание методов

operator=()

KeyStoreEntry& QCA::KeyStoreEntry::operator= (const KeyStoreEntry & from)

Стандартный оператор присваивания.

Параметры

from Исходная запись

isNull()

bool QCA::KeyStoreEntry::isNull () const

Проверяет, является ли ключ пустым (null).

isAvailable()

bool QCA::KeyStoreEntry::isAvailable () const

Проверяет, можно ли использовать этот ключ.

Ключ считается доступным, если присутствует закрытое содержимое ключа.

См. также ensureAvailable

isAccessible

isAccessible()

bool QCA::KeyStoreEntry::isAccessible () const

Проверяет, доступен ли ключ в данный момент.

Результат означает, что в это время можно использовать часть закрытого ключа. Для смарт-карты это означает, что все необходимые операции (например, вход в систему / ввод PIN-кода) выполнены.

Если isAccessible() равно true, то ключ обязательно доступен (т.е. isAvailable() также true).

См. также ensureAccessible,

isAvailable

type()

Type QCA::KeyStoreEntry::type () const

Определяет тип ключа, хранящегося в этом объекте.

name()

QString QCA::KeyStoreEntry::name () const

Имя, связанное с ключом, хранящимся в этом объекте.

id()

QString QCA::KeyStoreEntry::id () const

ID, связанное с ключом, хранящимся в этом объекте.

storeName()

QString QCA::KeyStoreEntry::storeName () const

Имя KeyStore для этого ключа.

storeId()

QString QCA::KeyStoreEntry::storeId () const

Идентификатор KeyStore для этого ключа.

См. также KeyStore::id()

toString()

QString QCA::KeyStoreEntry::toString () const

Сериализует объект в строку для использования в качестве пассивной записи.

fromString()

static KeyStoreEntry QCA::KeyStoreEntry::fromString (const QString & serialized) static

Загружает пассивную запись, используя в качестве исходных данных сериализованную строку.

Параметры

serialized Строка, содержащая информацию о записи в хранилище ключей

Возвращает заново созданный KeyStoreEntry.

keyBundle()

KeyBundle QCA::KeyStoreEntry::keyBundle () const

Если KeyBundle хранится в этом объекте, возвращает данную связку.

certificate()

Certificate QCA::KeyStoreEntry::certificate () const

Если Certificate хранится в этом объекте, возвращает данный сертификат.

crl()

CRL QCA::KeyStoreEntry::crl () const

Если CRL хранится в этом объекте, возвращает данный CRL.

pgpSecretKey()

PGPKey QCA::KeyStoreEntry::pgpSecretKey () const

Если ключ, хранящийся в этом объекте, является закрытым ключом PGP, возвращает содержимое этого ключа.

pgpPublicKey()

PGPKey QCA::KeyStoreEntry::pgpPublicKey () const

Если ключ, хранящийся в этом объекте, является открытым или закрытым ключом PGP, извлекает часть открытого ключа из данного ключа PGP.

symmetricKey()

SymmetricKey QCA::KeyStoreEntry::symmetricKey () const

Если ключ, хранящийся в этом объекте, является секретным ключом, возвращает содержимое этого ключа.

ensureAvailable()

bool QCA::KeyStoreEntry::ensureAvailable ()

Возвращает true, если запись доступна, иначе false.

Доступность означает, что любое частное содержимое для этой записи присутствует и готово к использованию. В случае смарт-карты это гарантирует, что карта вставлена, и можно вызвать запрос токена.

Вызов этой функции для уже доступной записи может вызвать обновление записи.

См. также isAvailable

ensureAccess

Примечание.

Эта функция блокирующая.

Эта синхронная операция может потребовать обработки событий, поэтому её нельзя вызывать из того же потока, что и EventHandler.

ensureAccess()

bool QCA::KeyStoreEntry::ensureAccess ()

То же, что и ensureAvailable, но при необходимости обеспечит предоставление PIN-кода.

См. также isAccessible

ensureAvailable

Примечание.

Эта синхронная операция может потребовать обработки событий, поэтому её нельзя вызывать из того же потока, что и EventHandler.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.