Spec-Zone.ru › Qt 6.1

Класс QSslCertificate

Класс QSslCertificate предоставляет удобный API для X509 сертификата. Подробнее...

Заголовок: #include <QSslCertificate>
CMake: find_package(Qt6 COMPONENTS Network REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
  • Список всех членов, включая унаследованные

Примечание: Все функции в этом классе являются перевходными.

Типы Public

перечисление enum class PatternSyntax { RegularExpression, Wildcard, FixedString }
перечисление enum SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, CountryName, …, EmailAddress }

Функции Public

QSslCertificate(const QSslCertificate &other)
QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)
QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
QSslCertificate & operator=(const QSslCertificate &other)
~QSslCertificate()
void clear()
QByteArray digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const
QDateTime effectiveDate() const
QDateTime expiryDate() const
QList<QSslCertificateExtension> extensions() const
Qt::HANDLE handle() const
bool isBlacklisted() const
bool isNull() const
bool isSelfSigned() const
QString issuerDisplayName() const
QStringList issuerInfo(QSslCertificate::SubjectInfo subject) const
QStringList issuerInfo(const QByteArray &attribute) const
QList<QByteArray> issuerInfoAttributes() const
QSslKey publicKey() const
QByteArray serialNumber() const
QMultiMap<QSsl::AlternativeNameEntryType, QString> subjectAlternativeNames() const
QString subjectDisplayName() const
QStringList subjectInfo(QSslCertificate::SubjectInfo subject) const
QStringList subjectInfo(const QByteArray &attribute) const
QList<QByteArray> subjectInfoAttributes() const
void swap(QSslCertificate &other)
QByteArray toDer() const
QByteArray toPem() const
QString toText() const
QByteArray version() const
bool operator!=(const QSslCertificate &other) const
bool operator==(const QSslCertificate &other) const

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

QList<QSslCertificate> fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem)
QList<QSslCertificate> fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
QList<QSslCertificate> fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = PatternSyntax::FixedString)
bool importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray())
QList<QSslError> verify(const QList<QSslCertificate> &certificateChain, const QString &hostName = QString())

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

QSslCertificate хранит сертификат X509 и часто используется для проверки подлинности и хранения информации о локальном хосте, удалённом подключённом узле или доверенном третьем лице, сертификационном центре.

Существует множество способов построения QSslCertificate. Наиболее распространённый способ — вызов QSslSocket::peerCertificate(), который возвращает объект QSslCertificate, или QSslSocket::peerCertificateChain(), который возвращает список таких объектов. Также можно загрузить сертификаты из DER (двоичного) или PEM (Base64) набора, обычно хранящегося в одном или нескольких локальных файлах или в ресурсе Qt.

Можно вызвать isNull(), чтобы проверить, является ли сертификат нулевым. По умолчанию QSslCertificate создаёт нулевой сертификат. Нулевой сертификат недействителен, но недействительный сертификат необязательно нулевой. Если нужно сбросить все содержимое сертификата, вызовите clear().

После загрузки сертификата можно найти информацию о сертификате, его субъекте и издателе, вызвав одну из многочисленных функций-акцессоров, включая version(), serialNumber(), issuerInfo() и subjectInfo(). Можно вызвать effectiveDate() и expiryDate(), чтобы проверить, когда сертификат начинает действовать и когда он истекает. Функция publicKey() возвращает открытый ключ субъекта сертификата как QSslKey. Можно вызвать issuerInfo() или subjectInfo(), чтобы получить подробную информацию об издателе и субъекте сертификата.

Внутренне QSslCertificate хранится как структура X509. Доступ к этому обработчику можно получить, вызвав handle(), но результаты, скорее всего, будут непереносимыми.

См. также QSslSocket, QSslKey, QSslCipher и QSslError.

Документация по типам членов

[since 5.15] перечисление QSslCertificate::PatternSyntax

Синтаксис, используемый для интерпретации шаблона.

Константа Значение Описание
QSslCertificate::PatternSyntax::RegularExpression 0 Богатый синтаксис сопоставления с образцом, похожий на Perl.
QSslCertificate::PatternSyntax::Wildcard 1 Предлагает простой синтаксис сопоставления с образцом, похожий на используемый оболочками (интерпретаторами команд) для «подстановки файлов». См. QRegularExpression::fromWildcard().
QSslCertificate::PatternSyntax::FixedString 2 Шаблон — это строка фиксированного текста. Это эквивалентно использованию шаблона RegularExpression для строки, в которой все метасимволы экранированы с помощью escape(). По умолчанию.

Это перечисление было введено или изменено в Qt 5.15.

перечисление QSslCertificate::SubjectInfo

Описывает ключи, которые можно передать в QSslCertificate::issuerInfo() или QSslCertificate::subjectInfo() для получения информации об издателе или субъекте сертификата.

