frontend; backend: adiciona sistema novo de gravacao de provas

Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
This commit is contained in:
rodrigo committed 2025-07-27 18:24:15 -03:00
1 parent 0750b26208
commit 4ed6ad66ef
13 files changed
+1506 -65

No files matched your search

+48
View File
@@ -4,6 +4,7 @@ import { createHash } from 'crypto';
import { PDFDocument, StandardFonts } from 'pdf-lib';
import * as OpenTimestamps from 'opentimestamps';
import sharp from 'sharp';
import { promises as fs } from 'fs';
export class ProvaService {
private fileValidator: FileValidator;
@@ -96,4 +97,51 @@ export class ProvaService {
buffer: await pdfDoc.save()
};
}
async verifyFile(hash: string) {
try {
const prova = await prisma.prova.findFirst({
where: { checksumSha256: hash }
});
if (!prova) {
return {
verified: false,
message: 'Documento não encontrado ou hash inválido'
};
}
// Verificar se o arquivo ainda existe
const filePath = prova.filePath;
if (filePath) {
try {
await fs.access(filePath);
} catch {
return {
verified: false,
message: 'Arquivo original não encontrado'
};
}
}
return {
verified: true,
message: 'Documento verificado com sucesso',
prova: {
fileName: prova.fileName,
checksumSha256: prova.checksumSha256,
checksumSha512: prova.checksumSha512,
checksumMd5: prova.checksumMd5,
timestamp: prova.timestamp,
metadata: prova.metadata,
dataCriacao: prova.dataCriacao,
dataValida: prova.dataAtualizacao
},
timestamp: prova.timestamp ? JSON.parse(prova.timestamp) : null
};
} catch (error) {
console.error('Erro ao verificar arquivo:', error);
throw new Error(`Erro ao verificar arquivo: ${error.message}`);
}
}
}