martinpaljak / Ant Javacard
Licence: mit
Easy to use Ant task for building JavaCard Classic applets (2.1.1 to 3.1)
Stars: ✭ 109
Programming Languages
java
68154 projects - #9 most used programming language
Labels
Projects that are alternatives of or similar to Ant Javacard
Phing
PHing Is Not GNU make; it's a PHP project build system or build tool based on Apache Ant.
Stars: ✭ 1,085 (+895.41%)
Mutual labels: build-tool, ant
Postinstall Build
Helper for conditionally building your npm package on postinstall
Stars: ✭ 87 (-20.18%)
Mutual labels: build-tool
How To Setup Webpack 2
🔧 ⚙ Tutorial to setup webpack 2 from scratch.
Stars: ✭ 107 (-1.83%)
Mutual labels: build-tool
Pybuilder
Software build automation tool for Python.
Stars: ✭ 1,290 (+1083.49%)
Mutual labels: build-tool
Wordpressify
🎈 A build system designed to automate your WordPress development workflow.
Stars: ✭ 1,374 (+1160.55%)
Mutual labels: build-tool
Npm Scripts Info
Display the description of your npm scripts
Stars: ✭ 85 (-22.02%)
Mutual labels: build-tool
Walk
A fast, general purpose, graph based build and task execution utility.
Stars: ✭ 108 (-0.92%)
Mutual labels: build-tool
Corrosion
Marrying Rust and CMake - Easy Rust and C/C++ Integration!
Stars: ✭ 106 (-2.75%)
Mutual labels: build-tool
Gke Bazel Demo
Building applications with bazel and deploying them on to GKE. This demo contains a java-spring-boot rest service and an angular front-end. Both containers are deployed on GKE.
Stars: ✭ 92 (-15.6%)
Mutual labels: build-tool
Buildpipeline
AWS-powered serverless build, test and deploy pipeline ft. multiple environments
Stars: ✭ 105 (-3.67%)
Mutual labels: build-tool
Pro
A Java build tool that works seamlessly with modules
Stars: ✭ 88 (-19.27%)
Mutual labels: build-tool
Parcel
The zero configuration build tool for the web. 📦🚀
Stars: ✭ 39,670 (+36294.5%)
Mutual labels: build-tool
Mendel
A build toolchain for experimentation on isomorphic web applications with tree-inheritance and multivariate support.
Stars: ✭ 86 (-21.1%)
Mutual labels: build-tool
Building JavaCard applet CAP files with Ant
Easy to use Ant task for building JavaCard CAP files in a declarative way.
Features
- love it!
- No dependencies, no extra or unrelated downloads. Just a 46KB jar.
- Supports all available JavaCard SDK versions: 2.1.2, 2.2.1, 2.2.2, 3.0.3, 3.0.4, 3.0.5 and 3.1
- Get one from oracle.com or use the handy Github repository
-
Works on all platforms with Java 1.8+: Windows, OSX, Linux.
- Usable SDK-s depend on JDK version; 1.8 recommended!
- Almost everything integrates or works with Ant.
- Trigger it from Maven or via Gradle wrapper
- Can be easily integrated into continuous integration workflows.
- Generates CAP files from sources or pre-compiled class files.
- Import external libraries: natural use of
.jar
libraries and/or.exp
files. -
No restrictions on project folder layout (but
src/main/javacard
works). - Loading JavaCard applets is equally pleasing with GlobalPlatformPro
Download & Use
- Download
ant-javacard.jar
- Java version usable with all SDK-s is 1.8! Use SDK 3.0.5u3 and
targetsdk
to compile with Java 10 for older versions.
- Java version usable with all SDK-s is 1.8! Use SDK 3.0.5u3 and
- Or use the download task:
<get src="https://github.com/martinpaljak/ant-javacard/releases/latest/download/ant-javacard.jar" dest="." skipexisting="true"/>
- Then add the following to your
build.xml
file:
<taskdef name="javacard" classname="pro.javacard.ant.JavaCard" classpath="ant-javacard.jar"/>
- Now you can create applets within your Ant targets like this:
<javacard>
<cap jckit="/path/to/jckit_dir" aid="0102030405">
<applet class="myapplet.MyApplet" aid="0102030405060708"/>
</cap>
</javacard>
(which results in output similar to this)
target:
[cap] INFO: using JavaCard 3.0.4 SDK in sdks/jc304_kit
[cap] INFO: targeting JavaCard 2.2.2 SDK in sdks/jc222_kit
[cap] Setting package name to testapplets.empty
[cap] INFO: generated applet AID: A000000617008E5CDAAE01 for testapplets.empty.Empty
[cap] Building CAP with 1 applet from package testapplets.empty (AID: A000000617008E5CDAAE)
[cap] testapplets.empty.Empty A000000617008E5CDAAE01
[compile] Compiling files from /Users/martin/projects/ant-javacard/src/testapplets/empty
[compile] Compiling 1 source file to /var/folders/gf/_m9mq9td3lz32qv1hd4r12yw0000gn/T/jccpro841338375581620546
[convert] [ INFO: ] Converter [v3.0.4]
[convert] [ INFO: ] Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
[convert]
[convert]
[convert] [ INFO: ] conversion completed with 0 errors and 0 warnings.
[javacard] NB! Please use JavaCard SDK 3.0.5u3 or later for verifying!
[cap] CAP saved to /Users/martin/projects/ant-javacard/Empty_A000000617008E5CDAAE_50da91a4_2.2.2.cap
Syntax
Sample:
<javacard jckit="/path/to/jckit_dir1">
<cap targetsdk="/path/to/jckit_dir2" aid="0102030405" package="package.name" version="0.1" output="MyApplet.cap" sources="src/myapplet" classes="path/to/classes" export="mylib">
<applet class="myapplet.MyApplet" aid="0102030405060708"/>
<import exps="path/to/exps" jar="/path/to/lib.jar"/>
</cap>
</javacard>
Details:
-
javacard
tag - generic task-
jckit
attribute - path to the JavaCard SDK that is used if individualcap
does not specify one. Optional ifcap
defines one, required otherwise.
-
-
cap
tag - construct a CAP file-
jckit
attribute - path to the JavaCard SDK to be used. Optional ifjavacard
defines one, required otherwise. -
targetsdk
attribute - path to the target JavaCard SDK to be used for this CAP. Optional, value ofjckit
used by default. Allows to use a more recent converter to target older JavaCard platforms. -
sources
attribute - path to Java source code, to be compiled against the JavaCard SDK. Eithersources
orclasses
is required, unlesssrc/main/javacard
exists. -
sources2
attribute - additional sources to build per-platform applets. Optional. -
classes
attribute - path to pre-compiled class files to be assembled into a CAP file. If bothclasses
andsources
are specified, compiled class files will be put toclasses
folder, which is created if missing. -
includes
attribute - comma or space separated list of patterns of files that must be included. -
excludes
attribute - comma or space separated list of pattersn of files that mus be excluded. -
package
attribute - name of the package of the CAP file. Optional for applets - set to the parent package of the applet class if left unspecified, required for libraries -
version
attribute - version of the package. Optional - defaults to 0.1 if left unspecified. -
fidesmoappid
attribute - Fidesmo appId, to create the package AID and applet AID-s automatically. Optional. -
aid
attribute - AID (hex) of the package. Recommended - or set to the 5 first bytes of the applet AID if left unspecified. -
output
attribute - path where to save the generated CAP file. Optional, see below for variables. -
export
attribtue - path (folder) where to place the JAR and generated EXP file. Optional. -
jar
attribute - path where to save the generated archive JAR file. Optional. -
jca
attribute - path where to save the generated JavaCard Assembly (JCA) file. Optional. -
verify
attribute - if set to false, disables verification of the resulting CAP file with offcardeverifier. Optional. -
debug
attribute - if set to true, generates debug CAP components. Optional. -
ints
attribute - if set to true, enables support for 32 bitint
type. Optional. -
javaversion
attribute - override the Java source and target version. Optional.
-
-
applet
tag - for creating an applet inside the CAP-
class
attribute - class of the Applet where install() method is defined. Required. -
aid
attribute - AID (hex) of the applet. Recommended - or set to packageaid
+i
wherei
is index of the applet definition in the build.xml instruction
-
-
import
tag - for linking against external components/libraries, likeGPSystem
orOPSystem
-
exps
attribute - path to the folder keeping.exp
files. Optional. Required if file injar
does not include .exp files. -
jar
attribute - path to the JAR file for compilation. Required if usingsources
mode and not necessary withclasses
mode if java code is already compiled
-
Notes:
-
jc.home
property has the highest precedence, followed byjckit
path ofcap
, followed by path injavacard
, followed byJC_HOME
environment variable. SDK must be valid to be considered for use.
Output file name variables
-
%h
- 8 character prefix of the SHA-256 Load File Data Block hash of the CAP file -
%H
- SHA-256 Load File Data Block hash of the CAP file -
%n
- common name of the entity, either applet class or package -
%p
- package name -
%a
- package AID -
%j
- targeted JavaCard version
Maven dependency
Releases are published to https://javacard.pro/maven/
. To use it, add this to your pom.xml
:
<repositories>
<repository>
<id>javacard-pro</id>
<url>https://javacard.pro/maven/</url>
</repository>
</repositories>
Pushes to Maven Central happen manually and only for selected final versions.
License
Happy users
A random list of users, with a public link:
- Applets:
- IsoApplet by @philipWendland
- NdefApplet by @promovicz
- GidsApplet by @vletoux
- LedgerWalletApplet by @LedgerHQ
- KeePassNFC by @nfd
- PivApplet (PIV) by @arekinath
- OpenFIP201 (PIV) by @makinako
- Cryptonit (PIV) by @mbrossard
- HTOP NDEF by @petrs
- Yubikey OTP by @arekinath
- SmartPGP by @ANSSI-FR
- SatochipApplet (Bitcoin Hardware Wallet) by @Toporin
- Plus loads of academic projects, classes and papers.
- Integration projects:
- Other:
- You! Don't torture yourself with complexity, KISS!
Contact
- See javacard.pro
Similar projects
- standard JavaCard SDK Ant tasks
- :( as cumbersome to use as the command line utilities
- :( not declarative/DWIM enough
- :) very explicit interface with all details exposed
- JavaCard Gradle plugin (MIT) - https://github.com/bertrandmartel/javacard-gradle-plugin
- :) Wraps ant-javacard for use with Gradle
- gradle-javacard (Apache 2.0) - https://github.com/fidesmo/gradle-javacard
- :) nice declarative interface
- :( requires gradle (40M download)
- :( JavaCard 2.2.2 only
- EclipseJCDE (Eclipse 1.0) - http://eclipse-jcde.sourceforge.net/
- :( JavaCard 2.2.2 only
- :( not possible to integrate in CI - depends on eclipse
- :( essentially an Eclipse GUI wrapper for JC SDK
- JCOP Tools
- :( not open source
- NetBeans IDE JC support
- :( not possible to integrate into CI
- :( JavaCard 3.0 only
- :( Netbeans, not cross platform
- Maven2 task from FedICT (LGPL3) - https://code.google.com/p/eid-quick-key-toolset
- :( Maven downloads half the internet before even simple tasks
- :( JavaCard 2.2.2 only
- Ant script files with templates
- :( XML is a very bad and verbose programming environment
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].