Index: Source/platform/exported/WebCryptoAlgorithm.cpp |
diff --git a/Source/platform/exported/WebCryptoAlgorithm.cpp b/Source/platform/exported/WebCryptoAlgorithm.cpp |
index 00e22a3b9d78fbc79647359adc24ad11278a2264..bfa58c961e01aee7c62c4ad094998fcb2aed9609 100644 |
--- a/Source/platform/exported/WebCryptoAlgorithm.cpp |
+++ b/Source/platform/exported/WebCryptoAlgorithm.cpp |
@@ -253,6 +253,20 @@ const WebCryptoAlgorithmInfo algorithmIdToInfo[] = { |
WebCryptoAlgorithmInfo::Undefined, // WrapKey |
WebCryptoAlgorithmInfo::Undefined // UnwrapKey |
} |
+ }, { // Index 15 |
+ "PBKDF2", { |
+ WebCryptoAlgorithmInfo::Undefined, // Encrypt |
+ WebCryptoAlgorithmInfo::Undefined, // Decrypt |
+ WebCryptoAlgorithmInfo::Undefined, // Sign |
+ WebCryptoAlgorithmInfo::Undefined, // Verify |
+ WebCryptoAlgorithmInfo::Undefined, // Digest |
+ WebCryptoAlgorithmInfo::Undefined, // GenerateKey |
+ WebCryptoAlgorithmParamsTypeNone, // ImportKey |
+ WebCryptoAlgorithmParamsTypeNone, // GetKeyLength |
+ WebCryptoAlgorithmParamsTypePbkdf2Params, // DeriveBits |
+ WebCryptoAlgorithmInfo::Undefined, // WrapKey |
+ WebCryptoAlgorithmInfo::Undefined // UnwrapKey |
+ } |
}, |
}; |
@@ -274,7 +288,8 @@ static_assert(WebCryptoAlgorithmIdRsaPss == 11, "RSA-PSS id must match"); |
static_assert(WebCryptoAlgorithmIdEcdsa == 12, "ECDSA id must match"); |
static_assert(WebCryptoAlgorithmIdEcdh == 13, "ECDH id must match"); |
static_assert(WebCryptoAlgorithmIdHkdf == 14, "HKDF id must match"); |
-static_assert(WebCryptoAlgorithmIdLast == 14, "last id must match"); |
+static_assert(WebCryptoAlgorithmIdPbkdf2 == 15, "Pbkdf2 id must match"); |
+static_assert(WebCryptoAlgorithmIdLast == 15, "last id must match"); |
static_assert(10 == WebCryptoOperationLast, "the parameter mapping needs to be updated"); |
} // namespace |
@@ -308,7 +323,8 @@ WebCryptoAlgorithm WebCryptoAlgorithm::adoptParamsAndCreate(WebCryptoAlgorithmId |
const WebCryptoAlgorithmInfo* WebCryptoAlgorithm::lookupAlgorithmInfo(WebCryptoAlgorithmId id) |
{ |
- if (id < 0 || id >= WTF_ARRAY_LENGTH(algorithmIdToInfo)) |
+ const unsigned idInt = id; |
+ if (idInt >= WTF_ARRAY_LENGTH(algorithmIdToInfo)) |
return 0; |
return &algorithmIdToInfo[id]; |
} |
@@ -460,6 +476,14 @@ const WebCryptoHkdfParams* WebCryptoAlgorithm::hkdfParams() const |
return 0; |
} |
+const WebCryptoPbkdf2Params* WebCryptoAlgorithm::pbkdf2Params() const |
+{ |
+ ASSERT(!isNull()); |
+ if (paramsType() == WebCryptoAlgorithmParamsTypePbkdf2Params) |
+ return static_cast<WebCryptoPbkdf2Params*>(m_private->params.get()); |
+ return 0; |
+} |
+ |
bool WebCryptoAlgorithm::isHash(WebCryptoAlgorithmId id) |
{ |
switch (id) { |
@@ -479,6 +503,7 @@ bool WebCryptoAlgorithm::isHash(WebCryptoAlgorithmId id) |
case WebCryptoAlgorithmIdEcdsa: |
case WebCryptoAlgorithmIdEcdh: |
case WebCryptoAlgorithmIdHkdf: |
+ case WebCryptoAlgorithmIdPbkdf2: |
break; |
} |
return false; |
@@ -488,6 +513,7 @@ bool WebCryptoAlgorithm::isKdf(WebCryptoAlgorithmId id) |
{ |
switch (id) { |
case WebCryptoAlgorithmIdHkdf: |
+ case WebCryptoAlgorithmIdPbkdf2: |
return true; |
case WebCryptoAlgorithmIdSha1: |
case WebCryptoAlgorithmIdSha256: |