[WebCrypto] Crypto operations should copy their parameters before hoping to another...
authorjiewen_tan@apple.com <jiewen_tan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jul 2018 23:06:12 +0000 (23:06 +0000)
committerjiewen_tan@apple.com <jiewen_tan@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 17 Jul 2018 23:06:12 +0000 (23:06 +0000)
commit505ec71b74786325f6962111eb50cfea3739a2c7
treeb112023838ecedba25e306522df0e8f9210a18fc
parent92b984b359997d6457021ab2693e1c08285cef68
[WebCrypto] Crypto operations should copy their parameters before hoping to another thread
https://bugs.webkit.org/show_bug.cgi?id=187501
<rdar://problem/41438160>

Reviewed by Youenn Fablet.

Source/WebCore:

This patch aims at making all captured variables in all crypto lambdas that need to be passed
to a worker thread thread safe, which includes:
1) changing ref counted objects to thread safe ref counted object.
2) adding isolatedCopy methods to non ref counted classes, so they can be called by CrossThreadCopy().

In addition to above changes, this patch also does the following things:
1) change the name CryptoAlgorithm::dispatchOperation => CryptoAlgorithm::dispatchOperationInWorkQueue
to make it clear that lambdas will be passed to a secondary thread.
2) make CryptoAlgorithmParameters as const parameters for all methods.
3) add null checks on BufferSource.length() and .data().

Tests: crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html
       http/wpt/crypto/aes-cbc-crash.any.html
       http/wpt/crypto/aes-cbc-crash.any.worker.html
       http/wpt/crypto/aes-ctr-crash.any.html
       http/wpt/crypto/aes-ctr-crash.any.worker.html
       http/wpt/crypto/aes-gcm-crash.any.html
       http/wpt/crypto/aes-gcm-crash.any.worker.html
       http/wpt/crypto/derive-hmac-key-crash.any.html
       http/wpt/crypto/derive-hmac-key-crash.any.worker.html
       http/wpt/crypto/ecdsa-crash.any.html
       http/wpt/crypto/ecdsa-crash.any.worker.html
       http/wpt/crypto/hkdf-crash.any.html
       http/wpt/crypto/hkdf-crash.any.worker.html
       http/wpt/crypto/pbkdf2-crash.any.html
       http/wpt/crypto/pbkdf2-crash.any.worker.html
       http/wpt/crypto/rsa-oaep-crash.any.html
       http/wpt/crypto/rsa-oaep-crash.any.worker.html
       http/wpt/crypto/rsa-pss-crash.any.html
       http/wpt/crypto/rsa-pss-crash.any.worker.html
       http/wpt/crypto/unwrap-ec-key-crash.any.html
       http/wpt/crypto/unwrap-ec-key-crash.any.worker.html
       http/wpt/crypto/unwrap-rsa-key-crash.any.html
       http/wpt/crypto/unwrap-rsa-key-crash.any.worker.html

