#!/usr/bin/env bash # # Copyright (C) 2011-2016 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=42cc8ebdccc895e905f50f15bf51ee7f # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 PXՉO_>;=?9{yzqrqzӓg$J|6i$/]^(t8~%B`B#XZ`R!x (sЎA1$$t2/ 9Ođшo?MwSn<tG}hM'l:XEׂ/hWw?N " 1on&hjVp7G-(h<CƜtܢo$1&wڽ2q`NG8`<<]r۝Ll؝vl7ްk6P1]w8,Ќ? .@]*2RMqMS$[Ǻ5z&<O XQwűZ?g߽^f vX+kjNgS\}q˘|0{!ñE6 $ߝvx|5L=s45&tGم}LuO>!bC||g@9K9EVXT|dd\kc3x>L L:5: Gqe(AQ[TnspPjCY{OBG`2]$:K|fh鯚Mk< {@۵wV^M۩%fYC;}oZ߰ q1Xc.nD`. Q_iu9Qf&{l'r9OQbnL^[1ugU]_<#Jx'l?^dA{gϱ;ur$Shs|؄ < vp@9}L,ޏ zmhԦqx҆;b{7)}m)m({#xxS|i;RC)z '$Lv6 49647eEI0tݥ˱cUUw @^CUՙ.`3I2g^ME4 5Hk0OvLP<@vt:to%h }$t,s\iAJA |Q!dvoIdq/l>SkM;ߘ=pT;sT*]wE.eza/Lpb,1' i9;`N{*UTBO#a`PR&jE|r"/R`\39?;v푷F,p8#ZET[30c,Szy9+eg 9&ski! [h-hZtTNKu2<k}?\;ٜ͡f򤁿`΃,7D7w'PE!VjZt* I$p=uOZb/Ԫ2oK"' 1ĠSu]لě;a]ߦCj@;`dsGB#EIE+N! ьj:9"x F!T**= {=ܥN [w/:^Dha|J>tI/yͳ0rB Jg^m2Hip t' jbJ8Ƶ@0:X1( H`iE|yMA  H}ǢPek׈akSM+$a[2>?>px֠!b`x\na[D-< gFTq|t4)!5(|,Eb,9<=Z|DNYP| E W Y,Ej9L6&M6Aԅn6\ĴI Wk{\Y^.ŮQ=bDhҩCR͟Lv]an>6EGB~ nA:kHOCir"'h_ꯠ"֠lBɵvf4.]Dwq*HSzRʽSr)37g=s4u 14,\snq2pV)9`[2zݵ'}k}#WYo8Kn,Jea:_hR9l=r%00 `Gs\%;?3CDO{)cp 嵛lXsa2;C#mjn?9?kH*gO8/$|9M~;΀/6Voj#CO۞Dt펗z b 4C|/>Wm;?nGNɛ7a|bx; b:60ϹD2^bNҶ9eR9#&|3 [pʢ=*, J| }}#rԋJr/d2u48o"(}"7O;'+1-W{U{"J DqA5,V}JqGj\t=%@4?Fl^1AD@Y^HUwyn&?أ1ybmA{sdYE- zXѦ^Vע*8&.^;Tc4G}kLnL2#Zsǵ<ƚO^(i+fr_i%iUyUDWÖT= 00(R 51[xJ[4yުcn܂.ddge)p|H% T%2^yi*M8-}伥=q:X'Y/)5W9I)FrS rU Ur~\'W-PL "Ih(‹9! 0O>G4 P.֏ZEQe#跷kԎE{F&2yW~{!P;l nYZbM}4t*וRNB'.![8ĉ?o +yi*ϕHRg~k(˖ޮD/ud#*L EqIɮK2)/l_Nyq/E¶Uae3iXR9f{ ScR}p}T?L*'J'XNn+BX'1if: ux7S˵2"[{ӚR}QՂ)*E\*^ |ͱrkKaB]ʋxҞ? [tytԒRibqK+]@G+~ŝ { P (i{`2Mg\B?9andmN8'Ihr!*Q\wC#!CÞën}Uzlπ A$![s$@;Fk+ &Y4WQVYo#S EI+m}Fy^޲e hԃFIYg<4tx0!;N`TTXL'l~,+9GGRy/Q*i 'Z'^!~u!s ;R@!aWR IXX吡P=9`APM'TNrډ[>ԵR@]ֶ$f9&g]eܨ!X5zS~Ueh*ͪti֜Wr}QFbU.7l;vJoَMt82=Me^jFS);.5ڡb2vdGdR?*ΉS.=Х 85n`i#U{J8Jl~9z#P*&evT`KY\v%ܙeq*5.d*ײͫa2tOUq0x6ɑ8ղxR z+id]IQ(G[ @EH*[ #{n2^ Z͞r]~ڻ]R*i)܎%.V7pS p* o "-5h*`r)PXZ_kGt$HL4rd~d` d8sM؆O$昷qfߪKKju$3;kZjT*IzO]nMENLTAD^Ou:OΌ7* цnŻRX$? =9ڋP1 sMA;Y 6'-ķBbfpiLm>||KsO7]r<_^CiLrD-jJ' -{D oy*&_p[$^3Ζu{[`i1]Qk_e|#o8T] TM4MıXTb(-%i%{OɩbsNݙ]bAh1A3;3TkgLrL1 3FwF b&lFҨ^~gowewwON`J|ŷŲ[K4>TQdQv-*[ojlf j׃%P/i2: u~ %C4QOrUA q\%j%p ZtL~;PxgwG{Gc9J#w,ݝ '㎉W]OL4XӨۂCDCO.h<8BVlr5bKlٚeb[QCMObg`"enjK- 7p%1BMRX 4m\yŭI(_W@URS6H7gyu!]g2 K]SA_t`?%cm|A!a"Xӫ6_ؿ|3zSO!<sR`r^^"xt۔^P7Ɍ4րxCO>:2 /Xdd+1cFw*B.|M nbu@2|?*?1}|~*J5+tՆ$ zC|8=j@K \v-"YLH7Leò/+/}ujQ '4^o>"JU]X.|i{P(] pQ\ͻ绛l=ɼWu ט`*d ⯒OWeNq(s;Np=a[9{S䍗Io2h0hecwy_ޅ,fzkTqjAUe4ܾc/<~^=V0fVGȿSM3v >2qf$rqaۓQ)wItصFxMۣ+SzrA@o^ѷ'54z= K"㩏VvϚD&ZpAܔ=vM} ^#s?&v')w~vX;'~qEmó}J 3Dk@/p eALm@ 2+̔ls]δ\v^]s 195ǛW`n?3a0߲!P* .{D=YX@^ N9s5)`w"1MIdK{qKn,|ۚZh"*ǝ1&c9hIoO1:cƬ^1R)A(Cr`A4=aB 5(΃0DDlX2]i̇\Nae@|4"e$5rgP "fFR\$YCh}']oƍ',G Xpse~oqfXA $P|V|:|σcLL.l)P ,GOʤWuqlF-i!Hb@,)mh>DV"FyAݨ6~+{ҫ 5JZsOG@hu\ mҊ UՖB֋YTɎ9JqJYG{/{ V.fwwl)ūטV8;@Y6$ƂANXE 3B2B g|-xfdfMZ\YBR-Y[>4rԻUL+/GA#^eK[s$?Aq0]Vp3M-Qm뗿o%Ł0piR#3=J(ə=Reת7jmVqǮ(8 {j3bCŬ]>kdw;v1N\DqfAiFqwvoF懛RV *!z!|soB*Gіl'p*n\<]6>1ux;|-]Z phjG6e/'@(Ӑ0_G+V'1C ],1P@ ⶀ`CeP]5`Ity#8Fi=Yv+,qJ!0%ƇEO;ŏɰkrFLs&3(GǪglܧs] [aa`cp⤱NȇTHTi@w~|Z{m}+ rGtOsA.(^T.!~'oydI@~6Z?b~o <,ӆcucS!ǩ!3Rv> 3mi{OxJjS|F7g"DK= ݑ5`>'ڒJ=% O>,, I!ڄYFmdoK"PmRȈtlnéԤZN5ux8K#,4zd&rRP DJ{\4*auZg1#A\0mӦ×'j ']CY"b/J`=l{]mL4U@O@b/{ijQFsVO\^W!)5S$tq1Yw J3 AMpՠ3j +SIݠmspx8G:R'>dőM[fj( b1E4fKd裄 ${mȺ S2cJ !PHSKK0| pՂx6F㮟J_NHPBV ZBswwґUUZj܆Zzn]öo);Eڡa>`)%Жńp$鄨$+arQ 1Gqd axQ_np4`Щ])0lwc#^07#'Br?z]r~>^Gvd9a~-׫ .wyrur&*۝bZ]\$?-Ұ.SH*,_/_-?W1g#Ĥ'WӶ3;I\)Ove}p*dEN pzej 3qWĒ#0TA%7L0z K_)F筤 ˕nj8(OQ6]1>a)L 4;oaWAa\J1 /х' f̹GuOۧKԼIa;/)qR7dd$V$VRʙU =Of>C *M.Li%` lFIq/k9g_սYǣYŢp "Zꞡ3p 2dH9<>B$Q+ߕ+L')2bGteMs)8C t-0+ -K|2L=>˳wemU@y p,*bBT7,kEIjo,7y3@ !v;27eV#9.kT !M'a !9iG1Y43C£h<옵6ˇe\ow);b< a z2S,!91Hh'^." x"zʦ xEp-}yġ}:#(1JLь<`lbMr;K?50@-?gح. ^wj+FP7߻j=3uBt h I]ާ"7>9OÁ@6 i! $dƍQ.R("1TIfr^}OyCmerJb}3`5\Ι]5~RV\R2lHNk}FFoieCb*a'oP_P$% xXiE@8AK鱈727p5gNmߜ M5iƩi֪^eQ]tDĻP:i<ޢ+6ڑHƩ~\c"g1S1_:{)KT^2}Og v{h%1#H(7ޝztzg5U#Z*oV_ë1 B``xh]ž!(r3b*´,K4ܜ=%o_לݏB@akF] MY@|-!SaLuv,bc-1o!E@GELԢ5쏲4*?[r)üe]-`(\(`)b7/)Q:Ś>*UNys$` #96{Ud).ZIB ,>B`ЕۑEH dW+LJH*㒃>Z^23Cؙ|$fXqHPDMGۧjh[$8AE#eQ$nVnJIB~H6M 'VGdJ( ϟo$&~)&箤cj}fx ;wѮG]}pcB)Q/٦ھ̵!: MYf"e#'Gɖ= :.rd\I˭#`fZJa mdGi>}㣑ط#X*JF,8MJ.ggw>Hp wh?%+k?upi!d8Nq}n<)H8\15ۘ6/A7]8fXYO>usJNz=-`99xz#ovQ&n^N=i_7aAcK]dQ/X+МIhі"+[$8fR=69() ]mK5ůmK<2]Rgh}BrnO^Rm5WùǓ_iSִAw*sn v, 3<']`LXF R8J",ć.4%=LȌ5(m/Bs*BQ6U܉`L"=uJ8G۱'p j|S)քaD$Ȏf4 qIBEg;U ߹AƥwlX^e 7+.`{`80τ'ft( &8 an>';W&!I /ab)1emG<}tWUB-Os*qc#=cYRW\esO3G7BDob L &@s [0ˢg>?!ƘEM+𯛱I1Icb(EAt5]hz!b Vt HBZ6T1eQ =Е9fKI>Z -\.xf0%QDcDW 8._! ma`JfἤlRrSJ6sLI{g;f_y„3IުT4GlRp>ٚ$=`DPl`OkNVwE",kUF= Z F'Ѿokwuu>cSny4Uz!s7DCn\0x9ApˮVz`6Kn8 6s˖Xڡ890dbhi$?45 Vz4<_ h-uk)ޤ7_yǵ3)#﨎fb YvY Ѽ-̋ ia% Y&E,qѠʧ"6L0:vߺM<7ejr50{$q2Se#duM˾gt]a!CQV< DA!MHSLk?UdnqXc`P-onKNh \B I\ sKծuHi6oCo02ņ1.^2?mԨ*-cߨ$;-LAϙU˚ٱt\h vugg+za^G֡ Cˆ9n=LMCLÛ* 4_+v[]^0T.'.\ɰZPCPaMP%lT4 %߼Ƅ0bn7AaN.ȿey8˅> ZEZfrGz2j#&&cna;9 ( GE{ ;|_JGAp) T##틃o|,-˞"R2>-HU 5xT./H#j,i68t2xG '-a[)X[icp؝'YY;Q)䬝:y(ЛvFP|N=l;Oohg$H&.^13vUR.C;!9B n\1n7 Dธn^Bq'b>7(A&6uvR+46рcaґFjc'"k; ߿D@ƚba t,snPVCS?8WLgן/-:;^?<Wmxg\԰nB0eb'tjb&bR[ 12XCZE.?+5*eR$h!gg4[T3ϩth<,24gc:) OZ]T0J%;0bdו,ZI-]\=/\lKIe10-$iRld`moDm&Ε[BS-Kb%bc#5F |`=8T/L.vge g%^w˶I⋻-uښiY`˄OMe Mg.hZi+ږqG+?f=} | [,.Ti Sc qBx NmI7sXE]̺Q Gastl)^l*LL$'J0c5*\fۋPzKA6m3Of|={?OaO%Pn#_'>zǂY_;O쿾Q}%YdJb&*71Yr确=(+k. Wt*Еrx2ӢV;'ɟcBpXn={fta6t?G\HYmVTڀ?Q:3-PQNS#) ܆;Zo<y"a<4B}:OV&t؟gd:w)m{F=Qŭ6g{#L*PJN~S6 ,L/  :?@C #hw,Щhktǝ.um9i0c3o4aP(#x&8o"dk|gho(whTAIxtԅ> 4|ƑV FBdG"y8 zSmfUܨ%w1;|vToT_i7c8RY ZyhB+rPQ=\oTMVki AYZiµz:Ϡ vVkA'j *jy8"bY>T[Wրvʬ^nG'7fͣrr\WVyW9k ̱B3JVI;W)vk+GU 8ʍyjs|. L9\p@G٪[V;&c@QNjMBy[eA~xެB7Y&pcBs L4S5cÈ y3NY~Tv3^>Fu%jiUHL/Cj43( N0@mL?J蚘+(KidҴSd)y<|>gMLh