QMessageAuthenticationCode: port to QByteArrayView [3/3]: static hash()
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, esp. since we'd need _four_ overloads to handle the two byte array arguments here, and still cause ambiguities, because there's only one level of "weakness" in Q_WEAK_OVERLOAD, but we'd need two. QCryptographicHash::hash() also doesn't have it. [ChangeLog][QtCore][QMessageAuthenticationCode] The constructor, setKey(), addData() methods as well as the static hash() function take arguments by QByteArrayView instead of QByteArray now. [ChangeLog][Potentially Source-Incompatible Changes] More APIs now take QByteArrayView instead of QByteArray. You will now get a compile error when your code passes to such functions objects that implicitly convert to QByteArray, but not QByteArrayView. Wrapping such arguments in QByteArray{~~~} to make the cast explicit is a backwards-compatible way to avoid this problem. Fixes: QTBUG-111676 Change-Id: Iaff832df3b315ca2eee7bff93720b6681182036f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
6a6e9337c7
commit
c19f9716fb
@ -502,6 +502,13 @@ void QMessageAuthenticationCode::addData(const QByteArray &data)
|
||||
addData(qToByteArrayViewIgnoringNull(data));
|
||||
}
|
||||
|
||||
QByteArray QMessageAuthenticationCode::hash(const QByteArray &msg, const QByteArray &key,
|
||||
QCryptographicHash::Algorithm method)
|
||||
{
|
||||
return hash(qToByteArrayViewIgnoringNull(msg),
|
||||
qToByteArrayViewIgnoringNull(key), method);
|
||||
}
|
||||
|
||||
#include "qstring.h"
|
||||
|
||||
qsizetype QString::toUcs4_helper(const ushort *uc, qsizetype length, uint *out)
|
||||
|
@ -1436,8 +1436,10 @@ void QMessageAuthenticationCodePrivate::finalizeUnchecked() noexcept
|
||||
/*!
|
||||
Returns the authentication code for the message \a message using
|
||||
the key \a key and the method \a method.
|
||||
|
||||
\include qcryptographichash.cpp {qba-to-qbav-6.6}
|
||||
*/
|
||||
QByteArray QMessageAuthenticationCode::hash(const QByteArray &message, const QByteArray &key,
|
||||
QByteArray QMessageAuthenticationCode::hash(QByteArrayView message, QByteArrayView key,
|
||||
QCryptographicHash::Algorithm method)
|
||||
{
|
||||
QMessageAuthenticationCodePrivate mac(method);
|
||||
|
@ -48,8 +48,12 @@ public:
|
||||
QByteArrayView resultView() const noexcept;
|
||||
QByteArray result() const;
|
||||
|
||||
#if QT_CORE_REMOVED_SINCE(6, 6)
|
||||
static QByteArray hash(const QByteArray &message, const QByteArray &key,
|
||||
QCryptographicHash::Algorithm method);
|
||||
#endif
|
||||
static QByteArray hash(QByteArrayView message, QByteArrayView key,
|
||||
QCryptographicHash::Algorithm method);
|
||||
|
||||
private:
|
||||
Q_DISABLE_COPY(QMessageAuthenticationCode)
|
||||
|
Loading…
x
Reference in New Issue
Block a user