Константа Значение Описание
QSslCertificate::Organization 0 "O" Наименование организации.
QSslCertificate::CommonName 1 "CN" Общее имя; чаще всего используется для хранения имени хоста.
QSslCertificate::LocalityName 2 "L" Местоположение.
QSslCertificate::OrganizationalUnitName 3 "OU" Наименование организационной единицы.
QSslCertificate::CountryName 4 "C" Страна.
QSslCertificate::StateOrProvinceName 5 "ST" Штат или провинция.
QSslCertificate::DistinguishedNameQualifier 6 Квалификатор имени.
QSslCertificate::SerialNumber 7 Серийный номер сертификата.
QSslCertificate::EmailAddress 8 Электронный адрес, связанный с сертификатом.

Документация по функциям членов

QSslCertificate::QSslCertificate(const QSslCertificate &other)

Создаёт идентичную копию other.

QSslCertificate::QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)

Создаёт QSslCertificate путём разбора закодированных в format данных data и использования первого найденного сертификата. Позже вы можете вызвать isNull(), чтобы проверить, содержали ли данные data сертификат и загружен ли он успешно.

QSslCertificate::QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)

Создаёт QSslCertificate путём считывания данных, закодированных в формате format, из device и использования первого найденного сертификата. Позже вы можете вызвать isNull(), чтобы проверить, содержал ли device сертификат и загружен ли он успешно.

QSslCertificate &QSslCertificate::operator=(const QSslCertificate &other)

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

QSslCertificate::~QSslCertificate()

Уничтожает QSslCertificate.

void QSslCertificate::clear()

Очищает содержимое этого сертификата, делая его нулевым.

См. также isNull().

QByteArray QSslCertificate::digest(QCryptographicHash::Algorithm algorithm = QCryptographicHash::Md5) const

Возвращает криптографическое хеш-значение этого сертификата. По умолчанию генерируется значение MD5, но вы можете указать произвольный алгоритм algorithm.

QDateTime QSslCertificate::effectiveDate() const

Возвращает дату и время начала действия сертификата или пустой QDateTime, если сертификат пустой.

См. также expiryDate().

QDateTime QSslCertificate::expiryDate() const

Возвращает дату и время окончания действия сертификата или пустой QDateTime, если сертификат пустой.

См. также effectiveDate().

[since 5.0] QList<QSslCertificateExtension> QSslCertificate::extensions() const

Возвращает список расширений X509 этого сертификата.

Эта функция была введена в Qt 5.0.

[static] QList<QSslCertificate> QSslCertificate::fromData(const QByteArray &data, QSsl::EncodingFormat format = QSsl::Pem)

Ищет и разбирает все сертификаты в data, закодированные в указанном формате format, и возвращает их в списке сертификатов.

См. также fromDevice().

[static] QList<QSslCertificate> QSslCertificate::fromDevice(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)

Ищет и разбирает все сертификаты в device, закодированные в указанном формате format, и возвращает их в списке сертификатов.

См. также fromData().

[static, since 5.15] QList<QSslCertificate> QSslCertificate::fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QSslCertificate::PatternSyntax syntax = PatternSyntax::FixedString)

Ищет во всех файлах в path сертификаты, закодированные в указанном формате format, и возвращает их в списке. path должен быть именем файла или шаблоном, соответствующим одному или нескольким файлам, как указано в syntax.

Пример:

const auto certs = QSslCertificate::fromPath("C:/ssl/certificate.*.pem",
                                             QSsl::Pem, QSslCertificate::Wildcard);
for (const QSslCertificate &cert : certs) {
    qDebug() << cert.issuerInfo(QSslCertificate::Organization);
}

Эта функция была введена в Qt 5.15.

См. также fromData().

Qt::HANDLE QSslCertificate::handle() const

Возвращает указатель на системную обработку сертификата, если она есть, в противном случае nullptr.

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

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

[static, since 5.4] bool QSslCertificate::importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray())

Импортирует файл PKCS#12 (pfx) из указанного device. Файл PKCS#12 — это набор, который может содержать несколько сертификатов и ключей. Этот метод считывает один key, его certificate и любые связанные caCertificates из набора. Если указана passPhrase, она используется для дешифрования набора. Возвращает true если файл PKCS#12 был загружен успешно.

Примечание: device должен быть открытым и готов к чтению.

Эта функция была введена в Qt 5.4.

bool QSslCertificate::isBlacklisted() const

Возвращает true если этот сертификат занесён в чёрный список; в противном случае возвращает false.

См. также isNull().

bool QSslCertificate::isNull() const

Возвращает true если это пустой сертификат (т.е. сертификат без содержимого); в противном случае возвращает false.

По умолчанию, QSslCertificate создаёт пустой сертификат.

См. также clear().

[since 5.4] bool QSslCertificate::isSelfSigned() const

Возвращает true если этот сертификат самоподписанный; в противном случае возвращает false.

Сертификат считается самоподписанным, если его издатель и подписчик идентичны.

Эта функция была введена в Qt 5.4.

[since 5.12] QString QSslCertificate::issuerDisplayName() const

