Timestamping a file
Prerequisites
A pair of API key ID and API key secret.
Some credits for the Timestamp API workflow.
Web Trust timestamping API works using streams, allowing you to timestamp rather large files.
Let’s see a complete example.
Exampleimport {createReadStream} from "fs";
import {writeFile} from "fs/promises";
import {join} from "path";
async function timestampFile(path: string, filename: string, trusted: boolean): string {
const readStream = createReadStream(join(path, filename));
const res = await fetch(`https://api.webtrust.kopjra.com/v1/timestamps?sync=true&trusted=${trusted}&filename="${filename}"`, {
headers: {
"Content-Type": "application/octet-stream",
"Accept": "application/octet-stream",
"Authorization": "Basic NjhiOTkxMjEtYWIxNC00YzUwLWFlMzItNDgzZmQ4MWVkNWJkOnlBRG1YTDZ6IzNjVm4tWURPNmJsTWkybGY0MEpNMEdUcFpLVH5+Ujc1eUNEN3ZZVGU2fmJTdTJEOUZwNHFEVjl4RWhtVmRZSw==",
},
method: "POST",
body: readStream,
});
const outputFilename = trusted ? filename + ".tsd" : filename + ".ots";
await writeFile(join(path, outputFilename), res.body);
return outputFilename;
}This method will read a file and write its timestamped version. Let’s take a look to the parameters:
syncindicates whether the stamp will be synchronous or asynchronous. Synchronous, meaning that this call will end with a timestamped data stream as a response. For now, this parameter must always betrue.trusted, iftrue, a Trust Service Provider will be used to make the timestamp; otherwise, Open-Timestamp (with Bitcoin) will be used.filenameis the name of the file to be timestamped.