2015-09-03 11:58:00 +00:00
<!doctype html>
< html >
< head >
2015-09-03 13:09:48 +00:00
< title > js-keygen< / title >
2015-09-03 11:58:00 +00:00
< script src = "base64url.js" > < / script >
< script src = "ssh-util.js" > < / script >
2015-09-03 13:09:48 +00:00
< script src = "js-keygen-ui.js" > < / script >
< script src = "js-keygen.js" > < / script >
2015-09-03 12:54:43 +00:00
< link rel = "stylesheet" href = "js-keygen.css" >
2015-09-03 11:58:00 +00:00
< / head >
< body >
2015-09-03 13:09:48 +00:00
< h1 > js-keygen< / h1 >
Generate a keypair to be used with openSSH, this replicate ssh-keygen function in javascript in the browser, using the webcrypto api and a bit of glue.< br >
2015-09-03 13:48:51 +00:00
For an in-depth explanation on how this work, see the < a href = "http://blog.roumanoff.com/2015/09/using-webcrypto-api-to-generate-keypair.html" > blog post< / a > .< br >
2015-09-03 12:54:43 +00:00
Usually you would want to save the private key to the machine initiating the ssh connection, and you want to copy the public key to the system receiving the connection.< br >
2015-09-03 13:09:48 +00:00
No data is being sent to the server, everything happens within the context of this web page.< br >
< a href = "https://twitter.com/share" class = "twitter-share-button" data-via = "pkr2" > Tweet< / a >
< script > ! function ( d , s , id ) { var js , fjs = d . getElementsByTagName ( s ) [ 0 ] , p = /^http:/ . test ( d . location ) ? 'http' : 'https' ; if ( ! d . getElementById ( id ) ) { js = d . createElement ( s ) ; js . id = id ; js . src = p + '://platform.twitter.com/widgets.js' ; fjs . parentNode . insertBefore ( js , fjs ) ; } } ( document , 'script' , 'twitter-wjs' ) ; < / script > < hr >
2015-09-03 12:54:43 +00:00
< div > < label for = "name" > Name:< / label > < input id = "name" type = "text" value = "webcrypto" > < / div >
< div > < label for = "alg" > Algorithm:< / label > < select id = "alg" disabled >
< option value = "RSASSA-PKCS1-v1_5" selected > RSASSA-PKCS1-v1_5< / option >
< option value = "RSA-PSS" > RSA-PSS< / option >
< option value = "ECDSA" > ECDSA< / option >
< / select >
< label for = "size" > Size:< / label > < select id = "size" disabled >
< option value = "1024" selected > 1024< / option >
< option value = "2048" > 2048< / option >
< option value = "4096" > 4096< / option >
< / select >
< / div >
< div > < label for = "hash" > Hash:< / label > < select id = "hash" disabled >
< option value = "SHA-1" selected > SHA-1< / option >
2015-09-03 11:58:00 +00:00
< option value = "SHA-256" > SHA-256< / option >
< option value = "SHA-384" > SHA-384< / option >
< option value = "SHA-512" > SHA-512< / option >
< / select > < / div >
2015-09-03 12:54:43 +00:00
< label for = "generate" > < / label > < button id = "generate" > Generate< / button >
2015-09-03 11:58:00 +00:00
< br >
2015-09-03 12:54:43 +00:00
< hr >
< a id = "private" style = "display: none;" href = "" download = "id_rsa" > id_rsa< / a >
< a id = "public" style = "display: none;" href = "" download = "id_rsa.pub" > id_rsa.pub< / a >
Private Key < button id = "copyPrivate" > Copy< / button > or < button id = "savePrivate" > Save< / button > < br >
< textarea id = "privateKey" style = "height: 150px;" spellcheck = "false" > < / textarea >
2015-09-03 11:58:00 +00:00
2015-09-03 12:54:43 +00:00
< hr >
Public Key < button id = "copyPublic" > Copy< / button > or < button id = "savePublic" > Save< / button > < br >
< textarea id = "publicKey" spellcheck = "false" > < / textarea >
2015-09-03 13:09:48 +00:00
< hr >
Made with < span style = "color:magenta;" > ♥ < / span > by < a href = "http://blog.roumanoff.com" > Patrick Roumanoff< / a >
< a href = "https://github.com/PatrickRoumanoff/js-keygen" > < img style = "position: absolute; top: 0; right: 0; border: 0;" src = "https://camo.githubusercontent.com/365986a132ccd6a44c23a9169022c0b5c890c387/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f7265645f6161303030302e706e67" alt = "Fork me on GitHub" data-canonical-src = "https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" > < / a >
2015-09-03 11:58:00 +00:00
< / body >
< / html >