Changeset 236976 in webkit


Ignore:
Timestamp:
Oct 9, 2018 12:32:41 PM (6 years ago)
Author:
jiewen_tan@apple.com
Message:

[WebAuthN] Import CTAP HID message and packet structure from Chromium
https://bugs.webkit.org/show_bug.cgi?id=189289
<rdar://problem/44120310>

Reviewed by Brent Fulgham.

Source/WebCore:

This patch imports CTAP HID message and packet structure:
https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#message-and-packet-structure
from Chromium. With this library, WebKit can now turn binaries into messages that CTAP devices could understand.
This patch contains the following Chromium files and modifies them to fit into WebKit:
https://cs.chromium.org/chromium/src/device/fido/fido_constants.cc?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/fido_constants.h?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.cc?l=1&rcl=387f3725de2842e0e6b7175a9b2ed472b0cf781a
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message_unittest.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75

Covered by API tests.

  • Modules/webauthn/fido/FidoConstants.cpp: Added.

(fido::isFidoHidDeviceCommand):

  • Modules/webauthn/fido/FidoConstants.h: Added.
  • Modules/webauthn/fido/FidoHidMessage.cpp: Added.

(fido::FidoHidMessage::create):
(fido::FidoHidMessage::createFromSerializedData):
(fido::FidoHidMessage::messageComplete const):
(fido::FidoHidMessage::getMessagePayload const):
(fido::FidoHidMessage::popNextPacket):
(fido::FidoHidMessage::addContinuationPacket):
(fido::FidoHidMessage::numPackets const):
(fido::FidoHidMessage::FidoHidMessage):

  • Modules/webauthn/fido/FidoHidMessage.h: Added.
  • Modules/webauthn/fido/FidoHidPacket.cpp: Added.

(fido::FidoHidPacket::FidoHidPacket):
(fido::FidoHidInitPacket::createFromSerializedData):
(fido::FidoHidInitPacket::FidoHidInitPacket):
(fido::FidoHidInitPacket::getSerializedData const):
(fido::FidoHidContinuationPacket::createFromSerializedData):
(fido::FidoHidContinuationPacket::FidoHidContinuationPacket):
(fido::FidoHidContinuationPacket::getSerializedData const):

  • Modules/webauthn/fido/FidoHidPacket.h: Added.
  • Modules/webauthn/fido/FidoParsingUtils.cpp: Added.

(fido::getInitPacketData):
(fido::getContinuationPacketData):

  • Modules/webauthn/fido/FidoParsingUtils.h: Added.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp: Added.

(TestWebKitAPI::TEST):

