Класс 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(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 |
| 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 |
| QSslCertificate & | operator=(QSslCertificate &&other) |
| QSslCertificate & | operator=(const QSslCertificate &other) |
| 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 предоставляет удобный API для X509 сертификата.
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(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, чтобы получить дополнительную информацию о сертификате.
Предупреждение: Использование этой функции имеет высокую вероятность непереносимости, и ее возвращаемое значение может различаться в зависимости от платформы или меняться от одной версии до другой.
[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.
QStringList QSslCertificate::issuerInfo(QSslCertificate::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(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.
[static] 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.
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/archives/qt-5.11/qsslcertificate.html