Skip to content

Commit

Permalink
Update to JC3.2.0 and do some housekeeping
Browse files Browse the repository at this point in the history
  • Loading branch information
martinpaljak committed Feb 27, 2024
1 parent 1857b2f commit 7fccbf3
Show file tree
Hide file tree
Showing 8 changed files with 46 additions and 20 deletions.
10 changes: 5 additions & 5 deletions .github/workflows/robot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,22 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ 8, 11, 17, 20 ]
java: [ 8, 11, 17, 21 ]
name: Java ${{ matrix.java }}
steps:
- name: Checkout with submodules
uses: actions/checkout@v3.5.0
uses: actions/checkout@v4.1.1
with:
submodules: true
- name: Setup java
uses: actions/setup-java@v3.11.0
uses: actions/setup-java@v4.0.0
with:
java-version: ${{ matrix.java }}
distribution: temurin
cache: maven
- name: Set SSH key
if: github.event_name != 'pull_request'
uses: webfactory/ssh-agent@v0.8.0
uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_KEY }}
- name: Add host key
Expand All @@ -39,7 +39,7 @@ jobs:
if: matrix.java != 8
run: ./mvnw -T1C -B -U verify
- name: Run ANT tests
if: matrix.java != 20
if: matrix.java != 21
run: ant test dist
- name: Deploy package or snapshot
if: github.event_name != 'pull_request' && matrix.java == '11'
Expand Down
2 changes: 2 additions & 0 deletions capfile/src/main/java/pro/javacard/capfile/CAPFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -357,6 +357,8 @@ public Optional<String> guessJavaCardVersion() {
return Optional.of("3.0.5");
case 8:
return Optional.of("3.1.0");
case 9:
return Optional.of("3.2.0");
default:
return Optional.of(String.format("unknown: %d.%d", p.major, p.minor));
}
Expand Down
16 changes: 10 additions & 6 deletions capfile/src/main/java/pro/javacard/sdk/JavaCardSDK.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ private static SDKVersion detectSDKVersion(Path root) {
SDKVersion version = null;
Path libDir = root.resolve("lib");
if (Files.exists(libDir.resolve("tools.jar"))) {
if (Files.exists(libDir.resolve("api_classic-3.2.0.jar")))
return SDKVersion.V320;
if (Files.exists(libDir.resolve("api_classic-3.1.0.jar")))
return SDKVersion.V310;
Path api = libDir.resolve("api_classic.jar");
Expand Down Expand Up @@ -139,20 +141,21 @@ public Path getExportDir() {

// This is for build and verification tools
public JavaCardSDK target(SDKVersion targetVersion) {
if (this.version == SDKVersion.V310 && targetVersion.isOneOf(SDKVersion.V304, SDKVersion.V305, SDKVersion.V310)) {
if (version.isOneOf(SDKVersion.V310, SDKVersion.V320) && targetVersion.isOneOf(SDKVersion.V304, SDKVersion.V305, SDKVersion.V310)) {
List<Path> apiJars = new ArrayList<>();
apiJars.add(Paths.get("lib", "api_classic-" + targetVersion.v + ".jar"));
apiJars.add(Paths.get("lib", "api_classic_annotations-" + targetVersion.v + ".jar"));
Path exportPath = Paths.get("api_export_files_" + targetVersion.v);
return new JavaCardSDK(path, targetVersion, exportPath, apiJars, toolJars, compilerJars);
} else {
throw new IllegalStateException("Can not target " + targetVersion + " with " + this.version);
throw new IllegalStateException("Can not target " + targetVersion + " with " + version);
}
}

// This indicates the highest class file version edible by SDK-s converter
public static String getJavaVersion(SDKVersion version) {
switch (version) {
case V320:
case V310:
return "1.7";
case V301:
Expand Down Expand Up @@ -244,8 +247,9 @@ public static List<Path> getApiJars(SDKVersion version) {
jars.add(Paths.get("lib", "api_classic.jar"));
break;
case V310:
jars.add(Paths.get("lib", "api_classic-3.1.0.jar"));
jars.add(Paths.get("lib", "api_classic_annotations-3.1.0.jar"));
case V320:
jars.add(Paths.get("lib", String.format("api_classic-%s.jar", version.v)));
jars.add(Paths.get("lib", String.format("api_classic_annotations-%s.jar", version.v)));
break;
default:
jars.add(Paths.get("lib", "api.jar"));
Expand Down Expand Up @@ -276,9 +280,9 @@ public static List<Path> getCompilerJars(SDKVersion version) {
if (version.isOneOf(SDKVersion.V304, SDKVersion.V305)) {
jars.add(Paths.get("lib", "tools.jar"));
jars.add(Paths.get("lib", "api_classic_annotations.jar"));
} else if (version == SDKVersion.V310) {
} else if (version == SDKVersion.V310 || version == SDKVersion.V320) {
jars.add(Paths.get("lib", "tools.jar"));
jars.add(Paths.get("lib", "api_classic_annotations-3.1.0.jar"));
jars.add(Paths.get("lib", String.format("api_classic_annotations-%s.jar", version.v)));
}
return jars;
}
Expand Down
6 changes: 3 additions & 3 deletions capfile/src/main/java/pro/javacard/sdk/OffCardVerifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ public void verifyAgainst(File f, JavaCardSDK target, Vector<File> exps) throws

public void verifyAgainst(Path f, JavaCardSDK target, List<Path> exps) throws VerifierError, IOException {
// Warn about recommended usage
if (target.getVersion().isOneOf(SDKVersion.V304, SDKVersion.V305) && sdk.getVersion() != SDKVersion.V310) {
System.err.println("NB! Please use JavaCard SDK 3.1.0 for verifying!");
if (target.getVersion().isOneOf(SDKVersion.V304, SDKVersion.V305, SDKVersion.V310) && sdk.getVersion() != SDKVersion.V320) {
System.err.println("NB! Please use JavaCard SDK 3.2.0 for verifying!");
} else {
if (!sdk.getRelease().equals("3.0.5u3")) {
System.err.println("NB! Please use JavaCard SDK 3.0.5u3 or later for verifying!");
Expand Down Expand Up @@ -97,7 +97,7 @@ public void verify(Path f, List<Path> exps) throws VerifierError, IOException {

try (FileInputStream input = new FileInputStream(f.toFile())) {
// 3.0.5u1 still uses old signature
if (sdk.getRelease().equals("3.0.5u3") || sdk.getRelease().equals("3.0.5u2") || sdk.getRelease().equals("3.1.0")) {
if (sdk.getRelease().equals("3.0.5u3") || sdk.getRelease().equals("3.0.5u2") || sdk.getVersion().isOneOf(SDKVersion.V310, SDKVersion.V320)) {
Method m = verifier.getMethod("verifyCap", File.class, String.class, Vector.class);
m.invoke(null, f.toFile(), packagename, expfiles);
} else {
Expand Down
3 changes: 2 additions & 1 deletion capfile/src/main/java/pro/javacard/sdk/SDKVersion.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ public enum SDKVersion {
V301("3.0.1"),
V304("3.0.4"),
V305("3.0.5"),
V310("3.1.0");
V310("3.1.0"),
V320("3.2.0");

final String v;

Expand Down
9 changes: 5 additions & 4 deletions task/src/main/java/pro/javacard/ant/JavaCard.java
Original file line number Diff line number Diff line change
Expand Up @@ -354,9 +354,10 @@ private void check() {

if (raw_targetsdk != null) {
Optional<SDKVersion> targetVersion = SDKVersion.fromVersion(raw_targetsdk);
if (jckit != null && jckit.getVersion() == V310 && targetVersion.isPresent()) {
if (jckit != null && jckit.getVersion().isOneOf(V310, V320) && targetVersion.isPresent()) {
SDKVersion target = targetVersion.get();
if (target.isOneOf(V304, V305, V310)) {
// FIXME: can't target 3.2.0 with 3.1.0
if (target.isOneOf(V304, V305, V310, V320)) {
targetsdk = jckit.target(target);
} else {
throw new HelpingBuildException("Can not target JavaCard " + targetVersion.get() + " with JavaCard kit " + jckit.getVersion());
Expand Down Expand Up @@ -568,7 +569,7 @@ private void compile() {
throw new HelpingBuildException("JDK 17 LTS is the latest supported JDK.");
} else if (jckit.getVersion().isOneOf(V211, V212, V221, V222) && jdkver > 8) {
throw new HelpingBuildException("Use JDK 8 with JavaCard kit v2.x");
} else if (jdkver > 11 && !jckit.getVersion().isOneOf(V310)) {
} else if (jdkver > 11 && !jckit.getVersion().isOneOf(V310, V320)) {
throw new HelpingBuildException("Use JDK 11 with JavaCard kit " + jckit.getVersion());
}

Expand Down Expand Up @@ -652,7 +653,7 @@ private void convert(Path applet_folder, List<Path> exps) {
StringJoiner expstringbuilder = new StringJoiner(File.pathSeparator);

// Add targetSDK export files
if (jckit.getVersion() == V310 && targetsdk.getVersion().isOneOf(V304, V305, V310)) {
if (jckit.getVersion().isOneOf(V310, V320) && targetsdk.getVersion().isOneOf(V304, V305, V310)) {
j.createArg().setLine("-target " + targetsdk.getVersion().toString());
} else {
expstringbuilder.add(targetsdk.getExportDir().toString());
Expand Down
18 changes: 18 additions & 0 deletions tests-17.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,38 @@
<property name="JC305_2" value="sdks/jc305u2_kit"/>
<property name="JC305" value="sdks/jc305u3_kit"/>
<property name="JC310" value="sdks/jc310r20210706_kit"/>
<property name="JC320" value="sdks/jc320v24.0_kit"/>
<!-- Build test applets -->
<target name="test" depends="jcpro,test-sdks"/>
<!-- Different SDK-s-->
<target name="test-sdks">
<javacard>
<!-- JC 3.1.0 -->
<cap jckit="${JC310}" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<cap jckit="${JC310}" targetsdk="3.0.4" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<cap jckit="${JC310}" targetsdk="3.0.5" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<cap jckit="${JC310}" targetsdk="3.1.0" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<!-- JC 3.2.0 -->
<cap jckit="${JC320}" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<cap jckit="${JC320}" targetsdk="3.0.4" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<cap jckit="${JC320}" targetsdk="3.0.5" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
<cap jckit="${JC320}" targetsdk="3.1.0" sources="src/testapplets/integer" ints="true">
<applet class="testapplets.integer.EmptyInt" aid="0102030405060708"/>
</cap>
</javacard>
</target>
</project>

0 comments on commit 7fccbf3

Please sign in to comment.