De cryptography_rsa_sign.js

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

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

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

// Dados a serem assinados
const data = "Data to be signed";
const hash = crypto.createHash('sha256');
const hashedData = await hash.update(data).digest();

// Nome da chave
const keyName = "myRsaSignKey";

// Cria a chave RSA
const keyCreated = await conn.key.create(
keyName, // Nome da chave
hsm.enums.RSA_ASYMMETRIC_KEYS.ALG_RSA_2048, // Algoritmo da chave
true, // Se é exportável
true // Se é temporária
)

// Efetua a assinatura RSA
const signature = await conn.cryptography.rsaSign(
keyName, // Nome da chave
hsm.enums.HASH_ALGORITHMS.ALG_SHA2_256, // Algoritmo de hash
hashedData, // Dados a serem assinados
hsm.enums.PAD_TYPE.PKCS1_V1_5 // Padding da assinatura
)

// Assinatura
console.log(signature.toString('hex'));

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

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