Класс QSslCertificate
Класс QSslCertificate предоставляет удобный API для работы с сертификатом X509. Подробнее...
| Заголовок: | #include <QSslCertificate> |
| qmake: | QT += network |
| С тех пор: | Qt 4.3 |
Примечание: Все функции в этом классе являются реентерабельными.
Типы публичного доступа
| Перечисление | SubjectInfo { Organization, CommonName, LocalityName, OrganizationalUnitName, ..., EmailAddress } |
Функции публичного доступа
| 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.
Вы можете вызвать 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.
Пример:
foreach (const QSslCertificate &cert, QSslCertificate::fromPath("C:/ssl/certificate.*.pem",
QSsl::Pem,
QRegExp::Wildcard)) {
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 = 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
Возвращает информацию о субъекте для атрибута, или пустой список, если для атрибута нет информации в сертификате. Может быть несколько записей для одного атрибута.
См. также 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.6/qsslcertificate.html