W3C home > Mailing lists > Public > public-html-diffs@w3.org > April 2009

spec/Overview.html 1.2124 2960 First cut at defining <keygen>. Affects

From: poot <cvsmail@w3.org>
Date: Tue, 7 Apr 2009 15:48:07 +0900 (JST)
To: public-html-diffs@w3.org
Message-Id: <20090407064807.E1FD02BC90@toro.w3.mag.keio.ac.jp>
First cut at defining <keygen>.  Affects parser, rendering, and form
submission. (whatwg r2960)

10.5 Frames and framesets
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#frames-and-framesets
default button
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#default-button
validationMessage
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-cva-validationmessage
challenge
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-keygen-challenge
10.2.7 Resetting rules for inherited properties
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#resetting-rules-for-inherited-properties
4.10.16 Form submission
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#form-submission-0
4.10.15.4 Security
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#security-0
10.4.18 The keygen element
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#the-keygen-element-0
4.10.11 The keygen element
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#the-keygen-element
appropriate form encoding algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#appropriate-form-encoding-algorithm
text/plain encoding algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#text-plain-encoding-algorithm
Editor's Draft 7 April 2009
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#editor-s-draft-date-1-january-1970
4.10.14.4 Autofocusing a form control
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#autofocusing-a-form-control
4.10.14.5 Limiting user input length
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#limiting-user-input-length
4.10.14.3 A form control's value
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#a-form-control-s-value
4.10.17 Resetting a form
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#resetting-a-form
submitted
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-form-submit
Index
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#index
application/x-www-form-urlencoded encoding algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#application-x-www-form-urlencoded-encoding-algorithm
htmlFor
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-output-htmlfor
broadcast forminput events
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#broadcast-forminput-events
multipart/form-data encoding algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#multipart-form-data-encoding-algorithm
4.10.18 Event dispatch
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#event-dispatch
interactively validate the constraints
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#interactively-validate-the-constraints
satisfies its constraints
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-fv-valid
value
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-fe-value
reset algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-form-reset-control
form owner
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#form-owner
An end tag whose tag name is one of: "a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small", "strike", "strong", "tt", "u"
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#adoptionAgency
keytype
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#attr-keygen-keytype
4.10.16.5 Multipart form data
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#multipart-form-data
disabled
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-fe-disabled
4.10.16.1 Introduction
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#introduction-0
4.10.14 Attributes common to form controls
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#attributes-common-to-form-controls
disabled
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-fe-disabled
challenge
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#attr-keygen-challenge
PublicKeyAndChallenge
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#publickeyandchallenge
4.10.14.6 Form submission
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#form-submission
autofocus
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-fe-autofocus
4.10.14.2 Enabling and disabling form controls
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#enabling-and-disabling-form-controls
name
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-fe-name
4.10.16.2 Implicit submission
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#implicit-submission
4.10.16.6 Plain text form data
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#plain-text-form-data
value
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-textarea-value
maximum allowed value length
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#maximum-allowed-value-length
reset
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-form-reset
form
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-fae-form
HTML fragment serialization algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#html-fragment-serialization-algorithm
HTMLKeygenElement
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#htmlkeygenelement
10.4.17 The textarea element
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#the-textarea-element-0
4.10.16.3 Form submission algorithm
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#form-submission-algorithm
4.10.13 Association of controls and forms
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#association-of-controls-and-forms
type
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-keygen-type
4.10.15.3 The constraint validation API
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#the-constraint-validation-api
SignedPublicKeyAndChallenge
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#signedpublickeyandchallenge
Status of this document
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#status-of-this-document
4.10.16.4 URL-encoded form data
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#url-encoded-form-data
default value
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-output-defaultvalue
A start tag whose tag name is "isindex"
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#isindex
A vocabulary and associated APIs for HTML and XHTML
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#a-vocabulary-and-associated-apis-for-html-and-xhtml
broadcast formchange events
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#broadcast-formchange-events
candidate for constraint validation
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#candidate-for-constraint-validation
4.10.12 The output element
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#the-output-element
formTarget
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#dom-fs-formtarget
statically validate the constraints
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#statically-validate-the-constraints
checkedness
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#concept-fe-checked
4.10.15.2 Constraint validation
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#constraint-validation
4.10.15 Constraints
http://people.w3.org/mike/diffs/html5/spec/Overview.1.2124.html#constraints

http://people.w3.org/mike/diffs/html5/spec/Overview.diff.html
http://dev.w3.org/cvsweb/html5/spec/Overview.html?r1=1.2123&r2=1.2124&f=h
http://html5.org/tools/web-apps-tracker?from=2959&to=2960

===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.2123
retrieving revision 1.2124
diff -u -d -r1.2123 -r1.2124
--- Overview.html	6 Apr 2009 08:24:32 -0000	1.2123
+++ Overview.html	7 Apr 2009 03:48:42 -0000	1.2124
@@ -146,7 +146,7 @@
    <p><a href=http://www.w3.org/><img alt=W3C height=48 src=http://www.w3.org/Icons/w3c_home width=72></a></p>
    <h1>HTML 5</h1>
    <h2 class="no-num no-toc" id=a-vocabulary-and-associated-apis-for-html-and-xhtml>A vocabulary and associated APIs for HTML and XHTML</h2>
-   <h2 class="no-num no-toc" id=editor-s-draft-date-1-january-1970><!--ZZZ: W3C Working Draft 12 February 2009 --><!-- fix date ZZZ --><!----> Editor's Draft 6 April 2009 <!--:ZZZ--></h2>
+   <h2 class="no-num no-toc" id=editor-s-draft-date-1-january-1970><!--ZZZ: W3C Working Draft 12 February 2009 --><!-- fix date ZZZ --><!----> Editor's Draft 7 April 2009 <!--:ZZZ--></h2>
    <dl><!-- ZZZ: update the month/day (twice), uncomment out 
     <dt>This Version:</dt>
     <dd><a href="http://www.w3.org/TR/2009/WD-html5-20090212/">http://www.w3.org/TR/2009/WD-html5-20090212/</a></dd>
