#!/usr/bin/env bash # # Copyright (C) 2011-2019 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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try sudo apt-get install dkms." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=da0bd4455e176a167240cdbb9ee4ea69 # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 ]]mwH֯qv}0`;q2[; vsBb$-nUud dyZ{juK/=g\_-T*JeQgw^K?WN<:`r-*rLj뙁NL̳}ۻE us9CAfNl̙0ߝyM%~}rkzםdcQ_yfz6 {{ &6ؠf4r?9+f|Pvbl;cah@"`+5/[>!%M>TKKZ#^q!a#!0 :@B J \k6'Ṅ 59ȏ=OBAr0۶CQhBb 'RWz>p.m $Jmi6΂hB{|w|QmaAS@}>?tw 2:Z]PZiYW{:Su(m{YA˦CMRSuuzLku=T=ϴvyV'y*XMASNj YZjv ʱdžocoN(ZX*5TZ/+SvJ+\ 9TvqShu8yУw՚F>V] ĠՕr LOpp~vY_e'NbC]PCϒtb#8GՓvk*wPυ96MGP^h8]`NT#yV5R?x!k"luSxZ L 2oy4w 왣Q͝ +I;gj4h֍yeKzuzX,J!FW韾\W>Hnǝ2\^9$?uP}9ICs6}C{#m;VȒAƚDzl?tLfi/Ot,H*TiTF[#NBȜ؛MR1 fnpӲ']d`Gxz Pmݹ3r,bvŚ 6V `HlG"G9\Q< Fscг I9I B LL@7+@1V؝+ >`Ioug0,CczX_g/E Cxp{9`\S!G(@\hS'dxa檜t 7=Ϝw0.l\)!4tB/C3}kBb0H'ows2ݼq&`_苂l^$Q{lLFȊ:w+TK<_>031;ȳR\-1՟0 ? ' cD <$0,A,<' i, ,>* 5"W[5ϧˠe2(z z^1gSwΙAːffP2%x3_ ֑S^9CCf\ 45o+(+S*I3b OS9WVON ~/VU(jH?j }Z!]6W'UR]Ikm4v)ve)S$[U!dk,SvzJen-5_27kh|ϫ8yh5]T&̚75}MWt\ lW%:[uӵB֨$8dKUҨ}+q֎sZOjÇ4'{}:ݿ&L&] j| *?:8z')>,jAT;1PTkjAG!wV+tCYZiԼ!`/wJkM>kkkkk~o4>HG޹QW+_b$[l8PRZYSM49rGr'o>:6cț:O ''a߉lKKhp,JH%؟`k`\淙= Q5c ۑ41,nkU5սf>I {/NbBXF{x6W\~Bc [9Kld;" [?w&lbX4H\@C L.aMg}~XM}}'1N10jcɛ@߰ % 3u|? h3o}kӗ!@neoxpgS$3]Efmuf mPT} PYhk ˁF0ɶxV"+h>),-2FSQ㵴;oFtٟx_5| {\?kZkIA݁F\ف1,_26Y֛ndOVUMpU%>Bl* ]o?Z PȝkF+}5yAJS,΄U MϺv¬Sf8GT~n`nd]I`ã;1ADVf h@ y: HEۉ~)en=65ڀGk C{0W6%^ c}y_YX[PĻ5<{ޏDž!W6FO6N𸄂C~M7ݙ*c\|>zC2b?j aX8X Vm~2|%CO+{58ˋ yA(纍b2Ʌ-eйE ԍP<}Wqr/磅t9ASM F‹bx)sC68Ӻ.'!YtDYݚ#-FG;>Gɖë`3 LEm 'xĠ00S)VC/Feti-"qIϚMDk˙owS{<# ]y&yb wß Y8]bl/6Mo_m8@QwA\@", ̷ Dn[ PhNQ-|%C\rƖi8V֬>˰3nB$L0+syv?ڌ8V S[ߓ jR[?0Kdﶼ áEptc ~֏rK{'C(咲bLL)ڂb <an-oy6ꊎ(TɸjbW80-t+˹Tk^rWpv:/1 .g.2 `mi<[yV$k[H J(VgAkzLr&3'<> 1EbvlrY X9h&^oW2K-$l>Y3;~eiUl?s Ye+Z:S: o86q-̻dp943m3mJ3zK&hZ"(Y4]8|ީ)-;wN6n79 b6^^\9b9+~P|냿:G) G`?A9Pj5+8nǣh#]eu[&`%{"(\Ďݭ$bӨQ(;{?yxBs1FuRJ"GȾAeyP`HȢLY#~֥+K`s s+/ƒ/? 0smÄfrMkPDmD/p,|m3?gC]fYyؗ<DX q& Wn2vxGIN bN2zNn]SȞ/лdjiEŰd@pnloD!~(|X^P FD/_.WM4RJ )ܻgHJODd %Oe)΄Gw`\t/])vv[_ M}B'@Y1/C~ ׷,?K0I@ @E#$9 Ok0 #!Pڣ;Iq~l/M".j\Uត|XS0u g"/'ʢϷ#)})~RЌ2ܜܒǣ%pzf|eh9 'C8YdpHY3Ge Yz H^G!Ex,=/r`,=/b '"&BX? HK?3ӏ£̅3PvG(xOl@(5i 'dL2O?']s{ 3{j#睊 p @Hq &H_ (, y+VDBAH-)EGˇ^'wPG r9:^[`W$XY"F3 0JY^q"P Vwd/dp!LB1P)+i5Os,V[+g򼼨;Bs^su aEQ[gƱ!49D6Z=XOmM>i[ՠ z%C؅ʎ3xcMSmz ϐ0L<MiD>*12fT[r.f>-^؃T<.^ΰ4/W3”sjSAy;}UX+9H(Z&;ʴD~UxX<%"6r1\8-%"džy=c0Ha8^k90M!Z*4NwZ^AJ&*s\ab($loXp^`3rLcS_{L/B@ DگKH>'~^,SG5(0hZl F@/fO|3 tmӔ/5%ˊi%1%29/_ xZC~kjYF%JGgeATAӴZ֒1!du]%%VĖk$zW5<XgJ)^_bZkgn@::K2"BgJFTl 'a]5RTq+bp)X[$yp^*Gx,cLm 1lyrHA٭d!UNoxQw0P{ɝ(oi8'<4qd!v?)20+zUA1J;O ē0h۔p|> P+ 7hᗍc򵵣*cUw79L p(A/p7u$:hx}HE1E} to7Egd9wOZ98>;48+Dj]h6]zN&E=4"ClHDˊlߜ~ Dx^6`)5H K,@.eNIe* 8zƅ=r"Orr&MTOvJ`7&$i"!%'RC.`=؂%[5>=&LlΨM^b64+ؘ/ﻍ O,8xP?T+{}%΂#X?/y%&2%"mganF/bdIƏGhۋ+EC2NG7x1BIw7 DVWo*jn#S~;*5|ah924`҅k4`ޱT?V*O)}epMa):mX /)43\cE}C00uod|axcŒRAeJU5h[-(˔"%Ny/±/HF:,h6p1H[9f.LGtje]wuDmV(TUJc8m9ACY@= ;";c8|P#hT\a3DDX>|M];|#4\inenu ~=: {Ei'fvyq8{48E5nZ1e5i8Ŧ+h%艕#7Q'nR1$ wbҢUSyس:W jqC+oЎB:)1Ɔ-M6ӺX$g񝗵y;:=>I.)x@ 6a(x+}5TY3UR@W:(! s̉泼EÛ?bRk=K1 Ya1i,NI uILxƬ <&S†Fnjl~*^2Q` CƱjŸ?''Z?'CJWr%'SI1]N`qdNc3?AbWqX>tW3uCU"Vn+ۖ?,VЫ4ŸvU5K$ |3Y@,_E~|αiXl [,R m_qR:&܏ j4 =M\rPcq d] [O6AcO92st pO>_,] Ӈ?uJӂֿvj\ZSeHuW%%::>:\ д'ݮ~_f Ut,~I*?z@,aBUUPd 6Ib3,zK_> bEH۾o[Y2ƬEF٦k4kl0c"MS'Cev#{67B,gDN J^ɹAZu[K\GY^[)bh^4Q`2vxт0c+%3~>qwR 2Va$ޤsF'4];R}9k*4 4'6 Wp3.T%=*DR=J;'L$+kw Z-W&dR)9G8Mcտ̋ >?nVZ'^GMl]$5d$^Xxe &Vn c"?N__@4P!3ٛ&𳲲‡U@kjD.S" ֶrmv6'9sv-%*:Js_3ŝ)jU˘⍩l4雽NYOt_-][ENB3EddByY>b+;rG]帉8Sj { ~>8L3Ȏ ;˭y.J+KTIL$2}FdV5o_\(\ ӍOF|XtM$d%N 8R*\VNGUz"-;4`5.DC^}+S2׾xN'P=5>6:]yKhNQQ-$9QU^KyI%L&^/luЎNR 1zVpY 7:C Awޑa,7)=w 0A^cth7"57k"7!Yx_XCyַy#X!'~7hK1R.- _֛MsQ7ƢMos3mKhФk {\b[kWKbhoN&$ fG|'肥e!Z6n0e9YVk?|-zV92lAT3OnښH0 /gFtӀeZ.b*MHz' z͚q٫vWDRF-Ԧ0KCrvh(pz@ 4o.6od!LZo8 8|U}.;c/[ ŠwM}v*RfX~]oRɇ(FhoI}{|{\9_γv(Ҥ̾ m!6E!f>> s6҇]}|[4u0V{MZX `gkd\{xcs};tKY>u݋~ 1#j<Ƌ,WVv]q娺 yHچ,.,ߜ99|To Pu[3*S2թOA9/&nk!%_/^x"[_ggg߈z^uo]DGoDFtE xԠ,d8.1@,;{[n9&tuSF2,IW?~y!0% L*n~6`kn8}꠲tX==3FGT4V-ć_|Q(F걸?F_E{z\ RSImJvJ>[9|&]:޼?ȋ~.[չZ{}x ?#ʀT6l ~Lt%mk]VnN[*%I5X\Engq`̍~@]8f#Wl9 YJAr,H$(bL_W&wNץ{ض`OE S-nt|؍_H2l̊jjL#ɥ,c Cd.&媢-d?$G*a>P@Q4Ko lZcI-pt@/X&s᳿ ܡ v:)2-_jNzVAI/޶h~{o*|ܮ6;}=4O g tMst@zlϳ,ųg#䧹asEXԆRq߱deh;2Yrt9S[͢+8Nj|L&{cJN v: G$vH&޻g/JLG?QJw_G)I?Q~05w!)9a1tΎ)ճ@&c{9pg,ɟTS2nZN {{,oO&g%˓ c\(\ELF>S3+V̮HzUfNJ{#Ħ67N; Z51N+5⺼u]a 쥺zΕ7P1(P ,0s0՟ȿxk?2<YQ$oQ媰N"Én>=ˉXz]p9Fj_3Jej躃f@ **xZN^d (06:p +H8#*Z)lk=m95M 0KD}z .d\1*s :NT|_TC6 NsH,Y+ԟ˃Iuie9kq7 .tC)?Y8-mBh_&񢜬Qf GX7NԌ(77m{c;yim^yH PXEʽx~{ VoO8:n0 ]r =:՟OxcM{9(m,zາĂu+ OL:6PC^'4'J{6^`M{(Ek#WUJEkz1pNe{*ϨK6ϴ<>`r gIy@N] ±Ta,?5h8y" D>%T4b.d7b}`'99 .:A+T鶦 I B`9뮥~yPm>[gj]{7?i@%g,C㽳)nTFdtiWTDZ8k,ocI YeΥẅ́~Y=Y?Yo7s~"r7 Snۼ%nŧ[h,)Hv.ޒ'w-K4vR1XR;bAxL^L(-o',0Iۨ:T'4ؓVlߵÓz{r~\wjN>t>+'sM&^B"^\ 25TpT&D !>(jG~P/ÙBxq\5iaT?O均s)FO=C.:jB: {g(`.#*O2rTҺB9ve&],K>զԥz\Fqi1#H0Qv*cn8];JgO`l3 Ŗ~d= ʏ9*<oQFS0y0 mqĈbBWTV2> u板 eBNί/)XZxSa&#Ts$ =ЁaS][ik PLt [SZ-GyJU訰c~E`š. L* ;1sOAZUE1"q[tbArWEoۃS\*xr.1&y_t.nQ*W6&_tՠ0?5171֐8Yuk#$m, v%1cFU8eWiV tf7;e\U+?5b4z RTgSȈ(.= 0PD4Woذ %a:RkXĎuiT?gYE&;CӺdWL*"ϭ-0|oBm3[#;O==̽Ҳx]ڇ 68孻U,6LZ'?VIC%?NX=;:-(} S+;K Tݲ?Nh5C~㔪yT4Ymʝz"ͅnQ;u Wib`iB{̵2 ,2x3Qp>-{SMH`({يMUu]RgP24@vӡBЖۼ=Ie7oONǩp0YE/8tx{&Pp)IV2ґz ه֎pڛJz?dr^~s@(-"']K%}~< 0\vrـY鱭tƣV) 3͓xJNxX\ Joghag5Ӏ}^sxW 1Lف`\_ld(GP|4cݩYm]\-nfP0gUy<}챃w`hU% I8{c{mhJ(b.'yauD4MjM%Ш8mT`sjt^XYJa%7|l]0V3&@'[ak/6y5_G2#h|-5~AM*ߒ޻jF9$ո!XM!^N`~;O T#=-UΑndɴVx ?= l޼BJ|č&C-w^4[~~\ˀ&5C--} ;H٘:F*( t%fԲ2[ń S(CK[8+Z]5<}Uϫbs97-,7`Eԝd[J*%qZ>-6 hP_ϪpבX=H!!Te;T.YMZ aw ZH%?MdubH`Ť(OU9й'3>;mŌoǷASSЈƔ>̥Upojokzܒ ҨrsRr/uh k6`|*^#7l60ex6 7)66 El4 7Wh RUQb\pH0&# #hTh&1 ͨ{#F6~Mi;\) ـ8 ~!QY1b$*馧#;B!a~L3ؤh( *+<6H¯Gg@3^&ЇO}Dz=8N4gWt;?wX}GU9>(n,!0IK-,p4(&'ROp&A$MuK3 JưDp__[x>bl'u#S8}Lr3>/Q+|ʜ1R@;KWz Rk6waF B1Rn |N h)@SΛDʹ'<u R@+s #V$yh0vl)@d n 9>4la)@$z S@#}#8)@PQ 1|~ hqR<<48)@p#ƠROz pZy Ԏ(^ /D f .ѐQD[Vo+]D^sǂ;-bݙc0=v|,6Y#FW*Vz7mFժuROunҮH8P] mpYerDi(Q;xQ@.-֜o|[S yN58;9<|gaZlD TQ'gܺIcfhRDQ(,m S%>IgDW\r,QI͍$ÃP8 [A@x0dϠ57v&׃B4Q7%2[a]cI]Fw@}1fNYϚ)sL>w~sC{}%Ю ֦Q."PD + Mvk+GWvWpʀyPnwTtǣ,T"q(Vt'țǿ3YC_2U=ggesc={*,{=g߳Y,{nIV&%Np{c]_Q,PU%aAE(aX^^.r_2O *_ mm~;{)qu;3촂ފeOei ( (*|l:ca~]c[IC(51f➰0Xmi!cv N.u< S79vTͱσc_Ǩ_+k|2?gL3?Eh]ױ73 oU{z~'VnW,E:-n唧0*JKN_:;|wzIQ(*P]H?9R/rTa͜{3.!xF?_O1߇{HCo53S!KngrwUAݗ6,4Vp*?o5nIboB~[3oE P$FZ-Ie~E.lqݰ.neVVn_/rrvv2,иe->oV7J 0$[o(.Tp~ &"rEI_-X4'94n%p.[5[ !l/n?>X`|na'&ם9sM 57]&7%LTӇi}uL?@#^$Tq,ȔR, %[<L#YjJI՚gli]5㚯GJ$e4X3eZ&yO)\>w.Mq֭J胊w SF!i]\ތ t3J2q;svQ^ݦac_$=X*8%YXRu֓|;ѼJmM ~X-<I*<ӁP_$͏ac V/ɾ qٝΤ9ѷx?q>g'og{pdJjѤFnjO+kkq|ZzC\(q^t,?)ʭc\xoNO6W6Gڟmucm#W7W5>7fL3oV㿱9+!_q4p<(_5+jz}ϝ|/a"x{& * `t$I:<)̚ȽtWf>jJpp^*gVE.+ 5\_UV u hz? V-oV`Q la5i;e1p #n~ uF|}7d'jjL+=:氉C|n@Niu}wPɃLr&WTkl8MZe$ΧUHҋ?(9T8?NG8O?vZ6 3FsZJZ+Zl : 6YuA`o7}MR KYSl7|7솅ٵcͤm`wM aԴOӧ}:Rq d s6B+U|.h @SIfyf_xO_|>=~O'D}91>$GtRPB:<}O%Gq9<Š+iE;V+S.~sZ;_&}y~ ^l~K Uc){vTv.dFo ȠeV'z?i8Եv>M E8Պbwƙ1; KR- Z;@>b|#\ */77 e̪ ŗ'цqgG{}Ǭ+5>Y,_/eY,(*JW#`c!h@7˿-7DZvH;TIB.yA2}9F{Kz|dWځRsA،}mo&۸p/P+ڏL{ysސ1|q ĎhNF趹ڎu`h%Q<\S;Uȅdp!GZlzWcDahA0;\=kVI <ۑq`V=sS*;(t* z c*/.a_@+d2"d' |aIr T9eG@<hZ[9 Fwҫr+7t(M"U{j cE)Q&P=e2eMh6̊\e˲3B~]Ah${wBքJS0Z8{ˣ\vYP>X IF,C]-eL|)EGw2XHp.poOaSY zd JuH.cGrtKQ$NU?2Al_x|EBj̪ȋa:NbBΰb/e;"f͖!AA7[5h`[*ʬ[ۣX_V>w ePOB^Ox!B=,T4(pSF3 ;%/l[XzZ-q]G?;87;fBR9?BZnjXdo-g:NOls "|Z ^kB6D.g=~ p,IL3]aK&G u4!sC?Mjh ͪ&efesofҁeBD."o8/c*dSĘ_!"L} #F!Ɍx`+#GK7;Wfe_Wfe_WfiջUؽLXi/zɉt0p7p@%2셅~Y*QԑpS0,+:ݙ:"g[Yc .!]*{ A796"ʈx8؈*Hݔ?d(k@-+.I`DU<&(1Pwg! %iAAyI*-j z:DMu+(W Ӎ^Ul^VK+@l8`Om$l͋GήDӌiڈF"_=o8 #5ogዼм`DJA"^N )zɰl]n?YO koURݺdL"E-Y/!p'TS+&<" |1j1+8e{JKq]Lڜ ;7N m k*RS+)cCՑyAo6CTqc0# $YWGİu`l[k rVR0(:сU_  Og ~\tBux$e5}UkyGӟeNךh8}h4a Ԇ0sF[tt8,yH(^Ad)[Brت#7Ȗ/FlJ^u`(9zx9/o1NMc8)|aTz1Y'Rʆ\ޝ|o"RF/UY( a:i敜ՐaJ^͕|<΋.- |dxtn(";V=hwg̿xF(`)f>ٱv/zlOvW pe3pv.>3{Ff'[Q􉚣pd}EZG+XL@sh=r3&/_wvz.ovVWٛap\99p2`l|++P1˃e˧_[1byyqcQ\4+7(쒁*8c *p$C͂fP`Y0`<,ݳz3M_fe,2ܓF^{:KP8.U~*4IիV.ZT lѿ_0˖HV&Iɟ b#k  ໨ougJvOL bأd~K(>nƣP,`H$(^Vn ]1V #+r;QMV6&/ʫ+Kh61J&kkZϖF 5mL4 S\,#B|?|h], /C̣xr>3Rfx=)fvME3TĶ UbNghk0As H$saj ӏ_;56Kn̖A'%Ͻ"VBmԯ4g+Glnn7ȵP=P ┐%S"m'l \ |C&SiJQɘH[0zt bVkespaeA㴌~m MC`.xCI$X ^!|d^ap.6+:g,~G' ϧ( sOoH|ޢGVe_<_/%5?P(}^TdnA6ړ4:/p%S[e}O>'d}O>'d}O>'d}O>y`