// Define os parâmetros de conexão com o HSM constoptions = { host:"127.0.0.1", authUsernamePassword: { username:"master", password:"12345678", }, };
asyncfunctionexportKekWrap() { // Connecta ao HSM constconn = awaithsm.connect(options);
// Chave que será útilizaada para encriptar a chave que será exportada constkekKeyName = "myKekKey";
// Cria a chave KEK no HSM constkekImported = awaitconn.key.create( kekKeyName, // Nome da chave hsm.enums.SYMMETRICAL_KEYS.ALG_AES_256, // Algoritmo da chave true, // Se é exportável true// Se é temporária );
if (!kekImported) { console.log("Error on create KEK key"); return; }
// Chave que será encriptada e exportada constkeyName = "myEncryptedKey";
// Cria a chave no HSM constkeyToExport = awaitconn.key.create( keyName, // Nome da chave hsm.enums.SYMMETRICAL_KEYS.ALG_AES_256, // Algoritmo da chave true, // Se é exportável true// Se é temporária );
if (!keyToExport) { console.log("Error on create key"); return; }
// IV (Initialization Vector) utilizado para encriptar a chave constiv = "5C3473E5016D36B341D0F363FF95BC1B";
// Exporta a chave encriptada com a KEK constexportedKekKey = awaitconn.key.exportKekWrap( hsm.enums.KEK_MODE.MODE_ECB, // Modo de operação para a importação da chave hsm.enums.KEK_WRAP_PADDING._0_PAD, // Padding utilizado na exportação da chave keyName, // Nome da chave kekKeyName, // Nome da chave útilizada para encriptar iv// IV utilizado para encriptar a chave );
if (!exportedKekKey || !exportedKekKey.length === 0) { console.log("Error on export encrypted key"); return; }