Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 2ca10927173d23111c5d44e97fab308f397e49b8
https://github.com/WebKit/WebKit/commit/2ca10927173d23111c5d44e97fab308f397e49b8
Author: Nitin Mahendru <[email protected]>
Date: 2024-04-18 (Thu, 18 Apr 2024)
Changed paths:
M Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp
M Source/WebCore/Modules/webauthn/fido/Pin.cpp
M Source/WebCore/Modules/webauthn/fido/Pin.h
M Source/WebCore/PAL/pal/PALSwift/CryptoKitShim.swift
M Source/WebCore/PAL/pal/PALSwift/UnsafeOverlays.swift
M Source/WebCore/PAL/pal/crypto/CryptoDigest.h
M Source/WebCore/PAL/pal/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp
M Source/WebCore/PAL/pal/crypto/gcrypt/CryptoDigestGCrypt.cpp
M Source/WebCore/PAL/pal/crypto/openssl/CryptoDigestOpenSSL.cpp
M Source/WebCore/bindings/js/SerializedScriptValue.cpp
M Source/WebCore/crypto/CryptoAlgorithm.cpp
M Source/WebCore/crypto/CryptoAlgorithm.h
M Source/WebCore/crypto/CryptoKey.h
M Source/WebCore/crypto/SubtleCrypto.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCBC.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCBC.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCFB.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCFB.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCTR.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCTR.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESGCM.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESGCM.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESKW.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmAESKW.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmEd25519.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmEd25519.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmHKDF.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmHKDF.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmPBKDF2.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmPBKDF2.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.h
M Source/WebCore/crypto/algorithms/CryptoAlgorithmX25519.cpp
M Source/WebCore/crypto/algorithms/CryptoAlgorithmX25519.h
M Source/WebCore/crypto/cocoa/CryptoAlgorithmAESGCMMac.cpp
M Source/WebCore/crypto/cocoa/CryptoAlgorithmAESKWMac.cpp
M Source/WebCore/crypto/cocoa/CryptoAlgorithmECDHMac.cpp
M Source/WebCore/crypto/cocoa/CryptoAlgorithmECDSAMac.cpp
M Source/WebCore/crypto/cocoa/CryptoKeyECMac.cpp
M Source/WebCore/crypto/gcrypt/CryptoAlgorithmAESGCMGCrypt.cpp
M Source/WebCore/crypto/gcrypt/CryptoAlgorithmAESKWGCrypt.cpp
M Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDHGCrypt.cpp
M Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp
M Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp
M Source/WebCore/crypto/keys/CryptoKeyAES.cpp
M Source/WebCore/crypto/keys/CryptoKeyAES.h
M Source/WebCore/crypto/keys/CryptoKeyEC.cpp
M Source/WebCore/crypto/keys/CryptoKeyEC.h
M Source/WebCore/crypto/openssl/CryptoAlgorithmAESGCMOpenSSL.cpp
M Source/WebCore/crypto/openssl/CryptoAlgorithmAESKWOpenSSL.cpp
M Source/WebCore/crypto/openssl/CryptoAlgorithmECDHOpenSSL.cpp
M Source/WebCore/crypto/openssl/CryptoAlgorithmECDSAOpenSSL.cpp
M Source/WebCore/crypto/openssl/CryptoKeyECOpenSSL.cpp
M Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp
M Tools/TestWebKitAPI/Tests/WebCore/CtapPinTest.cpp
Log Message:
-----------
Adding CryptoKit for ECDSA/ECDH
https://bugs.webkit.org/show_bug.cgi?id=272162
rdar://125914120
Reviewed by Pascoe and Alex Christensen.
With this change:
1. When CryptoKit is enabled, Swift Objects of type ECKey will be held in C++
UniqueRef inside CryptokeyEC.h.
2. C++ UniqueRef should be able to clean memory for Swift objects.
3. TestWebKitAPI also links with the swift generated header for CtapPinTestAPI.
4. CryptoKeyEC is fundamentally changed but when CryptoKit is not enabled, it
should behave as it does
before this change.
All layout tests for LayoutTests/crypto have been manually run with
CryptoKitEnabled to test the functionality.
Layout tests in EWS will test this change with CryptoKit off.
Some calls in Pin.cpp and AuthenticatorAttestationResponse.cpp are not part of
the SubtleCrypto interface have not been selectively enabled to use CryptoKit
yet.
They will be enabled once the SubtleCrypto interface is activated and livedOn
for some time.
* Source/WebCore/Modules/webauthn/AuthenticatorAttestationResponse.cpp:
(WebCore::AuthenticatorAttestationResponse::getPublicKey const):
* Source/WebCore/Modules/webauthn/fido/Pin.cpp:
(fido::pin::KeyAgreementResponse::parseFromCOSE):
(fido::pin::TokenRequest::tryCreate):
(fido::pin::SetPinRequest::tryCreate):
* Source/WebCore/Modules/webauthn/fido/Pin.h:
* Source/WebCore/PAL/pal/PALSwift/CryptoKitShim.swift:
(Digest.sha1(_:)):
(Digest.sha256(_:)):
(Digest.sha384(_:)):
(Digest.sha512(_:)):
(Digest.digest(_:hashFunction:)):
(ECRv.errCode):
(ECRv.signature):
(ECRv.keyBytes):
(ECRv.key):
(ECKey.toPub):
(ECKey.importX963Pub(_:curve:)):
(ECKey.exportX963Pub):
(ECKey.importCompressedPub(_:curve:)):
(ECKey.importX963Private(_:curve:)):
(ECKey.exportX963Private):
(ECKey.sign(_:hashFunction:)):
(ECKey.getInternalPrivate):
(ECKey.getInternalPublic):
(ECKey.deriveBits(_:)):
* Source/WebCore/PAL/pal/PALSwift/UnsafeOverlays.swift:
(HashFunction.update(_:)): Deleted.
* Source/WebCore/bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::write):
(WebCore::CloneSerializer::isUsingCryptoKit):
(WebCore::CloneDeserializer::isUsingCryptoKit):
(WebCore::CloneDeserializer::readECKey):
* Source/WebCore/crypto/CryptoAlgorithm.cpp:
(WebCore::CryptoAlgorithm::importKey):
(WebCore::CryptoAlgorithm::exportKey):
* Source/WebCore/crypto/CryptoAlgorithm.h:
* Source/WebCore/crypto/SubtleCrypto.cpp:
(WebCore::SubtleCrypto::deriveKey):
(WebCore::SubtleCrypto::importKey):
(WebCore::SubtleCrypto::exportKey):
(WebCore::SubtleCrypto::wrapKey):
(WebCore::SubtleCrypto::unwrapKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCBC.cpp:
(WebCore::CryptoAlgorithmAESCBC::importKey):
(WebCore::CryptoAlgorithmAESCBC::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCBC.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCFB.cpp:
(WebCore::CryptoAlgorithmAESCFB::importKey):
(WebCore::CryptoAlgorithmAESCFB::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCFB.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCTR.cpp:
(WebCore::CryptoAlgorithmAESCTR::importKey):
(WebCore::CryptoAlgorithmAESCTR::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESCTR.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESGCM.cpp:
(WebCore::CryptoAlgorithmAESGCM::importKey):
(WebCore::CryptoAlgorithmAESGCM::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESGCM.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESKW.cpp:
(WebCore::CryptoAlgorithmAESKW::importKey):
(WebCore::CryptoAlgorithmAESKW::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmAESKW.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.cpp:
(WebCore::CryptoAlgorithmECDH::generateKey):
(WebCore::CryptoAlgorithmECDH::deriveBits):
(WebCore::CryptoAlgorithmECDH::importKey):
(WebCore::CryptoAlgorithmECDH::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmECDH.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.cpp:
(WebCore::CryptoAlgorithmECDSA::sign):
(WebCore::CryptoAlgorithmECDSA::verify):
(WebCore::CryptoAlgorithmECDSA::generateKey):
(WebCore::CryptoAlgorithmECDSA::importKey):
(WebCore::CryptoAlgorithmECDSA::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmECDSA.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmEd25519.cpp:
(WebCore::CryptoAlgorithmEd25519::importKey):
(WebCore::CryptoAlgorithmEd25519::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmEd25519.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmHKDF.cpp:
(WebCore::CryptoAlgorithmHKDF::importKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmHKDF.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.cpp:
(WebCore::CryptoAlgorithmHMAC::importKey):
(WebCore::CryptoAlgorithmHMAC::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmHMAC.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmPBKDF2.cpp:
(WebCore::CryptoAlgorithmPBKDF2::importKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmPBKDF2.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::importKey):
(WebCore::CryptoAlgorithmRSA_OAEP::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.cpp:
(WebCore::CryptoAlgorithmRSA_PSS::importKey):
(WebCore::CryptoAlgorithmRSA_PSS::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_PSS.h:
* Source/WebCore/crypto/algorithms/CryptoAlgorithmX25519.cpp:
(WebCore::CryptoAlgorithmX25519::importKey):
(WebCore::CryptoAlgorithmX25519::exportKey):
* Source/WebCore/crypto/algorithms/CryptoAlgorithmX25519.h:
* Source/WebCore/crypto/cocoa/CryptoAlgorithmECDHMac.cpp:
(WebCore::platformDeriveBitsCC):
(WebCore::platformDeriveBitsCryptoKit):
(WebCore::CryptoAlgorithmECDH::platformDeriveBits):
* Source/WebCore/crypto/cocoa/CryptoAlgorithmECDSAMac.cpp:
(WebCore::toCKHashFunction):
(WebCore::signECDSACryptoKit):
(WebCore::verifyECDSACryptoKit):
(WebCore::signECDSA):
(WebCore::verifyECDSA):
(WebCore::CryptoAlgorithmECDSA::platformSign):
(WebCore::CryptoAlgorithmECDSA::platformVerify):
* Source/WebCore/crypto/cocoa/CryptoKeyECMac.cpp:
(WebCore::CryptoKeyEC::keySizeInBits const):
(WebCore::namedCurveToCryptoKitCurve):
(WebCore::CryptoKeyEC::platformGeneratePair):
(WebCore::CryptoKeyEC::platformImportRaw):
(WebCore::CryptoKeyEC::platformExportRaw const):
(WebCore::CryptoKeyEC::platformImportJWKPublic):
(WebCore::CryptoKeyEC::platformImportJWKPrivate):
(WebCore::CryptoKeyEC::platformAddFieldElements const):
(WebCore::CryptoKeyEC::platformImportSpki):
(WebCore::CryptoKeyEC::platformExportSpki const):
(WebCore::CryptoKeyEC::platformImportPkcs8):
(WebCore::CryptoKeyEC::platformExportPkcs8 const):
(WebCore::CryptoKeyEC::usingCryptoKit const):
(WebCore::CryptoKeyEC::platformKey const):
* Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDHGCrypt.cpp:
(WebCore::CryptoAlgorithmECDH::platformDeriveBits):
* Source/WebCore/crypto/gcrypt/CryptoAlgorithmECDSAGCrypt.cpp:
(WebCore::CryptoAlgorithmECDSA::platformSign):
(WebCore::CryptoAlgorithmECDSA::platformVerify):
* Source/WebCore/crypto/gcrypt/CryptoKeyECGCrypt.cpp:
(WebCore::CryptoKeyEC::platformKey const):
(WebCore::CryptoKeyEC::usingCryptoKit const):
(WebCore::CryptoKeyEC::platformGeneratePair):
(WebCore::CryptoKeyEC::platformImportRaw):
(WebCore::CryptoKeyEC::platformImportJWKPublic):
(WebCore::CryptoKeyEC::platformImportJWKPrivate):
(WebCore::CryptoKeyEC::platformImportSpki):
(WebCore::CryptoKeyEC::platformImportPkcs8):
(WebCore::CryptoKeyEC::platformExportRaw const):
(WebCore::CryptoKeyEC::platformAddFieldElements const):
(WebCore::CryptoKeyEC::platformExportSpki const):
(WebCore::CryptoKeyEC::platformExportPkcs8 const):
* Source/WebCore/crypto/keys/CryptoKeyAES.cpp:
(WebCore::CryptoKeyAES::importRaw):
(WebCore::CryptoKeyAES::importJwk):
* Source/WebCore/crypto/keys/CryptoKeyAES.h:
* Source/WebCore/crypto/keys/CryptoKeyEC.cpp:
(WebCore::CryptoKeyEC::toCCPlatformECKeyContainer):
(WebCore::CryptoKeyEC::toCKPlatformECKeyContainer):
(WebCore::CryptoKeyEC::generatePair):
(WebCore::CryptoKeyEC::importRaw):
(WebCore::CryptoKeyEC::importJwk):
(WebCore::CryptoKeyEC::importSpki):
(WebCore::CryptoKeyEC::importPkcs8):
(WebCore::CryptoKeyEC::exportRaw const):
(WebCore::CryptoKeyEC::exportJwk const):
(WebCore::CryptoKeyEC::exportSpki const):
(WebCore::CryptoKeyEC::exportPkcs8 const):
* Source/WebCore/crypto/keys/CryptoKeyEC.h:
(WebCore::CCECCryptorRefDeleter::operator() const):
* Source/WebCore/crypto/openssl/CryptoAlgorithmECDHOpenSSL.cpp:
(WebCore::CryptoAlgorithmECDH::platformDeriveBits):
* Source/WebCore/crypto/openssl/CryptoAlgorithmECDSAOpenSSL.cpp:
(WebCore::CryptoAlgorithmECDSA::platformSign):
(WebCore::CryptoAlgorithmECDSA::platformVerify):
* Source/WebCore/crypto/openssl/CryptoKeyECOpenSSL.cpp:
(WebCore::CryptoKeyEC::usingCryptoKit const):
(WebCore::CryptoKeyEC::platformKey const):
(WebCore::CryptoKeyEC::platformGeneratePair):
(WebCore::CryptoKeyEC::platformImportRaw):
(WebCore::CryptoKeyEC::platformImportJWKPublic):
(WebCore::CryptoKeyEC::platformImportJWKPrivate):
(WebCore::CryptoKeyEC::platformImportSpki):
(WebCore::CryptoKeyEC::platformImportPkcs8):
(WebCore::CryptoKeyEC::platformExportRaw const):
(WebCore::CryptoKeyEC::platformAddFieldElements const):
(WebCore::CryptoKeyEC::platformExportSpki const):
(WebCore::CryptoKeyEC::platformExportPkcs8 const):
* Source/WebKit/UIProcess/WebAuthentication/fido/CtapAuthenticator.cpp:
* Tools/TestWebKitAPI/Tests/WebCore/CtapPinTest.cpp:
(TestWebKitAPI::TEST(CtapPinTest, TestSetPinRequest)):
(TestWebKitAPI::TEST(CtapPinTest, TestKeyAgreementResponse)):
(TestWebKitAPI::TEST(CtapPinTest, TestTokenRequest)):
Canonical link: https://commits.webkit.org/277711@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes