diff --git a/src/services/common/CryptoService/CryptoService.ts b/src/services/common/CryptoService/CryptoService.ts index 893f62c5..b924b974 100644 --- a/src/services/common/CryptoService/CryptoService.ts +++ b/src/services/common/CryptoService/CryptoService.ts @@ -15,6 +15,10 @@ export default class CryptoService extends BaseService { return crypto.createHash("sha256").update(String(key)).digest("base64").slice(0, 32); } + public async getHash(buffer: Buffer): Promise { + return crypto.createHash("sha256").update(buffer).digest("hex"); + } + /** * @description : encrypt data * @throws {Error} If data cannot be encrypted diff --git a/src/services/common/FilesService/FilesService.ts b/src/services/common/FilesService/FilesService.ts index f80ddcc8..ac14c6b9 100644 --- a/src/services/common/FilesService/FilesService.ts +++ b/src/services/common/FilesService/FilesService.ts @@ -71,12 +71,15 @@ export default class FilesService extends BaseService { public async create(file: File, fileData: Express.Multer.File) { const key = v4(); const encryptedFile = await this.cryptoService.encrypt(fileData.buffer, key); + const hash = await this.cryptoService.getHash(fileData.buffer); + const upload = await this.ipfsService.pinFile(Readable.from(encryptedFile), fileData.originalname); let fileToCreate: File = file; fileToCreate.file_name = fileData.originalname; fileToCreate.file_path = this.variables.PINATA_GATEWAY.concat(upload.IpfsHash); fileToCreate.mimetype = fileData.mimetype; fileToCreate.size = fileData.size; + fileToCreate.hash = hash; fileToCreate.archived_at = null; return this.filesRepository.create(fileToCreate, key);