diff options
-rw-r--r-- | packages/server/src/helpers/convertPEMToBytes.ts | 13 | ||||
-rw-r--r-- | packages/server/src/helpers/validateCertificatePath.ts | 20 |
2 files changed, 17 insertions, 16 deletions
diff --git a/packages/server/src/helpers/convertPEMToBytes.ts b/packages/server/src/helpers/convertPEMToBytes.ts new file mode 100644 index 0000000..8749d03 --- /dev/null +++ b/packages/server/src/helpers/convertPEMToBytes.ts @@ -0,0 +1,13 @@ +import { isoBase64URL } from './iso'; + +/** + * Take a certificate in PEM format and convert it to bytes + */ +export function convertPEMToBytes(pem: string): Uint8Array { + const certBase64 = pem + .replace('-----BEGIN CERTIFICATE-----', '') + .replace('-----END CERTIFICATE-----', '') + .replace(/\n/g, ''); + + return isoBase64URL.toBuffer(certBase64, 'base64'); +} diff --git a/packages/server/src/helpers/validateCertificatePath.ts b/packages/server/src/helpers/validateCertificatePath.ts index 65e4870..bf6b3d9 100644 --- a/packages/server/src/helpers/validateCertificatePath.ts +++ b/packages/server/src/helpers/validateCertificatePath.ts @@ -2,10 +2,10 @@ import { AsnSerializer } from '@peculiar/asn1-schema'; import { isCertRevoked } from './isCertRevoked'; -import { isoBase64URL } from './iso'; import { verifySignature } from './verifySignature'; import { mapX509SignatureAlgToCOSEAlg } from './mapX509SignatureAlgToCOSEAlg'; import { getCertificateInfo } from './getCertificateInfo'; +import { convertPEMToBytes } from './convertPEMToBytes'; /** * Traverse an array of PEM certificates and ensure they form a proper chain @@ -73,8 +73,8 @@ async function _validatePath(certificates: string[]): Promise<boolean> { issuerPem = certificates[i + 1]; } - const subjectInfo = getCertificateInfo(pemToBytes(subjectPem)); - const issuerInfo = getCertificateInfo(pemToBytes(issuerPem)); + const subjectInfo = getCertificateInfo(convertPEMToBytes(subjectPem)); + const issuerInfo = getCertificateInfo(convertPEMToBytes(issuerPem)); const x509Subject = subjectInfo.parsedCertificate; @@ -115,7 +115,7 @@ async function _validatePath(certificates: string[]): Promise<boolean> { const signatureAlgorithm = mapX509SignatureAlgToCOSEAlg( x509Subject.signatureAlgorithm.algorithm, ); - const issuerCertBytes = pemToBytes(issuerPem); + const issuerCertBytes = convertPEMToBytes(issuerPem); const verified = await verifySignature({ data: new Uint8Array(data), @@ -147,15 +147,3 @@ class CertificateNotYetValidOrExpired extends Error { this.name = 'CertificateNotYetValidOrExpired'; } } - -/** - * Take a certificate in PEM format and convert it to bytes - */ -function pemToBytes(pem: string): Uint8Array { - const certBase64 = pem - .replace('-----BEGIN CERTIFICATE-----', '') - .replace('-----END CERTIFICATE-----', '') - .replace(/\n/g, ''); - - return isoBase64URL.toBuffer(certBase64, 'base64'); -} |