// Importa o cliente Dinamo HSM
const { hsm } = require("@dinamonetworks/hsm-dinamo");

// Define os parâmetros de conexão com o HSM
const options = {
host: "127.0.0.1",
authUsernamePassword: {
username: "master",
password: "12345678",
},
};

async function hsmConnectWithToken() {
// Connecta ao HSM
const conn = await hsm.connect(options);

// Conexão estabelecida
console.log("HSM connected with username and password");

// Gera um token para o usuário autenticado
// ATEÇAO: Será gerado um novo token para cada execução
const token = await conn.user.generateToken();

// Imprime o token gerado
console.log(`Token: ` + token);

// Desconecta do HSM
await conn.disconnect();

// Conexão encerrada
console.log("HSM connection with username and password disconnected");

// Define os parâmetros de conexão com o HSM utilizando o token
const tokenOptions = {
host: "127.0.0.1",
authToken: token,
};
// Você também pode se conectar usando variáveis de ambiente
// HSM_HOST - Host do HSM
// HSM_PORT - Porta do HSM
// HSM_AUTH_TOKEN - Token de autenticação do HSM

// Connecta ao HSM utilizando o token
const connToken = await hsm.connect(tokenOptions);

// Conexão estabelecida
console.log("HSM connected with token");

// Desconecta do HSM
await connToken.disconnect();

console.log("HSM connection with token disconnected");
}

// Execute a função hsmConnectWithToken
hsmConnectWithToken();