Класс QSslCertificate
Класс QSslCertificate предоставляет удобный API для работы с сертификатом X509. Подробнее...
| Заголовок: | #include <QSslCertificate> |
| qmake: | QT += network |
| С момента: | Qt 4.3 |
Примечание: Все функции этого класса являются повторно-входными.
Общедоступные типы
| Перечисление | SubjectInfo { Организация, ОбщееИмя, МестоРасположения, ОрганизационноеПодразделение, ..., АдресЭл.Почты } |
Общедоступные функции
| QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem) | |
| QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem) | |
| QSslCertificate(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 |
| QStringList | issuerInfo(SubjectInfo subject) const |
| QStringList | issuerInfo(const QByteArray &attribute) 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 = Q_NULLPTR, const QByteArray &passPhrase = QByteArray()) |
| QList<QSslError> | verify(QList<QSslCertificate> certificateChain, const QString &hostName = QString()) |
Подробное описание
Класс QSslCertificate предоставляет удобный API для работы с сертификатом X509.
QSslCertificate хранит сертификат X509 и часто используется для проверки подлинности и хранения информации о локальном хосте, удалённом подключённом узле или доверенном сертификационном центре.
Существует много способов создания объекта QSslCertificate. Наиболее распространённый способ — вызов QSslSocket::peerCertificate(), который возвращает объект QSslCertificate, или QSslSocket::peerCertificateChain(), который возвращает список таких объектов. Также можно загружать сертификаты из набора данных в формате DER (двоичный) или PEM (Base64), обычно хранящихся в одном или нескольких локальных файлах или в Qt Resource.
Можно вызвать 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(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem)
Создаёт QSslCertificate путём чтения данных, закодированных в формате format, из device, используя первый найденный сертификат. Позже можно вызвать isNull(), чтобы проверить, содержал ли device сертификат и был ли он загружен успешно.
QSslCertificate::QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem)
Создаёт QSslCertificate путём анализа данных data, закодированных в формате format, и использования первого найденного сертификата. Позже можно вызвать isNull(), чтобы проверить, содержали ли data сертификат и был ли он загружен успешно.
QSslCertificate::QSslCertificate(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().
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
Возвращает указатель на системную ручку сертификата, если она есть, в противном случае — нулевой указатель.
Вы можете использовать эту ручку вместе с системным API для доступа к дополнительной информации о сертификате.
Предупреждение: Использование этой функции имеет высокую вероятность непереносимости, и её возвращаемое значение может меняться в зависимости от платформы или между версиями Qt.
[static] bool QSslCertificate::importPkcs12(QIODevice *device, QSslKey *key, QSslCertificate *certificate, QList<QSslCertificate> *caCertificates = Q_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.
QStringList QSslCertificate::issuerInfo(SubjectInfo subject) const
Возвращает информацию об издателе для subject из сертификата, или пустой список, если в сертификате нет информации для subject. Может быть несколько записей каждого типа.
См. также subjectInfo().
QStringList QSslCertificate::issuerInfo(const QByteArray &attribute) const
Возвращает информацию об издателе для атрибута из сертификата или пустой список, если информация для атрибута в сертификате отсутствует. Может быть несколько записей для одного атрибута.
См. также 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().
QStringList QSslCertificate::subjectInfo(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.
[static] QList<QSslError> QSslCertificate::verify(QList<QSslCertificate> certificateChain, const QString &hostName = QString())
Проверяет цепочку сертификатов. Цепочка, подлежащая проверке, передаётся в параметре certificateChain. Первый сертификат в списке должен быть листом сертификатов проверяемой цепочки. Если hostName указан, то сертификат также проверяется на соответствие указанному имени хоста.
Обратите внимание, что корневой сертификат (УЦ) не должен быть включён в проверяемый список, он будет автоматически найден либо с помощью списка УЦ, указанного QSslSocket::defaultCaCertificates(), либо, если возможно, загружен по требованию на Unix.
Функция была добавлена в Qt 5.0.
QByteArray QSslCertificate::version() const
Возвращает строку версии сертификата.
bool QSslCertificate::operator!=(const QSslCertificate &other) const
Возвращает true если этот сертификат не такой же, как other; в противном случае возвращает false.
QSslCertificate &QSslCertificate::operator=(QSslCertificate &&other)
Оператор перемещающей присваивания.
QSslCertificate &QSslCertificate::operator=(const QSslCertificate &other)
Копирует содержимое other в этот сертификат, делая два сертификата идентичными.
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.9/qsslcertificate.html