Fix TR-31/TR-34 op names and sort Payments category alphabetically

Rename two ops to follow the domain-prefix-first convention:
  "Parse TR-31 Key Block"    -> "TR-31 Parse Key Block"
  "Parse TR-34 Key Transport" -> "TR-34 Parse Key Transport"

Sort all 33 Payments category entries alphabetically in Categories.json.
With domain-prefix names the prefixes cluster related ops naturally, so
alphabetical order is also logical order.

Update PAYMENT_RECIPES.md UI Arrangement section to document alphabetical
ordering. Fix stale lowercase references in AWS_PAYMENT_CRYPTOGRAPHY_RECIPES.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
J8k3 2026-05-18 14:11:06 -04:00
parent c6d530348e
commit eba7e37185
6 changed files with 40 additions and 45 deletions

View File

@ -158,8 +158,8 @@ Preferred chain:
- `Derive ECDH Key Material`
- KDF if needed
- `AES Key Wrap` or `AES Key Unwrap`
- `Parse TR-31 key block`
- `Parse TR-34 B9 envelope`
- `TR-31 Parse Key Block`
- `TR-34 Parse Key Transport`
Important assumption:
- this is a recipe chain, not a single HSM-like rewrap boundary
@ -209,4 +209,4 @@ Method:
- `Derive ECDH Key Material`
- `AES Key Unwrap`
- `AES Key Wrap`
- `Parse TR-31 key block`
- `TR-31 Parse Key Block`

View File

@ -22,12 +22,7 @@ Pattern: `[Domain Prefix] [Verb] [Qualifier]`
## UI Arrangement
The `Payments` category is arranged in this order:
- payment-facing wrappers (Payment Encrypt/Decrypt/Re-Encrypt) first
- MAC and EMV flows next
- PAN, card, and PIN flows after that
- key derivation, generation, KCV, and parser utilities next
- HSM command parsers last
The `Payments` category is sorted alphabetically. The domain-prefix naming convention means related operations naturally cluster together in the list (all EMV ops together, all PIN Block ops together, etc.).
## 1) Encrypt / Decrypt / Re-Encrypt Payment Data
@ -228,8 +223,8 @@ Important assumptions:
Operations:
- `HSM Parse Thales Command`
- `HSM Parse Futurex Command`
- `Parse TR-31 Key Block`
- `Parse TR-34 Key Transport`
- `TR-31 Parse Key Block`
- `TR-34 Parse Key Transport`
Use this when:
- you need to inspect vendor HSM command syntax, wrapped-key material, or transport frames during testing
@ -237,14 +232,14 @@ Use this when:
Input:
- `HSM Parse Thales Command`: raw legacy host command or response text
- `HSM Parse Futurex Command`: raw bracketed Excrypt command or response text
- `Parse TR-31 Key Block` / `Parse TR-34 Key Transport`: full payload as text or hex, depending on the operation comment
- `TR-31 Parse Key Block` / `TR-34 Parse Key Transport`: full payload as text or hex, depending on the operation comment
Important assumptions:
- the Thales and Futurex parsers currently focus on visible message syntax, delimiters, command identification, and field splitting rather than deep per-command semantic decoding
- `HSM Parse Thales Command` expects the configured message-header length to be supplied in the op args
- `HSM Parse Futurex Command` treats Excrypt messages as delimiter-based tag/value fields and commonly uses the `AO` field as the command code
- `Parse TR-31 Key Block` decodes all X9.143 header fields with descriptions and PCI compliance flags
- `Parse TR-34 Key Transport` handles B0B9 message types, error codes, and peeks at the outer ASN.1 SEQUENCE of the CMS envelope
- `TR-31 Parse Key Block` decodes all X9.143 header fields with descriptions and PCI compliance flags
- `TR-34 Parse Key Transport` handles B0B9 message types, error codes, and peeks at the outer ASN.1 SEQUENCE of the CMS envelope
## Chaining Patterns

View File

@ -586,39 +586,39 @@
{
"name": "Payments",
"ops": [
"Payment Encrypt Data",
"Payment Decrypt Data",
"Payment Re-Encrypt Data",
"MAC Generate",
"MAC Verify",
"EMV Generate MAC",
"EMV Verify MAC",
"EMV Generate ARQC",
"EMV Verify ARQC",
"EMV Generate ARPC",
"EMV Generate MAC (PIN Change)",
"PAN Generate",
"PAN Parse",
"AS2805 Generate KEK Validation",
"Card Validation Data Generate",
"Card Validation Data Verify",
"PIN Data Generate",
"PIN Data Verify",
"DUKPT Derive AES Key",
"DUKPT Derive TDES Key",
"EMV Generate ARPC",
"EMV Generate ARQC",
"EMV Generate MAC",
"EMV Generate MAC (PIN Change)",
"EMV Verify ARQC",
"EMV Verify MAC",
"HSM Parse Futurex Command",
"HSM Parse Thales Command",
"IBM 3624 Generate PIN Offset",
"IBM 3624 Verify PIN",
"Key Generate",
"MAC Generate",
"MAC Verify",
"PAN Generate",
"PAN Parse",
"Payment Calculate KCV",
"Payment Decrypt Data",
"Payment Encrypt Data",
"Payment Re-Encrypt Data",
"PIN Block Build",
"PIN Block Parse",
"PIN Block Translate",
"IBM 3624 Generate PIN Offset",
"IBM 3624 Verify PIN",
"PIN Data Generate",
"PIN Data Verify",
"TR-31 Parse Key Block",
"TR-34 Parse Key Transport",
"VISA PVV Generate",
"VISA PVV Verify",
"DUKPT Derive TDES Key",
"DUKPT Derive AES Key",
"Key Generate",
"Payment Calculate KCV",
"AS2805 Generate KEK Validation",
"HSM Parse Thales Command",
"HSM Parse Futurex Command",
"Parse TR-31 Key Block",
"Parse TR-34 Key Transport"
"VISA PVV Verify"
]
},
{

View File

@ -120,7 +120,7 @@ class ParseTR31KeyBlock extends Operation {
constructor() {
super();
this.name = "Parse TR-31 Key Block";
this.name = "TR-31 Parse Key Block";
this.module = "Payment";
this.description = [
"Parses a <b>TR-31</b> (ANSI X9.143) key block and decodes every header field into a human-readable description.",

View File

@ -106,7 +106,7 @@ class ParseTR34B9Envelope extends Operation {
constructor() {
super();
this.name = "Parse TR-34 Key Transport";
this.name = "TR-34 Parse Key Transport";
this.module = "Payment";
this.description = [
"Parses a <b>TR-34</b> key transport message frame (hex input) and decodes each section.",

View File

@ -213,7 +213,7 @@ TestRegister.addTests([
}, null, 4),
recipeConfig: [
{
op: "Parse TR-31 Key Block",
op: "TR-31 Parse Key Block",
args: [true]
}
]
@ -255,7 +255,7 @@ TestRegister.addTests([
}, null, 4),
recipeConfig: [
{
op: "Parse TR-34 Key Transport",
op: "TR-34 Parse Key Transport",
args: []
}
]