The JCAlgTest tool is devoted to automatic testing of cryptographic smart cards running JavaCard platform. It gathers and visualizes information about card's hardware, supported cryptographic algorithms, and performance in various settings.
The results are contributed by a) cards owned by us at CRoCS laboratory and b) the wider community which run JCAlgTest on available cards. Together, it creates the largest publicly available database with more than 50 different smart cards.
You can select a card with required properties before you will buy it. Or you can assess card you already have in your hand and match it to cards in database based on the performance results.
The JCAlgTest is set of tools to measure, assess and provide detail information extracted from real cryptographic smart cards with JavaCard platform with corresponding cryptographic JavaCard API specification. Testing itself is easy - requires only to upload an applet to the target smart card and launch a host PC application which will start, collect and extract measurements.
JCAlgTest - JavaCard applet which is uploaded to tested smart card and executes operations measured by the host application. The applet itself contains three main parts:
JCAlgTestClient - Java-based application, running on a host PC that facilitates communication with the target smart card and measure execution time. Controls the whole testing process and stores the gathered information as CSV file. The tool is controlled with simple command line options.
JCAlgTestProcess - -- Java-based application responsible for processing raw CSV file(s) and generation of various tabular and graphical outputs. It can process results for a single card as well as a whole database of previous measurements. The content of the pages you are currently reading were all produced by this tool.
Are you looking for a smart card that supports specific cryptographic algorithm? Or you like to see how widespread is support for the elliptic curves? Inspect results collected from more than 50 smart cards and organized in the support matrix.
Would you like to know which smart card executes the operation with private RSA key in the shortest time? Or you like to compare two candidate smart cards before buying? Compare the performance of more than 15 current cards in sortable tables.
The performance of the card and a particular algorithm is not always linear with the increasing length of processed data. See data length-dependency graphs which may help you to improve application speed by optimization of unseen bootlenecks.
The smart card performance over many cryptographic algorithms can be used as nice metric to identify underlying hardware. Observe which smart cards have a very similar hardware and performs comparably and which are markedly different.
We played with a lot of different smart cards, developed helper tools and learned interesting not-so-documented behaviors. Would you like to know what can cause 0x6f00 exception? Or download software implementation of AES, SHA-2 or RSA OAEP when your card does not support what you need? Visit knowledge base for even more.
Please download packed binaries and source codes here: JCAlgTest GitHub repository (contains source codes, compiled versions, Java client)
If you have results for smart card not listed below, consider to send me the resulting csv - We will be happy to publish it here and give you the credit.
Please, report any bugs or suggestions by contacting us. Thank you!