Класс 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