constconnectAndVerifyMLDSA = async () => { letconn; try { // Define os parâmetros de conexão com o HSM constoptions = { host:"127.0.0.1", authUsernamePassword: { username:"master", password:"12345678", }, };
// Estabelece conexão com o HSM conn = awaithsm.connect(options); console.log("Connected to HSM successfully.");
// Define um nome aleatório para a chave ML-DSA a ser usada na assinatura constkeyName = `MLDSA_KEY_${Date.now()}`;
// 1. Cria uma chave ML-DSA (usado ALG_ML_DSA_44 no exemplo) awaitconn.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 constdataToSign = Buffer.from("Data to be signed with ML-DSA algorithm", "utf8"); constcontext = Buffer.from("ExampleContext", "utf8");
// 3. Assina o dado console.log("Signing data..."); constsignature = awaitconn.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..."); constisValid = awaitconn.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."); }