Merge "Enable Weaver throttling."
diff --git a/apps/boot/card/ant-javacard.jar.SHA-512 b/apps/boot/card/ant-javacard.jar.SHA-512
new file mode 100644
index 0000000..c5559a2
--- /dev/null
+++ b/apps/boot/card/ant-javacard.jar.SHA-512
@@ -0,0 +1 @@
+2673b847c130040e30750cf84cae641c19723fbcbb7507801ea246f1a9d02c803ac4606d18f42a4ece149b6cbee262c272c3ea706c3c85f6161a3529bc732cee  ant-javacard.jar
diff --git a/apps/boot/card/build.xml b/apps/boot/card/build.xml
index 8fd5a78..cab0c38 100644
--- a/apps/boot/card/build.xml
+++ b/apps/boot/card/build.xml
@@ -16,34 +16,55 @@
 <!-- Ant XML for out of band building the applet.  -->
 <project basedir="." default="avb_storage" name="applet build">
 
-<!-- Grab the sdk. -->
-<get src="https://github.com/martinpaljak/oracle_javacard_sdks/archive/master.zip"
-     dest="javacard_sdks.zip" skipexisting="true"/>
-<unzip src="javacard_sdks.zip" dest="." stripAbsolutePathSpec="true">
-  <patternset>
-    <include name="**/jc303_kit/**"/>
-  </patternset>
-  <cutdirsmapper dirs="1" />
-</unzip>
+<target name="check-checksum">
+    <checksum file="${tocheck}" algorithm="SHA-512" fileext=".SHA-512" pattern="{0} {1}"
+        verifyProperty="checksum_verifies"/>
+    <fail message="Checksum mismatch on ${tocheck}">
+        <condition>
+            <not>
+                <istrue value="${checksum_verifies}" />
+            </not>
+        </condition>
+    </fail>
+</target>
 
-<!-- Grab the awesome ant helper. -->
-<get src="https://github.com/martinpaljak/ant-javacard/releases/download/v1.7/ant-javacard.jar" dest="." skipexisting="true"/>
-<taskdef name="javacard" classname="pro.javacard.ant.JavaCard" classpath="ant-javacard.jar"/>
+<target name="dependencies">
+    <!-- Check we have the files that have to be placed in source dir by hand -->
+    <antcall target="check-checksum">
+        <param name="tocheck" location="loaderservice/ls_library_v02.00.jar"/>
+    </antcall>
+    <unzip src="loaderservice/ls_library_v02.00.jar" dest="loaderservice" />
 
-<target name="shared_interfaces">
+    <antcall target="check-checksum">
+        <param name="tocheck" location="com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar"/>
+    </antcall>
+    <unzip src="com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar" dest="unpack/com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1" />
+
+    <!-- Grab the awesome ant helper. -->
+    <get src="https://github.com/martinpaljak/ant-javacard/releases/download/v1.7/ant-javacard.jar" dest="." skipexisting="true"/>
+    <antcall target="check-checksum">
+        <param name="tocheck" location="ant-javacard.jar"/>
+    </antcall>
+
+    <taskdef name="javacard" classname="pro.javacard.ant.JavaCard" classpath="ant-javacard.jar"/>
+
+    <!-- Grab the sdk. -->
+    <get src="https://github.com/martinpaljak/oracle_javacard_sdks/archive/master.zip"
+         dest="javacard_sdks.zip" skipexisting="true"/>
+    <antcall target="check-checksum">
+        <param name="tocheck" location="javacard_sdks.zip"/>
+    </antcall>
+    <unzip src="javacard_sdks.zip" dest="." stripAbsolutePathSpec="true">
+      <patternset>
+        <include name="**/jc303_kit/**"/>
+      </patternset>
+      <cutdirsmapper dirs="1" />
+    </unzip>
+
+</target>
+
+<target name="shared_interfaces" depends="dependencies">
 <javacard jckit="jc303_kit">
-  <!-- Build the JCOPX jar file. AID and cap file are not used. exps either. -->
-  <cap aid="A000000FFFFFFFFFFFFFFFFFFFFFFF" package="com.nxp.id.jcopx.security"  version="0.1"
-       output="jcopx-security.cap" sources="jcopx/src/com/nxp/id/jcopx/security" export="export-jcopx/security">
-       <!-- Only use the exports for dummy cap creation -->
-       <import exps="export-jcopx/security"/>
-  </cap>
-  <cap aid="A000000FFFFFFFFFFFFFFFFFFFFFFF" package="com.nxp.id.jcopx.util"  version="0.1"
-       output="jcopx-util.cap" sources="jcopx/src/com/nxp/id/jcopx/util" export="export-jcopx/util">
-       <!-- Only use the exports for dummy cap creation -->
-       <import exps="export-jcopx/util"/>
-       <import exps="export-jcopx/security" jar="export-jcopx/security.jar"/>
-  </cap>
   <!-- CallbackInterface -->
   <cap aid="A000000476424F4F54525354300000" package="com.android.verifiedboot.globalstate.callback"  version="0.1"
        output="globalstate-callback.cap" sources="src/com/android/verifiedboot/globalstate/callback" export="export/callback">
