Bug 204024

Summary: [WebAuthn] Add quirk needed to support legacy Google NFC Titan security keys
Product: WebKit Reporter: Jiewen Tan <jiewen_tan>
Component: WebKit Misc.Assignee: Jiewen Tan <jiewen_tan>
Status: RESOLVED FIXED    
Severity: Normal CC: alex.gaynor, bfulgham, ddkilzer, jiewen_tan, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
See Also: https://bugs.webkit.org/show_bug.cgi?id=204251
Bug Depends on:    
Bug Blocks: 181943    
Attachments:
Description Flags
Patch
bfulgham: review+
Patch for landing none

Description Jiewen Tan 2019-11-08 14:37:48 PST
Add quirk needed to support legacy Google NFC Titan security keys.
Comment 1 Jiewen Tan 2019-11-08 14:38:19 PST
<rdar://problem/56962320>
Comment 2 Jiewen Tan 2019-11-08 14:46:17 PST
Created attachment 383167 [details]
Patch
Comment 3 Brent Fulgham 2019-11-08 15:07:43 PST
Comment on attachment 383167 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=383167&action=review

r=me, but please run the autoreleasepool stuff by David before committing.

> Source/WebKit/ChangeLog:12
> +        of those legacy key.

actually speak U2F, indicating we are interacting with one of these legacy keys.

> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:52
> +{

Should the code in here be wrapped in @autoreleasepool?

> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:53
> +    auto versionData = [session transceive:adoptNS([[NSData alloc] initWithBytes:kCtapNfcAppletSelectionCommand length:sizeof(kCtapNfcAppletSelectionCommand)]).get()];

auto *versionData maybe?

> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:61
> +    // of those legacy key.

Same rephrasing I suggest above.

> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:-71
> -    @autoreleasepool {

Why don't you need the @autoreleasepool block anymore? Did you check with David Kilzer to see if this is good to do?

> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:94
> +    auto responseData = [m_session transceive:adoptNS([[NSData alloc] initWithBytes:data.data() length:data.size()]).get()];

auto *responseData =
Comment 4 Brent Fulgham 2019-11-08 15:08:01 PST
CCing David Kilzer to look at the @autoreleasepool stuff.
Comment 5 Jiewen Tan 2019-11-08 15:38:17 PST
Comment on attachment 383167 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=383167&action=review

Thanks Brent for r+ this patch.

>> Source/WebKit/ChangeLog:12
>> +        of those legacy key.
> 
> actually speak U2F, indicating we are interacting with one of these legacy keys.

Fixed.

>> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:52
>> +{
> 
> Should the code in here be wrapped in @autoreleasepool?

Before, I used [NSData dataWithBytes:data.data() length:data.size()] which is not wrapped with adoptNS. Now, I switched to adoptNS([[NSData alloc] initWithBytes:kCtapNfcAppletSelectionCommand length:sizeof(kCtapNfcAppletSelectionCommand)]).get(). It should be fine.

>> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:53
>> +    auto versionData = [session transceive:adoptNS([[NSData alloc] initWithBytes:kCtapNfcAppletSelectionCommand length:sizeof(kCtapNfcAppletSelectionCommand)]).get()];
> 
> auto *versionData maybe?

Yes. Right.

>> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:61
>> +    // of those legacy key.
> 
> Same rephrasing I suggest above.

Fixed.

>> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:-71
>> -    @autoreleasepool {
> 
> Why don't you need the @autoreleasepool block anymore? Did you check with David Kilzer to see if this is good to do?

Same as above.

>> Source/WebKit/UIProcess/WebAuthentication/Cocoa/NfcConnection.mm:94
>> +    auto responseData = [m_session transceive:adoptNS([[NSData alloc] initWithBytes:data.data() length:data.size()]).get()];
> 
> auto *responseData =

Fixed.
Comment 6 Jiewen Tan 2019-11-08 16:24:46 PST
Created attachment 383177 [details]
Patch for landing
Comment 7 Jiewen Tan 2019-11-08 17:09:27 PST
Committed r252297: <https://trac.webkit.org/changeset/252297>