Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removing <keygen> #2079

Closed
domenic opened this issue Nov 22, 2016 · 11 comments
Closed

Removing <keygen> #2079

domenic opened this issue Nov 22, 2016 · 11 comments
Assignees
Labels
removal/deprecation Removing or deprecating a feature

Comments

@domenic
Copy link
Member

domenic commented Nov 22, 2016

We previously deprecated keygen in 1b43806. It was never implemented in Edge, and Chrome is moving to remove all key types and thus all UI, per blink-dev.

Last time this was discussed I was told Firefox was also interested in deprecating and removing. @smaug----, @bzbarsky, any thoughts there? While we're at it, any thoughts from WebKit, @rniwa @cdumez?

We should discuss whether we want to remove support for keygen entirely, similar to what is slated for <applet> in #1399. This would mean:

  • No longer submitting it in the form data set at all, instead of submitting an empty string
  • Removing the HTMLKeygenElement API (keygen elements would become HTMLUnknownElement)
  • Removing it from the various form-associated things, so e.g. it would not show up in form.elements
  • (Optional, but see below) Removing parser support for it

We have tentative support for doing this from @sleevi on the blink-dev ("that would make logical sense"), and of course Edge does not implement support at all---except for parsing, it appears. See http://software.hixie.ch/utilities/js/live-dom-viewer/?saved=4685. Note that Firefox's current parsing is bizarre; it transforms it into a <select _moz-type="mozilla-keygen"> element. So maybe there is some flexibility there. But in the past (e.g. for applet) we've decided to not change the parser when removing elements.

What I'd like to get out of this thread is:

  • Are more browsers than Chrome and Edge interested in neutering keygen's functionality by making it never support any key types?
  • Are more browsers than Chrome and Edge interested in removing keygen entirely?
@domenic domenic added needs implementer interest Moving the issue forward requires implementers to express interest removal/deprecation Removing or deprecating a feature labels Nov 22, 2016
@sleevi
Copy link

sleevi commented Nov 22, 2016

Summoning @rlbmoz on support at Moz

@sleevi
Copy link

sleevi commented Nov 22, 2016

Actually, @mozkeeler may be a better summon :)

@mozkeeler
Copy link

As far as I know, we (members of various security teams at Mozilla) haven't discussed this as a group recently, but the last I heard, we were interested in removing keygen. Whether or not it's best to remove it by removing its functionality or by removing it entirely is probably something for the DOM/content team (I imagine there might be compatibility concerns there, but since we're talking about making it functionally inoperable, maybe it doesn't matter).

@bzbarsky
Copy link
Contributor

My only thought is that I know for a fact keygen is in use in the wild (for example, MIT uses it to generate user certificates for students so they can get access to things like course registration, grades, etc).

So even if there were interest in removing it, we would probably need to communicate the removal quite widely and give people time to switch to whatever they should be doing instead.

@bzbarsky
Copy link
Contributor

@mozkeeler Note that I just discovered that MIT uses a desktop app that munges the OS certificate store to do the user cert generation they want for Edge users. This would obviously not work for Firefox, which doesn't use the OS certificate store...

@bifurcation
Copy link

@bzbarsky I hope you're not suggesting that MIT is a sufficient population to keep the feature alive :) They have enough smart folks around that they should be able to figure out an alternative solution.

We've been talking about this for ages, and there's been no mass protest so far. So I'm A-OK with proceeding with removal, shouting it from the rooftops, and if there's outcry in response, we can pull back.

@bzbarsky
Copy link
Contributor

I'm suggesting that for the specific case of Firefox removing the functionality would break things in the MIT case, while for other browsers that's not the case. I can't speak to the existence of other cases like that, and I'm not saying the removal we should not do the removal. I'm saying we need to communicate it widely and with plenty of lead time for people to deal. Which we certainly haven't done so far.

should be able to figure out an alternative solution

Sure, they'll just force their users to use a different browsers, like any other enterprise setup. ;)

@bifurcation
Copy link

should be able to figure out an alternative solution

Sure, they'll just force their users to use a different browsers, like any other enterprise setup. ;)

Unless they're relying on smart cards (in which case God help them), there are nice cross-browser JS solutions that provide the same functionality with only marginally less smooth UX.

@sleevi
Copy link

sleevi commented Nov 29, 2016

@domenic I want to make sure, but it seems implied with moving to HTMLUnknownElement is that it will be able to have a shadow root attached to it, right? (I simply noticed there were Blink tests asserting no shadow roots for elements with dynamic shadow roots, and confirming that it'd be expected to no longer apply)

@domenic
Copy link
Member Author

domenic commented Nov 29, 2016

@sleevi no, per https://dom.spec.whatwg.org/#dom-element-attachshadow attachShadow does not allow keygen.

@domenic domenic removed the needs implementer interest Moving the issue forward requires implementers to express interest label Dec 22, 2016
@domenic
Copy link
Member Author

domenic commented Dec 22, 2016

@sleevi seems to have removed keygen at https://chromium.googlesource.com/chromium/src/+/5d916f6c6b47472770e03cb483f06a18ca79a0c2. Although he's not 100% sure it will stick, I think this is enough of a sign that we should remove it from the spec. I'll try to work on it today-ish.

@domenic domenic self-assigned this Dec 22, 2016
domenic added a commit that referenced this issue Dec 28, 2016
This removes the <keygen> element entirely from the specification, with
the exception of retaining the parser behavior. Closes #2079.
domenic added a commit that referenced this issue Jan 13, 2017
This removes the <keygen> element entirely from the specification, with
the exception of retaining the parser behavior. Closes #2079.
alice pushed a commit to alice/html that referenced this issue Jan 8, 2019
This removes the <keygen> element entirely from the specification, with
the exception of retaining the parser behavior. Closes whatwg#2079.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
removal/deprecation Removing or deprecating a feature
Development

No branches or pull requests

5 participants