Skip to content

Commit 691dcb3

Browse files
phoddiemkellner
authored andcommitted
disable optional TLS features with implementations that rely on RegExp
1 parent 5f43942 commit 691dcb3

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

modules/crypt/etc/ber.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -396,6 +396,7 @@ export default class BER {
396396
res = String.fromArrayBuffer(b.getChunk(len));
397397
break;
398398
case 0x17: // ITC time
399+
/*
399400
case 0x18: {// generalized time
400401
let s = String.fromArrayBuffer(b.getChunk(len));
401402
let prefix = ""
@@ -417,6 +418,7 @@ export default class BER {
417418
res = date;
418419
}
419420
break;
421+
*/
420422
case 0x19: // graphics string
421423
case 0x1a: // ISO64 string
422424
case 0x1b: // general string

modules/crypt/ssl/ssl_handshake.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -430,24 +430,24 @@ let handshakeProtocol = {
430430
certificate: {
431431
name: "certificate",
432432
msgType: certificate,
433-
matchName(re, name) {
434-
re = re.replace(/\./g, "\\.").replace(/\*/g, "[^.]*");
435-
var a = name.match(new RegExp("^" + re + "$", "i"));
436-
return a && a.length == 1;
437-
},
438-
verifyHost(session, cert) {
439-
//@@ this fails because (a) session.socket.host doesn't exist and (b) RegExp isn't (usually) available
440-
var altNames = X509.decodeExtension(cert, 'subjectAlternativeName');
441-
var hostname = session.socket.host;
442-
for (var i = 0; i < altNames.length; i++) {
443-
var name = altNames[i];
444-
if (typeof name == "string" && this.matchName(name, hostname))
445-
return true;
446-
}
447-
// @@ not supporting the common name
448-
// var arr = X509.decodeTBS(cert).subject.match(/CN=([^,]*)/);
449-
// return arr && arr.length > 1 && this.matchName(arr[1], hostname);
450-
},
433+
// matchName(re, name) {
434+
// re = re.replace(/\./g, "\\.").replace(/\*/g, "[^.]*");
435+
// var a = name.match(new RegExp("^" + re + "$", "i"));
436+
// return a && a.length == 1;
437+
// },
438+
// verifyHost(session, cert) {
439+
// //@@ this fails because session.socket.host doesn't exist
440+
// var altNames = X509.decodeExtension(cert, 'subjectAlternativeName');
441+
// var hostname = session.socket.host;
442+
// for (var i = 0; i < altNames.length; i++) {
443+
// var name = altNames[i];
444+
// if (typeof name == "string" && this.matchName(name, hostname))
445+
// return true;
446+
// }
447+
// var arr = X509.decodeTBS(cert).subject.match(/CN=([^,]*)/);
448+
// return arr && arr.length > 1 && this.matchName(arr[1], hostname);
449+
// },
450+
451451
unpacketize(session, s) {
452452
session.traceProtocol(this);
453453
let certs = [];
@@ -461,11 +461,12 @@ let handshakeProtocol = {
461461
if (!session.certificateManager.verify(certs, session.options))
462462
throw new Error("SSL: certificate: auth err");
463463
}
464+
/*
464465
if (session.options.verifyHost) {
465466
if (!this.verifyHost(session, certs[0]))
466467
throw new Error("SSL: certificate: bad host");
467468
}
468-
469+
*/
469470
session.peerCert = certs[0].slice(0).buffer; // could we store only the key?
470471
return session.certificateManager.register(session.peerCert); // tail call optimization
471472
},

0 commit comments

Comments
 (0)