diff options
Diffstat (limited to 'packages/server/src/helpers/validateCertificatePath.ts')
-rw-r--r-- | packages/server/src/helpers/validateCertificatePath.ts | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/server/src/helpers/validateCertificatePath.ts b/packages/server/src/helpers/validateCertificatePath.ts new file mode 100644 index 0000000..685ddd8 --- /dev/null +++ b/packages/server/src/helpers/validateCertificatePath.ts @@ -0,0 +1,55 @@ +export default function validateCertificatePath(certificates: any[]) { + console.log('certificates', certificates); + return false; + // TODO: Re-investigate this if we decide to "use MDS or Metadata Statements" + // console.debug('validating certificate path'); + + // const uniqueCerts = new Set(certificates); + + // if (uniqueCerts.size !== certificates.length) { + // throw new Error('Certificate path could not be verified due to duplicate certificates'); + // } + + // certificates.forEach((subjectPEM, index) => { + // const subjectCert = new jsrsasign.X509(); + // subjectCert.readCertPEM(subjectPEM); + + // let issuerPEM; + // if (index + 1 >= certificates.length) { + // console.debug('using subjectPEM as issuerPEM'); + // issuerPEM = subjectPEM; + // } else { + // console.debug('using next cert as issuerPEM'); + // issuerPEM = certificates[index + 1]; + // } + + // const issuerCert = new jsrsasign.X509(); + // issuerCert.readCertPEM(issuerPEM); + + // const subjectCertString = subjectCert.getSubjectString(); + // const issuerCertString = issuerCert.getSubjectString(); + // if (subjectCertString !== issuerCertString) { + // console.error('subject strings didn\'t match'); + // console.debug('subjectCertString:', subjectCertString); + // console.debug('issuerCertString:', issuerCertString); + // throw new Error('Certificate issuers didn\'t match'); + // } + + // const subjectCertStruct = jsrsasign.ASN1HEX.getTLVbyList(subjectCert.hex, 0, [0]); + // const algorithm = subjectCert.getSignatureAlgorithmField(); + // const signatureHex = subjectCert.getSignatureValueHex(); + + // const Signature = new jsrsasign.crypto.Signature({ alg: algorithm }); + // Signature.init(issuerPEM); + // Signature.updateHex(subjectCertStruct); + + // const sigVerified = Signature.verify(signatureHex); + // if (!sigVerified) { + // console.error('failed to validate certificate path'); + // console.debug('sigVerified:', sigVerified); + // throw new Error('Certificate path could not be validated'); + // } + // }); + + // return true; +} |