Location:
trunk
Files:
10 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r236974 r236976  
     12018-10-09  Jiewen Tan  <jiewen_tan@apple.com>
     2
     3        [WebAuthN] Import CTAP HID message and packet structure from Chromium
     4        https://bugs.webkit.org/show_bug.cgi?id=189289
     5        <rdar://problem/44120310>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        This patch imports CTAP HID message and packet structure:
     10        https://fidoalliance.org/specs/fido-v2.0-ps-20170927/fido-client-to-authenticator-protocol-v2.0-ps-20170927.html#message-and-packet-structure
     11        from Chromium. With this library, WebKit can now turn binaries into messages that CTAP devices could understand.
     12        This patch contains the following Chromium files and modifies them to fit into WebKit:
     13        https://cs.chromium.org/chromium/src/device/fido/fido_constants.cc?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
     14        https://cs.chromium.org/chromium/src/device/fido/fido_constants.h?l=1&rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
     15        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.cc?l=1&rcl=387f3725de2842e0e6b7175a9b2ed472b0cf781a
     16        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
     17        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
     18        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_packet.h?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
     19        https://cs.chromium.org/chromium/src/device/fido/hid/fido_hid_message_unittest.cc?rcl=1efcfbeaf4e4cedf58716e1982b5702770571a75
     20
     21        Covered by API tests.
     22
     23        * Modules/webauthn/fido/FidoConstants.cpp: Added.
     24        (fido::isFidoHidDeviceCommand):
     25        * Modules/webauthn/fido/FidoConstants.h: Added.
     26        * Modules/webauthn/fido/FidoHidMessage.cpp: Added.
     27        (fido::FidoHidMessage::create):
     28        (fido::FidoHidMessage::createFromSerializedData):
     29        (fido::FidoHidMessage::messageComplete const):
     30        (fido::FidoHidMessage::getMessagePayload const):
     31        (fido::FidoHidMessage::popNextPacket):
     32        (fido::FidoHidMessage::addContinuationPacket):
     33        (fido::FidoHidMessage::numPackets const):
     34        (fido::FidoHidMessage::FidoHidMessage):
     35        * Modules/webauthn/fido/FidoHidMessage.h: Added.
     36        * Modules/webauthn/fido/FidoHidPacket.cpp: Added.
     37        (fido::FidoHidPacket::FidoHidPacket):
     38        (fido::FidoHidInitPacket::createFromSerializedData):
     39        (fido::FidoHidInitPacket::FidoHidInitPacket):
     40        (fido::FidoHidInitPacket::getSerializedData const):
     41        (fido::FidoHidContinuationPacket::createFromSerializedData):
     42        (fido::FidoHidContinuationPacket::FidoHidContinuationPacket):
     43        (fido::FidoHidContinuationPacket::getSerializedData const):
     44        * Modules/webauthn/fido/FidoHidPacket.h: Added.
     45        * Modules/webauthn/fido/FidoParsingUtils.cpp: Added.
     46        (fido::getInitPacketData):
     47        (fido::getContinuationPacketData):
     48        * Modules/webauthn/fido/FidoParsingUtils.h: Added.
     49        * Sources.txt:
     50        * WebCore.xcodeproj/project.pbxproj:
     51
    1522018-10-09  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>
    253
  • trunk/Source/WebCore/Sources.txt

    r236954 r236976  
    255255Modules/webauthn/cbor/CBORValue.cpp
    256256Modules/webauthn/cbor/CBORWriter.cpp
     257Modules/webauthn/fido/FidoConstants.cpp
     258Modules/webauthn/fido/FidoHidMessage.cpp
     259Modules/webauthn/fido/FidoHidPacket.cpp
     260Modules/webauthn/fido/FidoParsingUtils.cpp
    257261
    258262Modules/webdatabase/ChangeVersionWrapper.cpp
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r236964 r236976  
    17661766                573489391DAC6B6E00DC0667 /* CryptoAlgorithmParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 573489381DAC6B6D00DC0667 /* CryptoAlgorithmParameters.h */; };
    17671767                5739E12F1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 5739E12E1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h */; };
     1768                573F5332216806E10045587A /* FidoHidMessage.h in Headers */ = {isa = PBXBuildFile; fileRef = 57BAF28A2167D303008E954E /* FidoHidMessage.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1769                573F533721680D150045587A /* FidoParsingUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 573F533521680D140045587A /* FidoParsingUtils.h */; };
    17681770                574F55E1204F3B23002948C6 /* COSEConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 574F55DC204F3732002948C6 /* COSEConstants.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17691771                5750A9751E68D00000705C4A /* CryptoKeyEC.h in Headers */ = {isa = PBXBuildFile; fileRef = 5750A9731E68D00000705C4A /* CryptoKeyEC.h */; };
     
    17881790                57B5F8091E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B5F8081E5D1A9800F34F90 /* CryptoAlgorithmAesGcmParams.h */; };
    17891791                57B5F8101E5E2A4E00F34F90 /* JSAesGcmParams.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B5F80B1E5D22DA00F34F90 /* JSAesGcmParams.h */; };
     1792                57BAF28C2167D316008E954E /* FidoConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 578A4C0B2167D29600D08F34 /* FidoConstants.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1793                57BAF28E2167D339008E954E /* FidoHidPacket.h in Headers */ = {isa = PBXBuildFile; fileRef = 578A4C0A2167D29600D08F34 /* FidoHidPacket.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17901794                57C7A68C1E56967500C67D71 /* BasicCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C7A68B1E56967500C67D71 /* BasicCredential.h */; settings = {ATTRIBUTES = (Private, ); }; };
    17911795                57C7A69F1E57917800C67D71 /* JSBasicCredential.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C7A69D1E57910D00C67D71 /* JSBasicCredential.h */; };
     
    85638567                5739E12E1DAC7F7800E14383 /* JSCryptoAlgorithmParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSCryptoAlgorithmParameters.h; sourceTree = "<group>"; };
    85648568                5739E1301DAC7FD100E14383 /* JSCryptoAlgorithmParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSCryptoAlgorithmParameters.cpp; sourceTree = "<group>"; };
     8569                573F533521680D140045587A /* FidoParsingUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FidoParsingUtils.h; sourceTree = "<group>"; };
     8570                573F533621680D150045587A /* FidoParsingUtils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FidoParsingUtils.cpp; sourceTree = "<group>"; };
    85658571                574AC7531DAC367D00E9744C /* CryptoAlgorithmParameters.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CryptoAlgorithmParameters.idl; sourceTree = "<group>"; };
    85668572                574D42791D594FF6002CF50E /* GlobalCrypto.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GlobalCrypto.idl; sourceTree = "<group>"; };
     
    86028608                5778BD811DA4802C009E3009 /* SubtleCrypto.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubtleCrypto.h; sourceTree = "<group>"; };
    86038609                5778BD831DA4817B009E3009 /* SubtleCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SubtleCrypto.cpp; sourceTree = "<group>"; };
     8610                578A4C082167D29500D08F34 /* FidoHidMessage.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FidoHidMessage.cpp; sourceTree = "<group>"; };
     8611                578A4C092167D29600D08F34 /* FidoHidPacket.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FidoHidPacket.cpp; sourceTree = "<group>"; };
     8612                578A4C0A2167D29600D08F34 /* FidoHidPacket.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FidoHidPacket.h; sourceTree = "<group>"; };
     8613                578A4C0B2167D29600D08F34 /* FidoConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FidoConstants.h; sourceTree = "<group>"; };
    86048614                5790996B1ECD23DA00FC0768 /* CryptoAlgorithmRSA_PSS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CryptoAlgorithmRSA_PSS.h; sourceTree = "<group>"; };
    86058615                5790996C1ECD23DA00FC0768 /* CryptoAlgorithmRSA_PSS.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmRSA_PSS.cpp; sourceTree = "<group>"; };
     
    86188628                57B5F80B1E5D22DA00F34F90 /* JSAesGcmParams.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAesGcmParams.h; sourceTree = "<group>"; };
    86198629                57B5F80D1E5D2F2D00F34F90 /* CryptoAlgorithmAES_GCMMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CryptoAlgorithmAES_GCMMac.cpp; sourceTree = "<group>"; };
     8630                57BAF2872167D2F7008E954E /* FidoConstants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FidoConstants.cpp; sourceTree = "<group>"; };
     8631                57BAF28A2167D303008E954E /* FidoHidMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FidoHidMessage.h; sourceTree = "<group>"; };
    86208632                57C7A6891E56946D00C67D71 /* BasicCredential.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = BasicCredential.idl; sourceTree = "<group>"; };
    86218633                57C7A68B1E56967500C67D71 /* BasicCredential.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BasicCredential.h; sourceTree = "<group>"; };
     
    1897418986                        sourceTree = "<group>";
    1897518987                };
     18988                578A4BFA2166AE0000D08F34 /* fido */ = {
     18989                        isa = PBXGroup;
     18990                        children = (
     18991                                57BAF2872167D2F7008E954E /* FidoConstants.cpp */,
     18992                                578A4C0B2167D29600D08F34 /* FidoConstants.h */,
     18993                                578A4C082167D29500D08F34 /* FidoHidMessage.cpp */,
     18994                                57BAF28A2167D303008E954E /* FidoHidMessage.h */,
     18995                                578A4C092167D29600D08F34 /* FidoHidPacket.cpp */,
     18996                                578A4C0A2167D29600D08F34 /* FidoHidPacket.h */,
     18997                                573F533621680D150045587A /* FidoParsingUtils.cpp */,
     18998                                573F533521680D140045587A /* FidoParsingUtils.h */,
     18999                        );
     19000                        path = fido;
     19001                        sourceTree = "<group>";
     19002                };
    1897619003                57C7A6881E56946D00C67D71 /* credentialmanagement */ = {
    1897719004                        isa = PBXGroup;
     
    1901519042                        children = (
    1901619043                                57303BB32006C6ED00355965 /* cbor */,
     19044                                578A4BFA2166AE0000D08F34 /* fido */,
    1901719045                                57303C272009B2FC00355965 /* AuthenticatorAssertionResponse.h */,
    1901819046                                57303C292009B2FC00355965 /* AuthenticatorAssertionResponse.idl */,
     
    2823228260                                FD31609512B026F700C1A359 /* FFTConvolver.h in Headers */,
    2823328261                                FD31609712B026F700C1A359 /* FFTFrame.h in Headers */,
     28262                                57BAF28C2167D316008E954E /* FidoConstants.h in Headers */,
     28263                                573F5332216806E10045587A /* FidoHidMessage.h in Headers */,
     28264                                57BAF28E2167D339008E954E /* FidoHidPacket.h in Headers */,
     28265                                573F533721680D150045587A /* FidoParsingUtils.h in Headers */,
    2823428266                                976D6C81122B8A3D001FD1F7 /* File.h in Headers */,
    2823528267                                838F86DA1F509E7400E8CFC5 /* FileCallback.h in Headers */,
  • trunk/Tools/ChangeLog

    r236973 r236976  
     12018-10-09  Jiewen Tan  <jiewen_tan@apple.com>
     2
     3        [WebAuthN] Import CTAP HID message and packet structure from Chromium
     4        https://bugs.webkit.org/show_bug.cgi?id=189289
     5        <rdar://problem/44120310>
     6
     7        Reviewed by Brent Fulgham.
     8
     9        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
     10        * TestWebKitAPI/Tests/WebCore/FidoHidMessageTest.cpp: Added.
     11        (TestWebKitAPI::TEST):
     12
    1132018-10-09  Chris Dumez  <cdumez@apple.com>
    214
  • trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj

    r236964 r236976  
    258258                578CBD67204FB2C80083B9F2 /* LocalAuthentication.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 578CBD66204FB2C70083B9F2 /* LocalAuthentication.framework */; };
    259259                57901FB11CAF142D00ED64F9 /* LoadInvalidURLRequest.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 57901FB01CAF141C00ED64F9 /* LoadInvalidURLRequest.html */; };
     260                579651E7216BFDED006EBFE5 /* FidoHidMessageTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 579651E6216BFD53006EBFE5 /* FidoHidMessageTest.cpp */; };
    260261                5797FE311EB15A6800B2F4A0 /* NavigationClientDefaultCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5797FE2F1EB15A5F00B2F4A0 /* NavigationClientDefaultCrypto.cpp */; };
    261262                5797FE331EB15AB100B2F4A0 /* navigation-client-default-crypto.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5797FE321EB15A8900B2F4A0 /* navigation-client-default-crypto.html */; };
     
    15641565                57901FAE1CAF137100ED64F9 /* LoadInvalidURLRequest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LoadInvalidURLRequest.mm; sourceTree = "<group>"; };
    15651566                57901FB01CAF141C00ED64F9 /* LoadInvalidURLRequest.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = LoadInvalidURLRequest.html; sourceTree = "<group>"; };
     1567                579651E6216BFD53006EBFE5 /* FidoHidMessageTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FidoHidMessageTest.cpp; sourceTree = "<group>"; };
    15661568                5797FE2F1EB15A5F00B2F4A0 /* NavigationClientDefaultCrypto.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NavigationClientDefaultCrypto.cpp; sourceTree = "<group>"; };
    15671569                5797FE321EB15A8900B2F4A0 /* navigation-client-default-crypto.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "navigation-client-default-crypto.html"; sourceTree = "<group>"; };
     
    25292531                                26F6E1EF1ADC749B00DE696B /* DFAMinimizer.cpp */,
    25302532                                3151180F1DB1ADD500176304 /* ExtendedColor.cpp */,
     2533                                579651E6216BFD53006EBFE5 /* FidoHidMessageTest.cpp */,
    25312534                                7A32D7491F02151500162C44 /* FileMonitor.cpp */,
    25322535                                41973B5A1AF2286A006C7B36 /* FileSystem.cpp */,
     
    38063809                                315118101DB1AE4000176304 /* ExtendedColor.cpp in Sources */,
    38073810                                7CCE7EF11A411AE600447C4C /* FailedLoad.cpp in Sources */,
     3811                                579651E7216BFDED006EBFE5 /* FidoHidMessageTest.cpp in Sources */,
    38083812                                7A32D74A1F02151500162C44 /* FileMonitor.cpp in Sources */,
    38093813                                7C83E04F1D0A641800FEBCF3 /* FileSystem.cpp in Sources */,
Note: See TracChangeset for help on using the changeset viewer.