Exemplo de geração de Hash utilizando Streams
import { hsm } from "@dinamonetworks/hsm-dinamo";
import { Readable } from "stream";
const streamHashExample = async () => {
let conn;
try {
// Define os parâmetros de conexão com o HSM
const options = {
host: "127.0.0.1",
authUsernamePassword: {
username: "master",
password: "12345678",
},
};
// Estabelece conexão com o HSM
conn = await hsm.connect(options);
console.log("Connected to HSM successfully.");
// Define as opções para o stream de hash
const hashOptions = {
algorithm: hsm.enums.HASH_ALGORITHMS.ALG_SHA256
};
// 1. Cria o Transform Stream de hash
const hashStream = conn.cryptography.createHashStream(hashOptions);
// 2. Simula uma fonte de dados
const sourceData = "Data to be processed by hash stream. ".repeat(10);
const sourceStream = Readable.from(sourceData);
console.log("Processing data through hash stream...");
let digest = Buffer.alloc(0);
// 3. Conecta os streams
sourceStream.pipe(hashStream);
// 4. Coleta o resultado (o hash final é emitido ao encerrar o stream)
for await (const chunk of hashStream) {
digest = chunk;
}
console.log("Hash processing completed.");
console.log("Final Digest (hex):", digest.toString("hex"));
} catch (err) {
console.error("Error during stream hash example:", err.message);
} finally {
if (conn) {
await conn.disconnect();
console.log("Disconnected from HSM.");
}
}
};
streamHashExample();