Skip to content

Commit c32d4c9

Browse files
committed
Initial commit
1 parent 53d05c7 commit c32d4c9

11 files changed

+20578
-0
lines changed

.npmignore

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
libcrypto.a
2+
node_modules

Makefile

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
all: em-x509.js
2+
3+
#CFLAGS = -O1
4+
CFLAGS = -Os -s AGGRESSIVE_VARIABLE_ELIMINATION=1 --closure 1
5+
6+
em-x509.js: main.cpp libcrypto.a Makefile
7+
em++ --bind main.cpp -I ../openssl/include -std=c++11 -lcrypto -L./ -o em-x509.js $(CFLAGS)
8+
@sed -i 's/"em-x509.js.mem"/__dirname + "\/em-x509.js.mem"/' em-x509.js
9+
@sed -i 's/"uncaughtException"/"em_uncaughtException"/' em-x509.js

em-x509.js

+302
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

em-x509.js.mem

143 KB
Binary file not shown.

index.js

+131
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
var mod = require('./em-x509');
2+
3+
function cppVectorToArray(vector) {
4+
var out = [];
5+
for(var i = 0;i < vector.size();++i)
6+
out.push(vector.get(i));
7+
vector.delete();
8+
return out;
9+
}
10+
11+
function cppMapToObject(map) {
12+
var keys = cppVectorToArray(map.keys());
13+
var out = {};
14+
keys.forEach(function(key) {
15+
out[key] = map.get(key);
16+
});
17+
map.delete();
18+
return out;
19+
}
20+
21+
function parseCert(str) {
22+
if(str.length > 65536) {
23+
throw new Error("Certificate data larger than 65536");
24+
}
25+
26+
try {
27+
var out = mod.parseCert(new Buffer(str, 'utf8').toString('binary'));
28+
29+
} catch(err) {
30+
console.log("DUPA!");
31+
process.exit(1);
32+
}
33+
34+
out.altNames = cppVectorToArray(out.altNames);
35+
out.ocspList = cppVectorToArray(out.ocspList);
36+
out.subject = cppMapToObject(out.subject);
37+
out.issuer = cppMapToObject(out.issuer);
38+
if(out.error) {
39+
throw new Error(out.error);
40+
} else {
41+
delete out.error;
42+
}
43+
return out;
44+
}
45+
46+
function parseKey(str) {
47+
if(str.length > 65536) {
48+
throw new Error("Key data larger than 65536");
49+
}
50+
51+
try {
52+
var out = mod.parseKey(new Buffer(str, 'utf8').toString('binary'));
53+
54+
} catch(err) {
55+
console.log("DUPA2!");
56+
process.exit(1);
57+
}
58+
59+
if(out.error) {
60+
throw new Error(out.error);
61+
} else {
62+
delete out.error;
63+
}
64+
return out;
65+
}
66+
67+
68+
module.exports = {
69+
parseCert: parseCert,
70+
parseKey: parseKey,
71+
info: mod.info
72+
};
73+
74+
75+
76+
// try {
77+
78+
// var certificate =
79+
// '-----BEGIN CERTIFICATE-----\n' +
80+
// 'MIIFRTCCBC2gAwIBAgIHJ6yuMLnzIzANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE\n' +
81+
// 'BhMCVVMxEDAOBgNVBAgTB0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAY\n' +
82+
// 'BgNVBAoTEUdvRGFkZHkuY29tLCBJbmMuMTMwMQYDVQQLEypodHRwOi8vY2VydGlm\n' +
83+
// 'aWNhdGVzLmdvZGFkZHkuY29tL3JlcG9zaXRvcnkxMDAuBgNVBAMTJ0dvIERhZGR5\n' +
84+
// 'IFNlY3VyZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTERMA8GA1UEBRMIMDc5Njky\n' +
85+
// 'ODcwHhcNMTMwNDI2MTQ1MTE3WhcNMTQwNDI2MTQ1MTE3WjA9MSEwHwYDVQQLExhE\n' +
86+
// 'b21haW4gQ29udHJvbCBWYWxpZGF0ZWQxGDAWBgNVBAMTD3d3dy5hY2FsaW5lLmNv\n' +
87+
// 'bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ9t6lDUaTlQiRZF8V5\n' +
88+
// 'x9/IpwPO3hjVzApA20GysXt5r/VZ+blSgkt42NQUdQYNXX5E1H42CtAwg8giLqw6\n' +
89+
// '2aEkHLQ3aFXMmcMktCU+//vm3cMD5ShKRKxxY9azlQ1AYIUXJJJgK79o1vTCp62A\n' +
90+
// 'oQaR5dEcyn6jkR7s35j5lG+rNRk9VtcSntiqFUX6HcokIvHffpl6YWtAbZigfm6w\n' +
91+
// '7sElt7bgD+jlh53mF9v2EpbQaLsVKaMaHLlbgeG4Oww+AwWnpfUmBFHik2T3RE94\n' +
92+
// 'WxqklUCYDNsvNLTQwa34dDI0JbUI1ExLC7lo0+fJgCnLf3U3avsUbuo+8nmSVLhd\n' +
93+
// 'zkcCAwEAAaOCAbowggG2MA8GA1UdEwEB/wQFMAMBAQAwHQYDVR0lBBYwFAYIKwYB\n' +
94+
// 'BQUHAwEGCCsGAQUFBwMCMA4GA1UdDwEB/wQEAwIFoDAzBgNVHR8ELDAqMCigJqAk\n' +
95+
// 'hiJodHRwOi8vY3JsLmdvZGFkZHkuY29tL2dkczEtOTAuY3JsMFMGA1UdIARMMEow\n' +
96+
// 'SAYLYIZIAYb9bQEHFwEwOTA3BggrBgEFBQcCARYraHR0cDovL2NlcnRpZmljYXRl\n' +
97+
// 'cy5nb2RhZGR5LmNvbS9yZXBvc2l0b3J5LzCBgAYIKwYBBQUHAQEEdDByMCQGCCsG\n' +
98+
// 'AQUFBzABhhhodHRwOi8vb2NzcC5nb2RhZGR5LmNvbS8wSgYIKwYBBQUHMAKGPmh0\n' +
99+
// 'dHA6Ly9jZXJ0aWZpY2F0ZXMuZ29kYWRkeS5jb20vcmVwb3NpdG9yeS9nZF9pbnRl\n' +
100+
// 'cm1lZGlhdGUuY3J0MB8GA1UdIwQYMBaAFP2sYTKTbEXW4u6FX5q653aZaMznMCcG\n' +
101+
// 'A1UdEQQgMB6CD3d3dy5hY2FsaW5lLmNvbYILYWNhbGluZS5jb20wHQYDVR0OBBYE\n' +
102+
// 'FOZhFE5aS1EMTmxePHlhZdS9ZJS+MA0GCSqGSIb3DQEBBQUAA4IBAQBWtSoAXqwS\n' +
103+
// 'lGHM199r4mZ8aPBgPEm8IJipk/qR4sbcSu2GdCChxpyu459tIUhOh+/noHc1Ubfx\n' +
104+
// '+e7W96kX1HMQETYSC8FWn6LVTURRWwA/NIqM4AEGO+d3qwwchmw6pZX7R3+4DZ8f\n' +
105+
// '3IjOuovhqGt0EJEPRKqzbFzrjFCoRYpgn52aijBdZGLJaPvZOKT5fJ6ntsbgO0xK\n' +
106+
// 'dd9L2ODL/CJzS/RRRhO0k76vCq88kX1pham8yXH6mYLcCrUcWY1HcgC/y/5EESWH\n' +
107+
// 'Y5+UfLaeUH5QU3Wtg2qwo5fUDG8ox8PlNXKEs6u38/x84GKJdOmpzAP8/a/HPECM\n' +
108+
// 'S0cBxC+UItcO\n' +
109+
// '-----END CERTIFICATE-----\n';
110+
111+
// // setInterval(function() {
112+
// var beginDate = new Date();
113+
// for(var i = 0;i < 10000;++i) {
114+
// var out = parseCert(certificate);
115+
116+
// }
117+
// var endDate = new Date();
118+
// //console.log(out);
119+
// console.log(endDate.getTime() - beginDate.getTime());
120+
121+
122+
123+
// //}, 1000);
124+
125+
126+
127+
// } catch(ex) {
128+
// console.log(ex, "aa");
129+
// }
130+
131+
// console.log("CC");

libcrypto.a

+19,563
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)