* bindings/js/BufferSource.h:
(WebCore::BufferSource::data const):
(WebCore::BufferSource::length const):
* crypto/CryptoAlgorithm.cpp:
(WebCore::CryptoAlgorithm::encrypt):
(WebCore::CryptoAlgorithm::decrypt):
(WebCore::CryptoAlgorithm::sign):
(WebCore::CryptoAlgorithm::verify):
(WebCore::CryptoAlgorithm::deriveBits):
(WebCore::CryptoAlgorithm::importKey):
(WebCore::dispatchAlgorithmOperation):
(WebCore::CryptoAlgorithm::dispatchOperationInWorkQueue):
(WebCore::CryptoAlgorithm::dispatchOperation): Deleted.
* crypto/CryptoAlgorithm.h:
* crypto/SubtleCrypto.cpp:
(WebCore::crossThreadCopyImportParams):
(WebCore::SubtleCrypto::encrypt):
(WebCore::SubtleCrypto::decrypt):
(WebCore::SubtleCrypto::sign):
(WebCore::SubtleCrypto::verify):
(WebCore::SubtleCrypto::deriveKey):
(WebCore::SubtleCrypto::deriveBits):
(WebCore::SubtleCrypto::importKey):
(WebCore::SubtleCrypto::wrapKey):
(WebCore::SubtleCrypto::unwrapKey):
* crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:
(WebCore::CryptoAlgorithmAES_CBC::encrypt):
(WebCore::CryptoAlgorithmAES_CBC::decrypt):
(WebCore::CryptoAlgorithmAES_CBC::importKey):
* crypto/algorithms/CryptoAlgorithmAES_CBC.h:
* crypto/algorithms/CryptoAlgorithmAES_CFB.cpp:
(WebCore::CryptoAlgorithmAES_CFB::encrypt):
(WebCore::CryptoAlgorithmAES_CFB::decrypt):
(WebCore::CryptoAlgorithmAES_CFB::importKey):
* crypto/algorithms/CryptoAlgorithmAES_CFB.h:
* crypto/algorithms/CryptoAlgorithmAES_CTR.cpp:
(WebCore::parametersAreValid):
(WebCore::CryptoAlgorithmAES_CTR::encrypt):
(WebCore::CryptoAlgorithmAES_CTR::decrypt):
(WebCore::CryptoAlgorithmAES_CTR::importKey):
* crypto/algorithms/CryptoAlgorithmAES_CTR.h:
* crypto/algorithms/CryptoAlgorithmAES_GCM.cpp:
(WebCore::CryptoAlgorithmAES_GCM::encrypt):
(WebCore::CryptoAlgorithmAES_GCM::decrypt):
(WebCore::CryptoAlgorithmAES_GCM::importKey):
* crypto/algorithms/CryptoAlgorithmAES_GCM.h:
* crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
(WebCore::CryptoAlgorithmAES_KW::importKey):
* crypto/algorithms/CryptoAlgorithmAES_KW.h:
* crypto/algorithms/CryptoAlgorithmECDH.cpp:
(WebCore::CryptoAlgorithmECDH::deriveBits):
(WebCore::CryptoAlgorithmECDH::importKey):
* crypto/algorithms/CryptoAlgorithmECDH.h:
* crypto/algorithms/CryptoAlgorithmECDSA.cpp:
(WebCore::CryptoAlgorithmECDSA::sign):
(WebCore::CryptoAlgorithmECDSA::verify):
(WebCore::CryptoAlgorithmECDSA::importKey):
* crypto/algorithms/CryptoAlgorithmECDSA.h:
* crypto/algorithms/CryptoAlgorithmHKDF.cpp:
(WebCore::CryptoAlgorithmHKDF::deriveBits):
(WebCore::CryptoAlgorithmHKDF::importKey):
* crypto/algorithms/CryptoAlgorithmHKDF.h:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
(WebCore::CryptoAlgorithmHMAC::sign):
(WebCore::CryptoAlgorithmHMAC::verify):
(WebCore::CryptoAlgorithmHMAC::importKey):
* crypto/algorithms/CryptoAlgorithmHMAC.h:
* crypto/algorithms/CryptoAlgorithmPBKDF2.cpp:
(WebCore::CryptoAlgorithmPBKDF2::deriveBits):
(WebCore::CryptoAlgorithmPBKDF2::importKey):
* crypto/algorithms/CryptoAlgorithmPBKDF2.h:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::encrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::decrypt):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::sign):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::verify):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::encrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::decrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::importKey):
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
* crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp:
(WebCore::CryptoAlgorithmRSA_PSS::sign):
(WebCore::CryptoAlgorithmRSA_PSS::verify):
(WebCore::CryptoAlgorithmRSA_PSS::importKey):
* crypto/algorithms/CryptoAlgorithmRSA_PSS.h:
* crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp:
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
* crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp:
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
* crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp:
(WebCore::CryptoAlgorithmAES_CTR::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):
* crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp:
(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
* crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp:
(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):
* crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp:
(WebCore::CryptoAlgorithmPBKDF2::platformDeriveBits):
* crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):
* crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp:
(WebCore::CryptoAlgorithmRSA_PSS::platformSign):
(WebCore::CryptoAlgorithmRSA_PSS::platformVerify):
* crypto/mac/CryptoAlgorithmAES_CBCMac.cpp:
(WebCore::CryptoAlgorithmAES_CBC::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CBC::platformDecrypt):
* crypto/mac/CryptoAlgorithmAES_CFBMac.cpp:
(WebCore::CryptoAlgorithmAES_CFB::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CFB::platformDecrypt):
* crypto/mac/CryptoAlgorithmAES_CTRMac.cpp:
(WebCore::CryptoAlgorithmAES_CTR::platformEncrypt):
(WebCore::CryptoAlgorithmAES_CTR::platformDecrypt):
* crypto/mac/CryptoAlgorithmAES_GCMMac.cpp:
(WebCore::CryptoAlgorithmAES_GCM::platformEncrypt):
(WebCore::CryptoAlgorithmAES_GCM::platformDecrypt):
* crypto/mac/CryptoAlgorithmHKDFMac.cpp:
(WebCore::CryptoAlgorithmHKDF::platformDeriveBits):
* crypto/mac/CryptoAlgorithmPBKDF2Mac.cpp:
(WebCore::CryptoAlgorithmPBKDF2::platformDeriveBits):
* crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::platformEncrypt):
(WebCore::CryptoAlgorithmRSA_OAEP::platformDecrypt):
* crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp:
(WebCore::CryptoAlgorithmRSA_PSS::platformSign):
(WebCore::CryptoAlgorithmRSA_PSS::platformVerify):
* crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h:
* crypto/parameters/CryptoAlgorithmAesCtrParams.h:
* crypto/parameters/CryptoAlgorithmAesGcmParams.h:
* crypto/parameters/CryptoAlgorithmEcKeyParams.h:
* crypto/parameters/CryptoAlgorithmEcdsaParams.h:
* crypto/parameters/CryptoAlgorithmHkdfParams.h:
* crypto/parameters/CryptoAlgorithmHmacKeyParams.h:
* crypto/parameters/CryptoAlgorithmPbkdf2Params.h:
* crypto/parameters/CryptoAlgorithmRsaHashedImportParams.h:
* crypto/parameters/CryptoAlgorithmRsaOaepParams.h:
* crypto/parameters/CryptoAlgorithmRsaPssParams.h:

