Merge remote-tracking branch 'origin/tracking' into custom

This commit is contained in:
roytam1 2025-02-06 09:30:57 +08:00
commit f7298813f9
11 changed files with 44 additions and 91 deletions

View file

@ -152,7 +152,7 @@ GetAlgorithmName(JSContext* aCx, const OOS& aAlgorithm, nsString& aName)
}
if (!NormalizeToken(aName, aName)) {
return NS_ERROR_DOM_SYNTAX_ERR;
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
}
return NS_OK;
@ -170,7 +170,7 @@ Coerce(JSContext* aCx, T& aTarget, const OOS& aAlgorithm)
JS::RootedValue value(aCx, JS::ObjectValue(*aAlgorithm.GetAsObject()));
if (!aTarget.Init(aCx, value)) {
return NS_ERROR_DOM_SYNTAX_ERR;
return NS_ERROR_DOM_TYPE_MISMATCH_ERR;
}
return NS_OK;
@ -401,9 +401,15 @@ WebCryptoTask::FailWithError(nsresult aRv)
{
MOZ_ASSERT(IsOnOriginalThread());
// Blindly convert nsresult to DOMException
// Individual tasks must ensure they pass the right values
mResultPromise->MaybeReject(aRv);
if (aRv == NS_ERROR_DOM_TYPE_MISMATCH_ERR) {
ErrorResult rv;
rv.ThrowTypeError<MSG_DOM_OPERATION_FAILED>();
mResultPromise->MaybeReject(rv);
} else {
// Blindly convert nsresult to DOMException
// Individual tasks must ensure they pass the right values
mResultPromise->MaybeReject(aRv);
}
// Manually release mResultPromise while we're on the main thread
mResultPromise = nullptr;
mWorkerHolder = nullptr;
@ -1537,7 +1543,8 @@ public:
}
// Check that we have valid key data.
if (mKeyData.Length() == 0) {
// Zero-length key is allowed for PBKDF2 since it will be padded.
if (mKeyData.Length() == 0 && !mAlgName.EqualsLiteral(WEBCRYPTO_ALG_PBKDF2)) {
return NS_ERROR_DOM_DATA_ERR;
}
@ -2206,7 +2213,6 @@ public:
nsString algName;
mEarlyRv = GetAlgorithmName(aCx, aAlgorithm, algName);
if (NS_FAILED(mEarlyRv)) {
mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR;
return;
}
@ -2235,7 +2241,6 @@ public:
nsString hashName;
mEarlyRv = GetAlgorithmName(aCx, params.mHash, hashName);
if (NS_FAILED(mEarlyRv)) {
mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR;
return;
}
@ -2333,7 +2338,6 @@ GenerateAsymmetricKeyTask::GenerateAsymmetricKeyTask(
// Extract algorithm name
mEarlyRv = GetAlgorithmName(aCx, aAlgorithm, mAlgName);
if (NS_FAILED(mEarlyRv)) {
mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR;
return;
}
@ -2356,7 +2360,6 @@ GenerateAsymmetricKeyTask::GenerateAsymmetricKeyTask(
nsString hashName;
mEarlyRv = GetAlgorithmName(aCx, params.mHash, hashName);
if (NS_FAILED(mEarlyRv)) {
mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR;
return;
}
@ -2734,12 +2737,6 @@ public:
{
CHECK_KEY_ALGORITHM(aKey.Algorithm(), WEBCRYPTO_ALG_PBKDF2);
// Check that we got a symmetric key
if (mSymKey.Length() == 0) {
mEarlyRv = NS_ERROR_DOM_INVALID_ACCESS_ERR;
return;
}
RootedDictionary<Pbkdf2Params> params(aCx);
mEarlyRv = Coerce(aCx, params, aAlgorithm);
if (NS_FAILED(mEarlyRv)) {
@ -2747,9 +2744,9 @@ public:
return;
}
// length must be a multiple of 8 bigger than zero.
// Length must be a multiple of 8 bigger than zero.
if (aLength == 0 || aLength % 8) {
mEarlyRv = NS_ERROR_DOM_DATA_ERR;
mEarlyRv = NS_ERROR_DOM_OPERATION_ERR;
return;
}
@ -2926,7 +2923,7 @@ public:
RootedDictionary<EcdhKeyDeriveParams> params(aCx);
mEarlyRv = Coerce(aCx, params, aAlgorithm);
if (NS_FAILED(mEarlyRv)) {
mEarlyRv = NS_ERROR_DOM_SYNTAX_ERR;
/* The returned code is installed by Coerce function. */
return;
}
@ -3573,6 +3570,7 @@ WebCryptoTask::CreateUnwrapKeyTask(nsIGlobalObject* aGlobal,
if (keyAlgName.EqualsASCII(WEBCRYPTO_ALG_AES_CBC) ||
keyAlgName.EqualsASCII(WEBCRYPTO_ALG_AES_CTR) ||
keyAlgName.EqualsASCII(WEBCRYPTO_ALG_AES_GCM) ||
keyAlgName.EqualsASCII(WEBCRYPTO_ALG_AES_KW) ||
keyAlgName.EqualsASCII(WEBCRYPTO_ALG_HKDF) ||
keyAlgName.EqualsASCII(WEBCRYPTO_ALG_HMAC)) {
importTask = new ImportSymmetricKeyTask(aGlobal, aCx, aFormat,