@@ -237,7 +237,7 @@
   track.
   <!--ZZZ:-->
   <!-- This specification is the 12 February 2009 Working Draft. -->
-  This specification is the 6 April 2009 Editor's Draft.
+  This specification is the 7 April 2009 Editor's Draft.
   <!--:ZZZ-->
   </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>This specification is also being produced by the <a href=http://www.whatwg.org/>WHATWG</a>. The two specifications are
   identical from the table of contents onwards.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- context and rationale (required) --><p>This specification is intended to replace (be a new version of)
@@ -639,32 +639,33 @@
      <li><a href=#the-optgroup-element><span class=secno>4.10.8 </span>The <code>optgroup</code> element</a></li>
      <li><a href=#the-option-element><span class=secno>4.10.9 </span>The <code>option</code> element</a></li>
      <li><a href=#the-textarea-element><span class=secno>4.10.10 </span>The <code>textarea</code> element</a></li>
-     <li><a href=#the-output-element><span class=secno>4.10.11 </span>The <code>output</code> element</a></li>
-     <li><a href=#association-of-controls-and-forms><span class=secno>4.10.12 </span>Association of controls and forms</a></li>
-     <li><a href=#attributes-common-to-form-controls><span class=secno>4.10.13 </span>Attributes common to form controls</a>
+     <li><a href=#the-keygen-element><span class=secno>4.10.11 </span>The <code>keygen</code> element</a></li>
+     <li><a href=#the-output-element><span class=secno>4.10.12 </span>The <code>output</code> element</a></li>
+     <li><a href=#association-of-controls-and-forms><span class=secno>4.10.13 </span>Association of controls and forms</a></li>
+     <li><a href=#attributes-common-to-form-controls><span class=secno>4.10.14 </span>Attributes common to form controls</a>
       <ol>
-       <li><a href=#naming-form-controls><span class=secno>4.10.13.1 </span>Naming form controls</a></li>
-       <li><a href=#enabling-and-disabling-form-controls><span class=secno>4.10.13.2 </span>Enabling and disabling form controls</a></li>
-       <li><a href=#a-form-control-s-value><span class=secno>4.10.13.3 </span>A form control's value</a></li>
-       <li><a href=#autofocusing-a-form-control><span class=secno>4.10.13.4 </span>Autofocusing a form control</a></li>
-       <li><a href=#limiting-user-input-length><span class=secno>4.10.13.5 </span>Limiting user input length</a></li>
-       <li><a href=#form-submission><span class=secno>4.10.13.6 </span>Form submission</a></ol></li>
-     <li><a href=#constraints><span class=secno>4.10.14 </span>Constraints</a>
+       <li><a href=#naming-form-controls><span class=secno>4.10.14.1 </span>Naming form controls</a></li>
+       <li><a href=#enabling-and-disabling-form-controls><span class=secno>4.10.14.2 </span>Enabling and disabling form controls</a></li>
+       <li><a href=#a-form-control-s-value><span class=secno>4.10.14.3 </span>A form control's value</a></li>
+       <li><a href=#autofocusing-a-form-control><span class=secno>4.10.14.4 </span>Autofocusing a form control</a></li>
+       <li><a href=#limiting-user-input-length><span class=secno>4.10.14.5 </span>Limiting user input length</a></li>
+       <li><a href=#form-submission><span class=secno>4.10.14.6 </span>Form submission</a></ol></li>
+     <li><a href=#constraints><span class=secno>4.10.15 </span>Constraints</a>
       <ol>
-       <li><a href=#definitions><span class=secno>4.10.14.1 </span>Definitions</a></li>
-       <li><a href=#constraint-validation><span class=secno>4.10.14.2 </span>Constraint validation</a></li>
-       <li><a href=#the-constraint-validation-api><span class=secno>4.10.14.3 </span>The constraint validation API</a></li>
-       <li><a href=#security-0><span class=secno>4.10.14.4 </span>Security</a></ol></li>
-     <li><a href=#form-submission-0><span class=secno>4.10.15 </span>Form submission</a>
+       <li><a href=#definitions><span class=secno>4.10.15.1 </span>Definitions</a></li>
+       <li><a href=#constraint-validation><span class=secno>4.10.15.2 </span>Constraint validation</a></li>
+       <li><a href=#the-constraint-validation-api><span class=secno>4.10.15.3 </span>The constraint validation API</a></li>
+       <li><a href=#security-0><span class=secno>4.10.15.4 </span>Security</a></ol></li>
+     <li><a href=#form-submission-0><span class=secno>4.10.16 </span>Form submission</a>
       <ol>
-       <li><a href=#introduction-0><span class=secno>4.10.15.1 </span>Introduction</a></li>
-       <li><a href=#implicit-submission><span class=secno>4.10.15.2 </span>Implicit submission</a></li>
-       <li><a href=#form-submission-algorithm><span class=secno>4.10.15.3 </span>Form submission algorithm</a></li>
-       <li><a href=#url-encoded-form-data><span class=secno>4.10.15.4 </span>URL-encoded form data</a></li>
-       <li><a href=#multipart-form-data><span class=secno>4.10.15.5 </span>Multipart form data</a></li>
-       <li><a href=#plain-text-form-data><span class=secno>4.10.15.6 </span>Plain text form data</a></ol></li>
-     <li><a href=#resetting-a-form><span class=secno>4.10.16 </span>Resetting a form</a></li>
-     <li><a href=#event-dispatch><span class=secno>4.10.17 </span>Event dispatch</a></ol></li>
+       <li><a href=#introduction-0><span class=secno>4.10.16.1 </span>Introduction</a></li>
+       <li><a href=#implicit-submission><span class=secno>4.10.16.2 </span>Implicit submission</a></li>
+       <li><a href=#form-submission-algorithm><span class=secno>4.10.16.3 </span>Form submission algorithm</a></li>
+       <li><a href=#url-encoded-form-data><span class=secno>4.10.16.4 </span>URL-encoded form data</a></li>
+       <li><a href=#multipart-form-data><span class=secno>4.10.16.5 </span>Multipart form data</a></li>
+       <li><a href=#plain-text-form-data><span class=secno>4.10.16.6 </span>Plain text form data</a></ol></li>
+     <li><a href=#resetting-a-form><span class=secno>4.10.17 </span>Resetting a form</a></li>
+     <li><a href=#event-dispatch><span class=secno>4.10.18 </span>Event dispatch</a></ol></li>
    <li><a href=#interactive-elements><span class=secno>4.11 </span>Interactive elements</a>
     <ol>
      <li><a href=#the-details-element><span class=secno>4.11.1 </span>The <code>details</code> element</a></li>
