QMessageAuthenticationCode: port to QByteArrayView [1/3]: ctor/setKey()
The class is not used frequently enough to warrant the overhead of a Q_WEAK_ QByteArray overload to fix the SiC Type A for users that pass objects that implicitly convert to QByteArray. QCryptographicHash also doesn't have it. Also mark setKey() noexcept. Now that it takes a view instead of an owning container, it only calls other noexcept functions. ChangeLog will be on patch [3/3]. Task-number: QTBUG-111676 Task-number: QTBUG-111688 Change-Id: Ic2321d0d41ce8eb4d0390889f28b3fd4bd9af103 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
0cab9b56e9
commit
93cb61e305
@ -486,6 +486,17 @@ void QXmlStreamWriter::writeStartElement(const QString &namespaceUri, const QStr
|
|||||||
|
|
||||||
#if QT_CORE_REMOVED_SINCE(6, 6)
|
#if QT_CORE_REMOVED_SINCE(6, 6)
|
||||||
|
|
||||||
|
#include "qmessageauthenticationcode.h"
|
||||||
|
|
||||||
|
QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method,
|
||||||
|
const QByteArray &key)
|
||||||
|
: QMessageAuthenticationCode(method, qToByteArrayViewIgnoringNull(key)) {}
|
||||||
|
|
||||||
|
void QMessageAuthenticationCode::setKey(const QByteArray &key)
|
||||||
|
{
|
||||||
|
setKey(qToByteArrayViewIgnoringNull(key));
|
||||||
|
}
|
||||||
|
|
||||||
#include "qstring.h"
|
#include "qstring.h"
|
||||||
|
|
||||||
qsizetype QString::toUcs4_helper(const ushort *uc, qsizetype length, uint *out)
|
qsizetype QString::toUcs4_helper(const ushort *uc, qsizetype length, uint *out)
|
||||||
|
@ -1245,9 +1245,18 @@ void QMessageAuthenticationCodePrivate::initMessageHash() noexcept
|
|||||||
/*!
|
/*!
|
||||||
Constructs an object that can be used to create a cryptographic hash from data
|
Constructs an object that can be used to create a cryptographic hash from data
|
||||||
using method \a method and key \a key.
|
using method \a method and key \a key.
|
||||||
|
|
||||||
|
//! [qba-to-qbav-6.6]
|
||||||
|
\note In Qt versions prior to 6.6, this function took its arguments as
|
||||||
|
QByteArray, not QByteArrayView. If you experience compile errors, it's
|
||||||
|
because your code is passing objects that are implicitly convertible to
|
||||||
|
QByteArray, but not QByteArrayView. Wrap the corresponding argument in
|
||||||
|
\c{QByteArray{~~~}} to make the cast explicit. This is backwards-compatible
|
||||||
|
with old Qt versions.
|
||||||
|
//! [qba-to-qbav-6.6]
|
||||||
*/
|
*/
|
||||||
QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method,
|
QMessageAuthenticationCode::QMessageAuthenticationCode(QCryptographicHash::Algorithm method,
|
||||||
const QByteArray &key)
|
QByteArrayView key)
|
||||||
: d(new QMessageAuthenticationCodePrivate(method))
|
: d(new QMessageAuthenticationCodePrivate(method))
|
||||||
{
|
{
|
||||||
d->setKey(key);
|
d->setKey(key);
|
||||||
@ -1334,8 +1343,10 @@ void QMessageAuthenticationCode::reset()
|
|||||||
mac.emplace(method, key);
|
mac.emplace(method, key);
|
||||||
use(*mac);
|
use(*mac);
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
|
\include qcryptographichash.cpp {qba-to-qbav-6.6}
|
||||||
*/
|
*/
|
||||||
void QMessageAuthenticationCode::setKey(const QByteArray &key)
|
void QMessageAuthenticationCode::setKey(QByteArrayView key) noexcept
|
||||||
{
|
{
|
||||||
d->result.clear();
|
d->result.clear();
|
||||||
d->messageHash.reset();
|
d->messageHash.reset();
|
||||||
|
@ -16,8 +16,13 @@ class QIODevice;
|
|||||||
class Q_CORE_EXPORT QMessageAuthenticationCode
|
class Q_CORE_EXPORT QMessageAuthenticationCode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
#if QT_CORE_REMOVED_SINCE(6, 6)
|
||||||
explicit QMessageAuthenticationCode(QCryptographicHash::Algorithm method,
|
explicit QMessageAuthenticationCode(QCryptographicHash::Algorithm method,
|
||||||
const QByteArray &key = QByteArray());
|
const QByteArray &key);
|
||||||
|
#endif
|
||||||
|
explicit QMessageAuthenticationCode(QCryptographicHash::Algorithm method,
|
||||||
|
QByteArrayView key = {});
|
||||||
|
|
||||||
QMessageAuthenticationCode(QMessageAuthenticationCode &&other) noexcept
|
QMessageAuthenticationCode(QMessageAuthenticationCode &&other) noexcept
|
||||||
: d{std::exchange(other.d, nullptr)} {}
|
: d{std::exchange(other.d, nullptr)} {}
|
||||||
~QMessageAuthenticationCode();
|
~QMessageAuthenticationCode();
|
||||||
@ -28,7 +33,10 @@ public:
|
|||||||
|
|
||||||
void reset();
|
void reset();
|
||||||
|
|
||||||
|
#if QT_CORE_REMOVED_SINCE(6, 6)
|
||||||
void setKey(const QByteArray &key);
|
void setKey(const QByteArray &key);
|
||||||
|
#endif
|
||||||
|
void setKey(QByteArrayView key) noexcept;
|
||||||
|
|
||||||
void addData(const char *data, qsizetype length);
|
void addData(const char *data, qsizetype length);
|
||||||
void addData(const QByteArray &data);
|
void addData(const QByteArray &data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user