Класс QSslPreSharedKeyAuthenticator
Класс QSslPreSharedKeyAuthenticator предоставляет данные аутентификации для шифровальных наборов с предварительно общими ключами (PSK). Подробнее...
| Заголовок: | #include <QSslPreSharedKeyAuthenticator> |
| qmake: | QT += network |
| С момента: | Qt 5.5 |
Этот класс был введён в Qt 5.5.
Примечание: Все функции в этом классе являются перевходными.
Открытые функции
| QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator) | |
| QSslPreSharedKeyAuthenticator() | |
| QSslPreSharedKeyAuthenticator & | operator=(QSslPreSharedKeyAuthenticator &&authenticator) |
| QSslPreSharedKeyAuthenticator & | operator=(const QSslPreSharedKeyAuthenticator &authenticator) |
| ~QSslPreSharedKeyAuthenticator() | |
| QByteArray | identity() const |
| QByteArray | identityHint() const |
| int | maximumIdentityLength() const |
| int | maximumPreSharedKeyLength() const |
| QByteArray | preSharedKey() const |
| void | setIdentity(const QByteArray &identity) |
| void | setPreSharedKey(const QByteArray &preSharedKey) |
| void | swap(QSslPreSharedKeyAuthenticator &authenticator) |
Связанные внешние элементы
| bool | operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs) |
| bool | operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs) |
Подробное описание
Класс QSslPreSharedKeyAuthenticator используется сокетом SSL для предоставления необходимых данных аутентификации в шифровальном наборе с предварительно общим ключом (PSK).
В процессе рукопожатия PSK клиент должен вывести ключ, который должен совпадать с ключом, установленным на сервере. Точный алгоритм вывода ключа зависит от приложения; однако для этой цели сервер может отправить подсказку идентификатора клиенту. Эта подсказка в сочетании с другой информацией (например, паролем) используется клиентом для создания общего ключа.
Класс QSslPreSharedKeyAuthenticator предоставляет средства клиентским приложениям для завершения рукопожатия PSK. Клиентскому приложению необходимо подключить слот к сигналу QSslSocket::preSharedKeyAuthenticationRequired():
connect(socket, &QSslSocket::preSharedKeyAuthenticationRequired,
this, &AuthManager::handlePreSharedKeyAuthentication); Сигнал переносит объект QSslPreSharedKeyAuthenticator, содержащий подсказку идентификатора, отправленную сервером клиенту, и который должен быть заполнен соответствующим клиенту идентификатором и выведенным ключом:
void AuthManager::handlePreSharedKeyAuthentication(QSslPreSharedKeyAuthenticator *authenticator)
{
authenticator->setIdentity("My Qt App");
const QByteArray key = deriveKey(authenticator->identityHint(), passphrase);
authenticator->setPreSharedKey(key);
} Примечание: Шифровальные наборы PSK поддерживаются только при использовании OpenSSL 1.0.1 (или более поздних версий) в качестве бэкенда SSL.
Примечание: PSK в настоящее время поддерживается только в OpenSSL.
См. также QSslSocket.
Документация по функциям-членам
QSslPreSharedKeyAuthenticator::QSslPreSharedKeyAuthenticator(const QSslPreSharedKeyAuthenticator &authenticator)
Создаёт объект QSslPreSharedKeyAuthenticator как копию объекта authenticator.
См. также operator=().
QSslPreSharedKeyAuthenticator::QSslPreSharedKeyAuthenticator()
Создаёт объект QSslPreSharedKeyAuthenticator по умолчанию.
Подсказка идентификатора, идентификатор и ключ будут инициализированы пустыми массивами байтов; максимальная длина и идентификатора, и ключа будет инициализирована значением 0.
QSslPreSharedKeyAuthenticator &QSslPreSharedKeyAuthenticator::operator=(QSslPreSharedKeyAuthenticator &&authenticator)
Перемещает присваивание объекта QSslPreSharedKeyAuthenticator authenticator в этот объект и возвращает ссылку на перемещённый экземпляр.
QSslPreSharedKeyAuthenticator &QSslPreSharedKeyAuthenticator::operator=(const QSslPreSharedKeyAuthenticator &authenticator)
Присваивает объект QSslPreSharedKeyAuthenticator authenticator этому объекту и возвращает ссылку на копию.
QSslPreSharedKeyAuthenticator::~QSslPreSharedKeyAuthenticator()
Уничтожает объект QSslPreSharedKeyAuthenticator.
QByteArray QSslPreSharedKeyAuthenticator::identity() const
Возвращает клиентский идентификатор PSK.
См. также setIdentity().
QByteArray QSslPreSharedKeyAuthenticator::identityHint() const
Возвращает подсказку идентификатора PSK, предоставленную сервером. Интерпретация этой подсказки оставлена на усмотрение приложения.
int QSslPreSharedKeyAuthenticator::maximumIdentityLength() const
Возвращает максимальную длину в байтах клиентского идентификатора PSK.
Примечание: возможно установить идентификатор, длина которого больше maximumIdentityLength(); в этом случае будут отправлены только первые maximumIdentityLength() байтов на сервер.
См. также setIdentity().
int QSslPreSharedKeyAuthenticator::maximumPreSharedKeyLength() const
Возвращает максимальную длину в байтах предварительно общего ключа.
Примечание: возможно установить ключ, длина которого больше maximumPreSharedKeyLength(); в этом случае будут отправлены только первые maximumPreSharedKeyLength() байтов на сервер.
См. также setPreSharedKey().
QByteArray QSslPreSharedKeyAuthenticator::preSharedKey() const
Возвращает предварительно общий ключ.
См. также setPreSharedKey().
void QSslPreSharedKeyAuthenticator::setIdentity(const QByteArray &identity)
Устанавливает клиентский идентификатор PSK (для уведомления сервера) в identity.
Примечание: возможно установить идентификатор, длина которого больше maximumIdentityLength(); в этом случае будут отправлены только первые maximumIdentityLength() байтов на сервер.
См. также identity() и maximumIdentityLength().
void QSslPreSharedKeyAuthenticator::setPreSharedKey(const QByteArray &preSharedKey)
Устанавливает предварительно общий ключ в preSharedKey.
Примечание: можно задать ключ, длина которого больше, чем maximumPreSharedKeyLength; в этом случае только первые maximumPreSharedKeyLength() байта будут фактически отправлены на сервер.
См. также preSharedKey(), maximumPreSharedKeyLength(), и QByteArray::fromHex().
void QSslPreSharedKeyAuthenticator::swap(QSslPreSharedKeyAuthenticator &authenticator)
Меняет местами объект QSslPreSharedKeyAuthenticator authenticator с этим объектом. Эта операция очень быстрая и никогда не завершается ошибкой.
Связанные внешние функции
bool QSslPreSharedKeyAuthenticator::operator!=(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs)
Возвращает true, если объект аутентификатора lhs отличается от rhs; в противном случае возвращает false.
Эта функция была добавлена в Qt 5.5.
bool QSslPreSharedKeyAuthenticator::operator==(const QSslPreSharedKeyAuthenticator &lhs, const QSslPreSharedKeyAuthenticator &rhs)
Возвращает true, если объект аутентификатора lhs равен rhs; в противном случае возвращает false.
Два объекта аутентификатора равны тогда и только тогда, когда у них одинаковый идентификатор, идентичность, предварительный общий ключ, максимальная длина идентификатора и максимальная длина предварительного общего ключа.
Эта функция была добавлена в Qt 5.5.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qsslpresharedkeyauthenticator.html