Spec-Zone.ru › Qt 6.0

Класс QSslCertificate

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

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

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

Типы публичного доступа

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

Функции публичного доступа

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

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

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.
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, анализируя закодированные данные data в формате format и используя первый найденный сертификат. Позже вы можете вызвать 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.0/qsslcertificate.html

Spec-Zone.ru

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