CoolWallet Pro Firmware
July 24, 2026 · View on GitHub

Official Website|Discord | Twitter Follow
Introduction
CoolWallet Pro Firmware is a Javacard firmware designed specifically for the CoolWallet Pro. It offers advanced features for private key management, signing, and transaction data composition. The firmware focuses on developing a secure element solution using Java Card technology to ensure a high level of security for cryptographic operations and the protection of sensitive data.
Key Features
- Private key management: Safely store and manage private keys within the secure element of the CoolWallet Pro.
- Signing: Perform secure and verifiable digital signatures for transactions and authentication purposes.
- Transaction data composition: Generate and compose transaction data in a secure manner, ensuring data integrity and confidentiality.
Security and Privacy
The CoolWallet Pro Firmware prioritizes security and privacy to protect users' digital assets. It leverages the advanced security features of Java Card technology, providing a robust and tamper-resistant environment for cryptographic operations. With the CoolWallet Pro Firmware, users can have confidence in the confidentiality, integrity, and authenticity of their transactions and sensitive data.
Supported Algorithms
Hash:
- Blake2b
- HmacSha
- Sha2
- Sha3
- Ripemd
Signature:
- Ed25519
- Secp256k1
- Curve25519
- Bip32-Ed25519 (Cardano Signature)
Project Installation (Common)
To install the project, please follow the steps below:
Step 1: Cloning the Repository
Clone the repository by running the following command in your terminal or command prompt:
git clone git@github.com:CoolBitX-Technology/coolwallet-pro-se.git
Step 2: Initialize and Update Submodule
Initialize and update the submodule by running the following commands:
$ git submodule init
$ git submodule update
Step 3: Run the Installation Script
Run the installation script by executing the following command:
$ cd coolwallet-pro-se-crypto
$ javac Installation.java
$ java Installation
Note: The Crypto Library is an internal library provided by CoolBitX, offering a range of encoding and digital signature algorithms.
Windows Note: This script creates symbolic links from
src/coolbitx/to the files incoolwallet-pro-se-crypto/src/. Creating a symbolic link on Windows requires theSeCreateSymbolicLinkPrivilege, which a standard user account does not have by default. If you run the commands above from a normal (non-elevated) terminal, symlink creation will fail with anAccessDeniedExceptionand Eclipse will show the crypto classes (Sha2,Ed25519, etc.) as missing/unresolved. To fix this, do one of the following before runningjava Installation:
- Enable Developer Mode (Settings → Update & Security → For developers → Developer Mode), or
- Run your terminal/command prompt as Administrator.
You only need elevated privileges at the moment the links are created — once the symlinks exist, opening and building the project in Eclipse afterwards works normally with a regular user account. If you ever re-run
java Installation(e.g. after new files are added to the crypto library), repeat this with an elevated/Developer Mode session.
Environment Setup
This project supports two development workflows:
- Windows (Eclipse): Official NXP JCOP Tools workflow for CAP file generation.
- Cross-Platform (CLI / VS Code): Script-based workflow for macOS, Linux, and Windows (WSL), supporting local simulation.
1. Windows Environment Setup (Eclipse)
To successfully build and set up the development environment for this project on Windows using Eclipse, please follow the instructions below:
Prerequisites
- JDK 8 (64-bit)
Setting Up Environment Variables
After installing Java, it is essential to set up environment variables on your Windows computer.
System Variables
JAVA_HOME: Set the path to the JDK installation directory.PATH: Add the following paths to the system'sPATHvariable:%JAVA_HOME%\bin
Required Tools Installation
To ensure a smooth compilation process, it is recommended to have the following programs and versions installed:
- Eclipse Luna
- JCOP_Tools_5.32.0.4
JCOP Tools Installation
- Download the JCOP Tools installation package and save it to a directory of your choice.
- Launch Eclipse IDE.
- From the menu bar, go to Help > Install New Software.
- In the Install dialog, click on Add to add new features.
- In the Add Site dialog:
- Provide a descriptive name, such as 'NXP JCOP Tools'.
- If you have unpacked the JCOP Tools package, select Local... and navigate to the root folder of JCOP Tools.
- If JCOP Tools is a ZIP file, select Archive... and navigate to the ZIP file.
- Restart Eclipse to complete the installation.
Activating JCOP Tools
- Open Eclipse and navigate to File > New > Java Card Project.
- Choose the appropriate wizard:
- Create a Java Card project.
- Select the licensed JCOP: JCOP_Tools_activation_workspace.
Library Setup (Required)
Before opening the project in Eclipse, you must place the following library files into local_lib/javacard-libs/:
| File | Source |
|---|---|
api_classic.jar | Extracted from NXP_JCOP_Plugin_5.32.0.4.zip |
JCOPx_API-R1.1.4.jar | Extracted from NXP_JCOP_Plugin_5.32.0.4.zip |
bcprov-jdk15on-1.70.jar | Maven Central |
These files are referenced by the project's .classpath and are required for Eclipse to compile the source successfully.
If you are on macOS/Linux, you can run scripts/setup-libs.sh to extract these automatically. On Windows, you can obtain the first two jars by extracting NXP_JCOP_Plugin_5.32.0.4.zip and locating them inside the plugin bundle, or request a pre-packaged zip from a teammate who has already run the setup script.
2. Cross-Platform Environment Setup (CLI / VS Code)
This workflow is recommended for users on macOS, Linux, or Windows (WSL) who prefer using command-line tools or VS Code/Cursor. It supports compiling, simulating (without a physical card), and generating CAP files.
Prerequisites
- A JDK on
JAVA_HOME(orPATH) — any version works (verified on 8, 11, 17) - Gradle (for downloading simulator dependencies)
Configuration
1. VS Code Configuration (Optional)
This tells the VS Code Java extension where a JDK 8 is so that IDE features (code completion, error highlighting, etc.) work correctly. It has no effect on the build scripts.
The project's .vscode/settings.json already configures VS Code to auto-detect Java 8, so no manual changes are needed in most cases.
If auto-detection fails (e.g., multiple JDKs installed and the wrong one is picked), you can pin the path explicitly in .vscode/settings.json:
{
"java.configuration.runtimes": [
{
"name": "JavaSE-1.8",
"path": "/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home", // Set your Java 8 path here
"default": true
}
]
}
Workflow
Step 1: Initial Setup (One-time)
Before running the setup script, you must obtain the NXP JCOP Plugin (version 5.32.0.4) and place it in the local_lib directory.
- Obtain
NXP_JCOP_Plugin_5.32.0.4.zip. - Ensure the
local_libdirectory exists (create it if needed):mkdir -p local_lib - Place the file at:
local_lib/NXP_JCOP_Plugin_5.32.0.4.zip.
Run the setup script to extract dependencies:
chmod +x scripts/setup-libs.sh
scripts/setup-libs.sh
Step 2: Build the Project
To compile the JavaCard applet:
chmod +x scripts/build.sh
scripts/build.sh
scripts/build.sh will:
- Compile all
.javafiles undersrc/to JavaCard-compatible bytecode - Use the JavaCard / JCOP jars in
local_lib/javacard-libsas the classpath - Output
.classfiles into thebin/directory
Step 3: Run the Simulator (Web Service)
To start the APDU simulation web service on port 9527:
chmod +x scripts/run-web-server.sh
scripts/run-web-server.sh
This service allows you to send APDUs via HTTP POST to http://localhost:9527/apdu.
Example:
curl -X POST http://localhost:9527/apdu -d '00A404000D436F6F6C57616C6C657450524F'
Step 4: Generate CAP files
chmod +x scripts/cap-build.sh
scripts/cap-build.sh
Produces two CAP packages:
- Main applet:
coolbitx(AIDCoolWalletPRO) →bin/coolbitx/javacard/coolbitx.cap - SIO applet:
coolbitx.sio(AIDBackupApplet) →bin/coolbitx/sio/javacard/sio.cap
To install onto a physical card via GlobalPlatformPro:
chmod +x scripts/main-cap-install.sh
scripts/main-cap-install.sh
License
This project is licensed under the CoolBitX Limited Use License.
Security Vulnerability Disclosure
If you discover any security vulnerabilities, please contact bounty@cbx.io For more details, refer to the Bounty Project. Do not disclose the content directly on public forums.
Feel free to contact us for any inquiries or support.