From f3604f05510c6fede697a53222d24dc82ef5f7ff Mon Sep 17 00:00:00 2001 From: Xavier Jouslin de Noray <xavier.jouslindenoray@savoirfairelinux.com> Date: Tue, 26 Dec 2023 06:08:43 -0500 Subject: [PATCH] CRL: make accessible the crl for root and sfl Gitlab: #12 Change-Id: If9e93db6adba0a9fda26e07e417cbb3144eed05c --- src/services/certificate.manager.service.ts | 51 +++++++++++++-------- tests/certificate.manager.test.ts | 6 +-- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/services/certificate.manager.service.ts b/src/services/certificate.manager.service.ts index 5b402b5..f2638df 100644 --- a/src/services/certificate.manager.service.ts +++ b/src/services/certificate.manager.service.ts @@ -29,37 +29,48 @@ export class CertificateManager { } async getCaCrlPath(): Promise<string> { - const crlFilePath = - (process.env.DATA_DIRECTORY as string) + '/' + 'root.crl'; - const isCRLFileExist = await this.fileManager.isFileExist(crlFilePath); - if (process.env.DATA_DIRECTORY === undefined || !isCRLFileExist) { - return ''; - } - return crlFilePath; + return await this.getCrlPath( + // eslint-disable-next-line + __dirname + '/../..' + (process.env.DATA_DIRECTORY as string), + 'root.crl' + ); } async getSflCrlPath(): Promise<string> { - const crlFilePath = - (process.env.DATA_DIRECTORY as string) + '/' + 'SFL.crl'; - const isCRLFileExist = await this.fileManager.isFileExist(crlFilePath); - if (process.env.DATA_DIRECTORY === undefined || !isCRLFileExist) { + return await this.getCrlPath( + // eslint-disable-next-line + __dirname + '/../..' + (process.env.DATA_DIRECTORY as string), + 'SFL.crl' + ); + } + + async getCrlPath(path: string, file: string): Promise<string> { + const crlPath = path + '/' + file; + const isCrlFileExist = await this.fileManager.isFileExist(crlPath); + if (process.env.DATA_DIRECTORY === undefined || !isCrlFileExist) { return ''; } - return crlFilePath; + return crlPath; } - async getCaCrl(): Promise<string> { + async getCaCrl(): Promise<Buffer> { if (process.env.DATA_DIRECTORY === undefined) { - return ''; + return Buffer.from(''); } - return await this.readCRL(process.env.DATA_DIRECTORY + '/' + 'ca.crl'); + return await this.readCRL( + // eslint-disable-next-line + __dirname + '/../..' + process.env.DATA_DIRECTORY + '/' + 'root.crl' + ); } - async getSflCrl(): Promise<string> { + async getSflCrl(): Promise<Buffer> { if (process.env.DATA_DIRECTORY === undefined) { - return ''; + return Buffer.from(''); } - return await this.readCRL(process.env.DATA_DIRECTORY + '/' + 'sfl.crl'); + return await this.readCRL( + // eslint-disable-next-line + __dirname + '/../..' + process.env.DATA_DIRECTORY + '/' + 'sfl.crl' + ); } verifySignature(signature: Buffer, checkSignature: Buffer): boolean { @@ -74,8 +85,8 @@ export class CertificateManager { }); } - private async readCRL(file: string): Promise<string> { - return (await this.fileManager.readFile(file)).toString(); + private async readCRL(file: string): Promise<Buffer> { + return await this.fileManager.readFile(file); } parseDN(dn: string): Record<string, string> { diff --git a/tests/certificate.manager.test.ts b/tests/certificate.manager.test.ts index 2453569..effea63 100644 --- a/tests/certificate.manager.test.ts +++ b/tests/certificate.manager.test.ts @@ -70,21 +70,21 @@ describe('Certificate manager service tests', function () { const expectedCRL = 'test'; fileManager.readFile.resolves(Buffer.from(expectedCRL, 'utf-8')); const crl = await certificateManager['readCRL'](path + '/' + file); - expect(crl).toEqual(expectedCRL); + expect(crl).toEqual(Buffer.from(expectedCRL, 'utf-8')); }); it('should return sfl crl', async () => { const expectedCRL = 'test'; fileManager.readFile.resolves(Buffer.from(expectedCRL, 'utf-8')); const crl = await certificateManager.getSflCrl(); - expect(crl).toEqual(expectedCRL); + expect(crl).toEqual(Buffer.from(expectedCRL, 'utf-8')); }); it('should return ca crl', async () => { const expectedCRL = 'test'; fileManager.readFile.resolves(Buffer.from(expectedCRL, 'utf-8')); const crl = await certificateManager.getCaCrl(); - expect(crl).toEqual(expectedCRL); + expect(crl).toEqual(Buffer.from(expectedCRL, 'utf-8')); }); it('should parse the DN correctly', () => { const dn = 'CN=John Doe\nO=Acme Corp'; -- GitLab