export * from '@guardianproject/proofmode';
import fs from 'fs-extra';
import path from 'path';
import * as proofmode from '@guardianproject/proofmode';
export async function generateProofFromFile(filePath, options = {}) {
const {
storageDir = './proofmode',
metadata = {},
callbacks = {}
} = options;
const buffer = await fs.readFile(filePath);
const mediaData = new Uint8Array(buffer);
await fs.ensureDir(storageDir);
const defaultCallbacks = {
getLocationData: async () => null,
getDeviceData: async () => ({
manufacturer: process.platform,
model: 'Node.js',
os_version: process.version,
device_id: null
}),
getNetworkData: async () => ({
network_type: 'unknown',
wifi_ssid: null,
cell_info: null
}),
saveProofData: async (hash, proofData) => {
const proofDir = path.join(storageDir, hash.substring(0, 2), hash.substring(2, 4));
await fs.ensureDir(proofDir);
const jsonPath = path.join(proofDir, `${hash}.proof.json`);
await fs.writeJSON(jsonPath, JSON.parse(proofData), { spaces: 2 });
return jsonPath;
},
getPgpKey: async () => null,
signWithPgp: async (data) => null, ...callbacks
};
const result = proofmode.generate_proof_wasm(
mediaData,
JSON.stringify(metadata),
defaultCallbacks
);
return proofmode.get_file_hash(mediaData);
}
export async function checkFilesFromPaths(filePaths, progressCallback) {
const absolutePaths = filePaths.map(p => path.resolve(p));
return proofmode.checkFiles(absolutePaths, progressCallback);
}