CLI Testing Tool
The Arculus FIDO2 CLI (Command Line Interface) is a desktop testing tool for validating Arculus FIDO2 card functionality and testing integration with FIDO2 servers. It provides a command-line interface to perform all FIDO2 operations including registration, authentication, PIN management, and credential management.
Note: This tool is intended for testing and development purposes only. It requires a desktop NFC card reader that supports the PC/SC interface. Arculus has tested with with the following NFC card readers:
HID OmniKey 5422 HID
LIBO NFC Smart ACR122U RFI
Overview
The CLI tool allows you to:
Test FIDO2 registration and authentication flows
Manage PINs (set, change, check retries)
List and manage credentials on the card
Test against local or remote FIDO2 servers
Validate card functionality before integrating the SDK into your application
Debug FIDO2 operations with detailed logging
Prerequisites
Hardware Requirements
Desktop NFC Card Reader: A PC/SC-compatible NFC reader (e.g., HID Global OMNIKEY 5422)
Arculus FIDO2 Card: An Arculus FIDO2 hardware security key
Software Requirements
PC/SC Support:
Windows: Built-in (no additional installation needed)
macOS: Built-in (no additional installation needed)
Linux: Install
pcsclitefrom your package manager or from source
Obtaining the CLI Tool
Contact your Arculus representative to obtain the CLI tool distribution package. The package includes:
ArculusFidoCli.jar- Main CLI executableConvenience scripts (
.shfor Linux/macOS,.batfor Windows)Required dependencies
Installation
Extract the Distribution Package
Verify PC/SC Reader Detection
Before using the CLI, verify that your card reader is detected:
Expected output:
Note: On Windows, the CLI must be run as Administrator, as FIDO2 CTAP card interactions are blocked for normal user accounts for security reasons.
Basic Usage
The CLI tool uses the arculusFido.sh (or arculusFido.bat on Windows) script with a --command parameter to specify the operation.
Common Parameters
Most commands support these common parameters:
--command=<command>
Command to execute (required)
None
--pin=<PIN>
6+ digit numeric PIN
123456
--address=<address>
FIDO2 server address
127.0.0.1
--port=<port>
FIDO2 server port
5001
--relyingParty=<rpId>
Relying party ID
localhost
--displayName=<name>
Display name
Test User
--preferredReader=<name>
PC/SC reader name
Auto-detect
--ignoreSSLCertValidation=<true|false>
Ignore SSL cert validation (testing only)
false
--sdk
Output raw SDK results only
false
Server Address Format: The --address parameter can be:
IP address:
127.0.0.1Hostname:
localhostURL with protocol:
https://myserver.com(port defaults to 443)URL without protocol:
myserver.com(uses specified port)
Commands
Device Information
Get Version
Get the version information from the Arculus FIDO2 card:
Or use the convenience script:
Get Device Info
Get detailed device information:
Or use the convenience script:
PIN Management
Set PIN
Set a PIN on the card. Note: Setting a PIN also resets the device to a clean state.
Or use the convenience script:
PIN Requirements: PIN must be numeric and between 4 and 12 digits.
Change PIN
Change an existing PIN. Note: This does NOT reset the device.
Or use the convenience script:
Check PIN Retries
Get the number of PIN retries remaining:
Or use the convenience script:
Device Management
Reset Device
Reset the Arculus FIDO2 device to a clean state (removes all credentials):
Or use the convenience script:
Registration
Register a user and create a FIDO2 credential on both the card and the FIDO2 server:
Parameters:
--pin: Card PIN (required)--username: User identifier (required)--displayName: Human-readable name (required)--address: FIDO2 server address--port: FIDO2 server port--relyingParty: Relying party ID (domain)--registrationInfo: Optional JSON object with device metadata--resetOnRegister: Reset device before registering (optional)
Example with HTTPS:
Or use the convenience script:
Authentication
Authenticate a user with an existing FIDO2 credential:
Parameters:
--pin: Card PIN (required, unless--nopinis used)--username: User identifier (required)--displayName: Human-readable name (required)--address: FIDO2 server address--port: FIDO2 server port--relyingParty: Relying party ID (domain)--nopin: Authenticate without PIN (if card allows)
Example with HTTPS:
Or use the convenience script:
Credential Management
List Credentials for Relying Party
List all credentials on the card for a specific relying party:
Or use the convenience script:
List All Credentials
List all credentials on the card across all relying parties:
Or use the convenience script:
List All Relying Parties
List all relying party domains that have credentials on the card:
Or use the convenience script:
Delete Credential
Delete a specific credential from the card:
Or use the convenience script:
Advanced Options
Server Configuration
For testing with non-Arculus FIDO2 servers (e.g., StrongKey, ImproveId), use the --server-config parameter:
Custom API Paths
For servers with custom API paths, configure them in the server config:
SDK Mode Output
Use --sdk to get raw SDK output (useful for scripting):
This suppresses all logging and outputs only the raw SDK response JSON.
Logging
Control log verbosity with --logLevel:
Log levels:
0= Verbose1= Debug2= Info3= Warning4= Error
Testing Workflows
Complete Test Sequence
Run all commands in sequence (version, reset, set PIN, register, authenticate):
Or use the convenience script:
Local Development Testing
Test against a local FIDO2 server:
Or use the convenience script for localhost:
Response Format
The CLI tool returns JSON responses in the following format:
Success Response:
Error Response:
For detailed error code meanings, see 2.8 Error Codes.
Use Cases
Development Testing
Use the CLI tool during development to:
Verify card functionality before SDK integration
Test FIDO2 server connectivity
Validate registration and authentication flows
Debug credential management operations
Integration Validation
Before deploying to production:
Test registration with your production server configuration
Verify authentication flows work correctly
Validate multi-tenant scenarios (if applicable)
Test error handling and edge cases
Troubleshooting
Use the CLI tool to diagnose issues:
Verify card is detected and functional
Test PIN operations
Check credential storage on the card
Validate server connectivity and responses
Limitations
Desktop Only: Requires PC/SC-compatible NFC reader (not available for mobile platforms)
Testing Tool: Intended for development and testing, not production use
Windows Admin: On Windows, must run as Administrator
Single Card: Tests one card at a time
Last updated