@@ -1064,7 +1065,8 @@
      <li><a href=#the-meter-element-0><span class=secno>10.4.14 </span>The <code>meter</code> element</a></li>
      <li><a href=#the-progress-element-0><span class=secno>10.4.15 </span>The <code>progress</code> element</a></li>
      <li><a href=#the-select-element-0><span class=secno>10.4.16 </span>The <code>select</code> element</a></li>
-     <li><a href=#the-textarea-element-0><span class=secno>10.4.17 </span>The <code>textarea</code> element</a></ol></li>
+     <li><a href=#the-textarea-element-0><span class=secno>10.4.17 </span>The <code>textarea</code> element</a></li>
+     <li><a href=#the-keygen-element-0><span class=secno>10.4.18 </span>The <code>keygen</code> element</a></ol></li>
    <li><a href=#frames-and-framesets><span class=secno>10.5 </span>Frames and framesets</a></li>
    <li><a href=#interactive-media><span class=secno>10.6 </span>Interactive media</a>
     <ol>
@@ -29743,7 +29745,244 @@
   and <code title=dom-textarea/input-setSelectionRange><a href=#dom-textarea-input-setselectionrange>setSelectionRange()</a></code>
   methods and attributes expose the element's text selection.</p>
 
-  </div><h4 id=the-output-element><span class=secno>4.10.11 </span>The <dfn><code>output</code></dfn> element</h4><dl class=element><dt>Categories</dt>
+  </div><h4 id=the-keygen-element><span class=secno>4.10.11 </span>The <dfn><code>keygen</code></dfn> element</h4><dl class=element><dt>Categories</dt>
+   <dd><a href=#flow-content-0>Flow content</a>.</dd>
+   <dd><a href=#phrasing-content-0>Phrasing content</a>.</dd>
+   <dd><a href=#interactive-content-0>Interactive content</a>.</dd>
+   <dd><a href=#category-listed title=category-listed>Listed</a>, <a href=#category-label title=category-label>labelable</a>, <a href=#category-submit title=category-submit>submittable</a>, and <a href=#category-reset title=category-reset>resettable</a> <a href=#form-associated-element>form-associated element</a>.</dd>
+   <dt>Contexts in which this element may be used:</dt>
+   <dd>Where <a href=#phrasing-content-0>phrasing content</a> is expected.</dd>
+   <dt>Content model:</dt>
+   <dd>Empty.</dd>
+   <dt>Content attributes:</dt>
+   <dd><a href=#global-attributes>Global attributes</a></dd>
+   <dd><code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code></dd>
+   <dd><code title=attr-keygen-challenge><a href=#attr-keygen-challenge>challenge</a></code></dd>
+   <dd><code title=attr-fe-disabled><a href=#attr-fe-disabled>disabled</a></code></dd>
+   <dd><code title=attr-fae-form><a href=#attr-fae-form>form</a></code></dd>
+   <dd><code title=attr-keygen-keytype><a href=#attr-keygen-keytype>keytype</a></code></dd>
+   <dd><code title=attr-fe-name><a href=#attr-fe-name>name</a></code></dd>
+   <dt>DOM interface:</dt>
+   <dd>
+<pre class=idl>interface <dfn id=htmlkeygenelement>HTMLKeygenElement</dfn> : <a href=#htmlelement>HTMLElement</a> {
+           attribute boolean <a href=#dom-fe-autofocus title=dom-fe-autofocus>autofocus</a>;
+           attribute DOMString <a href=#dom-keygen-challenge title=dom-keygen-challenge>challenge</a>;
+           attribute boolean <a href=#dom-fe-disabled title=dom-fe-disabled>disabled</a>;
+  readonly attribute <a href=#htmlformelement>HTMLFormElement</a> <a href=#dom-fae-form title=dom-fae-form>form</a>;
+           attribute DOMString <a href=#dom-keygen-keytype title=dom-keygen-keytype>keytype</a>;
+           attribute DOMString <a href=#dom-fe-name title=dom-fe-name>name</a>;
+
+  readonly attribute DOMString <a href=#dom-keygen-type title=dom-keygen-type>type</a>;
+
+  readonly attribute boolean <a href=#dom-cva-willvalidate title=dom-cva-willValidate>willValidate</a>;
+  readonly attribute <a href=#validitystate>ValidityState</a> <a href=#dom-cva-validity title=dom-cva-validity>validity</a>;
+  readonly attribute DOMString <a href=#dom-cva-validationmessage title=dom-cva-validationMessage>validationMessage</a>;
+  boolean <a href=#dom-cva-checkvalidatity title=dom-cva-checkValidatity>checkValidity</a>();
+  void <a href=#dom-cva-setcustomvalidity title=dom-cva-setCustomValidity>setCustomValidity</a>(in DOMString error);
+
+  readonly attribute <span>NodeList</span> <a href=#dom-lfe-labels title=dom-lfe-labels>labels</a>;
+};</pre>
+   </dd> 
+  </dl><p>The <code><a href=#the-keygen-element>keygen</a></code> element <a href=#represents>represents</a> a key
+  pair generator control. When the control's form is submitted, the
+  private key is stored in the local keystore, and the public key is
+  packaged and sent to the server.<p>The <dfn id=attr-keygen-challenge title=attr-keygen-challenge><code>challenge</code></dfn> attribute
+  may be specified. Its value will be packaged with the submitted
+  key.<p>The <dfn id=attr-keygen-keytype title=attr-keygen-keytype><code>keytype</code></dfn>
+  attribute is an <a href=#enumerated-attribute>enumerated attribute</a>. The following
+  table lists the keywords and states for the attribute &mdash; the
+  keywords in the left column map to the states listed in the cell in
+  the second column on the same row as the keyword.<table><thead><tr><th> Keyword <th> State
+   <tbody><tr><td> <code title="">rsa</code>
+     <td> <i title="">RSA</i>
+  </table><p>The <i>invalid value default</i> state is the <i title="">unknown</i> state. The <i>missing value default</i> state
+  is the <i title="">RSA</i> state.<div class=impl>
+
+  <p>The user agent may expose a user interface for each
+  <code><a href=#the-keygen-element>keygen</a></code> element to allow the user to configure settings
+  of the element's key pair generator, e.g. the key length.</p>
+
+  <p>The <a href=#concept-form-reset-control title=concept-form-reset-control>reset
+  algorithm</a> for <code><a href=#the-keygen-element>keygen</a></code> elements is to set these
+  various configuration settings back to their defaults.</p>
+
+  <p>The element's <a href=#concept-fe-value title=concept-fe-value>value</a> is the
+  string returned from the following algorithm:</p>
+
+  <!-- XXXrefs:
+    [X690] http://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf
+  -->
+
+  <ol><li>
+
+    <p>Use the appropriate step from the following list:</p>
+
+    <dl class=switch><!--
+
+     <dt>If the <code title="attr-keygen-keytype">keytype</code>
+     attribute is in the <i title="">EC</i> state</dt>
+
+     <dd>
+
+      <p>...
+
+     </dd>
+
+     http://www.mail-archive.com/dev-tech-crypto@lists.mozilla.org/msg05902.html
+
+     --><dt>If the <code title=attr-keygen-keytype><a href=#attr-keygen-keytype>keytype</a></code>
+     attribute is in the <i title="">RSA</i> state</dt>
+
+     <dd>
+
+      <p>Generate an RSA key pair using the settings given by the
+      user, if appropriate.</p>
+
+      <p>Select an RSA signature algorithm from those listed in
+      section 7.2.1 ("RSA Signature Algorithm") of RFC2459. <a href=#references>[RFC2459]</a></p>
+
+     </dd>
+
+     <dt>Otherwise, the <code title=attr-keygen-keytype><a href=#attr-keygen-keytype>keytype</a></code> attribute is in the <i title="">unknown</i> state</dt>
+
+     <dd>
+
+      <p>The given key type is not supported. Return the empty string
+      and abort this algorithm.</p>
+
+     </dd>
+
+    </dl><p>Let <var title="">private key</var> be the generated private key.</p>
+
+    <p>Let <var title="">public key</var> be the generated public key.</p>
+
+    <p>Let <var title="">signature algorithm</var> be the selected
+    signature algorithm.</p>
+
+   </li>
+
+   <li>
+
+    <p>If the element has a <code title=attr-keygen-challenge><a href=#attr-keygen-challenge>challenge</a></code> attribute, then let
+    <var title="">challenge</var> be that attribute's value.
+    Otherwise, let <var title="">challenge</var> be the empty
+    string.</p>
+
+   </li>
+
+   <li>
+
+    <p>Let <var title="">algorithm</var> be an ASN.1 <code title="">AlgorithmIdentifier</code> structure as defined by
+    RFC2459, with the <code title="">algorithm</code> field giving the
+    ASN.1 OID used to identify <var title="">signature
+    algorithm</var>, using the OIDs defined in section 7.2 ("Signature
+    Algorithms") of RFC2459, and the <code title="">parameters</code>
+    field set up as required by RFC2459 for <code title="">AlgorithmIdentifier</code> structures for that
+    algorithm. <a href=#references>[X690]</a> <a href=#references>[RFC2459]</a></p>
+
+   </li>
+
+   <li>
+
+    <p>Let <var title="">spki</var> be an ASN.1 <code title="">SubjectPublicKeyInfo</code> structure as defined by
+    RFC2459, with the <code title="">algorithm</code> field set to the
+    <var title="">algorithm</var> structure from the previous step,
+    and the <code title="">subjectPublicKey</code> field set to the
+    BIT STRING value resulting from ASN.1 DER encoding the <var title="">public key</var>. <a href=#references>[X690]</a> <a href=#references>[RFC2459]</a></p>
+
+   </li>
+
+   <li>
+
+    <p>Let <var title="">publicKeyAndChallenge</var> be an ASN.1
+    <code><a href=#publickeyandchallenge>PublicKeyAndChallenge</a></code> structure as defined below,
+    with the <code title="">spki</code> field set to the <var title="">spki</var> structure from the previous step, and the
+    <code title="">challenge</code> field set to the string <var title="">challenge</var> obtained earlier. <a href=#references>[X690]</a></p>
+
+   </li>
+
+   <li>
+
+    <p>Let <var title="">signature</var> be the BIT STRING value
+    resulting from ASN.1 DER encoding the signature generated by
+    applying the <var title="">signature algorithm</var> to the byte
+    string obtained by ASN.1 DER encoding the <var title="">publicKeyAndChallenge</var> structure, using <var title="">private key</var> as the signing key. <a href=#references>[X690]</a></p>
+
+   </li>
+
+   <li>
+
+    <p>Let <var title="">signedPublicKeyAndChallenge</var> be an ASN.1
+    <code><a href=#signedpublickeyandchallenge>SignedPublicKeyAndChallenge</a></code> structure as defined
+    below, with the <code title="">publicKeyAndChallenge</code> field
+    set to the <var title="">publicKeyAndChallenge</var> structure,
+    the <code title="">signatureAlgorithm</code> field set to the <var title="">algorithm</var> structure, and the <code title="">signature</code> field set to the BIT STRING <var title="">signature</var> from the previous step. <a href=#references>[X690]</a></p>
+
+   </li>
+
+   <li>
+
+    <p>Return the result of base64 encoding the result of ASN.1 DER
+    encoding the <var title="">signedPublicKeyAndChallenge</var>
+    structure. <a href=#references>[RFC3548]</a><!--base64--> <a href=#references>[X690]</a></p>
+
+   </li>
+
+  </ol><p>The data objects used by the above algorithm are defined as
+  follows. These definitions use the same "ASN.1-like" syntax defined
+  by RFC2459. <a href=#references>[RFC2459]</a></p>
+
+  <pre class=asn><dfn id=publickeyandchallenge>PublicKeyAndChallenge</dfn> ::= SEQUENCE {
+    spki <span>SubjectPublicKeyInfo</span>,
+    challenge IA5STRING
+}
+
+<dfn id=signedpublickeyandchallenge>SignedPublicKeyAndChallenge</dfn> ::= SEQUENCE {
+    publicKeyAndChallenge <a href=#publickeyandchallenge>PublicKeyAndChallenge</a>,
+    signatureAlgorithm <span>AlgorithmIdentifier</span>,
+    signature BIT STRING
+}</pre>
+
+  <hr><p><strong>Constraint validation:</strong> The <code><a href=#the-keygen-element>keygen</a></code>
+  element is <a href=#barred-from-constraint-validation>barred from constraint validation</a>.</p>
+
+  </div><p>The <code title=attr-fae-form><a href=#attr-fae-form>form</a></code> attribute is used to
+  explicitly associate the <code><a href=#the-keygen-element>keygen</a></code> element with its
+  <a href=#form-owner>form owner</a>. The <code title=attr-fe-name><a href=#attr-fe-name>name</a></code>
+  attribute represents the element's name. The <code title=attr-fe-disabled><a href=#attr-fe-disabled>disabled</a></code> attribute is used to make
+  the control non-interactive and to prevent its value from being
+  submitted. The <code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code>
+  attribute controls focus.<dl class=domintro><dt><var title="">keygen</var> . <code title=attr-keygen-type>type</code></dt>
+
+   <dd>
+
+    <p>Returns the string "<code title="">keygen</code>".</p>
+
+   </dd>
+
+  </dl><div class=impl>
+
+  <p>The <dfn id=dom-keygen-challenge title=dom-keygen-challenge><code>challenge</code></dfn> and <dfn id=dom-keygen-keytype title=dom-keygen-keytype><code>keytype</code></dfn> DOM attributes
+  must <a href=#reflect>reflect</a> the respective content attributes of the
+  same name.</p>
+
+  <p>The <dfn id=dom-keygen-type title=dom-keygen-type><code>type</code></dfn> DOM
+  attribute must return the value "<code title="">keygen</code>".</p>
+
+  <p>The <code title=dom-cva-willValidate><a href=#dom-cva-willvalidate>willValidate</a></code>, <code title=dom-cva-validity><a href=#dom-cva-validity>validity</a></code>, and <code title=dom-cva-validationMessage><a href=#dom-cva-validationmessage>validationMessage</a></code>
+  attributes, and the <code title=dom-cva-checkValidatity><a href=#dom-cva-checkvalidatity>checkValidity()</a></code> and <code title=dom-cva-setCustomValidity><a href=#dom-cva-setcustomvalidity>setCustomValidity()</a></code>
+  methods, are part of the <a href=#the-constraint-validation-api>constraint validation API</a>. The
+  <code title=dom-lfe-labels><a href=#dom-lfe-labels>labels</a></code> attribute provides a list
+  of the element's <code><a href=#the-label-element>label</a></code>s.</p>
+
+  </div><p class=note>This specification does not specify how the private
+  key generated is to be used. It is expected that after receiving the
+  <code><a href=#signedpublickeyandchallenge>SignedPublicKeyAndChallenge</a></code> (SPKAC) structure, the
+  server will generate a client certificate and offer it back to the
+  user for download; this certificate, once downloaded and stored in
+  the key store along with the private key, can then be used to
+  authenticate to services that use SSL and certificate
+  authentication.<h4 id=the-output-element><span class=secno>4.10.12 </span>The <dfn><code>output</code></dfn> element</h4><dl class=element><dt>Categories</dt>
    <dd><a href=#flow-content-0>Flow content</a>.</dd>
    <dd><a href=#phrasing-content-0>Phrasing content</a>.</dd>
    <dd><a href=#category-listed title=category-listed>Listed</a> and <a href=#category-reset title=category-reset>resettable</a> <a href=#form-associated-element>form-associated element</a>.</dd>
@@ -29812,7 +30051,7 @@
   attribute.</p>
 
   <p>The <a href=#concept-form-reset-control title=concept-form-reset-control>reset
-  algorithm</a> for <code><a href=#the-textarea-element>textarea</a></code> elements is to set the
+  algorithm</a> for <code><a href=#the-output-element>output</a></code> elements is to set the
   element's <code><a href=#textcontent>textContent</a></code> DOM attribute to the value of the
   element's <code title=dom-output-defaultValue><a href=#dom-output-defaultvalue>defaultValue</a></code>
   DOM attribute (thus replacing the element's child nodes), and then
@@ -29877,7 +30116,7 @@
   elements are always <a href=#barred-from-constraint-validation>barred from constraint
   validation</a>.</p>
 
-  </div><h4 id=association-of-controls-and-forms><span class=secno>4.10.12 </span>Association of controls and forms</h4><!-- XXX consider xreffing the 'ID' term in this section --><p>A <a href=#form-associated-element>form-associated element</a> can have a relationship
+  </div><h4 id=association-of-controls-and-forms><span class=secno>4.10.13 </span>Association of controls and forms</h4><!-- XXX consider xreffing the 'ID' term in this section --><p>A <a href=#form-associated-element>form-associated element</a> can have a relationship
   with a <code><a href=#the-form-element>form</a></code> element, which is called the element's
   <dfn id=form-owner>form owner</dfn>. If a <a href=#form-associated-element>form-associated element</a> is
   not associated with a <code><a href=#the-form-element>form</a></code> element, its <a href=#form-owner>form
@@ -29993,7 +30232,7 @@
   <a href=#form-owner>form owner</a>, it is <a href=#barred-from-constraint-validation>barred from constraint
   validation</a>.</p>
 
-  </div><h4 id=attributes-common-to-form-controls><span class=secno>4.10.13 </span><dfn>Attributes common to form controls</dfn></h4><h5 id=naming-form-controls><span class=secno>4.10.13.1 </span>Naming form controls</h5><p>The <dfn id=attr-fe-name title=attr-fe-name><code>name</code></dfn> content
+  </div><h4 id=attributes-common-to-form-controls><span class=secno>4.10.14 </span><dfn>Attributes common to form controls</dfn></h4><h5 id=naming-form-controls><span class=secno>4.10.14.1 </span>Naming form controls</h5><p>The <dfn id=attr-fe-name title=attr-fe-name><code>name</code></dfn> content
   attribute gives the name of the form control, as used in <a href=#form-submission-0>form
   submission</a> and in the <code><a href=#the-form-element>form</a></code> element's <code title=dom-form-elements><a href=#dom-form-elements>elements</a></code> object. If the attribute
   is specified, its value must not be the empty string.<div class=impl>
@@ -30007,7 +30246,7 @@
   <p>The <dfn id=dom-fe-name title=dom-fe-name><code>name</code></dfn> DOM
   attribute must <a href=#reflect>reflect</a> the <code title=attr-fe-name><a href=#attr-fe-name>name</a></code> content attribute.</p>
 
-  </div><h5 id=enabling-and-disabling-form-controls><span class=secno>4.10.13.2 </span>Enabling and disabling form controls</h5><p>The <dfn id=attr-fe-disabled title=attr-fe-disabled><code>disabled</code></dfn>
+  </div><h5 id=enabling-and-disabling-form-controls><span class=secno>4.10.14.2 </span>Enabling and disabling form controls</h5><p>The <dfn id=attr-fe-disabled title=attr-fe-disabled><code>disabled</code></dfn>
   content attribute is a <a href=#boolean-attribute>boolean attribute</a>.<p>A form control is <dfn id=concept-fe-disabled title=concept-fe-disabled>disabled</dfn>
   if its <code title=attr-fe-disabled><a href=#attr-fe-disabled>disabled</a></code> attribute is
   set, or if it is a descendant of a <code><a href=#the-fieldset-element>fieldset</a></code> element
@@ -30026,14 +30265,14 @@
 
   </div><div class=impl>
 
-  <h5 id=a-form-control-s-value><span class=secno>4.10.13.3 </span>A form control's value</h5>
+  <h5 id=a-form-control-s-value><span class=secno>4.10.14.3 </span>A form control's value</h5>
 
   <p>Form controls have a <dfn id=concept-fe-value title=concept-fe-value>value</dfn>
   and a <dfn id=concept-fe-checked title=concept-fe-checked>checkedness</dfn>. (The latter
   is only used by <code><a href=#the-input-element>input</a></code> elements.) These are used to
   describe how the user interacts with the control.</p>
 
-  </div><h5 id=autofocusing-a-form-control><span class=secno>4.10.13.4 </span>Autofocusing a form control</h5><p>The <dfn id=attr-fe-autofocus title=attr-fe-autofocus><code>autofocus</code></dfn>
+  </div><h5 id=autofocusing-a-form-control><span class=secno>4.10.14.4 </span>Autofocusing a form control</h5><p>The <dfn id=attr-fe-autofocus title=attr-fe-autofocus><code>autofocus</code></dfn>
   content attribute allows the user to indicate that a control is to
   be focused as soon as the page is loaded, allowing the user to just
   start typing without having to manually focus the main control.<p>The <code title=attr-fe-autofocus><a href=#attr-fe-autofocus>autofocus</a></code> attribute is
@@ -30067,7 +30306,7 @@
    the document was loaded.</p>
    <pre>&lt;input maxlength="256" name="q" value="" autofocus&gt;
 &lt;input type="submit" value="Search"&gt;</pre>
-  </div><h5 id=limiting-user-input-length><span class=secno>4.10.13.5 </span>Limiting user input length</h5><p>A <dfn id=attr-fe-maxlength title=attr-fe-maxlength>form control <code title="">maxlength</code> attribute</dfn>, controlled by a <var title="">dirty value flag</var> declares a limit on the number of
+  </div><h5 id=limiting-user-input-length><span class=secno>4.10.14.5 </span>Limiting user input length</h5><p>A <dfn id=attr-fe-maxlength title=attr-fe-maxlength>form control <code title="">maxlength</code> attribute</dfn>, controlled by a <var title="">dirty value flag</var> declares a limit on the number of
   characters a user can input.<p>If an element has its <a href=#attr-fe-maxlength title=attr-fe-maxlength>form
   control <code title="">maxlength</code> attribute</a> specified,
   the attribute's value must be a <a href=#valid-non-negative-integer>valid non-negative
@@ -30088,7 +30327,7 @@
   <a href=#codepoint-length>codepoint length</a> is greater than the element's
   <a href=#maximum-allowed-value-length>maximum allowed value length</a>.</p>
 
-  </div><h5 id=form-submission><span class=secno>4.10.13.6 </span>Form submission</h5><p><dfn id=attributes-for-form-submission>Attributes for form submission</dfn> can be specified both
+  </div><h5 id=form-submission><span class=secno>4.10.14.6 </span>Form submission</h5><p><dfn id=attributes-for-form-submission>Attributes for form submission</dfn> can be specified both
   on <code><a href=#the-form-element>form</a></code> elements and on <a href=#concept-submit-button title=concept-submit-button>submit button</a> (elements that
   represent buttons that submit forms, e.g. an <code><a href=#the-input-element>input</a></code>
   element whose <code title=attr-input-type><a href=#attr-input-type>type</a></code> attribute is
@@ -30182,7 +30421,7 @@
   attribute.  The <dfn id=dom-fs-formtarget title=dom-fs-formTarget><code>formTarget</code></dfn> DOM
   attribute must reflect the <code title=attr-fs-formtarget><a href=#attr-fs-formtarget>formtarget</a></code> content attribute.
 
-  </div><h4 id=constraints><span class=secno>4.10.14 </span>Constraints</h4><h5 id=definitions><span class=secno>4.10.14.1 </span>Definitions</h5><div class=impl>
+  </div><h4 id=constraints><span class=secno>4.10.15 </span>Constraints</h4><h5 id=definitions><span class=secno>4.10.15.1 </span>Definitions</h5><div class=impl>
 
   <p>A <a href=#category-listed title=category-listed>listed form-associated
   element</a> is a <dfn id=candidate-for-constraint-validation>candidate for constraint validation</dfn>
@@ -30263,7 +30502,7 @@
 
   </div><div class=impl>
 
-  <h5 id=constraint-validation><span class=secno>4.10.14.2 </span>Constraint validation</h5>
+  <h5 id=constraint-validation><span class=secno>4.10.15.2 </span>Constraint validation</h5>
 
   <p>When the user agent is required to <dfn id=statically-validate-the-constraints>statically validate the
   constraints</dfn> of <code><a href=#the-form-element>form</a></code> element <var title="">form</var>, it must run the following steps, which return
@@ -30343,7 +30582,7 @@
 
    <li><p>Return a <i>negative</i> result.</li>
 
-  </ol></div><h5 id=the-constraint-validation-api><span class=secno>4.10.14.3 </span>The <dfn>constraint validation API</dfn></h5><dl class=domintro><dt><var title="">element</var> . <code title=dom-cva-willValidate><a href=#dom-cva-willvalidate>willValidate</a></code></dt>
+  </ol></div><h5 id=the-constraint-validation-api><span class=secno>4.10.15.3 </span>The <dfn>constraint validation API</dfn></h5><dl class=domintro><dt><var title="">element</var> . <code title=dom-cva-willValidate><a href=#dom-cva-willvalidate>willValidate</a></code></dt>
 
    <dd>
 
@@ -30536,7 +30775,7 @@
 
   </div><div class=impl>
 
-  <h5 id=security-0><span class=secno>4.10.14.4 </span>Security</h5>
+  <h5 id=security-0><span class=secno>4.10.15.4 </span>Security</h5>
 
   <p>Servers should not rely on client-side validation. Client-side
   validation can be intentionally bypassed by hostile users, and
@@ -30545,15 +30784,15 @@
   validation features are only intended to improve the user
   experience, not to provide any kind of security mechanism.</p>
 
-  </div><h4 id=form-submission-0><span class=secno>4.10.15 </span><dfn>Form submission</dfn></h4><div class=impl>
+  </div><h4 id=form-submission-0><span class=secno>4.10.16 </span><dfn>Form submission</dfn></h4><div class=impl>
 
-  <h5 id=introduction-0><span class=secno>4.10.15.1 </span>Introduction</h5>
+  <h5 id=introduction-0><span class=secno>4.10.16.1 </span>Introduction</h5>
 
   <p><em>This section is non-normative.</em></p>
 
   </div><p class=XXX> ... <div class=impl>
 
-  <h5 id=implicit-submission><span class=secno>4.10.15.2 </span>Implicit submission</h5>
+  <h5 id=implicit-submission><span class=secno>4.10.16.2 </span>Implicit submission</h5>
 
   <p>User agents may establish a <a href=#concept-button title=concept-button>button</a> in each form as being the
   form's <dfn id=default-button>default button</dfn>. This should be the first <a href=#concept-submit-button title=concept-submit-button>submit button</a> in <a href=#tree-order>tree
@@ -30579,7 +30818,7 @@
 
   </div><div class=impl>
 
-  <h5 id=form-submission-algorithm><span class=secno>4.10.15.3 </span>Form submission algorithm</h5>
+  <h5 id=form-submission-algorithm><span class=secno>4.10.16.3 </span>Form submission algorithm</h5>
 
   <p>When a form <var title="">form</var> is <dfn id=concept-form-submit title=concept-form-submit>submitted</dfn> from an element <var title="">submitter</var> (typically a button), the user agent must
   run the following steps:</p>
@@ -31107,7 +31346,7 @@
 
   </ol></div><div class=impl>
 
-  <h5 id=url-encoded-form-data><span class=secno>4.10.15.4 </span>URL-encoded form data</h5>
+  <h5 id=url-encoded-form-data><span class=secno>4.10.16.4 </span>URL-encoded form data</h5>
 
   <p>The <dfn id=application-x-www-form-urlencoded-encoding-algorithm><code title="">application/x-www-form-urlencoded</code> encoding
   algorithm</dfn> is as follows:</p>
@@ -31200,7 +31439,7 @@
 
   </ol></div><div class=impl>
 
-  <h5 id=multipart-form-data><span class=secno>4.10.15.5 </span>Multipart form data</h5>
+  <h5 id=multipart-form-data><span class=secno>4.10.16.5 </span>Multipart form data</h5>
 
   <p>The <dfn id=multipart-form-data-encoding-algorithm><code title="">multipart/form-data</code> encoding
   algorithm</dfn> is to encode the <var title="">form data set</var>
@@ -31218,7 +31457,7 @@
 
   </div><div class=impl>
 
-  <h5 id=plain-text-form-data><span class=secno>4.10.15.6 </span>Plain text form data</h5>
+  <h5 id=plain-text-form-data><span class=secno>4.10.16.6 </span>Plain text form data</h5>
 
   <p>The <dfn id=text-plain-encoding-algorithm><code title="">text/plain</code> encoding
   algorithm</dfn> is as follows:</p>
@@ -31273,7 +31512,7 @@
 
   </ol></div><div class=impl>
 
-  <h4 id=resetting-a-form><span class=secno>4.10.16 </span>Resetting a form</h4>
+  <h4 id=resetting-a-form><span class=secno>4.10.17 </span>Resetting a form</h4>
 
   <p>When a form <var title="">form</var> is <dfn id=concept-form-reset title=concept-form-reset>reset</dfn>, the user agent must invoke
   the <a href=#concept-form-reset-control title=concept-form-reset-control>reset algorithm</a>
@@ -31290,7 +31529,7 @@
 
   </div><div class=impl>
 
-  <h4 id=event-dispatch><span class=secno>4.10.17 </span>Event dispatch</h4>
+  <h4 id=event-dispatch><span class=secno>4.10.18 </span>Event dispatch</h4>
 
   <p>When the user agent is to <dfn id=broadcast-forminput-events>broadcast <code title=event-forminput>forminput</code> events</dfn> or
   <dfn id=broadcast-formchange-events>broadcast <code title=event-formchange>formchange</code>
@@ -49860,7 +50099,8 @@
    </dd>
 
    <dt>A start tag whose tag name is one of: "area", "basefont",
-   "bgsound", "br", "embed", "img", "input", "spacer", "wbr"</dt>
+   "bgsound", "br", "embed", "img", "input", "keygen", "spacer",
+   "wbr"</dt>
    <dd>
 
     <p><a href=#reconstruct-the-active-formatting-elements>Reconstruct the active formatting elements</a>, if
@@ -49984,15 +50224,6 @@
 
    </dd>
 
-<!-- XXX keygen support; don't forget form element pointer!
-     Search for 'keygen' elsewhere in the spec when doing this.
-
-   <dt>A start tag whose tag name is "keygen"</dt>
-   <dd>
-    ...
-   </dd>
--->
-
    <dt>A start tag whose tag name is "textarea"</dt>
    <dd>
 
@@ -50188,10 +50419,9 @@
    "thead", "tr"</dt>
    <!--<dt>An end tag whose tag name is one of: "area", "base",
    "basefont", "bgsound", "command", "embed", "hr", "iframe", "image",
-   "img", "input", "isindex", "link", "meta", "noembed", "noframes",
-   "param", "script", "select", "source", "spacer", "style", "table",
-   "textarea", "title", "wbr"</dt>--> <!-- add keygen if we add the
-   start tag -->
+   "img", "input", "isindex", "keygen", "link", "meta", "noembed",
+   "noframes", "param", "script", "select", "source", "spacer",
+   "style", "table", "textarea", "title", "wbr"</dt>-->
    <!--<dt>An end tag whose tag name is "noscript", if the
    <span>scripting flag</span> is enabled</dt>-->
    <dd>
@@ -51911,13 +52141,13 @@
         <code><a href=#the-area-element>area</a></code>, <code><a href=#the-base-element>base</a></code>, <code>basefont</code>,
         <code>bgsound</code>, <code><a href=#the-br-element>br</a></code>, <code><a href=#the-col-element>col</a></code>,
         <code><a href=#the-embed-element>embed</a></code>, <code>frame</code>, <code><a href=#the-hr-element>hr</a></code>,
-        <code><a href=#the-img-element>img</a></code>, <code><a href=#the-input-element>input</a></code>, <code><a href=#the-link-element>link</a></code>,
-        <code><a href=#meta>meta</a></code>, <code><a href=#the-param-element>param</a></code>, <code>spacer</code>, or
-        <code>wbr</code> element, then continue on to the next child
-        node at this point.</p> <!-- also, i guess: image, isindex,
-        and keygen, but we don't list those because we don't consider
-        those "elements", more "macros", and thus we should never
-        serialize them -->
+        <code><a href=#the-img-element>img</a></code>, <code><a href=#the-input-element>input</a></code>, <code><a href=#the-keygen-element>keygen</a></code>,
+        <code><a href=#the-link-element>link</a></code>, <code><a href=#meta>meta</a></code>, <code><a href=#the-param-element>param</a></code>,
+        <code>spacer</code>, or <code>wbr</code> element, then
+        continue on to the next child node at this point.</p> <!--
+        also, i guess: image and isindex, but we don't list those
+        because we don't consider those "elements", more "macros", and
+        thus we should never serialize them -->
 
         <p>If <var title="">current node</var> is a <code><a href=#the-pre-element>pre</a></code>,
         <code><a href=#the-textarea-element>textarea</a></code>, or <code>listing</code> element, append
@@ -55418,7 +55648,7 @@
 
   <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
 
-table, input, select, option, optgroup, button, textarea<!--, keygen --> {
+table, input, select, option, optgroup, button, textarea, keygen {
   text-indent: initial;
 }</pre>
 
@@ -56206,6 +56436,19 @@
 
 
 
+  <h4 id=the-keygen-element-0><span class=secno>10.4.18 </span>The <code><a href=#the-keygen-element>keygen</a></code> element</h4>
+
+  <pre class=css>@namespace url(http://www.w3.org/1999/xhtml);
+
+keygen { binding: <i title="">keygen</i>; }</pre>
+
+  <p>When the <i title="">keygen</i> binding applies to a
+  <code><a href=#the-keygen-element>keygen</a></code> element, the element is expected to render as an
+  'inline-block' box containing a user interface to configure the key
+  pair to be generated.</p>
+
+
+
   <h3 id=frames-and-framesets><span class=secno>10.5 </span>Frames and framesets</h3>
 
   <p>When an <code><a href=#the-html-element>html</a></code> element's second child element is a
@@ -57118,6 +57361,7 @@
   Lachlan Hunt,
   Larry Page,
   Lars Gunther<!-- Keryx Web -->,
+  Lars Sunberg<!-- surname uncertain -->,
   Laura L. Carlson,
   Laura Wisewell,
   Laurens Holst,
@@ -57257,6 +57501,7 @@
   Wladimir Palant,
   Wolfram Kriesing,
   Yi-An Huang,
+  Yngve Nysaeter Pettersen,
   Zhenbin Xu,
   and
   &Oslash;istein E. Andersen,
Received on Tuesday, 7 April 2009 06:48:54 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 18 December 2010 06:14:04 GMT