Home | History | Annotate | Download | only in apps
      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