Skip to content

Commit bfef807

Browse files
save file
1 parent 77ae015 commit bfef807

File tree

1 file changed

+153
-59
lines changed

1 file changed

+153
-59
lines changed

utils/x509/extract-public-key/extract-public-key.html

Lines changed: 153 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,142 @@
11

22

3+
4+
<!DOCTYPE html>
5+
36
<html>
47

58
<head>
9+
<meta charset=utf-8>
610

7-
<title>extract public key</title>
11+
<title>
12+
Extract Public Key
13+
</title>
14+
15+
<meta name=description content='extract public key from x509 certificate'>
816

917
<base href='https://ext-code.com/utils/x509/extract-public-key/'>
10-
<base href='https://javascript-2020.github.io/utils/x509/extract-public-key/'>
18+
<link rel=canonical href='https://ext-code.com/utils/x509/extract-public-key/extract-public-key.html'>
1119

12-
<link rel='shortcut icon' type='image/x-icon' href='images/favicon.ico'>
20+
<link rel=icon type='image/x-icon' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAAz1BMVEVHcExFjOkWsvNGjug9jOxBhesulvAMtfsqofAvoO4pn+8hqPA0j+4WtvQhoPQfuvENuPkYrPchsfMYrPcepfVFiOgqnPE5jO1CguofrfEbrPULufoLu/kIu/sUtfMRsfljr/Q+h+0tl/JmufcJuPwVrfiTz/kZqvcknPNRoPKky/um0vobp/YcpfZmo/NltfY1nvKUxvl7vvdJtPYtqPVDvfms1/o3q/VEku9Ki+09mfFZlfCb1/mfxPu54PmEx/q64/lsw/dTqvOUvflcsvflva1XAAAAH3RSTlMAKFwUi9XO/jUfW1zpJf4KqOcY1+1BrNHsPaPJhNJObHCDBwAAAM1JREFUKM/lkUcSgkAURAEJIyoK5sjA4ICggBJMiPH+Z5IRq3SBxQHs7avf1d2fov5aFZqu/IQ026/XebZaTLuctlssDjoPCm85zV3bsQN1vuie1fwguME49fSeKAIFAGrINJqzRp6K22/O5zVEaeJbltRpd+SRrLZbwvjF6cHxhCIHh9fLxvO87WppzueqKhhGq/nGjxDHUYYRQl94quTmdxtCjBNMzKUMmwQLxuQdzbVteAuikEQTa0QMUfVTzHHwj2Ils5SNWvaSP9QTHZEaQktZsJwAAAAASUVORK5CYII='>
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" : "Extract Public Key From X509 Certificate",
28+
"url" : "https://ext-code.com/utils/x509/certificate-info/certificate-info.html",
29+
"author" : {"@type":"Person","name":"Matthew Richards"},
30+
"description" : "Extract public key from x509 certificate",
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>
1338

1439

40+
<script src='https://libs.ext-code.com/js/dom/component/component.js'></script>
41+
1542
<script init>
16-
17-
</script>
43+
console.clear();
44+
console.log('extract-public-key-v2.0.html');
45+
console.log();
46+
console.json=v=>console.log(JSON.stringify(v,null,4));
47+
var df=true,did='html'
48+
;
49+
50+
var ext;
51+
var $;
52+
var datatype;
53+
var menumod;
54+
var keydown;
55+
56+
var hdr;
57+
var filemod;
58+
var log;
59+
60+
61+
62+
63+
//:
64+
65+
66+
async function init(){
67+
68+
69+
await load();
70+
71+
72+
menu = menumod();
73+
74+
hdr = mod['x509-hdr'];
75+
//filemod = mod['file-mod'];
76+
log = mod['log-mod'];
77+
78+
79+
hdr.initmod({ext,$,menu});
80+
//filemod.initmod({ext,$,menu,menumod,complete,focus,source,editor,log});
81+
log.initmod({ext,$});
82+
83+
await Promise.all([
84+
hdr.init(),
85+
//filemod.init(),
86+
log.init(),
87+
]);
88+
89+
90+
91+
initdom(document.body);
92+
93+
94+
}//init
95+
96+
97+
(async()=>{
98+
99+
mod.stack.add;
100+
101+
({ext} = await import('https://libs.ext-code.com/js/io/ext-loader/ext-loader.m.js'));
102+
103+
var promise = ext.load.libs(
104+
'js/dom/$.js',
105+
'js/core/datatype.js',
106+
'js/dom/menumod/menumod.js',
107+
'js/dom/keydown/keydown.js',
108+
);
109+
[$,datatype,menumod,keydown] = await promise;
110+
111+
mod.stack.complete;
112+
113+
})();
114+
115+
116+
117+
118+
async function load(){
119+
120+
//var nodeForge = await import('https://cdn.jsdelivr.net/npm/node-forge/+esm');
121+
var txt = localStorage['node-forge'];
122+
123+
if(!txt){
124+
var url = 'https://cdn.jsdelivr.net/npm/node-forge/+esm';
125+
console.log(url);
126+
var res = await fetch(url);
127+
txt = await res.text();
128+
localStorage['node-forge'] = txt;
129+
}
130+
131+
var blob = new Blob([txt],{type:'text/javascript'});
132+
var url = window.URL.createObjectURL(blob);
133+
var nodeforge = await import(url);
134+
pki = nodeforge.default.pki;
135+
console.log(pki);
136+
}//load
137+
138+
139+
</script init>
18140