Возвращает имя, описывающее издателя. Возвращает QSslCertificate::CommonName, если доступно, в противном случае возвращает первое значение QSslCertificate::Organization или QSslCertificate::OrganizationalUnitName.

Эта функция была введена в Qt 5.12.

См. также issuerInfo().

QStringList QSslCertificate::issuerInfo(QSslCertificate::SubjectInfo subject) const

Возвращает информацию об издателе для subject из сертификата или пустой список, если информация для subject в сертификате отсутствует. Может быть несколько записей каждого типа.

См. также subjectInfo().

QStringList QSslCertificate::issuerInfo(const QByteArray &attribute) const

Возвращает информацию об издателе для attribute из сертификата или пустой список, если информация для attribute в сертификате отсутствует. Может быть несколько записей для одного атрибута.

См. также subjectInfo().

[since 5.0] QList<QByteArray> QSslCertificate::issuerInfoAttributes() const

Возвращает список атрибутов, которые имеют значения в информации об издателе этого сертификата. Информацию, связанную с заданным атрибутом, можно получить с помощью метода issuerInfo(). Обратите внимание, что этот список может включать OID для любых элементов, которые не известны обратному вызову SSL.

Эта функция была введена в Qt 5.0.

См. также subjectInfo().

QSslKey QSslCertificate::publicKey() const

Возвращает открытый ключ субъекта сертификата.

QByteArray QSslCertificate::serialNumber() const

Возвращает строку серийного номера сертификата в шестнадцатеричном формате.

QMultiMap<QSsl::AlternativeNameEntryType, QString> QSslCertificate::subjectAlternativeNames() const

Возвращает список альтернативных имён субъекта для этого сертификата. Альтернативные имена обычно содержат имена хостов, необязательно с подстановочными знаками, которые действительны для этого сертификата.

Эти имена проверяются по имени хоста подключённого узла, если информация о субъекте для CommonName не определяет действительное имя хоста или имя из информации о субъекте не совпадает с именем хоста узла.

См. также subjectInfo().

[since 5.12] QString QSslCertificate::subjectDisplayName() const

Возвращает имя, описывающее субъект. Возвращает QSslCertificate::CommonName, если доступно, в противном случае возвращает первое значение QSslCertificate::Organization или QSslCertificate::OrganizationalUnitName.

Эта функция была введена в Qt 5.12.

См. также subjectInfo().

QStringList QSslCertificate::subjectInfo(QSslCertificate::SubjectInfo subject) const

Возвращает информацию для subject или пустой список, если информация для subject в сертификате отсутствует. Может быть несколько записей каждого типа.

См. также issuerInfo().

QStringList QSslCertificate::subjectInfo(const QByteArray &attribute) const

Возвращает информацию о субъекте для attribute или пустой список, если информация для attribute в сертификате отсутствует. Может быть несколько записей для одного атрибута.

См. также issuerInfo().

[since 5.0] QList<QByteArray> QSslCertificate::subjectInfoAttributes() const

Возвращает список атрибутов, которые имеют значения в информации о субъекте этого сертификата. Информацию, связанную с заданным атрибутом, можно получить с помощью метода subjectInfo(). Обратите внимание, что этот список может включать OID для любых элементов, которые не известны обратному вызову SSL.

Эта функция была введена в Qt 5.0.

См. также subjectInfo().

[since 5.0] void QSslCertificate::swap(QSslCertificate &other)

Меняет местами этот экземпляр сертификата с other. Эта функция очень быстрая и никогда не приводит к ошибке.

Эта функция была введена в Qt 5.0.

QByteArray QSslCertificate::toDer() const

Возвращает этот сертификат, преобразованный в DER (бинарное) представление.

QByteArray QSslCertificate::toPem() const

Возвращает этот сертификат, преобразованный в PEM (Base64) представление.

[since 5.0] QString QSslCertificate::toText() const

Возвращает этот сертификат, преобразованный в удобочитаемое текстовое представление.

Эта функция была введена в Qt 5.0.

[static, since 5.0] QList<QSslError> QSslCertificate::verify(const QList<QSslCertificate> &certificateChain, const QString &hostName = QString())

Проверяет цепочку сертификатов. Цепочка для проверки передаётся в параметре certificateChain. Первый сертификат в списке должен быть сертификатом листа цепочки для проверки. Если hostName указан, сертификат также проверяется на соответствие указанному имени хоста.

Обратите внимание, что корневой (CA) сертификат не должен включаться в список для проверки, он будет автоматически найден с помощью списка CA, указанного в стандартной QSslConfiguration, и, при возможности, загружаемых по запросу сертификатов CA в Unix и Windows.

Эта функция была введена в Qt 5.0.

QByteArray QSslCertificate::version() const

Возвращает строку версии сертификата.

bool QSslCertificate::operator!=(const QSslCertificate &other) const

Возвращает true если этот сертификат не такой же, как other; в противном случае возвращает false.

bool QSslCertificate::operator==(const QSslCertificate &other) const

Возвращает true если этот сертификат такой же, как other; в противном случае возвращает false.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qsslcertificate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API