blob: 77626cca59558353c3d9627942e08a861b3fe0f0 [file] [log] [blame]
Will Drewry695e3182017-04-27 20:08:37 -05001<?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"
Will Drewry5c2c3b92017-05-09 12:31:10 -0500147 version="3.1"
Will Drewry695e3182017-04-27 20:08:37 -0500148 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. -->
Will Drewry5c2c3b92017-05-09 12:31:10 -0500167 <cap aid="A0000004765049584C424F4F540300"
Will Drewry695e3182017-04-27 20:08:37 -0500168 package="com.android.verifiedboot.storage"
Will Drewry5c2c3b92017-05-09 12:31:10 -0500169 version="3.0"
Will Drewry695e3182017-04-27 20:08:37 -0500170 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"
Will Drewry5c2c3b92017-05-09 12:31:10 -0500185 aid="A0000004765049584C424F4F54030101"/>
Will Drewry695e3182017-04-27 20:08:37 -0500186 <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