if (created) { console.log(`Chave RSA "${originalKeyName}" criada com sucesso.`); } else { thrownewError(`Falha ao criar a chave "${originalKeyName}".`); }
// 2. Exporta a chave no formato PKCS#8, protegida por senha constexportedKeyBuffer = awaitconn.key.exportPKCS8(originalKeyName, password);
// Constrói o formato PEM a partir do buffer DER retornado constbase64Key = exportedKeyBuffer.toString('base64'); constexportedKeyPem = [ '-----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 constimported = awaitconn.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 { thrownewError("Falha ao importar a chave PKCS#8."); }
} catch (error) { console.error("Ocorreu um erro:", error.message); } finally { // 4. Limpeza: deleta as chaves criadas try { awaitconn.key.delete(originalKeyName); console.log(`Chave "${originalKeyName}" deletada.`); awaitconn.key.delete(importedKeyName); console.log(`Chave "${importedKeyName}" deletada.`); } catch (cleanupError) { console.error("Erro durante a limpeza:", cleanupError.message); }
// Desconecta do HSM awaitconn.disconnect(); console.log("HSM disconnected"); } }