<keygen>

This translation is incomplete. Please help translate this article from English.

Deprecated
This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Avoid using it and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

L'element HTML <keygen> existeix per facilitar la generació de material clau, i la presentació de la clau pública com a part d'un formulari HTML. Aquest mecanisme està dissenyat per funcionar amb sistemes de gestió de certificats basats en web. S'espera que l'element <keygen> s'utilitzi en un formulari HTML juntament amb una altra informació necessària per construir una sol·licitud de certificat, i que el resultat del procés serà un certificat signat.

En l'actualitat existeix el debat entre els fabricants de navegadors web, si mantenir aquesta característica o no. Fins que s'arribi a una decisió, és millor segui considerant aquesta característica com desaprovada i desapareguda.

Categories de continguts Contingut dinàmic, phrasing content, contingut interactiu, enumerta, etiquetable, presentable, reajustable  element associat a formulari, contingut palpable.
Contingut permès Cap, és un empty element.
Omissió de l'etiqueta Ha de tenir una etiqueta d'inici i no  una etiqueta de tancament.
Elements pares permesos Qualsevol element que accepti phrasing content.
Interfície DOM HTMLKeygenElement

Atributs

Aquest element inclou els atributs globals.

autofocus
Aquest atribut booleà permet especificar que el control ha de tenir el focus d'entrada quan es carrega la pàgina, llevat que l'usuari ho anul·li, per exemple escrivint en un control diferent. Només un element de formulari en un document pot tenir l'atribut autofocus, el qual és un valor booleà.
challenge
Una cadena de repte que s'envia juntament amb la clau pública. El valor per omissió és una cadena buida si no s'especifica.
disabled
Aquest atribut booleà indica que el control de formulari no està disponible per a la interacció.
form
L'element formulari al que està associat aquest element (el seu propietari de formulari). El valor de l'atribut ha de ser un id d'un element <form> en el mateix document. Si no s'especifica aquest atribut, aquest element ha de ser un descendent d'un element <form>. Aquest atribut li permet dipositar elements <keygen> en qualsevol lloc dins d'un document, no només com descendents dels seus elements de formulari
keytype
El tipus de clau generada. El valor per defecte és RSA.
name
El nom del control, que es presenta amb les dades del formulari.

L'element s'escriu així:

<keygen name="name" challenge="challenge string" keytype="type" keyparams="pqg-params">

El paràmetre keytype s'utilitza per especificar quin tipus de clau es generarà. Els valors vàlids són "RSA", que és el valor per defecte, "DSA" i "CE". El name i els atributs challenge són necessaris en tots els casos. L'atribut keytype és opcional per a la generació de claus RSA i  necessària per a la generació de claus DSA i CE. L'atribut  keyparams és necessari per a la generació de claus DSA i CE i ignorat per a la generació de claus RSA. PQG és sinònim de keyparams. És a dir, es pot especificar keyparams= "pqg-params" o pqg="pqg-params".

Per a les claus RSA, el paràmetre keyparams no s'utilitza (s'ignora si està present). L'usuari pot tenir una opció dels nivells de qualitat de la clau RSA. Actualment, l'usuari ha de triar entre nivell de qualitat "high" (2048 bits) i nivell de qualitat "medium" (1024 bits).

Per a les claus DSA, el paràmetre keyparams especifica els paràmetres DSA PQG que es van a utilitzar en el procés keygen. El valor del paràmetre pqg és BASE64 codificat, DER codificat DSS-Parms com s'especifica en IETF RFC 3279. L'usuari pot tenir una varietat de mides de clau DSA, el que permet a l'usuari triar una de les mides definides en l'estàndard DSA.

