Описание пространств имён QCA
Классы
Определения типов
typedef QMultiMap< CertificateInfoType, QString > | CertificateInfo |
typedef QList<ConstraintType> | Constraints |
typedef QList< Provider * > | ProviderList |
typedef QList<SecureMessageKey> | SecureMessageKeyList |
typedef QList<SecureMessageSignature> | SecureMessageSignatureList |
Перечисления
Функции
QCA_EXPORT void | appendPluginDiagnosticText (const QString &text) |
QCA_EXPORT QString | appName () |
QCA_EXPORT QString | arrayToBase64 (const QByteArray &array) |
QCA_EXPORT QString | arrayToHex (const QByteArray &array) |
QCA_EXPORT QByteArray | base64ToArray (const QString &base64String) |
QCA_EXPORT void | clearPluginDiagnosticText () |
QCA_EXPORT QStringList | defaultFeatures () |
QCA_EXPORT Provider * | defaultProvider () |
QCA_EXPORT void | deinit () |
QCA_EXPORT QByteArray | emsa3Encode (const QString &hashName, const QByteArray &digest, int size=-1) |
QCA_EXPORT Provider * | findProvider (const QString &name) |
QCA_EXPORT QVariant | getProperty (const QString &name) |
QCA_EXPORT QVariantMap | getProviderConfig (const QString &name) |
QCA_EXPORT QString | globalRandomProvider () |
QCA_EXPORT bool | haveSecureMemory () |
QCA_EXPORT bool | haveSecureRandom () |
QCA_EXPORT bool | haveSystemStore () |
QCA_EXPORT QByteArray | hexToArray (const QString &hexString) |
QCA_EXPORT void | init () |
QCA_EXPORT void | init (MemoryMode m, int prealloc) |
QCA_EXPORT bool | insertProvider (Provider *p, int priority=0) |
QCA_EXPORT bool | isSupported (const char *features, const QString &provider=QString()) |
QCA_EXPORT bool | isSupported (const QStringList &features, const QString &provider=QString()) |
QCA_EXPORT Logger * | logger () |
QCA_EXPORT QStringList | makeFriendlyNames (const QList<Certificate> &list) |
QCA_EXPORT const SecureArray | operator+ (const SecureArray &a, const SecureArray &b) |
QCA_EXPORT CertificateInfoOrdered | orderedDNOnly (const CertificateInfoOrdered &in) |
QCA_EXPORT QString | orderedToDNString (const CertificateInfoOrdered &in) |
QCA_EXPORT QString | pluginDiagnosticText () |
QCA_EXPORT QStringList | pluginPaths () |
QCA_EXPORT int | providerPriority (const QString &name) |
QCA_EXPORT ProviderList | providers () |
QCA_EXPORT void | saveProviderConfig (const QString &name) |
QCA_EXPORT void | scanForPlugins () |
QCA_EXPORT void | setAppName (const QString &name) |
QCA_EXPORT void | setGlobalRandomProvider (const QString &provider) |
QCA_EXPORT void | setProperty (const QString &name, const QVariant &value) |
QCA_EXPORT void | setProviderConfig (const QString &name, const QVariantMap &config) |
QCA_EXPORT void | setProviderPriority (const QString &name, int priority) |
QCA_EXPORT QStringList | supportedFeatures () |
QCA_EXPORT CertificateCollection | systemStore () |
QCA_EXPORT void | unloadAllPlugins () |
QCA_EXPORT bool | unloadProvider (const QString &name) |
Подробное описание
QCA — криптографическая архитектура Qt.
Описание определений типов
CertificateInfo
typedef QMultiMap<CertificateInfoType, QString> QCA::CertificateInfo |
Тип для свойств класса Certificate.
В этом контейнере информация не обязательно хранится в той же последовательности, что и по формату самого сертификата. Нужно использовать этот контейнер, если порядок хранения информации не имеет значения (это относится к большинству приложений).
Кроме того, с этим контейнером нельзя использовать тип EmailLegacy. Вместо него следует использовать Email.
Constraints
typedef QList<ConstraintType> QCA::Constraints |
Тип ограничений сертификата.
ProviderList
typedef QList<Provider *> QCA::ProviderList |
Удобное представление для криптопровайдеров плагинов.
Можно получить список криптопровайдеров с помощью функции providers()
См. также ProviderListIterator
SecureMessageKeyList
typedef QList<SecureMessageKey> QCA::SecureMessageKeyList |
Список ключей сообщений.
SecureMessageSignatureList
typedef QList<SecureMessageSignature> QCA::SecureMessageSignatureList |
Список сигнатур.
Описание перечислений
CertificateRequestFormat
enum QCA::CertificateRequestFormat |
Формат запроса Certificate.
PKCS10 | Стандартный формат PKCS#10 |
SPKAC | Подписанный открытый ключ и формат запроса (Netscape) |
CertificateInfoTypeKnown
enum QCA::CertificateInfoTypeKnown |
Известные типы информации, хранящейся в сертификатах.
Этот перечислитель предлагает удобный способ работы с общими типами.
CommonName | Обычное имя (например, имя человека), id = "2.5.4.3" |
Адрес электронной почты, id = "GeneralName.rfc822Name" | |
EmailLegacy | Поле электронной почты PKCS#9, id = "1.2.840.113549.1.9.1" |
Organization | Организация (компания), id = "2.5.4.10" |
OrganizationalUnit | Часть организации (например, подразделение или филиал), id = "2.5.4.11" |
Locality | Населённый пункт (например, город, область и т.п.), id = "2.5.4.7" |
IncorporationLocality | Место регистрации (сертификаты EV), id = "1.3.6.1.4.1.311.60.2.1.1" |
State | Область внутри страны, id = "2.5.4.8" |
IncorporationState | Штат регистрации (сертификаты EV), id = "1.3.6.1.4.1.311.60.2.1.2" |
Country | Страна, id = "2.5.4.6" |
IncorporationCountry | Страна регистрации (сертификаты EV), id = "1.3.6.1.4.1.311.60.2.1.3" |
URI | Универсальный идентификатор ресурса, id = "GeneralName.uniformResourceIdentifier" |
DNS | DNS-имя, id = "GeneralName.dNSName" |
IPAddress | IP-адрес, id = "GeneralName.iPAddress" |
XMPP | XMPP-адрес (см. http://www.ietf.org/rfc/rfc3920.txt), id = "1.3.6.1.5.5.7.8.5" |
INN | Идентификационный номер налогоплательщика, id = "1.2.643.3.131.1.1". |
OGRN | Основной государственный регистрационный номер, id = "1.2.643.100.1". |
SNILS | Страховой номер индивидуального лицевого счета, id = "1.2.643.100.3". |
INNLE | ИНН юридического лица, id = "1.2.643.100.4". |
OGRNIP | ОГРН индивидуального предпринимателя, id = "1.2.643.100.5". |
IdentificationKind | Как был идентифицирован владелец сертификата при выдаче сертификата, id="1.2.643.100.114". |
ConstraintTypeKnown
enum QCA::ConstraintTypeKnown |
Известные типы ограничений сертификата.
Этот перечислитель предлагает удобный способ работы с общими типами.
DigitalSignature | Сертификат можно использовать для создания цифровых подписей, id = "KeyUsage.digitalSignature" |
NonRepudiation | Сертификат можно использовать для предотвращения отказа от авторства, id = "KeyUsage.nonRepudiation" |
KeyEncipherment | Сертификат может использоваться для шифрования/дешифрования ключей, id = "KeyUsage.keyEncipherment" |
DataEncipherment | Сертификат может использоваться для шифрования/дешифрования данных, id = "KeyUsage.dataEncipherment" |
KeyAgreement | Сертификат может использоваться для согласования ключей, id = "KeyUsage.keyAgreement" |
KeyCertificateSign | Сертификат можно использовать для подписи сертификата ключа, id = "KeyUsage.keyCertSign" |
CRLSign | Сертификат можно использовать для подписи списков отзыва сертификатов, id = "KeyUsage.crlSign" |
EncipherOnly | Сертификат можно использовать только для шифрования, id = "KeyUsage.encipherOnly" |
DecipherOnly | Сертификат можно использовать только для дешифрования, id = "KeyUsage.decipherOnly" |
ServerAuth | Сертификат может использоваться для аутентификации сервера (например, веб-сервера), id = "1.3.6.1.5.5.7.3.1". Это расширенное ограничение использования |
ClientAuth | Сертификат может использоваться для аутентификации клиента (например, веб-браузера), id = "1.3.6.1.5.5.7.3.2". Это расширенное ограничение использования |
CodeSigning | Сертификат может использоваться для подписи кода, id = "1.3.6.1.5.5.7.3.3". Это расширенное ограничение использования |
EmailProtection | Сертификат может использоваться для подписи/шифрования электронной почты, id = "1.3.6.1.5.5.7.3.4". Это расширенное ограничение использования |
IPSecEndSystem | Сертификат может использоваться для аутентификации конечной точки в IPSEC, id = "1.3.6.1.5.5.7.3.5". Это расширенное ограничение использования |
IPSecTunnel | Сертификат может использоваться для аутентификации туннеля в IPSEC, id = "1.3.6.1.5.5.7.3.6". Это расширенное ограничение использования |
IPSecUser | Сертификат может использоваться для аутентификации пользователя в IPSEC, id = "1.3.6.1.5.5.7.3.7". Это расширенное ограничение использования |
TimeStamping | Сертификат может использоваться для создания подписи «отметка времени», id = "1.3.6.1.5.5.7.3.8". Это расширенное ограничение использования |
OCSPSigning | Сертификат можно использовать для подписи утверждения протокола состояния онлайн-сертификата (OCSP), id = "1.3.6.1.5.5.7.3.9". Это расширенное ограничение использования |
UsageMode
enum QCA::UsageMode |
Указывает предполагаемое использование сертификата.
UsageAny | Любое применение или неуказанное |
UsageTLSServer | Серверная сторона соединения TLS или SSL |
UsageTLSClient | Клиентская сторона соединения TLS или SSL |
UsageCodeSigning | Сертификат подписи кода |
UsageEmailProtection | Сертификат электронной почты (S/MIME) |
UsageTimeStamping | Сертификат с отметкой времени |
UsageCRLSigning | Сертификат, подписывающий список отзыва сертификатов |
Validity
enum QCA::Validity |
Действительность (или недействительность) сертификата.
ValidityGood | Сертификат действителен |
ErrorRejected | Корневой ЦС отклонил назначение сертификата |
ErrorUntrusted | Сертификат не является доверенным |
ErrorSignatureFailed | Подпись не совпадает |
ErrorInvalidCA | Центр сертификации недействителен |
ErrorInvalidPurpose | Цель не соответствует предполагаемому использованию |
ErrorSelfSigned | Сертификат является самоподписанным, и его нет в списке доверенных сертификатов |
ErrorRevoked | Сертификат отозван |
ErrorPathLengthExceeded | Длина пути от корневого ЦС к этому сертификату слишком велика |
ErrorExpired | Срок действия сертификата истёк или он ещё не действителен (например, текущее время меньше, чем время notBefore) |
ErrorExpiredCA | Срок действия центра сертификации истёк |
ErrorValidityUnknown | Срок действия неизвестен |
RevokedUnknown | Респондент не знает об этом сертификате. |
ValidateFlags
enum QCA::ValidateFlags |
Условия для подтверждения сертификата.
MemoryMode
enum QCA::MemoryMode |
Настройки режима для выделения памяти.
QCA может использовать безопасную память, однако большинство операционных систем ограничивают объём памяти, который может быть закреплен за пользовательскими приложениями, чтобы предотвратить атаку вида «отказ в обслуживании».
QCA поддерживает два подхода к получению памяти — метод mlock, который обычно требует прав суперпользователя (администратора), и метод mmap, который не так безопасен, но может использоваться любым процессом.
См. также Initializer
Practical | mlock и drop root, если имеются, иначе mmap |
Locking | mlock и drop root |
LockingKeepPrivileges | mlock, сохраняя права root |
Direction
enum QCA::Direction |
Настройки направления для симметричных алгоритмов.
Для некоторых алгоритмов имеет смысл указывать «направление», например алгоритмы шифрования, которые можно использовать для шифрования или дешифрования.
Encode | Действует в направлении «вперёд»; например, шифрование |
Decode | Действует в направлении «обратно»; например, дешифрование |
EncryptionAlgorithm
enum QCA::EncryptionAlgorithm |
Алгоритмы шифрования.
EME_PKCS1v15 | Block type 2 (PKCS#1, Version 1.5) |
EME_PKCS1_OAEP | Оптимальное асимметричное дополнение шифрования (PKCS#1, версия 2.0) |
EME_PKCS1v15_SSL | PKCS#1, версия 1.5 с модификацией для SSL. |
EME_NO_PADDING | Чистое шифрование RSA |
SignatureAlgorithm
enum QCA::SignatureAlgorithm |
Варианты алгоритма подписи.
Следует обратить внимание, что большинство алгоритмов подписи следуют процессу сначала хеширования данных открытого текста, которые должны быть подписаны, создания формата полезной нагрузки, который обертывает хеш-значение (среди прочего), а затем подписания полезной нагрузки закрытым ключом. Так, например, подпись EMSA3 (SHA1), выводимая QCA, не может быть проверена простым выполнением операций RSA и SHA1 (например, «openssl rsautl -verify» и сравнение с sha1sum), потому что при этом не будет учитываться формат полезной нагрузки EMSA3.
SignatureUnknown | Неизвестный алгоритм подписи |
EMSA1_SHA1 | SHA1, с шифрованием EMSA1 (IEEE1363-2000) (это обычный алгоритм DSA — FIPS186) |
EMSA3_SHA1 | SHA1 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
EMSA3_MD5 | MD5, с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) (это обычный алгоритм RSA) |
EMSA3_MD2 | MD2 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
EMSA3_RIPEMD160 | RIPEMD160 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
EMSA3_Raw | EMSA3 без вычисления дайджеста сообщения или шифрования DigestInfo (идентично механизму CKM_RSA_PKCS PKCS#11) |
EMSA3_SHA224 | SHA224 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
EMSA3_SHA256 | SHA256 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
EMSA3_SHA384 | SHA384 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
EMSA3_SHA512 | SHA512 с шифрованием EMSA3 (т.е. PKCS#1 версии 1.5) |
ECDSA_SHA256 | ECDSA с SHA256. |
ECDSA_SHA384 | ECDSA с SHA384. |
GOST3411_94_R3410_2001 | ГОСТ Р 34.11-94 с ГОСТ Р 34.10-2001. |
GOST3410_2012_256 | ГОСТ Р 34.10-2012 с ГОСТ Р 34.11-2012 (256 бит) |
GOST3410_2012_512 | ГОСТ Р 34.10-2012 с ГОСТ Р 34.11-2012 (512 бит) |
SignatureFormat
enum QCA::SignatureFormat |
Форматы подписи (только DSA)
DefaultFormat | Для DSA это то же самое, что и IEEE_1363 |
IEEE_1363 | 40-байтовый формат из IEEE 1363 (Botan/.NET) |
DERSequence | Подпись в формате DER (OpenSSL/Java) |
PBEAlgorithm
enum QCA::PBEAlgorithm |
Шифрование на основе пароля.
PBEDefault | Использовать современные настройки по умолчанию (такие же, как PBES2_TripleDES_SHA1) |
PBES2_DES_SHA1 | PKCS#5 v2.0 DES/CBC,SHA1. |
PBES2_TripleDES_SHA1 | PKCS#5 v2.0 TripleDES/CBC,SHA1. |
PBES2_AES128_SHA1 | PKCS#5 v2.0 AES-128/CBC,SHA1. |
PBES2_AES192_SHA1 | PKCS#5 v2.0 AES-192/CBC,SHA1. |
PBES2_AES256_SHA1 | PKCS#5 v2.0 AES-256/CBC,SHA1. |
ConvertResult
enum QCA::ConvertResult |
Возвращает значение после преобразования формата.
Следует обратить внимание: если проверяется какой-либо результат, кроме ConvertGood, возможно, вводится зависимость от криптопровайдера.
ConvertGood | Преобразование успешно, результаты должны быть действительными |
ErrorDecode | Общий сбой на этапе декодирования |
ErrorPassphrase |
Ошибка из-за неправильной кодовой фразы |
ErrorFile | Ошибка из-за неправильного файла |
DLGroupSet
enum QCA::DLGroupSet |
Хорошо известные наборы групп дискретного логарифма.
Эти наборы получены из трёх основных источников: криптографические расширения Java, RFC2412 и RFC3526.
DSA_512 | 512-битная группа, для совместимости с JCE |
DSA_768 | 768-битная группа, для совместимости с JCE |
DSA_1024 | 1024-битная группа, для совместимости с JCE |
IETF_768 | Группа 1 из RFC 2412, раздел E.1. |
IETF_1024 | Группа 2 из RFC 2412, раздел E.2. |
IETF_1536 | 1536-битная группа MODP («группа 5») из раздела 2 RFC3526 |
IETF_2048 | 2048-битная группа MODP («группа 14») из раздела 3 RFC3526 |
IETF_3072 | 3072-битная группа MODP («группа 15») из раздела 4 RFC3526 |
IETF_4096 | 4096-битная группа MODP («группа 16») из раздела 5 RFC3526 |
IETF_6144 | 6144-битная группа MODP («группа 17») из раздела 6 RFC3526 |
IETF_8192 | 8192-битная группа MODP («группа 18») из раздела 7 RFC3526 |
SecurityLevel
enum QCA::SecurityLevel |
Указывает нижнюю границу для приемлемых уровней безопасности TLS/SASL.
Для TLS интерпретация этих уровней следующая:
- Любой набор шифров, который обеспечивает связь без аутентификации (обычно анонимный протокол Диффи — Хеллмана), называется SL_Integrity.
- Любой набор шифров, который ограничен 40 битами (урезанные экспортной версией формы RC2, RC4 или DES), называется SL_Export. Стандартный DES (56 бит) и некоторые формы RC4 (64 бит) также являются SL_Export.
- Любой обычный шифр (AES, Camellia, RC4 или аналогичный) со 128 битами или шифры с эллиптической кривой с 283 битами — это SL_Baseline.
- AES или Camellia не менее 192 бит, тройной DES и аналогичные шифры — SL_High. ECC с 409 или более битами также является SL_High.
- Highest не имеет эквивалентной силы. Он указывает на то, что криптопровайдер должен использовать самые надёжные доступные шифры (но не ниже SL_High).
SL_None | Указывает, что безопасность не в порядке |
SL_Integrity | Необходимо как минимум получить защиту целостности |
SL_Export | Небходимы биты уровня экспорта или выше |
SL_Baseline | Должно быть 128 бит или больше |
SL_High | Должно быть больше 128 бит |
SL_Highest | SL_High или максимально возможный, в зависимости от того, что больше |
Описание методов
orderedToDNString()
QCA_EXPORT QString QCA::orderedToDNString (const CertificateInfoOrdered & in) |
Преобразует в строковый формат RFC 1779
.
Параметры
in | Информация о сертификате для преобразования |
На него ссылается QCA::CertificateInfoOrdered::toString().
orderedDNOnly()
QCA_EXPORT CertificateInfoOrdered QCA::orderedDNOnly (const CertificateInfoOrdered & in) |
Возвращает новый CertificateInfoOrdered, который содержит только типы отличительного имени (DN), найденные во входном объекте.
Параметры
in | Информация о сертификате для извлечения |
На него ссылается QCA::CertificateInfoOrdered::dnOnly().
makeFriendlyNames()
QCA_EXPORT QStringList QCA::makeFriendlyNames (const QList<Certificate> & list) |
Создаёт список уникальных понятных имён среди списка сертификатов.
Параметры
list | Список сертификатов, для которых требуется понятное имя |
init() [1/2]
QCA_EXPORT void QCA::init () |
Инициализация QCA.
Этот вызов обычно не требуется, поскольку проще использовать Initializer.
init() [2/2]
QCA_EXPORT void QCA::init (MemoryMode m, int prealloc ) |
Это перегруженная функция, предоставленная для удобства. Она отличается от указанной выше функции только тем, какие аргументы она принимает.
Параметры
m | MemoryMode для использования |
prealloc | Объём памяти в килобайтах, который нужно выделить для безопасного хранения |
deinit()
QCA_EXPORT void QCA::deinit () |
Выполняет очистку.
Эта процедура очищает QCA, включая выделенную память. Этот вызов обычно не требуется, поскольку проще использовать Initializer
haveSecureMemory()
QCA_EXPORT bool QCA::haveSecureMemory () |
Проверяет, доступна ли безопасная память для хранения.
Возвращает true, если доступна безопасная память для хранения.
haveSecureRandom()
QCA_EXPORT bool QCA::haveSecureRandom () |
Проверяет, доступен ли безопасный случайный выбор.
Безопасный случайный выбор считается доступным, если глобальный криптопровайдер случайных данных не является криптопровайдером по умолчанию.
Возвращает true, если доступен безопасный случайный выбор.
isSupported() [1/2]
QCA_EXPORT bool QCA::isSupported (const char * features, const QString & provider = QString() ) |
Проверка, доступна ли возможность (алгоритм).
Поскольку возможности становятся доступными во время выполнения, всегда необходимо проверять, прежде чем использовать алгоритм в первый раз, как показано ниже.
QCA::init();
if(!QCA::isSupported("sha1"))
printf("SHA1 не поддерживается!\n");
else
{
QString result = QCA::SHA1::hashToString(myString);
printf("sha1(\"%s\") = [%s]\n", myString.data(), qPrintable(result));
}
Параметры
features | Название возможности для проверки |
provider | Если указан, проверяет возможность только у этого конкретного криптопровайдера. Если не указан или предоставлен как пустая строка, проверяет возможности всех доступных криптопровайдеров |
Возвращает true, если возможность доступна, иначе false.
Следует обратить внимание, что можно проверить комбинацию возможностей, используя список, разделённый запятыми:
QCA::isSupported("sha1,md5"):
такой вызов метода вернёт true, если присутствуют все перечисленные возможности.
Примеры
aes-cmac.cpp, certtest.cpp, ciphertest.cpp, hashtest.cpp, mactest.cpp, md5crypt.cpp, publickeyexample.cpp, rsatest.cpp, saslclient.cpp, saslserver.cpp, sslservtest.cpp и ssltest.cpp.
isSupported() [2/2]
QCA_EXPORT bool QCA::isSupported (const QStringList & features, const QString & provider = QString() ) |
Это перегруженная функция, предоставленная для удобства. Она отличается от указанной выше функции только тем, какие аргументы она принимает.
Параметры
features | Список возможностей для тестирования |
provider | Если указан, проверяет возможность только у этого конкретного криптопровайдера. Если не указан или предоставлен как пустая строка, проверяет возможности всех доступных криптопровайдеров |
supportedFeatures()
QCA_EXPORT QStringList QCA::supportedFeatures () |
Создаёт список всех поддерживаемых функциональностей плагинов и встроенных возможностей.
Возвращает список, содержащий названия функциональностей.
Следующий код записывает список стандартных функциональностей:
QStringList capabilities;
capabilities = QCA::supportedFeatures();
std::cout << "Поддерживаются:" << capabilities.join(",") << std::endl;
См. также isSupported(const char *features)
isSupported(const QStringList &features)
defaultFeatures()
QCA_EXPORT QStringList QCA::defaultFeatures () |
Создаёт список встроенных функциональностей.
Он отличается от supportedFeatures() тем, что не включает функциональности, предоставляемые плагинами.
Возвращает список, содержащий названия функциональностей.
Следующий код записывает список стандартных функциональностей:
QStringList capabilities;
capabilities = QCA::defaultFeatures();
std::cout << "По умолчанию:" << capabilities.join(",") << std::endl;
См. также isSupported
Примеры
insertProvider()
QCA_EXPORT bool QCA::insertProvider (Provider * p, int priority = 0) |
Добавить криптопровайдера в текущий список криптопровайдеров.
Этот метод позволяет добавлять криптопровайдера к текущим криптопровайдерам подключаемых модулей с указанным приоритетом. Если криптопровайдер с таким именем уже существует, этот вызов завершается ошибкой.
QCA становится владельцем криптопровайдера.
Параметры
p | Указатель на объект Provider, который необходимо настроить |
priority | Уровень приоритета, который нужно установить криптопровайдеру |
Возвращает true, если криптопровайдер добавлен, и false, если криптопровайдер не добавлен (сбой).
См. также unloadProvider для выгрузки указанных криптопровайдеров
setProviderPriority для описания системы приоритета криптопровайдера
Примеры
unloadProvider()
QCA_EXPORT bool QCA::unloadProvider (const QString & name) |
Выгрузить указанного криптопровайдера.
Указанный криптопровайдер удаляется, в том числе из списка криптопровайдеров. Если криптопровайдер с таким именем не найден, этот вызов завершается ошибкой.
Параметры
name | Имя криптопровайдера |
Возвращает true, если криптопровайдер выгружен, и false, если криптопровайдер не может быть найден.
См. также insertProvider для добавления криптопровайдеров
setProviderPriority()
QCA_EXPORT void QCA::setProviderPriority (const QString & name, int priority ) |
Изменить приоритет указанного криптопровайдера.
QCA поддерживает несколько криптопровайдеров, и если несколько криптопровайдеров поддерживают один и тот же алгоритм, ему необходимо выбирать между ними. Это можно сделать во время создания экземпляра объекта (указав имя криптопровайдера, который следует использовать). В качестве альтернативы можно указать относительный уровень приоритета на уровне приложения, используя этот вызов.
Приоритет используется во время создания экземпляра объекта. Криптопровайдер выбирается по следующим правилам:
- если назначен конкретный криптопровайдер и этот криптопровайдер поддерживает требуемый алгоритм, то используется назначенный криптопровайдер.
- если криптопровайдер не назначен или не поддерживает требуемый алгоритм, то будет использоваться криптопровайдер с наименьшим номером приоритета, если этот криптопровайдер поддерживает алгоритм.
- если криптопровайдер с самым низким номером приоритета не поддерживает требуемый алгоритм, будет использован криптопровайдер со следующим самым низким номером приоритета, и так далее до криптопровайдера с самым большим номером приоритета.
- если ни один из криптопровайдеров плагинов не поддерживает требуемый алгоритм, будет использован криптопровайдер по умолчанию (встроенный).
Параметры
name | Имя криптопровайдера |
priority | Новый приоритет криптопровайдера. В особом случае, если будет передан -1, то этот криптопровайдер получит тот же приоритет, что и последний добавленный криптопровайдер, или его приоритет был установлен с помощью этого вызова |
См. также providerPriority
providerPriority()
QCA_EXPORT int QCA::providerPriority (const QString & name) |
Возвращает приоритет указанного криптопровайдера.
Имя криптопровайдера (например, «qca-ossl») используется для поиска текущего приоритета, связанного с этим криптопровайдером. Если криптопровайдер не найден (или что-то ещё пошло не так), возвращается -1.
Параметры
name | Имя криптопровайдера |
Возвращает текущий уровень приоритета.
См. также setProviderPriority для описания системы приоритета криптопровайдера
providers()
QCA_EXPORT ProviderList QCA::providers () |
Возвращает список текущих криптопровайдеров.
Текущие криптопровайдеры плагинов представлены в виде списка, который можно перебирать с помощью ProviderListIterator.
См. также ProviderList
ProviderListIterator
Примеры
findProvider()
QCA_EXPORT Provider* QCA::findProvider (const QString & name) |
Возвращает названного криптопровайдера или 0
, если он не найден.
Параметры
name | Имя криптопровайдера для поиска |
defaultProvider()
QCA_EXPORT Provider* QCA::defaultProvider () |
Возвращает криптопровайдера по умолчанию.
pluginPaths()
QCA_EXPORT QStringList QCA::pluginPaths () |
Получает пути к плагинам.
Результат состоит из:
- QCA_PLUGIN_PATH, если установлено.
QCoreApplication::libraryPaths
() .- Каталог, в который были установлены плагины.
QCA_PLUGIN_PATH — это список путей, например PATH или QT_PLUGIN_PATH. Он использует разделитель системного пути. ";" в Windows и ":" в Unix.
Этот метод был введён в QCA 2.1.
scanForPlugins()
QCA_EXPORT void QCA::scanForPlugins () |
Ищет новые плагины.
Примеры
unloadAllPlugins()
QCA_EXPORT void QCA::unloadAllPlugins () |
Выгружает текущие плагины.
pluginDiagnosticText()
QCA_EXPORT QString QCA::pluginDiagnosticText () |
Получает диагностический текст плагина.
clearPluginDiagnosticText()
QCA_EXPORT void QCA::clearPluginDiagnosticText () |
Очищает диагностический текст плагина.
appendPluginDiagnosticText()
QCA_EXPORT void QCA::appendPluginDiagnosticText (const QString & text) |
Добавляет диагностический текст плагина.
Этот метод должны вызывать только криптопровайдеры.
Параметры
text | Диагностическое сообщение, которое нужно добавить |
setProperty()
QCA_EXPORT void QCA::setProperty (const QString & name, const QVariant & value ) |
Устанавливает глобальное свойство.
Параметры
name | Название свойства |
value | Значение, которое нужно установить свойству |
См. также getProperty
getProperty()
QCA_EXPORT QVariant QCA::getProperty (const QString & name) |
Получает глобальное свойство.
Параметры
name | Название свойства для поиска |
См. также setProperty
setProviderConfig()
QCA_EXPORT void QCA::setProviderConfig (const QString & name, const QVariantMap & config ) |
Устанавливает конфигурацию криптопровайдера.
Допустимые типы значений: QString, int, bool
Параметры
name | Имя криптопровайдера для настройки конфигурации |
config | Конфигурация |
getProviderConfig()
QCA_EXPORT QVariantMap QCA::getProviderConfig (const QString & name) |
Получает конфигурацию криптопровайдера.
Параметры
name | Имя криптопровайдера, для которого нужно получить конфигурацию |
saveProviderConfig()
QCA_EXPORT void QCA::saveProviderConfig (const QString & name) |
Сохранить конфигурацию криптопровайдера в постоянном хранилище.
Параметры
name | Имя криптопровайдера, конфигурация которого будет сохранена |
globalRandomProvider()
QCA_EXPORT QString QCA::globalRandomProvider () |
Возвращает имя глобального криптопровайдера случайных чисел.
setGlobalRandomProvider()
QCA_EXPORT void QCA::setGlobalRandomProvider (const QString & provider) |
Изменить глобального криптопровайдера случайных чисел.
Возможности Random в QCA предоставляются как часть встроенной функциональности, однако при необходимости генератор можно изменить.
Параметры
provider | Имя криптопровайдера, который будет использоваться в качестве глобального криптопровайдера случайных чисел |
logger()
QCA_EXPORT Logger* QCA::logger () |
Возвращает ссылку на QCA Logger, который используется для диагностики и регистрации ошибок.
Системный Logger создаётся автоматически при запуске.
haveSystemStore()
QCA_EXPORT bool QCA::haveSystemStore () |
Проверка, может ли QCA получить доступ к сертификатам корневого ЦС.
Если корневые сертификаты доступны, эта функция возвращает true, иначе — false
.
См. также systemStore
Примеры
systemStore()
QCA_EXPORT CertificateCollection QCA::systemStore () |
Возвращает общесистемные сертификаты корневого центра сертификации (CA).
Многие операционные системы (или дистрибутивы в системах типа Linux) поставляются с некоторыми доверенными сертификатами. Обычно это корневые сертификаты для основных центров сертификации (например, Verisign, Comodo) и некоторые дополнительные сертификаты, которые используются для обновлений системы. Они предоставляются по-разному для разных систем.
Этот метод предоставляет общий способ доступа к системным сертификатам. Есть и другие способы доступа к сертификатам — см. различные методы ввода-вывода (например, fromDER() и fromPEM()) в классах Certificate и CertificateCollection.
Примечание.
Доступность системных сертификатов зависит от того, как был собран QCA. Можно проверить, доступны ли системные сертификаты, используя метод haveSystemStore().
Примеры
certtest.cpp, ssltest.cpp и tlssocket.cpp.
appName()
QCA_EXPORT QString QCA::appName () |
Возвращает имя приложения, которое будет использоваться в режиме сервера SASL.
Имя приложения используется SASL в режиме сервера, так как некоторые системы могут иметь разные политики безопасности в зависимости от приложения. Имя приложения по умолчанию — qca.
setAppName()
QCA_EXPORT void QCA::setAppName (const QString & name) |
Устанавливает имя приложения, которое будет использоваться в режиме сервера SASL.
Имя приложения используется SASL в режиме сервера, так как некоторые системы могут иметь разные политики безопасности в зависимости от приложения. Оно должно быть установлено до использования объектов SASL и не может быть изменено позже.
Параметры
name | Строка с именем для использования в режиме сервера SASL |
Примеры
arrayToHex()
QCA_EXPORT QString QCA::arrayToHex (const QByteArray & array) |
Преобразует массив байтов в шестнадцатеричное представление для печати.
Это удобный метод для преобразования произвольного QByteArray в версию для печати.
QByteArray test(10);
test.fill('a');
// 0x61 — это 'a' в ASCII
if (QString("61616161616161616161") == QCA::arrayToHex(test) )
{
printf ("arrayToHex успешно\n");
}
Параметры
array | Массив, который нужно преобразовать |
Возвращает версию для печати.
Примеры
aes-cmac.cpp, ciphertest.cpp, hashtest.cpp, mactest.cpp и rsatest.cpp.
hexToArray()
QCA_EXPORT QByteArray QCA::hexToArray (const QString & hexString) |
Преобразует QString, содержащую шестнадцатеричное представление массива байтов, в QByteArray.
Это удобный метод для преобразования версии для печати в QByteArray — фактически обратный QCA::arrayToHex.
QCA::init();
QByteArray test(10);
test.fill('b'); // 0x62 в hexadecimal
test[7] = 0x00; // может обрабатывать строки с null
if (QCA::hexToArray(QString("62626262626262006262") ) == test )
{
printf ("hexToArray успешно\n");
}
Параметры
hexString | Строка, содержащая версию для печати, которую нужно преобразовать |
Возвращает эквивалентный QByteArray.
Примеры
arrayToBase64()
QCA_EXPORT QString QCA::arrayToBase64 (const QByteArray & array) |
Преобразует массив байтов в версию для печати base64.
Это удобный метод для преобразования произвольного QByteArray в версию для печати.
Параметры
array | Массив, который нужно преобразовать |
Возвращает версию для печати.
base64ToArray()
QCA_EXPORT QByteArray QCA::base64ToArray (const QString & base64String) |
Преобразует QString, содержащий представление массива байтов в формате base64, в QByteArray.
Это удобный метод для преобразования версии для печати в QByteArray — фактически обратный QCA::arrayToBase64.
Параметры
base64String | Строка, содержащая версию для печати, которую нужно преобразовать |
Возвращает эквивалентный QByteArray.
emsa3Encode()
QCA_EXPORT QByteArray QCA::emsa3Encode (const QString & hashName, const QByteArray & digest, int size = -1) |
Шифрует результат хеширования в формате EMSA3 (PKCS#1).
Это удобный метод для криптопровайдеров, которые имеют доступ только к необработанной подписи RSA (в основном криптопровайдеры смарт-карт). Этот метод в QCA является встроенным и не использует криптопровайдера. Поддерживаются SHA1, MD5, MD2 и RIPEMD160.
Параметры
hashName | Тип хеша, использованный для создания дайджеста |
digest | Дайджест для кодирования в формате EMSA3 |
size | Желаемый размер вывода кодирования (-1 для автоматического размера) |
operator+()
QCA_EXPORT const SecureArray QCA::operator+ (const SecureArray & a, const SecureArray & b ) |
Возвращает массив, который является результатом объединения a и b.
Параметры
a | Строка, которую нужно поместить в начало результата |
b | Строка, помещаемая в конец результата |