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

    const connectAndSignMLDSA = 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 um nome aleatório para a chave ML-DSA a ser usada na assinatura
    const keyName = `MLDSA_KEY_${Date.now()}`;

    // 1. Cria uma chave ML-DSA (usado ALG_ML_DSA_44 no exemplo)
    await conn.key.create(
    keyName,
    hsm.enums.PQC_ML_DSA_ASYMMETRIC_KEYS.ALG_ML_DSA_44, // Chave do tipo ML-DSA 44
    false, // Exportável
    true // Temporário
    );
    console.log(`ML-DSA key created successfully: ${keyName}`);

    // 2. Prepara o dado a ser assinado
    // Note: Para ML-DSA, tipicamente assinamos o dado bruto à um hash pré-calculado.
    const dataToSign = Buffer.from("Data to be signed with ML-DSA algorithm", "utf8");

    // 3. Contexto (opcional)
    const context = Buffer.from("ExampleContext", "utf8");

    // 4. Assina o dado
    console.log("Signing data...");
    const signature = await conn.cryptography.mldsaSign(
    keyName, // Id da chave
    dataToSign, // dado a ser assinado
    true, // deterministico
    false, // preHash
    context // contexto (optional)
    );

    console.log("Signature generated successfully!");
    console.log("Signature (hex):", signature.toString("hex"));

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

    connectAndSignMLDSA();