From 0969cd76be7a8dfa83c189e268dfa1cab0adc5d6 Mon Sep 17 00:00:00 2001 From: Will Rouesnel Date: Wed, 31 May 2023 23:57:49 +1000 Subject: [PATCH] Augment parseX509Output to also work with libressl LibreSSL uses a different output separated and semantics, which broke the X509 parser. With some slight modifications both can be supported. --- backend/internal/certificate.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/internal/certificate.js b/backend/internal/certificate.js index 723f94b2..0b45eab1 100644 --- a/backend/internal/certificate.js +++ b/backend/internal/certificate.js @@ -741,10 +741,11 @@ const internalCertificate = { */ parseX509Output: (line, prefix) => { // Remove the subject= part - const subject_value = line.slice(prefix.length); + const subject_value = line.slice(prefix.length).trim(); - const subject = subject_value.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/) - .map( (e) => { return e.trim().split(' = ', 2); }) + const subject = subject_value.split(/[,/](?=(?:(?:[^"]*"){2})*[^"]*$)/) + .filter( (e) => { return e.length > 0; } ) + .map( (e) => { return e.trim().split('=', 2).map( (p) => { return p.trim(); }); }) .reduce((obj, [key, value]) => { obj[key] = value.replace(/^"/, '').replace(/"$/, ''); return obj;