Класс QSslCertificate
Класс QSslCertificate предоставляет удобный API для сертификата X509. Подробнее...
| Заголовок: | #include <QSslCertificate> |
| qmake: | QT += network |
| С тех пор: | Qt 4.3 |
Этот класс был представлен в Qt 4.3.
Примечание: Все функции в этом классе являются повторно входящими.
Публичные типы
| Перечисление | SubjectInfo { Организация, Общее имя, Название места, Название подразделения организации, ..., Адрес электронной почты } |
Публичные функции
| 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, QRegExp::PatternSyntax syntax = QRegExp::FixedString) |
| bool | importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = nullptr, const QByteArray &passPhrase = QByteArray()) |
| QList<QSslError> | verify(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.
Документация типов членов
enum 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, и использует первый найденный сертификат. Позже вы можете вызвать isNull(), чтобы проверить, содержали ли данные сертификат и был ли он загружен успешно.
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, но вы можете указать и другой алгоритм.
QDateTime QSslCertificate::effectiveDate() const
Возвращает дату и время, когда сертификат становится действительным, или пустой QDateTime, если это нулевой сертификат.
См. также expiryDate().
QDateTime QSslCertificate::expiryDate() const
Возвращает дату и время истечения действия сертификата, или пустой QDateTime, если это нулевой сертификат.
См. также effectiveDate().
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] QList<QSslCertificate> QSslCertificate::fromPath(const QString &path, QSsl::EncodingFormat format = QSsl::Pem, QRegExp::PatternSyntax syntax = QRegExp::FixedString)
Ищет все файлы в path, содержащие сертификаты, закодированные в указанном формате format, и возвращает их в списке. path должен быть файлом или шаблоном, соответствующим одному или нескольким файлам, как указано в syntax.
Пример:
const auto certs = QSslCertificate::fromPath("C:/ssl/certificate.*.pem",
QSsl::Pem, QRegExp::Wildcard);
for (const QSslCertificate &cert : certs) {
qDebug() << cert.issuerInfo(QSslCertificate::Organization);
} См. также fromData().
Qt::HANDLE QSslCertificate::handle() const
Возвращает указатель на системную ручку сертификата, если она есть, в противном случае nullptr.
Вы можете использовать эту ручку вместе с системным API, чтобы получить расширенную информацию о сертификате.
Предупреждение: Использование этой функции имеет высокую вероятность быть непереносимым, и её возвращаемое значение может отличаться от платформы к платформе или изменяться от одной незначительной версии к другой.
[static] 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().
bool QSslCertificate::isSelfSigned() const
Возвращает true если этот сертификат самоподписанный; в противном случае возвращает false.
Сертификат считается самоподписанным, если его издатель и субъект идентичны.
Эта функция была добавлена в Qt 5.4.
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().
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().
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().
QList<QByteArray> QSslCertificate::subjectInfoAttributes() const
Возвращает список атрибутов, имеющих значения в информации о субъекте этого сертификата. Информацию, связанную с определённым атрибутом, можно получить с помощью метода subjectInfo(). Обратите внимание, что этот список может включать OID для любых элементов, не известных SSL-бекенду.
Данная функция была добавлена в Qt 5.0.
См. также subjectInfo().
void QSslCertificate::swap(QSslCertificate &other)
Меняет местами текущую экземпляр сертификата с other. Эта функция очень быстрая и никогда не терпит неудачу.
Данная функция была добавлена в Qt 5.0.
QByteArray QSslCertificate::toDer() const
Возвращает этот сертификат, преобразованный в DER (бинарное) представление.
QByteArray QSslCertificate::toPem() const
Возвращает этот сертификат, преобразованный в PEM (Base64) представление.
QString QSslCertificate::toText() const
Возвращает этот сертификат, преобразованный в читаемое человеком текстовое представление.
Данная функция была добавлена в Qt 5.0.
QList<QSslError> QSslCertificate::verify(QList<QSslCertificate> certificateChain, const QString &hostName = QString())
Проверяет цепочку сертификатов. Цепочка, подлежащая проверке, передаётся в параметре certificateChain. Первый сертификат в списке должен быть листом сертификата в цепочке, подлежащей проверке. Если указано hostName, сертификат также проверяется на соответствие указанному имени хоста.
Обратите внимание, что корневой (CA) сертификат не должен включаться в список для проверки, он будет автоматически найден либо с использованием списка CA, заданного QSslSocket::defaultCaCertificates(), или, если это возможно, будет загружен по требованию в Unix.
Данная функция была добавлена в 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-5.13/qsslcertificate.html