• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8"?>
2<!-- Copyright (C) 2017 The Android Open Source Project
3
4     Licensed under the Apache License, Version 2.0 (the "License");
5     you may not use this file except in compliance with the License.
6     You may obtain a copy of the License at
7
8          http://www.apache.org/licenses/LICENSE-2.0
9
10     Unless required by applicable law or agreed to in writing, software
11     distributed under the License is distributed on an "AS IS" BASIS,
12     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13     See the License for the specific language governing permissions and
14     limitations under the License.
15-->
16<!-- Ant XML for out of band building all applets using shared exports. -->
17<project basedir="." default="sample_apps" name="libese sample applet build scripts">
18
19<!-- Project-wide properties -->
20<!-- TODO: move to file="build.properties" -->
21<property name="build" location="${basedir}/build"/>
22<property name="prereqs.dir" location="${basedir}/prereqs"/>
23<property name="out" location="${basedir}/out"/>
24
25<property name="api.root" location="${build}/jcop/targetpack"/>
26<property name="api.dir" location="${api.root}/apis/jcopx-4.0-R2"/>
27
28<property name="api.name" value="com.nxp.id.jcop.eclipse.targetpacks1_4.10.0.1.jar"/>
29<property name="ls.name" value="ls_library_v02.00.jar"/>
30<property name="ls.dir" location="${build}/loaderservice"/>
31
32<property name="prereqs.manual" value="${ls.name},${api.name}"/>
33
34<target name="check-checksum">
35    <checksum file="${tocheck}" algorithm="SHA-512" fileext=".SHA-512" pattern="{0} {1}"
36        verifyProperty="checksum_verifies"/>
37    <fail message="Checksum mismatch on ${tocheck}">
38        <condition>
39            <not>
40                <istrue value="${checksum_verifies}" />
41            </not>
42        </condition>
43    </fail>
44</target>
45
46<target name="download_prereqs">
47    <!-- Grab the awesome ant helper. -->
48    <get src="https://github.com/martinpaljak/ant-javacard/releases/download/v1.7/ant-javacard.jar" dest="${prereqs.dir}" skipexisting="true"/>
49
50    <!-- Grab the sdk. -->
51    <get src="https://github.com/martinpaljak/oracle_javacard_sdks/archive/master.zip"
52         dest="${prereqs.dir}/javacard_sdks.zip" skipexisting="true"/>
53</target>
54
55<target name="checksum_prereqs" depends="download_prereqs">
56    <checksum algorithm="SHA-512" fileext=".SHA-512" pattern="{0} {1}">
57        <fileset dir="${prereqs.dir}">
58           <exclude name="*.SHA-512"/>
59        </fileset>
60    </checksum>
61</target>
62
63<target name="validate_prereqs" depends="download_prereqs,manual_prereqs">
64  <checksum algorithm="SHA-512" fileext=".SHA-512" pattern="{0} {1}"
65            verifyProperty="checksum_verifies">
66      <fileset dir="${prereqs.dir}">
67           <exclude name="*.SHA-512"/>
68      </fileset>
69  </checksum>
70  <fail message="Checksum mismatch on ${tocheck}">
71      <condition>
72            <not>
73                <istrue value="${checksum_verifies}" />
74            </not>
75        </condition>
76    </fail>
77</target>
78
79<target name="manual_prereqs">
80    <fail message="Required files are missing from ${prereqs.dir}: ${prereqs.manual}.">
81        <condition>
82            <not>
83                <resourcecount count="2">
84                    <fileset id="fs" dir="${prereqs.dir}" includes="${prereqs.manual}"/>
85                </resourcecount>
86            </not>
87        </condition>
88    </fail>
89</target>
90
91<target name="paths">
92    <delete dir="${build}"/>
93    <mkdir dir="${out}"/>
94</target>
95
96<target name="common_dependencies" depends="paths,validate_prereqs">
97    <!-- Install the ant-javacard taskdef -->
98    <taskdef name="javacard" classname="pro.javacard.ant.JavaCard" classpath="${prereqs.dir}/ant-javacard.jar"/>
99    <!-- Explode the loaderservice jar and place it in the expected location. -->
100    <unzip src="${prereqs.dir}/${ls.name}" dest="${ls.dir}" />
101    <copy file="${prereqs.dir}/${ls.name}" todir="${ls.dir}"/>
102
103    <!-- Expand the required APIs into their root. -->
104    <unzip src="${prereqs.dir}/${api.name}" dest="${api.root}" />
105
106    <!-- Select and extract the JavaCard SDK. -->
107    <unzip src="${prereqs.dir}/javacard_sdks.zip" dest="${build}/" stripAbsolutePathSpec="true">
108      <patternset>
109        <include name="**/jc303_kit/**"/>
110      </patternset>
111      <cutdirsmapper dirs="1" />
112    </unzip>
113</target>
114
115<target name="shared_interfaces" depends="common_dependencies">
116<javacard jckit="${build}/jc303_kit">
117  <!-- CallbackInterface -->
118  <cap aid="A0000004765049584C475343000000"
119       package="com.android.verifiedboot.globalstate.callback"
120       version="0.1"
121       output="${out}/globalstate-callback.cap"
122       sources="boot/card/src/com/android/verifiedboot/globalstate/callback"
123       export="${build}/export/callback">
124       <import exps="${build}/export/callback"/>
125  </cap>
126  <!-- OwnerInterface -->
127  <cap aid="A0000004765049584C47534F000000"
128       package="com.android.verifiedboot.globalstate.owner"
129       version="0.1"
130       output="${out}/globalstate-owner.cap"
131       sources="boot/card/src/com/android/verifiedboot/globalstate/owner"
132       export="${build}/export/owner">
133       <import exps="${build}/export/owner"/>
134  </cap>
135</javacard>
136</target>
137
138<target name="avb_storage" depends="shared_interfaces">
139    <!-- Remove the duplicate .exps -->
140    <delete>
141        <fileset dir="${api.dir}" includes="*.exp"/>
142    </delete>
143    <javacard jckit="${build}/jc303_kit">
144      <!-- Base version (Version + .1) for displacing a preinstalled package on early cards. -->
145      <cap aid="A0000004765049584C424F4F540000"
146           package="com.android.verifiedboot.storage"
147           version="3.1"
148           output="${out}/avb_storage_clobber.cap"
149           sources="boot/card/src/com/android/verifiedboot"
150           export="${build}/export/avb_storage">
151        <!-- Use supplied exp and build interface jar from the eclipse plugin targetpack. -->
152        <import exps="${api.dir}" jar="${api.dir}/api-jcopx-4.0-R2.jar"/>
153        <!-- Requires ls_library to be on the device already. -->
154        <import exps="${ls.dir}" jar="${ls.dir}/${ls.name}"/>
155        <!-- Grab the other interfaces from export/ -->
156        <import exps="${build}/export/owner" jar="${build}/export/owner/owner.jar" />
157        <import exps="${build}/export/callback" jar="${build}/export/callback/callback.jar" />
158        <!-- 14th byte must be in sync with above
159             15th byte is 01 for the ELM.
160             16th byte is 01 for the applet.
161          -->
162        <applet class="com.android.verifiedboot.storage.Storage"
163                aid="A0000004765049584C424F4F54000101"/>
164        <import exps="${build}/export/avb_storage"/>
165      </cap>
166      <!-- 14th byte is the version. Increment on each release. -->
167      <cap aid="A0000004765049584C424F4F540300"
168           package="com.android.verifiedboot.storage"
169           version="3.0"
170           output="${out}/avb_storage.cap"
171           sources="boot/card/src/com/android/verifiedboot"
172           export="${build}/export/avb_storage">
173        <!-- Use supplied exp and build interface jar from the eclipse plugin targetpack. -->
174        <import exps="${api.dir}" jar="${api.dir}/api-jcopx-4.0-R2.jar"/>
175        <!-- Requires ls_library to be on the device already. -->
176        <import exps="${ls.dir}" jar="${ls.dir}/${ls.name}"/>
177        <!-- Grab the other interfaces from export/ -->
178        <import exps="${build}/export/owner" jar="${build}/export/owner/owner.jar" />
179        <import exps="${build}/export/callback" jar="${build}/export/callback/callback.jar" />
180        <!-- 14th byte must be in sync with above
181             15th byte is 01 for the ELM.
182             16th byte is 01 for the applet.
183          -->
184        <applet class="com.android.verifiedboot.storage.Storage"
185                aid="A0000004765049584C424F4F54030101"/>
186        <import exps="${build}/export/avb_storage"/>
187      </cap>
188    </javacard>
189</target>
190
191<target name="weaver" depends="shared_interfaces">
192    <!-- Remove the duplicate .exps -->
193    <delete>
194        <fileset dir="${api.dir}" includes="*.exp"/>
195    </delete>
196    <javacard jckit="${build}/jc303_kit">
197      <!-- Comm applet -->
198      <cap aid="A000000476575652434F4D4D300100"
199           package="com.android.weaver"
200           version="1.0"
201           output="${out}/weaver_comm.cap"
202           sources="weaver/card/src/com/android/weaver"
203           export="${build}/export/comm">
204        <applet class="com.android.weaver.Weaver"
205                aid="A000000476575652434F4D4D30010101"/>
206        <import exps="${build}/export/comm" />
207        <!-- Use supplied exp and build interface jar from the eclipse plugin targetpack. -->
208        <import exps="${api.dir}" jar="${api.dir}/api-jcopx-4.0-R2.jar"/>
209      </cap>
210      <!-- Core applet -->
211      <cap aid="A000000476575652434f5245300100"
212           package="com.android.weaver.core"
213           version="1.0"
214          output="${out}/weaver_core.cap"
215          sources="weaver/card/src/com/android/weaver/core"
216          export="${build}/export/core">
217        <applet class="com.android.weaver.core.WeaverCore"
218                aid="A000000476575652434F524530010101"/>
219        <import exps="${build}/export/comm" jar="${build}/export/comm/weaver.jar" />
220        <!-- Use supplied exp and build interface jar from the eclipse plugin targetpack. -->
221        <import exps="${api.dir}" jar="${api.dir}/api-jcopx-4.0-R2.jar"/>
222      </cap>
223    </javacard>
224</target>
225
226<target name="sample_apps" depends="weaver,avb_storage">
227</target>
228
229</project>
230
231
232
233