API JavaScript HSM Dinamo
    Preparing search index...
    // 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 importExportPkcs8() {
    // Conecta ao HSM
    const conn = await hsm.connect(options);
    console.log("HSM connected");

    const originalKeyName = "myOriginalRsaKey";
    const importedKeyName = "myImportedRsaKey";
    const password = "mySecretPassword123"; // Senha para proteger a chave PKCS#8

    try {
    // 1. Cria uma chave RSA 2048 no HSM
    const created = await conn.key.create(
    originalKeyName,
    hsm.enums.RSA_ASYMMETRIC_KEYS.ALG_RSA_2048,
    true, // exportable
    true // temporary
    );

    if (created) {
    console.log(`Chave RSA "${originalKeyName}" criada com sucesso.`);
    } else {
    throw new Error(`Falha ao criar a chave "${originalKeyName}".`);
    }

    // 2. Exporta a chave no formato PKCS#8, protegida por senha
    const exportedKeyBuffer = await conn.key.exportPKCS8(originalKeyName, password);

    // Constrói o formato PEM a partir do buffer DER retornado
    const base64Key = exportedKeyBuffer.toString('base64');
    const exportedKeyPem = [
    '-----BEGIN ENCRYPTED PRIVATE KEY-----',
    ...(base64Key.match(/.{1,64}/g) || []),
    '-----END ENCRYPTED PRIVATE KEY-----'
    ].join('\n');

    console.log(`Chave "${originalKeyName}" exportada com sucesso no formato PKCS#8.`);
    console.log("Chave Exportada (PEM):\n", exportedKeyPem);

    // 3. Importa a chave PKCS#8 de volta para o HSM com um novo nome
    const imported = await conn.key.importPKCS8(
    importedKeyName,
    hsm.enums.RSA_ASYMMETRIC_KEYS.ALG_RSA_2048,
    password,
    exportedKeyPem,
    true, // exportable
    true // temporary
    );

    if (imported) {
    console.log(`Chave "${importedKeyName}" importada com sucesso a partir do PKCS#8.`);
    } else {
    throw new Error("Falha ao importar a chave PKCS#8.");
    }

    } catch (error) {
    console.error("Ocorreu um erro:", error.message);
    } finally {
    // 4. Limpeza: deleta as chaves criadas
    try {
    await conn.key.delete(originalKeyName);
    console.log(`Chave "${originalKeyName}" deletada.`);
    await conn.key.delete(importedKeyName);
    console.log(`Chave "${importedKeyName}" deletada.`);
    } catch (cleanupError) {
    console.error("Erro durante a limpeza:", cleanupError.message);
    }

    // Desconecta do HSM
    await conn.disconnect();
    console.log("HSM disconnected");
    }
    }

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