HSM Command Console
BetaA 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.

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
- Create a console configuration — From the Home screen open
HSM Host Consoleand add a new configuration. - 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). - Set the address — Enter the HSM's IP Address and Port, and a connection Timeout.
- (Optional) Enable TLS — In SSL/TLS Configuration turn on TLS, choose the version and certificate-verification mode, and attach your CA / client certificate.
- Launch and connect — Open the console and click Connect. The header dot turns green when the socket is up.
- 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.
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.
| Vendor | Model family | Default Port | Framing |
|---|---|---|---|
| Thales payShield | payShield 9000 / 10K | 1500 | 2-byte binary length |
| Futurex Excrypt | KMES Series 3 | 2000 | 2-byte binary length |
| SafeNet Luna | Thales Luna Network HSM | 1500 | 2-byte binary length |
| Utimaco CryptoServer | Se / CP5 | 3001 | 2-byte binary length |
| nCipher nShield | Entrust nShield Connect / Solo | 9004 | 4-byte ASCII length |
| Utimaco Atalla | Atalla AT1000 | 7000 | STX / ETX framing |
| Generic HSM | Custom / other | 1500 | Configurable |
Connection Settings
The Connection Settings configuration tab defines the transport to the HSM.

127.0.0.1.1500 for Thales).30.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.

| Header Format | Description |
|---|---|
2-byte Binary Length | Two-byte big-endian length prefix. Used by Thales, Futurex, Luna, Utimaco. |
4-byte ASCII Length | Four ASCII digits of length. Used by nCipher nShield. |
STX / ETX Framing | Start/end control bytes bracket the message. Used by Utimaco Atalla. |
No Header / Framing | Raw payload with no length prefix. |
Custom Header | User-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.


| Setting | Options |
|---|---|
| TLS Version | TLS 1.2 (default), TLS 1.3, and earlier where required. |
| Certificate Verification | No Verification, Trust All Certificates, CA-Signed Only, Custom CA Authority. |
| Certificate Type | PKCS#12 client certificate with key-store password. |
| Cipher Suites | Selectable set, defaulting to TLS_AES_256_GCM_SHA384 and TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384. |
| Key material | CA 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.

- 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]](/images/docs/hsm-command-console/scenario.png)
- 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.

| Parameter | Description | Default |
|---|---|---|
| Concurrent Connections | Parallel sockets driving the load. | 1 |
| Commands / second | Target command rate. | 10 |
| Duration | Test length in seconds. | 60 |
| Pattern | Constant 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.

Tabs Reference
| Tab | Purpose |
|---|---|
| Console | Compose and send individual host commands; read decoded responses. |
| Scenario | Build, save, and replay ordered command sequences. |
| Load Test | Run a scenario at a target rate and pattern across connections. |
| Logs | Timestamped exchange log with connection and byte counters. |
Pair this with the HSM Simulator (the server side) for a complete, self-contained key-management test rig.