Класс QSslCertificate
Класс QSslCertificate предоставляет удобный API для работы с сертификатом X509. Подробнее...
| Заголовок: | #include <QSslCertificate> |
| qmake: | QT += network |
| С момента: | Qt 4.3 |
Примечание: Все функции в этом классе являются перевходовыми.
Типы Public
| перечисление | SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, ..., EmailAddress } |
Функции Public
| 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 |
| 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 |
| 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().
END_OF_DOCUMENT_MARKER ```После загрузки сертификата вы можете получить информацию о сертификате, его владельце и выдавшем его, вызвав одну из многочисленных функций-акссесоров, включая 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.
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.
[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.12/qsslcertificate.html