The Current State of HTML5 Forms

The keygen Element

<keygen name=key>
<keygen name=key challenge=wufoo keytype=rsa>

Live Demo



Firefox
3.6+
Safari
4+
Safari Mobile
7-
Chrome
6+
Opera
10.6+
IE
11-
Android
2.3+
Supported Supported No support Supported Supported No support Supported

Supported Browser Screenshots

Chrome, Opera (Blink)
Opera (Presto)

The Low Down

The <keygen> form field creates a Public Key / Private Key pair. Private Key is encrypted (based on the choice) and stored in the Local Key Database. The Public Key is sent with the form data. Also, it's way more complicated than that.

  • In addition to the global attributes, and the regular form field attributes of name, form, disabled and autofocus attributes, <keygen> also supports challenge, and keytype.
  • The value will be created by the browser and submitted with the form without going thru any native constraint validation.
  • The challenge attribute enables submitting a challenge string along with the public key. The default is an empty string.
  • The keytype attribute is the type of key to generate. It defaults to RSA.
  • You can feel a significant lag when submitting a form (at least upon first generating)
  • Dropdown options in Chrome and Opera running Blink: 2048 (High Grade), 1024 (Medium Grade), with Presto versions providing a dropdown with 1024, 1280, 1536, 1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840, 4096 as options.
  • Dropdown options in Safari 5: 2048 (High Grade), 1024 (Medium Grade), 512 (Low Grade)
  • Dropdown options in Firefox and Android: High Grade, Medium Grade
  • IE doesn't (and doesn't intend) to support it.
  • iOS claims to support it but creates a non-functioning empty dropdown.