Per a les claus CE, el paràmetre keyparams especifica el nom de la corba el·líptica en la qual es genera la clau. Normalment és una cadena de la taula nsKeygenHandler.cpp. (Tingui en compte que només un subconjunt de les corbes nomenades allí pot ser suportat en qualsevol navegador en particular.) Si la cadena de paràmetres keyparams no és una cadena de nom de corba reconeixible, es tria una corba d'acord amb la qualitat de la clau triada per l'usuari (baixa, mitja , alta), utilitzant la corba anomenada "secp384r1" per a les claus altes, i la corba anomenada "secp256r1" per a les claus mitjanes. (Nota: Per determinar el nombre de claus de qualitat, els valors per defecte per a cada nivell de qualitat, i la interfície d'usuari mitjançant la qual s'ofereix a l'usuari una elecció, es troben fora de l'abast d'aquesta especificació.)

L'element <keygen> només és vàlida dins d'un formulari HTML. Això causarà algun tipus de selecció que es presenta a l'usuari per a la selecció de mida de la clau. La interfície d'usuari per a la selecció pot ser un menú, botons de radi, possiblement una altra cosa. El navegador presenta diverses claus de qualitat possibles. En l'actualitat, dos nivells de qualitat s'ofereixen, mitja i alta. Si el navegador de l'usuari està configurat per suportar maquinari criptogràfic (per exemple, les "targetes intel·ligents") l'usuari també es pot donar l'opció d'on generar la clau, és a dir, en una targeta intel·ligent o en el programari i emmagatzemar-la en el disc.

Quan es prem el botó d'enviar, es genera un parell de claus de la mida seleccionada. La clau privada es xifra i s'emmagatzema a la base de dades de claus local.

   PublicKeyAndChallenge ::= SEQUENCE {
       spki SubjectPublicKeyInfo,
       challenge IA5STRING
   }
   SignedPublicKeyAndChallenge ::= SEQUENCE {
       publicKeyAndChallenge PublicKeyAndChallenge,
       signatureAlgorithm AlgorithmIdentifier,
       signature BIT STRING
   }

La clau pública i la cadena de repte són DER codificades com PublicKeyAndChallenge, i a continuació, signades digitalment amb la clau privada per produir SignedPublicKeyAndChallenge. El SignedPublicKeyAndChallenge és Base64 codificada, i les dades ASCII finalment s'envia al servidor com el valor d'un parell de nom / valor de formulari, on el nom és el name especificat per l'atribut name de l' element keygen. Si no es proporciona cap cadena de repte, llavors es codificarà com una IA5STRING de longitud zero.

Heus aquí un exemple d'enviament de formularis, ja que seria lliurat a un programa CGI pel servidor HTTP:

   commonname=John+Doe&email=doe@foo.com&org=Foobar+Computing+Corp.&
   orgunit=Bureau+of+Bureaucracy&locality=Anytown&state=California&country=US&
   key=MIHFMHEwXDANBgkqhkiG9w0BAQEFAANLADBIAkEAnX0TILJrOMUue%2BPtwBRE6XfV%0AWtKQbsshxk5ZhcUwcwyvcnIq9b82QhJdoACdD34rqfCAIND46fXKQUnb0mvKzQID%0AAQABFhFNb3ppbGxhSXNNeUZyaWVuZDANBgkqhkiG9w0BAQQFAANBAAKv2Eex2n%2FS%0Ar%2F7iJNroWlSzSMtTiQTEB%2BADWHGj9u1xrUrOilq%2Fo2cuQxIfZcNZkYAkWP4DubqW%0Ai0%2F%2FrgBvmco%3D

Exemples

Especificacions

Especificació Estat Comentari
WHATWG HTML Living Standard
The definition of '<keygen>' in that specification.
Living Standard  
HTML5
The definition of '<keygen>' in that specification.
Recommendation  

Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari
uport bàsic 1.0 [1] 1.0 (1.7 or earlier) No support 3.0 1.2
Característica Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
uport bàsic 2.3 (Yes) [1] 1.0 (1.0) No support ? No support (Yes) [1]

[1] Desaprovat en Chrome 49.

Document Tags and Contributors

 Contributors to this page: Legioinvicta
 Last updated by: Legioinvicta,