|
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>verify certificate</title> |
| 11 | + <title> |
| 12 | + Verify Certificate |
| 13 | + </title> |
| 14 | + |
| 15 | + <meta name=description content='verify x509 certificate'> |
8 | 16 |
|
9 | 17 | <base href='https://ext-code.com/utils/x509/verify-certificate/'> |
10 | | - <base href='https://javascript-2020.github.io/utils/x509/verify-certificate/'> |
| 18 | + <link rel=canonical href='https://ext-code.com/utils/x509/verify-certificate/verify-certificate.html'> |
11 | 19 |
|
12 | | - <link rel='shortcut icon' type='image/x-icon' href='images/favicon.ico'> |
| 20 | + <link rel=icon href='images/data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAASFBMVEVHcEwihb8ghsMkhb0hhcEog7gghsMjhL4hhcEghsQhhsIihcEghsMlhLwhhb8hhsIghsM1ga0jhb8hhsIihcEhhsIhhsIghsTjBA94AAAAF3RSTlMATPIXeAbnKIr6n1zZDjvF0QIwuGqyvwIDyU4AAAENSURBVCjPrZPZrsMgDESx2ZewU///n17SVFVF6H2qX1A4ymTGdhj7YXH+FR1c1pSq5MeOSheaIlItOLnBerLQWrCk9F0ZBiXPpeQ+0YBV31gaL1t8kDUrpnBJRtd1oBULEpeDjPB+eFfNGC/7J4mY6yct7rQLnoPN/BnClU/uESvr+HhQP7UQ/WptXvRXZr+x1g4mjTo7drTVGnNkRWFSzy8XYcktODqF5tkXblC5eGsrIGXTu8k0k2/mmQhpFlLaTfQADwJRzGO3EyI/ggAQIWVT7muUp7D1YOeh6g37635Oy6rbPJkcp63ZaUNDA6zqUYX53kykU9xtWuRRnYmKlts9Lkz0f/8BKdlv6w+Edg1IkaSBUwAAAABJRU5ErkJggg=='> |
| 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" : "Verify Certificate", |
| 28 | + "url" : "https://ext-code.com/utils/x509/verify-certificate/verify-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('verify-certificate.html'); |
| 45 | + console.log(); |
| 46 | + console.json=v=>console.log(JSON.stringify(v,null,4)); |
| 47 | + var nodeforge; |
13 | 48 |
|
| 49 | + |
| 50 | + var df=true,did='html' |
| 51 | + ; |
| 52 | + |
| 53 | + var ext; |
| 54 | + var $; |
| 55 | + var datatype; |
| 56 | + var menumod; |
| 57 | + var keydown; |
| 58 | + var debug; |
14 | 59 |
|
15 | | - <script init> |
16 | | - </script init> |
| 60 | + |
| 61 | + var menu; |
| 62 | + |
| 63 | + |
| 64 | + var hdr; |
| 65 | + |
| 66 | + //: |
| 67 | + |
| 68 | + |
| 69 | + async function init(){ |
| 70 | + |
| 71 | + |
| 72 | + await load(); |
| 73 | + |
| 74 | + |
| 75 | + menu = menumod(); |
| 76 | + |
| 77 | + |
| 78 | + hdr = mod['x509-hdr']; |
| 79 | + |
| 80 | + hdr.initmod({ext,$,menu}); |
| 81 | + |
| 82 | + await Promise.all([ |
| 83 | + hdr.init(), |
| 84 | + ]); |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | + initdom(document.body); |
| 89 | + |
| 90 | + |
| 91 | + console.log('ready'); |
| 92 | + }//init |
| 93 | + |
| 94 | + |
| 95 | +(async()=>{ |
| 96 | + |
| 97 | + mod.stack.add; |
| 98 | + |
| 99 | + var {ext} = await import('https://libs.ext-code.com/js/io/ext-loader/ext-loader.m.js'); |
| 100 | + |
| 101 | + var promise = ext.load.libs( |
| 102 | + 'js/dom/$.js.api', |
| 103 | + 'js/core/datatype.js', |
| 104 | + 'js/dom/menumod/menumod.js', |
| 105 | + 'js/dom/keydown/keydown.js', |
| 106 | + 'js/debug/debug.js', |
| 107 | + ); |
| 108 | + [$,datatype,menumod,keydown,debug] = await promise; |
| 109 | + |
| 110 | + |
| 111 | + mod.stack.complete; |
| 112 | + |
| 113 | +})(); |
| 114 | + |
| 115 | + |
| 116 | + async function load(){ |
| 117 | + |
| 118 | + await Promise.all([load.ext(),load.nodeforge()]); |
| 119 | + |
| 120 | + }//load |
| 121 | + |
| 122 | + |
| 123 | + load.ext = async function(){ |
| 124 | + |
| 125 | + var res = await fetch('https://raw.githubusercontent.com/javascript-2020/ext-code/main/ext-loader.js') |
| 126 | + var txt = await res.text(); |
| 127 | + ext = eval(txt); |
| 128 | + [$,datatype] = await ext.load.libs('js/dom/$.js','js/core/datatype.js'); |
| 129 | + |
| 130 | + }//ext |
| 131 | + |
| 132 | + |
| 133 | + load.nodeforge = async function(){ |
| 134 | + |
| 135 | + var txt = localStorage['node-forge']; |
| 136 | + if(!txt){ |
| 137 | + var url = 'https://cdn.jsdelivr.net/npm/node-forge/+esm'; |
| 138 | + //console.log(url); |
| 139 | + var res = await fetch(url); |
| 140 | + txt = await res.text(); |
| 141 | + localStorage['node-forge'] = txt; |
| 142 | + } |
| 143 | + var blob = new Blob([txt],{type:'text/javascript'}); |
| 144 | + var url = window.URL.createObjectURL(blob); |
| 145 | + nodeforge = await import(url); |
| 146 | + nodeforge = nodeforge.default; |
| 147 | + //console.log(nodeforge); |
| 148 | + |
| 149 | + }//nodeforge |
| 150 | + |
| 151 | + |
| 152 | + </script> |
17 | 153 |
|
18 | 154 |
|
19 | 155 | <style> |
|
22 | 158 | {height:100%} |
23 | 159 | body |
24 | 160 | {height:calc(100% - 42px);margin:20px;display:flex;flex-direction:column;font-family:arial} |
| 161 | + |
| 162 | + |
| 163 | + x509-hdr |
| 164 | + {margin-bottom:20px} |
| 165 | + |
25 | 166 | .hdr |
26 | 167 | {font-family:arial;position:relative;margin-top:0;margin-bottom:20px;background:white; |
27 | 168 | padding-bottom:10px;border-bottom:3px solid lightblue} |
|
51 | 192 | {color:red;border:1px solid red} |
52 | 193 |
|
53 | 194 |
|
| 195 | + .visually-hidden |
| 196 | + {position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important; |
| 197 | + clip:rect(0 0 0 0) !important;white-space:nowrap !important;border:0 !important} |
| 198 | + |
| 199 | + |
54 | 200 | </style> |
55 | 201 |
|
56 | 202 | </head> |
57 | 203 |
|
58 | 204 | <body> |
59 | 205 |
|
| 206 | + |
| 207 | + <x509-hdr component=grp v2.0> |
| 208 | + <h1 class=visually-hidden> |
| 209 | + Verify Certificate |
| 210 | + </h1> |
| 211 | + <img class=title src='images/verify-certificate.png' style='top:5px;height:55px' alt='verify certificate'> |
| 212 | + <time slot=date datetime=2025-11-15> |
| 213 | + 15 Nov 2025 |
| 214 | + </time> |
| 215 | + </x509-hdr> |
| 216 | + |
| 217 | + |
| 218 | +<!-- |
60 | 219 | <div class=hdr> |
61 | 220 | <a class=hdr-icon href='https://javascript-2020.github.io/'> |
62 | 221 | <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==' /> |
|
77 | 236 | 24 Apr 2025 |
78 | 237 | </div> |
79 | 238 | </div hdr> |
| 239 | +--> |
| 240 | + |
80 | 241 |
|
81 | 242 | <div id=btns> |
82 | 243 | <input value=clear type=button> |
|
92 | 253 |
|
93 | 254 |
|
94 | 255 | <script> |
95 | | - |
96 | | - console.clear(); |
97 | | - console.log('verify-certificate.html'); |
98 | | - console.log(); |
99 | | - console.json=v=>console.log(JSON.stringify(v,null,4)); |
| 256 | + |
| 257 | + |
100 | 258 | var $; |
101 | 259 | var datatype; |
102 | 260 |
|
103 | | - var nodeforge; |
104 | 261 |
|
105 | 262 |
|
106 | 263 | var root; |
|
111 | 268 |
|
112 | 269 |
|
113 | 270 | // |
114 | | - |
115 | | - |
116 | | - setTimeout(init,50); |
117 | | - |
118 | | - async function init(){ |
119 | | - |
120 | | - await load(); |
121 | | - initdom(); |
122 | | - |
123 | | - }//init |
124 | | - |
125 | 271 |
|
126 | | - //: |
127 | | - |
128 | 272 |
|
129 | 273 | function initdom(){ |
130 | 274 |
|
131 | 275 |
|
132 | 276 | var btns = $('#btns'); |
133 | 277 |
|
| 278 | + hdr.initdom(); |
| 279 | + |
134 | 280 | $(btns,'[value=clear]').onclick = btn.clear; |
135 | 281 | $(btns,'[value=root]').onclick = btn.root; |
136 | 282 | $(btns,'[value="add cert"]').onclick = btn.add; |
|
235 | 381 | }//verify |
236 | 382 |
|
237 | 383 |
|
238 | | - async function load(){ |
239 | | - |
240 | | - await Promise.all([load.ext(),load.nodeforge()]); |
241 | | - |
242 | | - }//load |
243 | | - |
244 | | - |
245 | | - load.ext = async function(){ |
246 | | - |
247 | | - var res = await fetch('https://raw.githubusercontent.com/javascript-2020/ext-code/main/ext-loader.js') |
248 | | - var txt = await res.text(); |
249 | | - ext = eval(txt); |
250 | | - [$,datatype] = await ext.load.libs('js/dom/$.js','js/core/datatype.js'); |
251 | | - |
252 | | - }//ext |
253 | | - |
254 | | - |
255 | | - load.nodeforge = async function(){ |
256 | | - |
257 | | - var txt = localStorage['node-forge']; |
258 | | - if(!txt){ |
259 | | - var url = 'https://cdn.jsdelivr.net/npm/node-forge/+esm'; |
260 | | - //console.log(url); |
261 | | - var res = await fetch(url); |
262 | | - txt = await res.text(); |
263 | | - localStorage['node-forge'] = txt; |
264 | | - } |
265 | | - var blob = new Blob([txt],{type:'text/javascript'}); |
266 | | - var url = window.URL.createObjectURL(blob); |
267 | | - nodeforge = await import(url); |
268 | | - nodeforge = nodeforge.default; |
269 | | - //console.log(nodeforge); |
270 | | - |
271 | | - }//nodeforge |
272 | 384 |
|
273 | 385 |
|
274 | 386 | load.cert = function(mode){ |
|
0 commit comments