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.