|
1 | 1 |
|
2 | 2 |
|
| 3 | +<!DOCTYPE html> |
| 4 | + |
| 5 | + |
3 | 6 | <html> |
4 | 7 |
|
5 | 8 | <head> |
| 9 | + <meta charset=utf-8> |
6 | 10 |
|
7 | | - <title>generate key pair</title> |
| 11 | + <title> |
| 12 | + Generate Key Pair |
| 13 | + </title> |
| 14 | + |
| 15 | + <meta name=description content='generate rsa key pair'> |
8 | 16 |
|
9 | 17 | <base href='https://ext-code.com/utils/x509/generate-key-pair/'> |
10 | | - <base href='https://javascript-2020.github.io/utils/x509/generate-key-pair/'> |
| 18 | + <link rel=canonical href='https://ext-code.com/utils/x509/generate-key-pair/generate-key-pair.html'> |
| 19 | + |
| 20 | + <link rel=icon type='image/x-icon' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAVFBMVEVHcEwAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEAAAABAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEAAAABAQEAAACsl1DQAAAAG3RSTlMA+Nbo8C8MBGaeFKt9TBx0ijlZy5XAUkQi4Lb6C8LjAAABM0lEQVQoz31TibKDIAzkkBsqBbXV/f//fMHOq9IrMw6jmw2bTWSsC6PZ19Bp2ja3fMm4Bw4KHu6f0MtMkBCUsnnzDkegJu9TBeISXyt4gfVKRx5XiDKI1MPXAY6UTwgOQ1n33FPcODJjC8eWwZMjBV0HSiIYE8BtwKD8jKGja/qwkIBqB1TNLGC76pZD2hXztgPlFdYT4CqE445uJQHLm/YaKMUSepMQlx5u7EWSqSXFlbzpUbUTSBh5S0/wzykq9SCPdKS5gTz7wxEpJ3X9v82nKCBPnlMTkOJB3qP5dmppFG3Qh9TyIuwShxO5qdzMu+xnudp3baYzmTHXD+RMNqpk0WeTn89XK5vOthtH8cXqozD4Svb7z/uscrzd20p8/yHYCJQfMG1e/AHrHH4VZ+bh2h/qTRXn16T2TQAAAABJRU5ErkJggg=='> |
| 21 | + <meta name=viewport content='width=device-width, initial-scale=1'> |
| 22 | + |
| 23 | + <script type='application/ld+json'> |
| 24 | + { |
| 25 | + "@context" : "https://schema.org", |
| 26 | + "@type" : "SoftwareApplication", |
| 27 | + "name" : "Generate Key Pair", |
| 28 | + "url" : "https://ext-code.com/utils/x509/generate-https-certificate/generate-https-certificate.html", |
| 29 | + "author" : {"@type":"Person","name":"Matthew Richards"}, |
| 30 | + "description" : "Generate rsa keypair", |
| 31 | + "applicationCategory" : "DeveloperApplication", |
| 32 | + "operatingSystem" : "All", |
| 33 | + "browserRequirements" : "Requires JavaScript-enabled browser", |
| 34 | + "softwareVersion" : "1.0.0", |
| 35 | + "offers" : {"@type":"Offer","price":"0","priceCurrency":"GBP"} |
| 36 | + } |
| 37 | + </script> |
| 38 | + |
| 39 | + |
| 40 | + <script src='https://libs.ext-code.com/js/dom/component/component.js'></script> |
| 41 | + |
| 42 | + <script init> |
| 43 | + console.clear(); |
| 44 | + console.log('generate-key-pair-v2.0.html'); |
| 45 | + console.log(); |
| 46 | + console.json=v=>console.log(JSON.stringify(v,null,4)); |
11 | 47 |
|
12 | | - <link rel='shortcut icon' type='image/x-icon' href='images/favicon.ico'> |
| 48 | + var df=true,did='gen-https-cert' |
| 49 | + ; |
| 50 | + |
| 51 | + var ext; |
| 52 | + var $; |
| 53 | + var datatype; |
| 54 | + var menumod; |
| 55 | + var keydown; |
| 56 | + var debug; |
13 | 57 |
|
14 | 58 |
|
15 | | - <script init> |
| 59 | + var menu; |
| 60 | + |
| 61 | + |
| 62 | + var hdr; |
| 63 | + |
| 64 | + //: |
| 65 | + |
16 | 66 |
|
| 67 | + async function init(){ |
| 68 | + |
| 69 | + |
| 70 | + menu = menumod(); |
| 71 | + |
| 72 | + |
| 73 | + hdr = mod['x509-hdr']; |
| 74 | + |
| 75 | + hdr.initmod({ext,$,menu}); |
| 76 | + |
| 77 | + await Promise.all([ |
| 78 | + hdr.init(), |
| 79 | + ]); |
| 80 | + |
| 81 | + |
| 82 | + |
| 83 | + initdom(document.body); |
| 84 | + |
| 85 | + |
| 86 | + console.log('ready'); |
| 87 | + }//init |
| 88 | + |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | +(async()=>{ |
| 93 | + |
| 94 | + mod.stack.add; |
| 95 | + |
| 96 | + var {ext} = await import('https://libs.ext-code.com/js/io/ext-loader/ext-loader.m.js'); |
| 97 | + |
| 98 | + var promise = ext.load.libs( |
| 99 | + 'js/dom/$.js.api', |
| 100 | + 'js/core/datatype.js', |
| 101 | + 'js/dom/menumod/menumod.js', |
| 102 | + 'js/dom/keydown/keydown.js', |
| 103 | + 'js/debug/debug.js', |
| 104 | + ); |
| 105 | + [$,datatype,menumod,keydown,debug] = await promise; |
| 106 | + |
| 107 | + |
| 108 | + mod.stack.complete; |
| 109 | + |
| 110 | +})(); |
| 111 | + |
17 | 112 | </script init> |
| 113 | + |
| 114 | + |
18 | 115 |
|
19 | 116 |
|
20 | 117 | <style> |
|
23 | 120 | {height:100%} |
24 | 121 | body |
25 | 122 | {height:calc(100% - 42px);margin:20px;display:flex;flex-direction:column;font-family:arial} |
| 123 | + |
| 124 | + x509-hdr |
| 125 | + {margin-bottom:20px} |
| 126 | + |
26 | 127 | .hdr |
27 | 128 | {font-family:arial;position:relative;margin-top:0;margin-bottom:20px;background:white; |
28 | 129 | padding-bottom:10px;border-bottom:3px solid lightblue} |
|
58 | 159 | {flex:1} |
59 | 160 | pre |
60 | 161 | {border:1px solid lightgray;padding:10px;font-family:monospace} |
| 162 | + |
| 163 | + |
| 164 | + .visually-hidden |
| 165 | + {position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important; |
| 166 | + clip:rect(0 0 0 0) !important;white-space:nowrap !important;border:0 !important} |
| 167 | + |
61 | 168 |
|
62 | 169 | </style> |
63 | 170 |
|
|
67 | 174 |
|
68 | 175 | <body> |
69 | 176 |
|
70 | | - |
| 177 | + |
| 178 | + <x509-hdr component=grp v2.0> |
| 179 | + <h1 class=visually-hidden> |
| 180 | + Generate Key Pair |
| 181 | + </h1> |
| 182 | + <img class=title src='images/generate-key-pair.png' style='top:5px;height:55px' alt='generate key pair'> |
| 183 | + <time slot=date datetime=2025-11-15> |
| 184 | + 15 Nov 2025 |
| 185 | + </time> |
| 186 | + </x509-hdr> |
| 187 | + |
| 188 | + |
| 189 | + |
| 190 | + |
| 191 | +<!-- |
71 | 192 | <div class=hdr> |
72 | 193 | <a class=hdr-icon href='https://javascript-2020.github.io/'> |
73 | 194 | <img class=hdr-icon-img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAqFBMVEVHcEwjmpckopg9f3YxpJM6r5kjq58Nmp0Nn6QRoKExrpshnpgtoJUdoZwYnZ02spwYpaEmrZ8djpINn6Qtrp4inpcjqZ8SoqM3s5w0sp01spwrr58vr50oqpwdnpo0sZwtrJwUpKMMoaUtq50op5ssqpopppseqaM1sJwgpJ0NoaUSoaI3kYobqaMSpKQrr58PoaMVpaIOoKMLpKcXpaEkqp8Rm58YrKUL0CR4AAAAOHRSTlMACBkBCyinK59CQhUOLyKjqbUGpZgSYn6rp5WsekcmgkyWmCkmNB7AYTiuVgKuuo91i2PLn2lJ7kISMf4AAAElSURBVCjPrdPXloIwEAbgBDFKCRo6SO8lYEHd93+zxV7Zm2WuSL6Tk/MPEwBGLFH8SzFCeFiDXNeJ+7GtGds1D+ghDzzPzXX6xlJbq75s5KVLiJsSB76xIhd22Mz0pkyRnqzW2htD/SeUjL0EQKY60nqRvTLXGl64PR/SfDVxVvETZ123w8vN9Ur5YKUF4R9cd/WxqiePgCs3IMF1QXcVt6vK59tSqyjN4hwQbhS8mUuvWTLbwYtTQGhEjLHVPprv+4ztQ8AeRVn50uipBcXg/IPgfPaFF+z1axyeMEkcJwwdYHHZINQ02gALS49lJcQMci/COGzdue8apRQwNz4tYvM207JSRVEUhvtW6KeBIFVVbds07xPncZfCfWSK+UtNJ/9+VL/nTBuX7xjDZwAAAABJRU5ErkJggg==' /> |
|
88 | 209 | 22 Apr 2025 |
89 | 210 | </div> |
90 | 211 | </div hdr> |
| 212 | +--> |
| 213 | + |
| 214 | + |
91 | 215 |
|
92 | 216 |
|
93 | 217 | <div id=btns> |
|
159 | 283 | //: |
160 | 284 |
|
161 | 285 |
|
162 | | - setTimeout(initdom,50); |
163 | | - |
164 | 286 |
|
165 | | - function initdom(){ |
| 287 | + function initdom(rootnode){ |
166 | 288 |
|
167 | 289 | var root = document.body; |
168 | 290 |
|
| 291 | + hdr.initdom(root); |
| 292 | + |
169 | 293 | $('[value=generate]').onclick = btn.generate; |
170 | 294 |
|
171 | 295 |
|
|
263 | 387 | var format = type=='public' ? 'spki' : 'pkcs8'; |
264 | 388 | var buf = await window.crypto.subtle.exportKey(format,key); |
265 | 389 | var b64 = buf_b64(buf); |
266 | | - var pem = hdr(type)+b64+ftr(type); |
| 390 | + var pem = cert_hdr(type)+b64+cert_ftr(type); |
267 | 391 | var txt = pretty.out(pem); |
268 | 392 | return txt; |
269 | 393 |
|
270 | 394 | }//export |
271 | 395 | fn.export.public = public=>fn.export('public',public); |
272 | 396 | fn.export.private = private=>fn.export('private',private); |
273 | 397 |
|
274 | | - var hdr = (type='public')=>`-----BEGIN ${type.toUpperCase()} KEY-----`; |
275 | | - var ftr = (type='public')=>`-----END ${type.toUpperCase()} KEY-----`; |
| 398 | + var cert_hdr = (type='public')=>`-----BEGIN ${type.toUpperCase()} KEY-----`; |
| 399 | + var cert_ftr = (type='public')=>`-----END ${type.toUpperCase()} KEY-----`; |
276 | 400 |
|
277 | 401 | function buf_b64(buf){ |
278 | 402 |
|
|
287 | 411 |
|
288 | 412 | var {hdr,b64,ftr} = extract(pem); |
289 | 413 | var txt = hdr+'\n'; |
290 | | - var n = hdr.length; |
| 414 | + var n = 64; |
291 | 415 | var i = 0; |
292 | 416 | while(i<b64.length){ |
293 | 417 |
|
|
0 commit comments