Changeset 158363 in webkit


Ignore:
Timestamp:
Oct 31, 2013 10:13:49 AM (10 years ago)
Author:
ap@apple.com
Message:

Add a crypto algorithm abstraction
https://bugs.webkit.org/show_bug.cgi?id=123474

Reviewed by Sam Weinig.

This works slightly differently than WebCrypto implies. We have separate classes
for algorithm and its parameters, while WebCrypto puts them in the same dictionary.

  • WebCore.xcodeproj/project.pbxproj: Added new files.
  • crypto/CryptoAlgorithm.cpp: Added. As most algorithms don't implement most

operations, default implementations just raise an exception.

  • crypto/CryptoAlgorithm.h: Added.
  • crypto/CryptoAlgorithmParameters.h: Added. Base class for numerous future parameter

dictionaries, such as HmacParams or HmacKeyParams.

  • crypto/CryptoAlgorithmRegistry.cpp: Added.
  • crypto/CryptoAlgorithmRegistry.h: Added.

The registry decouples universal bindings code from algorithms that may or may not
be implemented on each platform.

  • crypto/mac: Added.
  • crypto/mac/CryptoAlgorithmRegistryMac.cpp: Added.

(WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Algorithms implemented
on Mac will be registered by this function.

Location:
trunk/Source/WebCore
Files:
7 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r158362 r158363  
     12013-10-31  Alexey Proskuryakov  <ap@apple.com>
     2
     3        Add a crypto algorithm abstraction
     4        https://bugs.webkit.org/show_bug.cgi?id=123474
     5
     6        Reviewed by Sam Weinig.
     7
     8        This works slightly differently than WebCrypto implies. We have separate classes
     9        for algorithm and its parameters, while WebCrypto puts them in the same dictionary.
     10
     11        * WebCore.xcodeproj/project.pbxproj: Added new files.
     12
     13        * crypto/CryptoAlgorithm.cpp: Added. As most algorithms don't implement most
     14        operations, default implementations just raise an exception.
     15        * crypto/CryptoAlgorithm.h: Added.
     16
     17        * crypto/CryptoAlgorithmParameters.h: Added. Base class for numerous future parameter
     18        dictionaries, such as HmacParams or HmacKeyParams.
     19
     20        * crypto/CryptoAlgorithmRegistry.cpp: Added.
     21        * crypto/CryptoAlgorithmRegistry.h: Added.
     22        The registry decouples universal bindings code from algorithms that may or may not
     23        be implemented on each platform.
     24
     25        * crypto/mac: Added.
     26        * crypto/mac/CryptoAlgorithmRegistryMac.cpp: Added.
     27        (WebCore::CryptoAlgorithmRegistry::platformRegisterAlgorithms): Algorithms implemented
     28        on Mac will be registered by this function.
     29
    1302013-10-31  Alexey Proskuryakov  <ap@apple.com>
    231
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r158317 r158363  
    55535553                E16A84F914C85CCC002977DF /* CSSBorderImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E16A84F714C85CCC002977DF /* CSSBorderImage.cpp */; };
    55545554                E16A84FA14C85CCC002977DF /* CSSBorderImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E16A84F814C85CCC002977DF /* CSSBorderImage.h */; };
     5555                E172AF6D180F24C600FBADB9 /* CryptoAlgorithm.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E172AF6B180F24C600FBADB9 /* CryptoAlgorithm.cpp */; };
     5556                E172AF6E180F24C600FBADB9 /* CryptoAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = E172AF6C180F24C600FBADB9 /* CryptoAlgorithm.h */; };
     5557                E172AF74180F352500FBADB9 /* CryptoAlgorithmRegistryMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E172AF72180F352500FBADB9 /* CryptoAlgorithmRegistryMac.cpp */; };
    55555558                E172AF8F1811BC3700FBADB9 /* JSDOMPromise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E172AF8D1811BC3700FBADB9 /* JSDOMPromise.cpp */; };
    55565559                E172AF901811BC3700FBADB9 /* JSDOMPromise.h in Headers */ = {isa = PBXBuildFile; fileRef = E172AF8E1811BC3700FBADB9 /* JSDOMPromise.h */; };
     
    56195622                E1C4DE690EA75C1E0023CCD6 /* ActiveDOMObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C4DE680EA75C1E0023CCD6 /* ActiveDOMObject.h */; settings = {ATTRIBUTES = (Private, ); }; };
    56205623                E1C4DE6E0EA75C650023CCD6 /* ActiveDOMObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C4DE6D0EA75C650023CCD6 /* ActiveDOMObject.cpp */; };
     5624                E1C657271816F9FE00256CDD /* CryptoAlgorithmParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C657261816F9FE00256CDD /* CryptoAlgorithmParameters.h */; };
    56215625                E1C657251816E69D00256CDD /* CryptoAlgorithmIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C657241816E69D00256CDD /* CryptoAlgorithmIdentifier.h */; };
    56225626                E1C8BE5D0E8BD15A0064CB7D /* JSWorker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1C8BE5C0E8BD15A0064CB7D /* JSWorker.cpp */; };
     
    56415645                E1FF8F65180745D800132674 /* JSSubtleCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FF8F63180745D800132674 /* JSSubtleCrypto.h */; };
    56425646                E1FF8F681807460800132674 /* JSSubtleCryptoCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1FF8F661807460800132674 /* JSSubtleCryptoCustom.cpp */; };
     5647                E1FF8F6C180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E1FF8F6A180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp */; };
     5648                E1FF8F6D180DB5BE00132674 /* CryptoAlgorithmRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = E1FF8F6B180DB5BE00132674 /* CryptoAlgorithmRegistry.h */; };
    56435649                E401C27517CE53EC00C41A35 /* ElementIteratorAssertions.h in Headers */ = {isa = PBXBuildFile; fileRef = E401C27417CE53EC00C41A35 /* ElementIteratorAssertions.h */; };
    56445650                E4295FA412B0614E00D1ACE0 /* ResourceLoadPriority.h in Headers */ = {isa = PBXBuildFile; fileRef = E4295FA312B0614E00D1ACE0 /* ResourceLoadPriority.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    1255112557                E16A84F714C85CCC002977DF /* CSSBorderImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSBorderImage.cpp; sourceTree = "<group>"; };
    1255212558                E16A84F814C85CCC002977DF /* CSSBorderImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSBorderImage.h; sourceTree = "<group>"; };
     12559                E172AF6B180F24C600FBADB9 /* CryptoAlgorithm.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithm.cpp; sourceTree = "<group>"; };
     12560                E172AF6C180F24C600FBADB9 /* CryptoAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithm.h; sourceTree = "<group>"; };
     12561                E172AF72180F352500FBADB9 /* CryptoAlgorithmRegistryMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CryptoAlgorithmRegistryMac.cpp; path = mac/CryptoAlgorithmRegistryMac.cpp; sourceTree = "<group>"; };
    1255312562                E172AF8D1811BC3700FBADB9 /* JSDOMPromise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMPromise.cpp; sourceTree = "<group>"; };
    1255412563                E172AF8E1811BC3700FBADB9 /* JSDOMPromise.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSDOMPromise.h; sourceTree = "<group>"; };
     
    1262612635                E1C4DE680EA75C1E0023CCD6 /* ActiveDOMObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActiveDOMObject.h; sourceTree = "<group>"; };
    1262712636                E1C4DE6D0EA75C650023CCD6 /* ActiveDOMObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ActiveDOMObject.cpp; sourceTree = "<group>"; };
     12637                E1C657261816F9FE00256CDD /* CryptoAlgorithmParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmParameters.h; sourceTree = "<group>"; };
    1262812638                E1C657241816E69D00256CDD /* CryptoAlgorithmIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmIdentifier.h; sourceTree = "<group>"; };
    1262912639                E1C6CFC21746D293007B87A1 /* DOMWindowConstructors.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = DOMWindowConstructors.idl; sourceTree = "<group>"; };
     
    1265012660                E1FF8F63180745D800132674 /* JSSubtleCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSubtleCrypto.h; sourceTree = "<group>"; };
    1265112661                E1FF8F661807460800132674 /* JSSubtleCryptoCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSSubtleCryptoCustom.cpp; sourceTree = "<group>"; };
     12662                E1FF8F6A180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRegistry.cpp; sourceTree = "<group>"; };
     12663                E1FF8F6B180DB5BE00132674 /* CryptoAlgorithmRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRegistry.h; sourceTree = "<group>"; };
    1265212664                E401C27417CE53EC00C41A35 /* ElementIteratorAssertions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElementIteratorAssertions.h; sourceTree = "<group>"; };
    1265312665                E406F3FB1198307D009D59D6 /* ColorData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ColorData.cpp; sourceTree = "<group>"; };
     
    2010720119                        sourceTree = "<group>";
    2010820120                };
     20121                E172AF71180F343400FBADB9 /* mac */ = {
     20122                        isa = PBXGroup;
     20123                        children = (
     20124                                E172AF72180F352500FBADB9 /* CryptoAlgorithmRegistryMac.cpp */,
     20125                        );
     20126                        name = mac;
     20127                        sourceTree = "<group>";
     20128                };
    2010920129                E1C8BE4B0E8BD0D10064CB7D /* Threads */ = {
    2011020130                        isa = PBXGroup;
     
    2021920239                        isa = PBXGroup;
    2022020240                        children = (
     20241                                E172AF71180F343400FBADB9 /* mac */,
     20242                                E172AF6B180F24C600FBADB9 /* CryptoAlgorithm.cpp */,
     20243                                E172AF6C180F24C600FBADB9 /* CryptoAlgorithm.h */,
    2022120244                                E157A8EA181851AC009F821D /* CryptoAlgorithmDescriptionBuilder.cpp */,
    2022220245                                E157A8EB181851AC009F821D /* CryptoAlgorithmDescriptionBuilder.h */,
    2022320246                                E1C657241816E69D00256CDD /* CryptoAlgorithmIdentifier.h */,
     20247                                E1C657261816F9FE00256CDD /* CryptoAlgorithmParameters.h */,
     20248                                E1FF8F6A180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp */,
     20249                                E1FF8F6B180DB5BE00132674 /* CryptoAlgorithmRegistry.h */,
    2022420250                                E157A8DC18172C2C009F821D /* CryptoKey.idl */,
    2022520251                                E157A8E218173A3A009F821D /* CryptoKey.cpp */,
     
    2166721693                                FD315FFC12B0267600C1A359 /* AudioBufferSourceNode.h in Headers */,
    2166821694                                FD31607C12B026F700C1A359 /* AudioBus.h in Headers */,
     21695                                E1FF8F6D180DB5BE00132674 /* CryptoAlgorithmRegistry.h in Headers */,
    2166921696                                07C59B5E17F4B208000FBCBB /* JSAudioStreamTrack.h in Headers */,
    2167021697                                FD31607E12B026F700C1A359 /* AudioChannel.h in Headers */,
     
    2268322710                                D359D78A129CA2710006E5D2 /* HTMLDetailsElement.h in Headers */,
    2268422711                                A8EA79FA0A1916DF00A8EF5F /* HTMLDirectoryElement.h in Headers */,
     22712                                E1C657271816F9FE00256CDD /* CryptoAlgorithmParameters.h in Headers */,
    2268522713                                A8EA7CB70A192B9C00A8EF5F /* HTMLDivElement.h in Headers */,
    2268622714                                A8EA79F70A1916DF00A8EF5F /* HTMLDListElement.h in Headers */,
     
    2306723095                                1AE2AA290A1CDAB400B42B25 /* JSHTMLFontElement.h in Headers */,
    2306823096                                9BF9A8811648DD2F001C6B23 /* JSHTMLFormControlsCollection.h in Headers */,
     23097                                E172AF6E180F24C600FBADB9 /* CryptoAlgorithm.h in Headers */,
    2306923098                                A8D064FC0A23C0CC005E7203 /* JSHTMLFormElement.h in Headers */,
    2307023099                                BC4918C70BFEA050009D6316 /* JSHTMLFrameElement.h in Headers */,
     
    2610826137                                418F88040FF957AE0080F045 /* JSAbstractWorker.cpp in Sources */,
    2610926138                                073BE34F17D18183002BD431 /* RTCIceCandidateDescriptor.cpp in Sources */,
     26139                                E172AF6D180F24C600FBADB9 /* CryptoAlgorithm.cpp in Sources */,
    2611026140                                FDA15EC912B03F50003A583A /* JSAnalyserNode.cpp in Sources */,
    2611126141                                65DF31DA09D1C123000BE325 /* JSAttr.cpp in Sources */,
     
    2721627246                                93C4A4161629DF5A00C3EB6E /* ScrollingTreeScrollingNodeMac.mm in Sources */,
    2721727247                                0FB8890B167D2FA10010CDA5 /* ScrollingTreeStickyNode.mm in Sources */,
     27248                                E172AF74180F352500FBADB9 /* CryptoAlgorithmRegistryMac.cpp in Sources */,
    2721827249                                BC2441C40E8B65D00055320F /* ScrollView.cpp in Sources */,
    2721927250                                9353676B09AED88B00D35CD6 /* ScrollViewMac.mm in Sources */,
     
    2758227613                                B2C3DA3F0D006C1D00EF6F26 /* TextCodecUserDefined.cpp in Sources */,
    2758327614                                B2C3DA410D006C1D00EF6F26 /* TextCodecUTF16.cpp in Sources */,
     27615                                E1FF8F6C180DB5BE00132674 /* CryptoAlgorithmRegistry.cpp in Sources */,
    2758427616                                9343CB8112F25E510033C5EE /* TextCodecUTF8.cpp in Sources */,
    2758527617                                142B97C913138943008BEF4B /* TextControlInnerElements.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.