haikuwebkit/LayoutTests/crypto/subtle/ecdh-generate-key-p384-expe...

22 lines
745 B
Plaintext
Raw Permalink Normal View History

[WebCrypto] Implement ECDH GenerateKey operation https://bugs.webkit.org/show_bug.cgi?id=169093 <rdar://problem/23789585> Reviewed by Brent Fulgham. LayoutTests/imported/w3c: * web-platform-tests/WebCryptoAPI/generateKey/failures_ECDH.worker-expected.txt: * web-platform-tests/WebCryptoAPI/generateKey/successes_ECDH.worker-expected.txt: * web-platform-tests/WebCryptoAPI/generateKey/test_failures_ECDH-expected.txt: * web-platform-tests/WebCryptoAPI/generateKey/test_successes_ECDH-expected.txt: Source/WebCore: This patch implements GenerateKey operation of ECDH according to: https://www.w3.org/TR/WebCryptoAPI/#ecdh-operations. Note: Sad that we are not able to support P-521 at this moment due to lack of necessary support in the underlying crypto library. Tests: crypto/subtle/ec-generate-key-malformed-parameters.html crypto/subtle/ecdh-generate-key-extractable.html crypto/subtle/ecdh-generate-key-p256.html crypto/subtle/ecdh-generate-key-p384.html crypto/subtle/ecdh-generate-key-single-usage.html crypto/workers/subtle/ec-generate-key.html * CMakeLists.txt: * DerivedSources.make: * PlatformGTK.cmake: * PlatformMac.cmake: * WebCore.xcodeproj/project.pbxproj: * bindings/js/JSCryptoKeyCustom.cpp: (WebCore::JSCryptoKey::algorithm): * bindings/js/JSSubtleCryptoCustom.cpp: (WebCore::normalizeCryptoAlgorithmParameters): (WebCore::jsSubtleCryptoFunctionGenerateKeyPromise): Add support for ECDH. * bindings/js/SerializedScriptValue.cpp: (WebCore::CloneSerializer::write): Structured clonable will be added later on. * crypto/CommonCryptoUtilities.h: Add SPI for EC. * crypto/CryptoAlgorithmParameters.h: * crypto/CryptoKey.h: * crypto/algorithms/CryptoAlgorithmECDH.cpp: Added. (WebCore::CryptoAlgorithmECDH::create): (WebCore::CryptoAlgorithmECDH::identifier): (WebCore::CryptoAlgorithmECDH::generateKey): * crypto/algorithms/CryptoAlgorithmECDH.h: Added. * crypto/gnutls/CryptoKeyECGnuTLS.cpp: Added. (WebCore::CryptoKeyEC::~CryptoKeyEC): (WebCore::CryptoKeyEC::platformGeneratePair): * crypto/keys/CryptoKeyEC.cpp: Added. (WebCore::CryptoKeyEC::CryptoKeyEC): (WebCore::CryptoKeyEC::generatePair): (WebCore::CryptoKeyEC::buildAlgorithm): (WebCore::CryptoKeyEC::exportData): * crypto/keys/CryptoKeyEC.h: Added. (WebCore::EcKeyAlgorithm::EcKeyAlgorithm): (WebCore::EcKeyAlgorithm::namedCurve): * crypto/mac/CryptoAlgorithmRegistryMac.cpp: (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Add support for ECDH. * crypto/mac/CryptoKeyECMac.cpp: Added. (WebCore::CryptoKeyEC::~CryptoKeyEC): (WebCore::CryptoKeyEC::platformGeneratePair): * crypto/parameters/CryptoAlgorithmEcKeyParams.h: Added. * crypto/parameters/EcKeyParams.idl: Added. LayoutTests: * crypto/subtle/ec-generate-key-malformed-parameters-expected.txt: Added. * crypto/subtle/ec-generate-key-malformed-parameters.html: Added. * crypto/subtle/ecdh-generate-key-extractable-expected.txt: Added. * crypto/subtle/ecdh-generate-key-extractable.html: Added. * crypto/subtle/ecdh-generate-key-p256-expected.txt: Added. * crypto/subtle/ecdh-generate-key-p256.html: Added. * crypto/subtle/ecdh-generate-key-p384-expected.txt: Added. * crypto/subtle/ecdh-generate-key-p384.html: Added. * crypto/subtle/ecdh-generate-key-single-usage-expected.txt: Added. * crypto/subtle/ecdh-generate-key-single-usage.html: Added. * crypto/workers/subtle/ec-generate-key-expected.txt: Added. * crypto/workers/subtle/ec-generate-key.html: Added. * crypto/workers/subtle/resources/ec-generate-key.js: Added. Canonical link: https://commits.webkit.org/186251@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@213489 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2017-03-07 02:56:58 +00:00
Test generating an EC key pair with P-384 using ECDH algorithm.
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
Generating a key pair...
PASS keyPair.toString() is '[object Object]'
PASS keyPair.publicKey.type is 'public'
PASS keyPair.publicKey.extractable is true
PASS keyPair.publicKey.algorithm.name is 'ECDH'
PASS keyPair.publicKey.algorithm.namedCurve is 'P-384'
PASS keyPair.publicKey.usages is [ ]
PASS keyPair.privateKey.type is 'private'
PASS keyPair.privateKey.extractable is false
PASS keyPair.privateKey.algorithm.name is 'ECDH'
PASS keyPair.privateKey.algorithm.namedCurve is 'P-384'
PASS keyPair.privateKey.usages is ['deriveBits', 'deriveKey']
PASS successfullyParsed is true
TEST COMPLETE