19141

20142
<style>
@@ -56,6 +178,12 @@
56178
{flex:1}
57179
pre
58180
{border:1px solid lightgray;font-size:16px;font-family:monospace}
181+
182+
183+
.visually-hidden
184+
{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;
185+
clip:rect(0 0 0 0) !important;white-space:nowrap !important;border:0 !important}
186+
59187

60188
</style>
61189

@@ -64,6 +192,18 @@
64192

65193
<body>
66194

195+
<x509-hdr component=grp>
196+
<h1 class=visually-hidden>
197+
extract public key
198+
</h1>
199+
<img class=title src='images/extract-public-key.png' style='top:-5px;height:55px'>
200+
<time slot=date datetime=2025-11-15>
201+
15 Nov 2025
202+
</time>
203+
</x509-hdr>
204+
205+
206+
<!--
67207
<div class=hdr>
68208
<a class=hdr-icon href='https://javascript-2020.github.io/'>
69209
<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==' />
@@ -84,7 +224,7 @@
84224
22 Apr 2025
85225
</div>
86226
</div hdr>
87-
227+
-->
88228

89229
<div id=view>
90230

@@ -124,26 +264,6 @@
124264

125265

126266
<script>
127-
console.clear();
128-
console.log('extract-public-key');
129-
console.log();
130-
console.json=v=>console.log(JSON.stringify(v,null,4));
131-
132-
var $ = (root,sel)=>(!sel && (sel=root,root=document),root.querySelector(sel));
133-
$.mousetext = function(e,text){
134-
135-
var left = e.pageX+'px';
136-
var top = e.pageY+'px';
137-
var style = {position:'absolute',left,top,padding:'10px',border:'1px solid dimgray',borderRadius:'3px',zIndex:999999,background:'white'};
138-
var append = document.body;
139-
var div = $.create.div({style,text,append});
140-
var rem = ()=>div.remove();
141-
div.onmouseleave = rem;
142-
div.onclick = rem;
143-
var time = 700;
144-
setTimeout(rem,time);
145-
146-
}//mousetext
147267

148268

149269
var pki;
@@ -157,46 +277,17 @@
157277
btn.key = {};
158278

159279

160-
setTimeout(init,50);
161-
162-
async function init(){
163-
164-
await load();
165-
166-
initdom();
167-
168-
}//init
169-
170-
//:
171-
172-
async function load(){
173-
174-
//var nodeForge = await import('https://cdn.jsdelivr.net/npm/node-forge/+esm');
175-
var txt = localStorage['node-forge'];
176-
177-
if(!txt){
178-
var url = 'https://cdn.jsdelivr.net/npm/node-forge/+esm';
179-
console.log(url);
180-
var res = await fetch(url);
181-
txt = await res.text();
182-
localStorage['node-forge'] = txt;
183-
}
184-
185-
var blob = new Blob([txt],{type:'text/javascript'});
186-
var url = window.URL.createObjectURL(blob);
187-
var nodeforge = await import(url);
188-
pki = nodeforge.default.pki;
189-
console.log(pki);
190-
}//load
191-
192280
//:
193281

194282
function initdom(){
195283

196284
var rootnode = document.body;
197285

198-
var root = {};
199286

287+
hdr.initdom(rootnode);
288+
289+
290+
var root = {};
200291

201292
root.cert = $(rootnode,'#cert-root');
202293

@@ -214,6 +305,9 @@
214305

215306
key = $(root.key,'#key');
216307

308+
309+
310+
log.initdom();
217311

218312
}//initdom
219313

0 commit comments

Comments
 (0)