HSM Command Console

Beta

A host-command client for hardware security modules. Connect to a real or simulated HSM, fire individual host commands, chain them into repeatable scenarios, and drive them under load — all over TCP/IP with optional TLS. Inside the app it is titled HSM Host Console.

Overview

The HSM Command Console acts as a client that talks to an HSM's host interface. It packs your command payload with the vendor's framing (length header, STX/ETX, etc.), sends it over the socket, and shows the raw request/response exchange. Point it at ISO8583Studio's own HSM Simulator or at a physical device on your bench.

HSM Host Console connected to Thales payShield at 127.0.0.1:9090, with the 120-command list on the left and an NO / NP HSM Status exchange shown as formatted request and response
hsm-command-console Overview
🏦

Multi-Vendor

Thales payShield, Futurex, SafeNet Luna, Utimaco CryptoServer & Atalla, and nCipher nShield — each with the correct default port and framing.

⌨️

Command Console

Compose host commands from the vendor's command set, fill in fields, send, and read the decoded response.

🌿

Scenario Builder

Chain commands into a named scenario (each step is a command code + field values) and replay it on demand.

Load Tester

Run a scenario at a target rate with constant, ramp-up, spike, or burst patterns across concurrent connections.

🔒

TLS Transport

Optional mutual TLS with configurable version, cipher suites, CA verification, and PKCS#12 client certificates.

📜

Exchange Log

Every command and response is timestamped and captured in the Logs tab for review and export.

Quick Start

  1. Create a console configuration — From the Home screen open HSM Host Console and add a new configuration.
  2. Pick your HSM vendor — In Connection Settings, choose the HSM Type. The port and framing default to that vendor (e.g. Thales payShield → port 1500, 2-byte binary length).
  3. Set the address — Enter the HSM's IP Address and Port, and a connection Timeout.
  4. (Optional) Enable TLS — In SSL/TLS Configuration turn on TLS, choose the version and certificate-verification mode, and attach your CA / client certificate.
  5. Launch and connect — Open the console and click Connect. The header dot turns green when the socket is up.
  6. Send a command — In the Console tab select a command from the vendor set, fill its fields, and send. The response appears in the exchange log.
Tip

No physical HSM? Start the HSM Simulator as a server on the same machine and point the console at 127.0.0.1:1500 for a fully local key-management loop.

Supported HSM Vendors

Selecting a vendor sets its default port and message framing automatically. All vendors are driven over the same socket client.

VendorModel familyDefault PortFraming
Thales payShieldpayShield 9000 / 10K15002-byte binary length
Futurex ExcryptKMES Series 320002-byte binary length
SafeNet LunaThales Luna Network HSM15002-byte binary length
Utimaco CryptoServerSe / CP530012-byte binary length
nCipher nShieldEntrust nShield Connect / Solo90044-byte ASCII length
Utimaco AtallaAtalla AT10007000STX / ETX framing
Generic HSMCustom / other1500Configurable

Connection Settings

The Connection Settings configuration tab defines the transport to the HSM.

Connection Settings tab with the console named HSM Host Console - local, HSM type Thales payShield, IP 127.0.0.1 port 9090, a 30 second timeout, and the TCP length header enabled
hsm-command-console Connection Settings
IP Address
HSM host interface address. Default 127.0.0.1.
Port
TCP port; auto-filled from the selected vendor (e.g. 1500 for Thales).
Timeout
Connection / response timeout in seconds. Default 30.
Name & Description
Identifiers for the saved configuration.

Message Framing

HSMs delimit messages differently. The console supports the common framing schemes; the correct one is selected when you pick a vendor, and can be overridden.

Message Framing controls: TCP length header enabled, header format 2-byte binary length, message header 0000, empty trailer, and message header length 4
hsm-command-console Message Framing
Header FormatDescription
2-byte Binary LengthTwo-byte big-endian length prefix. Used by Thales, Futurex, Luna, Utimaco.
4-byte ASCII LengthFour ASCII digits of length. Used by nCipher nShield.
STX / ETX FramingStart/end control bytes bracket the message. Used by Utimaco Atalla.
No Header / FramingRaw payload with no length prefix.
Custom HeaderUser-defined header / trailer bytes.

