API JavaScript HSM Dinamo
    Preparing search index...
    import { hsm } from "@dinamonetworks/hsm-dinamo";
    import { Readable } from "stream";

    const streamCipherExample = 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.");

    // 1. Cria uma chave AES para o exemplo
    const keyName = `AES_KEY_STREAM_${Date.now()}`;
    await conn.key.create(
    keyName,
    hsm.enums.SYMMETRICAL_KEYS.ALG_AES_128,
    false,
    true
    );

    const iv = Buffer.alloc(16, 0);

    // Define as opções para o stream de cifração
    const cipherOptions = {
    keyName: keyName,
    mode: hsm.enums.SYMMETRIC_OPERATIONS_MODE.MODE_CBC | hsm.enums.SYMMETRIC_OPERATIONS_DIRECTION.ENCRYPT,
    iv: iv
    };

    // 2. Cria o Transform Stream de cifração
    const cipherStream = conn.cryptography.createCipherStream(cipherOptions);

    // 3. Simula uma fonte de dados (ex: leitura de arquivo)
    const sourceData = "Large amount of data that should be processed in chunks through a stream.";
    const sourceStream = Readable.from(sourceData);

    console.log("Processing data through cipher stream...");

    let encryptedResult = Buffer.alloc(0);

    // 4. Conecta os streams
    sourceStream.pipe(cipherStream);

    // 5. Coleta o resultado
    for await (const chunk of cipherStream) {
    encryptedResult = Buffer.concat([encryptedResult, chunk]);
    console.log(`Received encrypted chunk of ${chunk.length} bytes`);
    }

    console.log("Stream processing completed.");
    console.log("Total encrypted size:", encryptedResult.length);

    } catch (err) {
    console.error("Error during stream cipher example:", err.message);
    } finally {
    if (conn) {
    await conn.disconnect();
    console.log("Disconnected from HSM.");
    }
    }
    };

    streamCipherExample();