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

    const connectAndVerifyMLDSA = 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
    true, // Exportável
    false // Temporário
    );
    console.log(`ML-DSA key created successfully: ${keyName}`);

    // 2. Prepara o dado a ser assinado e contexto
    const dataToSign = Buffer.from("Data to be signed with ML-DSA algorithm", "utf8");
    const context = Buffer.from("ExampleContext", "utf8");

    // 3. 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!");

    // 4. Verificando a assinatura
    console.log("Verifying signature...");
    const isValid = await conn.cryptography.mldsaVerify(
    keyName, // FQN da chave
    dataToSign, // dados assinados
    signature, // assinatura que se quer verificar
    true, // deterministico
    false, // preHash
    context // contexto (deverá ser o mesmo contexto utilizado ao assinar)
    );

    if (isValid) {
    console.log("Success: The signature is valid!");
    } else {
    console.log("Failed: The signature is invalid.");
    }

    // --- Demonstrando uma verificação inválida (contexto errado) ---
    console.log("\nVerifying with wrong context...");
    const wrongContext = Buffer.from("WrongContext", "utf8");
    const isInvalidContext = await conn.cryptography.mldsaVerify(
    keyName,
    dataToSign,
    signature,
    true,
    false,
    wrongContext
    );

    if (!isInvalidContext) {
    console.log("Expected result: Signature validation failed due to wrong context.");
    }

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

    connectAndVerifyMLDSA();