Java
elements – a simulator for Utimaco Atalla payment HSMs running in AKB (Atalla Key Block) mode. This simulator supports CVC / CVV, PIN set/verify, and EMV ARQC verification / ARPC generation. It also has an even more restricted Thales HSM simulator, but there are other, more complete implementations out in the wild.
Note: elements is a framework with a broad set of features; the HSM simulators are in elements/security/src/main/java/net/e6tech/elements/security/hsm
Atalla Commands supported are:
Elements Atalla Simulator Command set from githubcommands.put("00", Echo.class);
commands.put("5D", GenerateCVV.class);
commands.put("30", EncryptPIN.class);
commands.put("37", ChangePIN.class);
commands.put("32", VerifyPIN.class);
commands.put("31", TranslatePIN.class);
commands.put("7E", CheckDigits.class);
commands.put("11B", ImportWorkingKey.class);
commands.put("335", TranslatePINBlock.class);
commands.put("350", VerifyARQC.class);
HSM Simulator – a simulator for Variant-mode Atalla payment HSMs. This simulator is focussed on PIN and working key management operations only, and does not appear to contain CVC/CVV or EMV functionality. However, if you are looking for a reference implementation in Java for Variant-mode Atalla processing, this is the one you should look at.
Supports variant key management only – no other key management modes yet.
Is a Java process that simulates a financial services Hardware Security Module (HSM). A class called ServerProcess starts a plain-text TCP service to simulate an HSM Request/Response transaction. config.properties contains runtime settings and master keys
HSM Simulator README.md from github