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");
0 commit comments