WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
30360
[Chromium] Add <keygen> support
https://bugs.webkit.org/show_bug.cgi?id=30360
Summary
[Chromium] Add <keygen> support
Gaurav Shah
Reported
2009-10-14 10:59:34 PDT
The patch replaces the temporary link stubs for <keygen> tag handler in Chromium with calls to the browser implementation via ChromiumBridge.
Attachments
Chromium <keygen> handler patch
(6.64 KB, patch)
2009-10-14 11:00 PDT
,
Gaurav Shah
fishd
: review-
Details
Formatted Diff
Diff
Updated Chromium <keygen> handler patch
(6.61 KB, patch)
2009-10-14 13:19 PDT
,
Gaurav Shah
no flags
Details
Formatted Diff
Diff
Chromium <keygen> handler patch
(6.70 KB, patch)
2009-10-16 10:29 PDT
,
Gaurav Shah
fishd
: review+
Details
Formatted Diff
Diff
Show Obsolete
(2)
View All
Add attachment
proposed patch, testcase, etc.
Gaurav Shah
Comment 1
2009-10-14 11:00:44 PDT
Created
attachment 41170
[details]
Chromium <keygen> handler patch
Wan-Teh Chang
Comment 2
2009-10-14 12:27:20 PDT
In WebCore/platform/chromium/SSLKeyGeneratorChromium.cpp:
> // Returns the key sizes supported by the HTML keygen tag. The first string > // is displayed as the default key size in the keygen menu. >-Vector<String> supportedKeySizes() >+void getSupportedKeySizes(Vector<String>& sizes) > { >- Vector<String> sizes(2); >+ sizes.resize(2); > sizes[0] = keygenMenuHighGradeKeySize(); > sizes[1] = keygenMenuMediumGradeKeySize(); >- return sizes; > }
Darin, please make sure we can set the size of a Vector using the resize() method like this. Thanks.
Darin Fisher (:fishd, Google)
Comment 3
2009-10-14 12:29:00 PDT
Comment on
attachment 41170
[details]
Chromium <keygen> handler patch
> Index: WebCore/ChangeLog
...
> +2009-10-14 Gaurav Shah <
gauravsh@google.com
> > + > + Reviewed by NOBODY (OOPS!). > + > + Replaces temporary link stub for <keygen> tag handler for the Chromium > + browser with a call via the Chromium Bridge.
nit: please replace tabs with spaces.
> Index: WebCore/platform/SSLKeyGenerator.h
> + // Get set of strings denoting keystrength in the <keygen> menu. > void getSupportedKeySizes(Vector<String>&);
This comment doesn't seem to tell me much more than what the function name already says.
> + > + // This function handles the <keygen> tag in form elements for > + // requesting CAs to generate a client certificate from within > + // the browser. Returns the signed public key and challenge string > + // from a newly generated key pair.
It is probably not necessary to describe the keygen tag here. The last sentence seems to suggest that the challenge string is a returned value, but it appears to be a const reference type, so that means that it must be an input value instead of a returned value.
> String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challengeString, const KURL&);
> Index: WebCore/platform/chromium/ChromiumBridge.h
...
> + // Keygen ------------------------------------------------------------- > + static String genKeyAndSignChallenge(unsigned keySizeIndex, const String& challenge, const KURL& url);
nit: please insert this section in alphabetical order (i.e., just after the "JavaScript" section). Thanks!
> Index: WebCore/platform/chromium/SSLKeyGeneratorChromium.cpp
...
> +// These are defined in webkit/api/src//localized_strings.cpp.
s/localized_strings/LocalizedStrings/
> +// For handling <keygen> form elements > +// Returns the signed public key and challenge string from a newly generated > +// key pair for creating client certificates from within the browser
nit: no need to repeat the comment from the header file here.
> +String signedPublicKeyAndChallengeString(unsigned keySizeIndex, > + const String& challengeString, > + const KURL& url) > +{ > + return ChromiumBridge::genKeyAndSignChallenge(keySizeIndex, challengeString, > + url);
since the ChromiumBridge method is just a 1-1 pass through, it would be nice if it had exactly the same name, signedPublicKeyAndChallengeString. or, do you think that signedPublicKeyAndChallengeString should have a better name?
> Index: WebCore/platform/chromium/TemporaryLinkStubs.cpp
thanks for cleaning up this file.
Gaurav Shah
Comment 4
2009-10-14 13:18:08 PDT
(In reply to
comment #3
)
> (From update of
attachment 41170
[details]
) > > Index: WebCore/ChangeLog > ... > > +2009-10-14 Gaurav Shah <
gauravsh@google.com
> > > + > > + Reviewed by NOBODY (OOPS!). > > + > > + Replaces temporary link stub for <keygen> tag handler for the Chromium > > + browser with a call via the Chromium Bridge. > > nit: please replace tabs with spaces.
Fixed.
> > > > Index: WebCore/platform/SSLKeyGenerator.h > > > + // Get set of strings denoting keystrength in the <keygen> menu. > > void getSupportedKeySizes(Vector<String>&); > > This comment doesn't seem to tell me much more than what the function > name already says.
It's not clear from the function name where and when it's used. I have tweaked the comment a little bit.
> > > > + > > + // This function handles the <keygen> tag in form elements for > > + // requesting CAs to generate a client certificate from within > > + // the browser. Returns the signed public key and challenge string > > + // from a newly generated key pair. > > It is probably not necessary to describe the keygen tag here. > > The last sentence seems to suggest that the challenge string is a > returned value, but it appears to be a const reference type, so that > means that it must be an input value instead of a returned value.
Yes, I meant to say that both public key and challenge string combined together are signed. Will fix the comment.
> > > > String signedPublicKeyAndChallengeString(unsigned keySizeIndex, const String& challengeString, const KURL&); > > > Index: WebCore/platform/chromium/ChromiumBridge.h > ... > > + // Keygen ------------------------------------------------------------- > > + static String genKeyAndSignChallenge(unsigned keySizeIndex, const String& challenge, const KURL& url); > > nit: please insert this section in alphabetical order (i.e., just > after the "JavaScript" section). Thanks!
Fixed.
> > > > Index: WebCore/platform/chromium/SSLKeyGeneratorChromium.cpp > ... > > +// These are defined in webkit/api/src//localized_strings.cpp. > > s/localized_strings/LocalizedStrings/ > > > > +// For handling <keygen> form elements > > +// Returns the signed public key and challenge string from a newly generated > > +// key pair for creating client certificates from within the browser > > nit: no need to repeat the comment from the header file here.
Fixed.
> > > > +String signedPublicKeyAndChallengeString(unsigned keySizeIndex, > > + const String& challengeString, > > + const KURL& url) > > +{ > > + return ChromiumBridge::genKeyAndSignChallenge(keySizeIndex, challengeString, > > + url); > > since the ChromiumBridge method is just a 1-1 pass through, it would be nice > if it had exactly the same name, signedPublicKeyAndChallengeString. > > or, do you think that signedPublicKeyAndChallengeString should have a better > name?
genKeyAndSignChallenge() is what the WebKit layer is asking the browser to do, so more accurate IMO. But WebCore uses signedPublicKeyAndChallenge() at various places (incl. html/HTMLKeygenElement.cpp), so I didn't change it. Maybe, we can make it signedPublicKeyAndChallengeString for ChromiumBridge but keep genKeyAndSignChallenge in the Chromium portion?
> > > > Index: WebCore/platform/chromium/TemporaryLinkStubs.cpp > > thanks for cleaning up this file.
Gaurav Shah
Comment 5
2009-10-14 13:19:37 PDT
Created
attachment 41183
[details]
Updated Chromium <keygen> handler patch
Wan-Teh Chang
Comment 6
2009-10-15 16:54:42 PDT
(In reply to
comment #4
) >
> Maybe, we can make it signedPublicKeyAndChallengeString for ChromiumBridge but > keep genKeyAndSignChallenge in the Chromium portion?
Darin, signedPublicKeyAndChallengeString does more than signing; it also generates a new key pair. This is why I suggested the genKeyAndSignChallenge function name to Gaurav. But I agree that the since ChromiumBridge method is just a 1-1 pass through, it should have the same name. Gaurav, let's do what you suggested above. The signedPublicKeyAndChallengeString name should extend all the way to chrome/renderer/renderer_webkitclient_impl.cc in the Chromium source tree.
Darin Fisher (:fishd, Google)
Comment 7
2009-10-15 20:31:18 PDT
(In reply to
comment #6
)
> Darin, signedPublicKeyAndChallengeString does more than signing; > it also generates a new key pair. This is why I suggested the > genKeyAndSignChallenge function name to Gaurav.
That makes sense. My point was that if the WebCore name is poor, then let's fix it :-)
Darin Fisher (:fishd, Google)
Comment 8
2009-10-15 20:44:53 PDT
One note about naming: In WebKit, the style is to avoid abbreviations when naming methods.
Gaurav Shah
Comment 9
2009-10-16 10:28:08 PDT
(In reply to
comment #6
)
> (In reply to
comment #4
) > > > > Maybe, we can make it signedPublicKeyAndChallengeString for ChromiumBridge but > > keep genKeyAndSignChallenge in the Chromium portion? > > Darin, signedPublicKeyAndChallengeString does more than signing; > it also generates a new key pair. This is why I suggested the > genKeyAndSignChallenge function name to Gaurav. > > But I agree that the since ChromiumBridge method is just a 1-1 > pass through, it should have the same name. Gaurav, let's do > what you suggested above. The signedPublicKeyAndChallengeString > name should extend all the way to > chrome/renderer/renderer_webkitclient_impl.cc in the Chromium > source tree.
Ok, I made the change to make it a 1-1 pass through.
Gaurav Shah
Comment 10
2009-10-16 10:29:11 PDT
Created
attachment 41294
[details]
Chromium <keygen> handler patch
Darin Fisher (:fishd, Google)
Comment 11
2009-10-22 10:47:09 PDT
Comment on
attachment 41294
[details]
Chromium <keygen> handler patch
> Index: WebCore/ChangeLog
...
> + Replaces temporary link stub for <keygen> tag handler for the Chromium > + browser with a call via the Chromium Bridge.
nit: there should be a bug link here. i'll add that before committing. -darin
Darin Fisher (:fishd, Google)
Comment 12
2009-10-22 10:49:53 PDT
Landed as
http://trac.webkit.org/changeset/49947
Gaurav Shah
Comment 13
2009-10-22 10:56:00 PDT
(In reply to
comment #12
)
> Landed as
http://trac.webkit.org/changeset/49947
Thanks Darin!
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug