Skip to content

Commit 6785fca

Browse files
save file
1 parent d97249b commit 6785fca

File tree

1 file changed

+153
-61
lines changed

1 file changed

+153
-61
lines changed

utils/x509/generate-certificate-chain/generate-certificate-chain.html

Lines changed: 153 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,141 @@
11

22

33

4+
<!DOCTYPE html>
5+
46
<html>
57

68
<head>
9+
<meta charset=utf-8>
710

8-
<title>generate certificate chain</title>
11+
<title>
12+
Generate Certificate Chain
13+
</title>
914

10-
<base href='https://javascript-2020.github.io/utils/x509/generate-certificate-chain/'>
15+
<meta name=description content='create a chain of x509 certificates'>
1116

12-
<link rel='shortcut icon' type='image/x-icon' href='images/favicon.ico'>
13-
17+
<base href='https://ext-code.com/utils/x509/generate-certificate-chain/'>
18+
<link rel=canonical href='https://ext-code.com/utils/x509/generate-certificate-chain/generate-certificate-chain.html'>
19+
20+
<link rel=icon type='image/x-icon' href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAABO1BMVEVHcEwAAABoQBqkcBqSXBGfaBGIUw52Sh6pchRxRBeveR2qbg+5p5FuQQ2baRFySB19SQyaaRjJtJFaMwt8Sg5mOxGZaBhxRh2TZhK4hiqucwrDkzy5hSyBWCqCVSX////8/f3s8PPf08X+/v/DomfLu53Nqmrdz7b79ujz9Pbn5+fx6NmhoaHHuKbNvaXu7u7Q0dH48uLd3d3069ysknLhzq+YmJjt0qHcyrD+y1r+vVDY2NjHxcPi4+Oxl3W+q5DFsJO1lmWmiWXAonG4nHHNzc3V1dWxsbH/2GT4r0u/v7/Wxa779uvr28Du5tmtj2W/nGLy47D733T7+O/8+/j48M6srKzo1LC3t7f43YTWx7PKpWLVuITe0bv51Wjo0K3syJ3ruXP4ymbhxpLzv2f37tjIrHqeflrQwKXcKNlbAAAAH3RSTlMAAaOYaW1hjXV+jV3+bh+YV6L+GGMipJUPm0Xe4+Lf7dZ8OwAAAWZJREFUKM+901lXgkAYgGErNcXSzKW9ocZSkATBrRB3zT0XJNdsr///CxplUczbei84nHnOB8MBDIb/aQO1ZvnQsjXP6fU6nfMzDLPYNT72ha5W+8Q0tu0n876VWqeYXeP8uDHx65uMLQv2D0fXK41OjuR5WyZf8zXq4XBAV/3NNGdjpvDd4gSeFQiw3KN8eWO6EGo1BbLK8DhahQQrymzSOMsRVJIVaJpMMlKfJugSS0x1XGXJ+z4Vi1ExSpLQgYnKbE6nQtkgJEmSF5hSVSoV+WKyyBA6BmB2YwBJWt1a1CjzTuTmIaisQRys8J7MuBoAYrgXgCCxxE14oUSAbrvTGfRUdiPONRfTsP1ULpcH3YRZno7kEC+mxfgt6vVDYZfjXDeNx+9Q7+GhW3ln1tSXPE3A2Za5l0qlEsdruwp7HGdNAFHKI3HT54YINEbzmctfpRbssW6jDhybS1ld679mtb/+c34AUBhYzLcT6lgAAAAASUVORK5CYII='>
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" : "Create Certificate Chain",
28+
"url" : "https://ext-code.com/utils/x509/certificate-info/certificate-info.html",
29+
"author" : {"@type":"Person","name":"Matthew Richards"},
30+
"description" : "create a chain of x509 certificates",
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+
1442
<script init>
43+
console.clear();
44+
console.log('create-certificate-chain.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+
58+
59+
//:
60+
61+
62+
async function init(){
63+
64+
65+
await load();
66+
67+
68+
menu = menumod();
69+
70+
hdr = mod['x509-hdr'];
71+
72+
73+
hdr.initmod({ext,$,menu});
74+
75+
await Promise.all([
76+
hdr.init(),
77+
]);
78+
79+
80+
81+
initdom(document.body);
82+
83+
84+
}//init
85+
86+
87+
(async()=>{
88+
89+
mod.stack.add;
90+
91+
({ext} = await import('https://libs.ext-code.com/js/io/ext-loader/ext-loader.m.js'));
92+
93+
var promise = ext.load.libs(
94+
'js/dom/$.js',
95+
'js/core/datatype.js',
96+
'js/dom/menumod/menumod.js',
97+
'js/dom/keydown/keydown.js',
98+
);
99+
[$,datatype,menumod,keydown] = await promise;
100+
101+
mod.stack.complete;
102+
103+
})();
104+
105+
106+
async function load(){
107+
108+
var txt = localStorage['node-forge'];
109+
if(!txt){
110+
var url = 'https://cdn.jsdelivr.net/npm/node-forge/+esm';
111+
//console.log(url);
112+
var res = await fetch(url);
113+
txt = await res.text();
114+
localStorage['node-forge'] = txt;
115+
}
116+
var blob = new Blob([txt],{type:'text/javascript'});
117+
var url = window.URL.createObjectURL(blob);
118+
var nodeforge = await import(url);
119+
pki = nodeforge.default.pki;
120+
121+
}//load
122+
123+
15124

16125
</script>
17126

18127

19128
<style>
20129

21-
html
22-
{height:100%}
130+
html
131+
{height:100%;font-family:arial}
23132
body
24133
{height:calc(100% - 42px);margin:20px;display:flex;flex-direction:column}
134+
135+
x509-hdr
136+
{margin-bottom:20px}
137+
138+
25139
.hdr
26140
{font-family:arial;position:relative;margin-top:0;margin-bottom:20px;background:white;
27141
padding-bottom:10px;border-bottom:3px solid lightblue}
@@ -44,14 +158,31 @@
44158
{}
45159
pre
46160
{flex:1;border:1px solid lightgray;padding:10px}
161+
162+
163+
.visually-hidden
164+
{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;
165+
clip:rect(0 0 0 0) !important;white-space:nowrap !important;border:0 !important}
166+
47167

48168
</style>
49169

50170
</head>
51171

52172
<body>
53173

54-
174+
<x509-hdr component=grp>
175+
<h1 class=visually-hidden>
176+
create certificate chain
177+
</h1>
178+
<img class=title src='images/generate-certificate-chain.png' style='top:5px;height:55px'>
179+
<time slot=date datetime=2025-11-15>
180+
15 Nov 2025
181+
</time>
182+
</x509-hdr>
183+
184+
185+
<!--
55186
<div class=hdr>
56187
<a class=hdr-icon href='https://javascript-2020.github.io/'>
57188
<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==' />
@@ -70,6 +201,9 @@
70201
24 Apr 2025
71202
</div>
72203
</div hdr>
204+
-->
205+
206+
73207

74208
<div id=btns>
75209
<input id=clear value=clear type=button>
@@ -83,19 +217,13 @@
83217
<pre id=view>
84218
</pre>
85219

220+
86221
</body>
87222

88223

89224
<script>
90-
console.clear();
91-
console.log('generate-certificate-chain');
92-
console.log();
93-
console.json=v=>console.log(JSON.stringify(v,null,4));
94-
var ext;
95-
var $,datatype,menumod,keydown;
96-
97-
var mod = {};
98-
225+
226+
99227
var chain;
100228
var view
101229
var list = [];
@@ -105,54 +233,13 @@
105233
var btn = {};
106234

107235

108-
//
236+
//:
109237

110238

111-
window.onload = init;
112-
113-
async function init(){
114-
115-
await load();
116-
initdom();
117-
118-
}//init
119-
120-
121-
async function load(){
239+
function initdom(rootnode){
122240

123-
var res = await fetch('https://raw.githubusercontent.com/javascript-2020/ext-code/main/ext-loader.js')
124-
var txt = await res.text();
125-
ext = eval(txt);
126-
[$,datatype,menumod,keydown] = await ext.load.libs(
127-
'js/dom/$.js',
128-
'js/core/datatype.js',
129-
'js/dom/menumod/menumod.js',
130-
'js/dom/keydown/keydown.js'
131-
);
132-
133-
}//load
134-
135-
136-
load.nodeforge = async function(){
137-
138-
var txt = localStorage['node-forge'];
139-
if(!txt){
140-
var url = 'https://cdn.jsdelivr.net/npm/node-forge/+esm';
141-
//console.log(url);
142-
var res = await fetch(url);
143-
txt = await res.text();
144-
localStorage['node-forge'] = txt;
145-
}
146-
var blob = new Blob([txt],{type:'text/javascript'});
147-
var url = window.URL.createObjectURL(blob);
148-
var nodeforge = await import(url);
149-
pki = nodeforge.default.pki;
150-
151-
}//nodeforge
152-
153-
154-
function initdom(){
155241

242+
hdr.initdom();
156243

157244
var btns = $('#btns');
158245

@@ -168,9 +255,14 @@
168255
view.replaceChildren();
169256

170257

258+
259+
171260
}//initdom
172261

173-
262+
263+
//:
264+
265+
174266
btn.clear = function(){
175267

176268
list = [];

0 commit comments

Comments
 (0)