This commit is contained in:
Elizabeth Cray 2025-03-08 00:20:15 -05:00
parent 364447b557
commit 78aed96935
3 changed files with 26 additions and 9 deletions

View File

@ -4,7 +4,10 @@
JavaCard Applet for the Kyber Post-Quantum-Cryptography Algorithm JavaCard Applet for the Kyber Post-Quantum-Cryptography Algorithm
</description> </description>
<property name="JCSDK" value="./oracle_javacard_sdks/jc305u4_kit" /> <property environment="env"/>
<property name="EXPORT" value="crystal.cap" />
<property name="RID" value="A000000648" />
<property name="AID" value="2F0002" />
<target name="clean"> <target name="clean">
<delete dir="build" /> <delete dir="build" />
@ -12,7 +15,7 @@
<target name="check.sdk"> <target name="check.sdk">
<condition property="jcsdk.exists"> <condition property="jcsdk.exists">
<available file="${JCSDK}" type="dir" /> <available file="${env.JC_HOME}" type="dir" />
</condition> </condition>
</target> </target>
@ -22,27 +25,38 @@
</condition> </condition>
</target> </target>
<target name="check.build.dir">
<condition property="build.dir.exists">
<available file="build" type="dir" />
</condition>
</target>
<target name="build.dir" depends="check.build.dir" unless="build.dir.exists">
<mkdir dir="build" />
</target>
<target name="setup" depends="check.sdk" if="jcsdk.exists"> <target name="setup" depends="check.sdk" if="jcsdk.exists">
<mkdir dir="tools"/> <mkdir dir="tools"/>
<get src="https://github.com/martinpaljak/ant-javacard/releases/download/v24.11.19/ant-javacard.jar" dest="tools" skipexisting="true"/> <get src="https://github.com/martinpaljak/ant-javacard/releases/download/v24.11.19/ant-javacard.jar" dest="tools" skipexisting="true"/>
<get src="https://github.com/martinpaljak/GlobalPlatformPro/releases/download/v24.10.15/gp.jar" dest="tools" skipexisting="true"/> <get src="https://github.com/martinpaljak/GlobalPlatformPro/releases/download/v24.10.15/gp.jar" dest="tools" skipexisting="true"/>
</target> </target>
<target name="build" depends="clean,check.tool" if="tool.exists"> <target name="build" depends="clean,check.tool,build.dir" if="tool.exists">
<!-- ant-javacard task from javacard.pro --> <!-- ant-javacard task from javacard.pro -->
<taskdef name="javacard" classname="pro.javacard.ant.JavaCard" classpath="tools/ant-javacard.jar" /> <taskdef name="javacard" classname="pro.javacard.ant.JavaCard" classpath="tools/ant-javacard.jar" />
<javacard jckit="${JCSDK}"> <javacard jckit="${env.JC_HOME}">
<cap output="build/cyber.cap" aid="A000000648" sources="src" targetsdk="./oracle_javacard_sdks/jc221_kit"> <cap aid="${RID}" sources="src/org/hacdc/crystal" targetsdk="${env.JC_CLASSIC_HOME}">
<applet class="org.hacdc.cyber.Cyber" aid="A0000006482F0002" /> <applet class="org.hacdc.crystal.Crystal" aid="${RID}${AID}" />
</cap> </cap>
</javacard> </javacard>
<!-- <move file="CRYSTAL-TEMP.cap" tofile="build/crystal.cap" /> -->
</target> </target>
<!-- Install Applet --> <!-- Install Applet -->
<target name="install" depends="build"> <target name="install" depends="build">
<java jar="tools/gp.jar" fork="true"> <java jar="tools/gp.jar" fork="true">
<arg value="-reinstall" /> <arg value="-reinstall" />
<arg value="build/cyber.cap" /> <arg value="build/crystal.cap" />
</java> </java>
</target> </target>

3
env.ps1 Normal file
View File

@ -0,0 +1,3 @@
$Env:JC_HOME = $PWD.Path + '\oracle_javacard_sdks\jc305u4_kit';
$Env:JC_CLASSIC_HOME = $PWD.Path + '\oracle_javacard_sdks\jc221_kit';
$Env:PATH = $Env:JAVA_HOME + '\bin;' + $Env:ANT_HOME + '\bin;' + $Env:JC_HOME + '\bin;' + $Env:JC_CLASSIC_HOME + '\bin;' + $Env:PATH;

View File

@ -3,10 +3,10 @@ package org.hacdc.cyber;
import javacard.framework.APDU; import javacard.framework.APDU;
import javacard.framework.Applet; import javacard.framework.Applet;
public class Cyber extends Applet { public class Crystal extends Applet {
public static void install(byte[] buffer, short offset, byte length){ public static void install(byte[] buffer, short offset, byte length){
// GP-compliant JavaCard applet registration // GP-compliant JavaCard applet registration
new Cyber().register(); new Crystal().register();
} }
public void process(APDU apdu){ public void process(APDU apdu){