From 66a97e4d2366652c518b83f2ae2cbdf08856c826 Mon Sep 17 00:00:00 2001 From: turnoffthiscomputer Date: Wed, 5 Mar 2025 14:48:05 -0500 Subject: [PATCH] fix UKR certificates parsing --- .../passport_parsing/brutForceDscSignature.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/common/src/utils/passports/passport_parsing/brutForceDscSignature.ts b/common/src/utils/passports/passport_parsing/brutForceDscSignature.ts index 5f793577b..4f462bb3a 100644 --- a/common/src/utils/passports/passport_parsing/brutForceDscSignature.ts +++ b/common/src/utils/passports/passport_parsing/brutForceDscSignature.ts @@ -102,14 +102,20 @@ function verifyECDSA(dsc: CertificateData, csca: CertificateData, hashAlgorithm: } function verifyRSA(dsc: CertificateData, csca: CertificateData, hashAlgorithm: string): boolean { try { - const dscCert = forge.pki.certificateFromPem(dsc.rawPem); const cscaCert = forge.pki.certificateFromPem(csca.rawPem); const tbsHash = getTBSHash(dsc.rawPem, hashAlgorithm); if (!tbsHash) { return false; } const publicKey = cscaCert.publicKey as forge.pki.rsa.PublicKey; - const signature = dscCert.signature; + const certBuffer_dsc = Buffer.from( + dsc.rawPem.replace(/(-----(BEGIN|END) CERTIFICATE-----|\n)/g, ''), + 'base64' + ); + const asn1Data_dsc = asn1js.fromBER(certBuffer_dsc); + const cert_dsc = new Certificate({ schema: asn1Data_dsc.result }); + const signatureValue = cert_dsc.signatureValue.valueBlock.valueHexView; + const signature = Buffer.from(signatureValue).toString('binary'); try { const verified = publicKey.verify(tbsHash, signature); return verified;