@@ -58,20 +79,25 @@
 </target>
 
 <target name="avb_storage" depends="shared_interfaces">
-<javacard jckit="jc303_kit">
-  <!-- CallbackInterface -->
-  <cap aid="A0000004765049584C424F4F54000100" package="com.android.verifiedboot.storage" version="0.1"
-       output="avb_storage.cap" sources="src/com/android/verifiedboot" export="export">
-    <!-- Use supplied exp and build interface jar. -->
-    <import exps="jcopx" jar="export-jcopx/util/util.jar"/>
-    <!-- Requires ls_library to be on the device already. -->
-    <import exps="loaderservice" jar="loaderservice/ls_library_v02.00.jar"/>
-    <!-- Grab the other interfaces from export/ -->
-    <import exps="export/owner" jar="export/owner/owner.jar" />
-    <import exps="export/callback" jar="export/callback/callback.jar" />
-    <applet class="com.android.verifiedboot.storage.Storage" aid="A0000004765049584C424F4F54000101"/>
-    <import exps="export/avb_storage"/>
-  </cap>
-</javacard>
+    <property name="apidir" location="unpack/com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1/apis/jcopx-4.0-R2"/>
+    <!-- Remove the duplicate .exps -->
+    <delete>
+        <fileset dir="${apidir}" includes="*.exp"/>
+    </delete>
+    <javacard jckit="jc303_kit">
+      <!-- CallbackInterface -->
+      <cap aid="A0000004765049584C424F4F54000100" package="com.android.verifiedboot.storage" version="0.1"
+           output="avb_storage.cap" sources="src/com/android/verifiedboot" export="export/avb_storage">
+        <!-- Use supplied exp and build interface jar from the eclipse plugin targetpack. -->
+        <import exps="${apidir}" jar="${apidir}/api-jcopx-4.0-R2.jar"/>
+        <!-- Requires ls_library to be on the device already. -->
+        <import exps="loaderservice" jar="loaderservice/ls_library_v02.00.jar"/>
+        <!-- Grab the other interfaces from export/ -->
+        <import exps="export/owner" jar="export/owner/owner.jar" />
+        <import exps="export/callback" jar="export/callback/callback.jar" />
+        <applet class="com.android.verifiedboot.storage.Storage" aid="A0000004765049584C424F4F54000101"/>
+        <import exps="export/avb_storage"/>
+      </cap>
+    </javacard>
 </target>
 </project>
diff --git a/apps/boot/card/com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar.SHA-512 b/apps/boot/card/com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar.SHA-512
new file mode 100644
index 0000000..2a53c5a
--- /dev/null
+++ b/apps/boot/card/com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar.SHA-512
@@ -0,0 +1 @@
+5eb65461e3bb5a296db5e89c9295ac3b1d67216771f074d581b4f73e3a2ff537893009b104adefba5ef6b858f469010e58711a8078e3f1855069d69333e18f1a  com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar
diff --git a/apps/boot/card/javacard_sdks.zip.SHA-512 b/apps/boot/card/javacard_sdks.zip.SHA-512
new file mode 100644
index 0000000..b93c02a
--- /dev/null
+++ b/apps/boot/card/javacard_sdks.zip.SHA-512
@@ -0,0 +1 @@
+e4ac548d81ff035bce44adebfd68cd83900a316bb5c69ba81936a5ed8f0af5e2145996a6e591055dd24284bb316f9fc6a2ae78ad63b334255c898637ef70c8e2  javacard_sdks.zip
diff --git a/apps/boot/card/loaderservice/ls_library_v02.00.jar.SHA-512 b/apps/boot/card/loaderservice/ls_library_v02.00.jar.SHA-512
new file mode 100644
index 0000000..ffde5be
--- /dev/null
+++ b/apps/boot/card/loaderservice/ls_library_v02.00.jar.SHA-512
@@ -0,0 +1 @@
+5513a9d4000108c67efaea422de8121f060b913c3cdb81135e103a4ab2f514e18c8ce0793ffc83cf62f5e3491ec0649064590a7dce4cd1e0f24820c9a89c76c1  ls_library_v02.00.jar