Additional framing fields: TCP Length Header Enabled toggle, Message Header (hex, e.g. 0000), Message Trailer (hex, optional), and Message Header Length.

SSL / TLS Configuration

Enable encrypted transport to the HSM in the SSL/TLS Configuration tab.

SSL/TLS configuration with encryption enabled, TLS 1.2, a PKCS#12 bundle, CA-signed-only verification, and empty client certificate, private key and keystore password fields
hsm-command-console SSL / TLS Configuration
Cipher suite checklist with TLS_AES_256_GCM_SHA384 and TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 selected, each entry labelled with its strength
hsm-command-console SSL / TLS Configuration — cipher suites
SettingOptions
TLS VersionTLS 1.2 (default), TLS 1.3, and earlier where required.
Certificate VerificationNo Verification, Trust All Certificates, CA-Signed Only, Custom CA Authority.
Certificate TypePKCS#12 client certificate with key-store password.
Cipher SuitesSelectable set, defaulting to TLS_AES_256_GCM_SHA384 and TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.
Key materialCA authority path, client public certificate, client private key.

Command Console Tab

The Console tab is the interactive workspace. Pick a host command from the active vendor's command set, populate its parameter fields, and send it. The request and the decoded response are appended to the exchange log with response codes and timing.

Command Console with A0 Generate a Key selected, its parameter fields filled in for a TDES key block, and the response panel showing the decoded key block and its check value
hsm-command-console Command Console Tab
  • Vendor command set — the available commands follow the selected HSM vendor (for Thales, the full payShield host-command set).
  • Field editor — each command exposes its parameters as labelled inputs so you don't hand-assemble the payload.
  • Send & inspect — responses are shown raw and parsed; errors surface the HSM's response/error code.

Scenario Builder Tab

A scenario is an ordered list of command steps — each step captures a commandCode and its field values. Build a sequence (for example: generate a key, export it under a ZMK, then translate a PIN block), name it, and save it into the configuration for reuse.

Scenario Builder with a two-step flow - A0 Generate a Key then A6 Import a Key - where the import step references the generated key as [1][A0][KEY]
hsm-command-console Scenario Builder Tab
  • Steps — add, reorder, and edit command steps; values from earlier steps can feed later ones.
  • Saved scenarios — persisted with the configuration and available to both the console and the load tester.
  • Playlists — group custom text, single commands, and whole scenarios into a runnable playlist with optional auto-advance.

Load Testing Tab

Drive a saved scenario against the HSM to measure throughput and stability. Configure it in the Load Test Settings tab and run it from the Load Test tab.

Load test results for an NO HSM Status playlist: 96 sent, 96 received, 96 successes, 0 failures, 0.9 ms average latency and 9.6 tps at a 100% success rate
hsm-command-console Load Testing Tab
ParameterDescriptionDefault
Concurrent ConnectionsParallel sockets driving the load.1
Commands / secondTarget command rate.10
DurationTest length in seconds.60
PatternConstant Rate, Ramp Up, Spike Test, or Burst Pattern.Constant

Logs Tab

The Logs tab streams every exchange — request, response, connection events — with timestamps. Clear the buffer, and see live connection count and byte counters. Global logging can be toggled in app settings.

Logs tab streaming connection events and a Thales exchange expanded into its formatted request, formatted response, raw hex and parsed views
hsm-command-console Logs Tab

Tabs Reference

TabPurpose
ConsoleCompose and send individual host commands; read decoded responses.
ScenarioBuild, save, and replay ordered command sequences.
Load TestRun a scenario at a target rate and pattern across connections.
LogsTimestamped exchange log with connection and byte counters.
Related

Pair this with the HSM Simulator (the server side) for a complete, self-contained key-management test rig.