LayoutTests:

crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html is an exception of this series of tests as
it only aims to test the correct behavoir of suggested algorithms. This patch aslo does some test
gardening.

* TestExpectations:
* crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key-expected.txt: Added.
* crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html: Added.
* http/wpt/crypto/aes-cbc-crash.any-expected.txt: Added.
* http/wpt/crypto/aes-cbc-crash.any.html: Added.
* http/wpt/crypto/aes-cbc-crash.any.js: Added.
* http/wpt/crypto/aes-cbc-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/aes-cbc-crash.any.worker.html: Added.
* http/wpt/crypto/aes-ctr-crash.any-expected.txt: Added.
* http/wpt/crypto/aes-ctr-crash.any.html: Added.
* http/wpt/crypto/aes-ctr-crash.any.js: Added.
* http/wpt/crypto/aes-ctr-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/aes-ctr-crash.any.worker.html: Added.
* http/wpt/crypto/aes-gcm-crash.any-expected.txt: Added.
* http/wpt/crypto/aes-gcm-crash.any.html: Added.
* http/wpt/crypto/aes-gcm-crash.any.js: Added.
* http/wpt/crypto/aes-gcm-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/aes-gcm-crash.any.worker.html: Added.
* http/wpt/crypto/derive-hmac-key-crash.any-expected.txt: Added.
* http/wpt/crypto/derive-hmac-key-crash.any.html: Added.
* http/wpt/crypto/derive-hmac-key-crash.any.js: Added.
* http/wpt/crypto/derive-hmac-key-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/derive-hmac-key-crash.any.worker.html: Added.
* http/wpt/crypto/ecdsa-crash.any-expected.txt: Added.
* http/wpt/crypto/ecdsa-crash.any.html: Added.
* http/wpt/crypto/ecdsa-crash.any.js: Added.
* http/wpt/crypto/ecdsa-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/ecdsa-crash.any.worker.html: Added.
* http/wpt/crypto/hkdf-crash.any-expected.txt: Added.
* http/wpt/crypto/hkdf-crash.any.html: Added.
* http/wpt/crypto/hkdf-crash.any.js: Added.
* http/wpt/crypto/hkdf-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/hkdf-crash.any.worker.html: Added.
* http/wpt/crypto/pbkdf2-crash.any-expected.txt: Added.
* http/wpt/crypto/pbkdf2-crash.any.html: Added.
* http/wpt/crypto/pbkdf2-crash.any.js: Added.
* http/wpt/crypto/pbkdf2-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/pbkdf2-crash.any.worker.html: Added.
* http/wpt/crypto/resources/common.js: Added.
* http/wpt/crypto/rsa-oaep-crash.any-expected.txt: Added.
* http/wpt/crypto/rsa-oaep-crash.any.html: Added.
* http/wpt/crypto/rsa-oaep-crash.any.js: Added.
* http/wpt/crypto/rsa-oaep-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/rsa-oaep-crash.any.worker.html: Added.
* http/wpt/crypto/rsa-pss-crash.any-expected.txt: Added.
* http/wpt/crypto/rsa-pss-crash.any.html: Added.
* http/wpt/crypto/rsa-pss-crash.any.js: Added.
* http/wpt/crypto/rsa-pss-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/rsa-pss-crash.any.worker.html: Added.
* http/wpt/crypto/unwrap-ec-key-crash.any-expected.txt: Added.
* http/wpt/crypto/unwrap-ec-key-crash.any.html: Added.
* http/wpt/crypto/unwrap-ec-key-crash.any.js: Added.
* http/wpt/crypto/unwrap-ec-key-crash.any.worker-expected.txt: Added.
* http/wpt/crypto/unwrap-ec-key-crash.any.worker.html: Added.
* http/wpt/crypto/unwrap-rsa-key-crash.any-expected.txt: Added.
* http/wpt/crypto/unwrap-rsa-key-crash.any.html: Added.
* http/wpt/crypto/unwrap-rsa-key-crash.any.js: Added.
* http/wpt/crypto/unwrap-rsa-key-crash.any.worker.html: Added.
* http/wpt/crypto/unwrap-rsa-key-crash.any.worker-expected.txt: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@233898 268f45cc-cd09-0410-ab3c-d52691b4dbfc
120 files changed:
LayoutTests/ChangeLog
LayoutTests/TestExpectations
LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key-expected.txt [new file with mode: 0644]
LayoutTests/crypto/subtle/aes-gcm-import-key-unwrap-ec-raw-key.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-cbc-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-cbc-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-cbc-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-cbc-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-cbc-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-ctr-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-ctr-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-ctr-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-ctr-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-ctr-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-gcm-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-gcm-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-gcm-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-gcm-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/aes-gcm-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/derive-hmac-key-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/derive-hmac-key-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/derive-hmac-key-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/derive-hmac-key-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/derive-hmac-key-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/ecdsa-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/ecdsa-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/ecdsa-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/ecdsa-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/ecdsa-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/hkdf-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/hkdf-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/hkdf-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/hkdf-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/hkdf-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/pbkdf2-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/pbkdf2-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/pbkdf2-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/pbkdf2-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/pbkdf2-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/resources/common.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-oaep-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-oaep-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-oaep-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-oaep-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-oaep-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-pss-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-pss-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-pss-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-pss-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/rsa-pss-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-ec-key-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-ec-key-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-ec-key-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-ec-key-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-ec-key-crash.any.worker.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-rsa-key-crash.any-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-rsa-key-crash.any.html [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-rsa-key-crash.any.js [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-rsa-key-crash.any.worker-expected.txt [new file with mode: 0644]
LayoutTests/http/wpt/crypto/unwrap-rsa-key-crash.any.worker.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/bindings/js/BufferSource.h
Source/WebCore/crypto/CryptoAlgorithm.cpp
Source/WebCore/crypto/CryptoAlgorithm.h
Source/WebCore/crypto/SubtleCrypto.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CFB.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CFB.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CTR.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_GCM.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_KW.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmHKDF.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmHKDF.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmPBKDF2.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmPBKDF2.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp
Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.h
Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CBCGCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CFBGCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_CTRGCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmAES_GCMGCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmHKDFGCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmPBKDF2GCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_OAEPGCrypt.cpp
Source/WebCore/crypto/gcrypt/CryptoAlgorithmRSA_PSSGCrypt.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmAES_CBCMac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmAES_CFBMac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmAES_CTRMac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmAES_GCMMac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmHKDFMac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmPBKDF2Mac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmRSA_OAEPMac.cpp
Source/WebCore/crypto/mac/CryptoAlgorithmRSA_PSSMac.cpp
Source/WebCore/crypto/parameters/CryptoAlgorithmAesCbcCfbParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmAesCtrParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmAesGcmParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmEcKeyParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmEcdsaParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmHkdfParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmHmacKeyParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmPbkdf2Params.h
Source/WebCore/crypto/parameters/CryptoAlgorithmRsaHashedImportParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmRsaOaepParams.h
Source/WebCore/crypto/parameters/CryptoAlgorithmRsaPssParams.h