/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 5 ĠSquare , ĠInc . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġca . ets mt l . app lets . repository . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . read yst ates o ftware . ch uck . Ch uck Interceptor Ċ import Ġokhttp 3 . Certificate P inner Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġok io . Buffer Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . security . General Security Exception Ċ import Ġjava . security . KeyStore Ċ import Ġjava . security . cert . Certificate Factory Ċ import Ġjava . util . Arrays Ċ import Ġjavax . net . ssl . Key ManagerFactory Ċ import Ġjavax . net . ssl . SSL Context Ċ import Ġjavax . net . ssl . SS LS ocket Factory Ċ import Ġjavax . net . ssl . Trust Manager Ċ import Ġjavax . net . ssl . Trust ManagerFactory Ċ import Ġjavax . net . ssl . X 5 0 9 Trust Manager Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġis Ġused Ġto Ġtrust Ġspecific Ġcertificates . ĠThe Ġcertificate Ġused Ġby ĠSign ets Ġis Ġissued Ġby Ċ Ġ* ĠCom odo ĠRSA ĠCA . ĠHowever , Ġon Ġolder ĠAndroid ĠAPIs , Ġthe Ġcertificate Ġis Ġmissing Ġfrom Ġthe Ġ" Trusted Ċ Ġ* Ġcredentials " Ġlist Ġ( Settings Ġ> ĠSecurity Ġ> ĠTr usted ĠCredentials ). ĠTherefore , Ġthis Ġclasses Ġis Ġused Ċ Ġ* Ġfor Ġallowing Ġthe Ġapp Ġto Ġcommunicate Ġwith ĠSign ets Ġon Ġolder ĠAPIs . Ċ Ġ*/ Ċ internal Ġclass ĠSign ets Trust ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġval Ġclient : ĠOk HttpClient ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrust Manager : ĠX 5 0 9 Trust Manager ĊĠĠĠĠĠĠĠ Ġval Ġssl Socket Factory : ĠSSL Socket Factory ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrust Manager Ġ= Ġtrust Manager For Certificates ( trusted Certificates InputStream ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġssl Context Ġ= ĠSSL Context . getInstance (" TLS ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġssl Context . init ( null , ĠarrayOf < Trust Manager >( trust Manager ), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġssl Socket Factory Ġ= Ġssl Context . socket Factory ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠGeneral Security Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclient Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ssl Socket Factory ( ssl Socket Factory , Ġtrust Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Ch uck Interceptor ( context . application Context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġtrust Ġmanager Ġthat Ġtrust s Ġ` certificates ` Ġand Ġnone Ġother . ĠHTTPS Ġservices Ġwhose ĊĠĠĠĠ Ġ* Ġcertificates Ġhave Ġnot Ġbeen Ġsigned Ġby Ġthese Ġcertificates Ġwill Ġfail Ġwith Ġa Ġ` SSL Handshake Exception `. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġused Ġto Ġreplace Ġthe Ġhost Ġplatform 's Ġbuilt - in Ġtrusted Ġcertificates Ġwith Ġa Ġcustom ĊĠĠĠĠ Ġ* Ġset . ĠThis Ġis Ġuseful Ġin Ġdevelopment Ġwhere Ġcertificate Ġauthority - trusted Ġcertificates Ġaren 't ĊĠĠĠĠ Ġ* Ġavailable . ĠOr Ġin Ġproduction , Ġto Ġavoid Ġre liance Ġon Ġthird - party Ġcertificate Ġauthor ities . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso Ġ[ Certificate P inner ], Ġwhich Ġcan Ġlimit Ġtrusted Ġcertificates Ġwhile Ġstill Ġusing ĊĠĠĠĠ Ġ* Ġthe Ġhost Ġplatform 's Ġbuilt - in Ġtrust Ġstore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ< h 3 > Warning : ĠCustom izing ĠTr usted ĠC ertificates Ġis ĠD angerous !</ h 3 > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠR ely ing Ġon Ġyour Ġown Ġtrusted Ġcertificates Ġlimits Ġyour Ġserver Ġteam 's Ġability Ġto Ġupdate Ġtheir ĊĠĠĠĠ Ġ* ĠTLS Ġcertificates . ĠBy Ġinstalling Ġa Ġspecific Ġset Ġof Ġtrusted Ġcertificates , Ġyou Ġtake Ġon Ġadditional ĊĠĠĠĠ Ġ* Ġoperational Ġcomplexity Ġand Ġlimit Ġyour Ġability Ġto Ġmigrate Ġbetween Ġcertificate Ġauthor ities . ĠDo ĊĠĠĠĠ Ġ* Ġnot Ġuse Ġcustom Ġtrusted Ġcertificates Ġin Ġproduction Ġwithout Ġthe Ġb less ing Ġof Ġyour Ġserver 's ĠTLS ĊĠĠĠĠ Ġ* Ġadministrator . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( General Security Exception :: class ) ĊĠĠĠ Ġprivate Ġfun Ġtrust Manager For Certificates (` in `: ĠInputStream ): ĠX 5 0 9 Trust Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcertificate Factory Ġ= ĠCertificate Factory . getInstance (" X . 5 0 9 ") ĊĠĠĠĠĠĠĠ Ġval Ġcertificates Ġ= Ġcertificate Factory . generate Certificates (` in `) ĊĠĠĠĠĠĠĠ Ġif Ġ( certificates . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" expected Ġnon - empty Ġset Ġof Ġtrusted Ġcertificates ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠPut Ġthe Ġcertificates Ġa Ġkey Ġstore . ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġ" password ". toCharArray () Ġ// ĠAny Ġpassword Ġwill Ġwork . ĊĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= Ġnew Empty KeyStore ( password ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġcertificate ) Ġin Ġcertificates . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcertificate Alias Ġ= ĠInteger . toString ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Store . set Certificate Entry ( certificate Alias , Ġcertificate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUse Ġit Ġto Ġbuild Ġan ĠX 5 0 9 Ġtrust Ġmanager . ĊĠĠĠĠĠĠĠ Ġval Ġkey ManagerFactory Ġ= ĠKey ManagerFactory . getInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey ManagerFactory . getDefault Algorithm ()) ĊĠĠĠĠĠĠĠ Ġkey ManagerFactory . init ( key Store , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġval Ġtrust ManagerFactory Ġ= ĠTrust ManagerFactory . getInstance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrust ManagerFactory . getDefault Algorithm ()) ĊĠĠĠĠĠĠĠ Ġtrust ManagerFactory . init ( key Store ) ĊĠĠĠĠĠĠĠ Ġval Ġtrust Managers Ġ= Ġtrust ManagerFactory . trust Managers ĊĠĠĠĠĠĠĠ Ġif Ġ( trust Managers . size Ġ!= Ġ 1 Ġ|| Ġtrust Managers [ 0 ] Ġ! is ĠX 5 0 9 Trust Manager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Unexpected Ġdefault Ġtrust Ġmanagers :" Ġ+ ĠArrays . toString ( trust Managers )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrust Managers [ 0 ] Ġas ĠX 5 0 9 Trust Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( General Security Exception :: class ) ĊĠĠĠ Ġprivate Ġfun Ġnew Empty KeyStore ( password : ĠChar Array ): ĠKey Store Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Store Ġ= ĠKey Store . getInstance ( KeyStore . getDefault Type ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ` in `: ĠInputStream ? Ġ= Ġnull Ġ// ĠBy Ġconvention , Ġ' null ' Ġcreates Ġan Ġempty Ġkey Ġstore . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Store . load (` in `, Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġkey Store ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠAssertionError ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġan Ġinput Ġstream Ġcontaining Ġone Ġor Ġmore Ġcertificate ĠPEM Ġfiles . ĠThis Ġimplementation Ġjust ĊĠĠĠĠĠĠĠĠ Ġ* Ġembed s Ġthe ĠPEM Ġfiles Ġin ĠJava Ġstrings ; Ġmost Ġapplications Ġwill Ġinstead Ġread Ġthis Ġfrom Ġa Ġresource ĊĠĠĠĠĠĠĠĠ Ġ* Ġfile Ġthat Ġgets Ġbundled Ġwith Ġthe Ġapplication . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġtrusted Certificates InputStream (): ĠInputStream Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcom odo R sa Cert ification Authority Ġ= Ġ( "" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ----- BEGIN ĠC ER TIFICATE ----- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MI IF Rz CC BC + g Aw IB Ag IQ E is X al Gt Hw IX Q ta + Ta 6 m Az AN Bg k qh ki G 9 w 0 BA Qs F AD CB \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" k DEL MA k GA 1 UE Bh M CR 0 Ix Gz AZ Bg NV B Ag TE k dy ZW F 0 ZX Ig TW Fu Y 2 hl c 3 R lc j EQ MA 4 G \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" A 1 UE Bx M HU 2 Fs Zm 9 y Z DE a MB g GA 1 UE Ch MR Q 0 9 NT 0 R PI EN BI Exp b Wl 0 ZW Qx Nj A 0 Bg NV \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" B AM TL UN PT U 9 ET yB SU 0 Eg RG 9 t YW lu IF Zhb Gl k YXR pb 2 4 g U 2 V jd X Jl IF Nl cn Zl ci BD \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Q TA e Fw 0 x Nz Ex MD cw MDAw MDB a Fw 0 y MT Ax M TY y Mz U 5 NT la MF cx IT Af Bg NV B As T GER v \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b WF pb iB Db 2 5 0 cm 9 s IF Zhb Gl k YXR l Z DE c MB o GA 1 UE Cx MT Q 0 9 NT 0 R PI F NT T CB X aW xk \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Y 2 Fy Z DE UM BIG A 1 UE A ww LK i 5 ld HN td G wu Y 2 Ew gg Ei MA 0 G CS q G SI b 3 DQ E BA QU AA 4 IB \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Dw Aw gg EK Ao IB AQ C 4 X w ms n Ap Id H le Fx h 2 WQ NB Wy 9 l 6 Fg W 1 z cs lm fp FJ m 9 l BF GI 0 Lx \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" s O jo HV u 0 6 w C 5 CQ g W adt E km 6 VI 2 eb D uj Q rp PE W 0 V 6 tc x J 0 Af DS AS 8 U in 6 c NU AO DC 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" l 3 O 4 Wb 3 mv N 5 A ej 6 I 6 t T q lf ea X VX ma Kd Fb Mf 6 db WK + Pk Ig / F no P DY 1 4 PJ cv XN 6 + i V \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Xy IS Wo X dek 4 ee 5 pP qy Kj 2 HT Qp 7 RL xe X / Ve 3 ZT Jq Yh Ic / G Dr FO d PN y 4 0 2 o Bk cd 1 nh \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" G ju 8 P 7 BF 1 e Vt / jr PK zM 0 S mk / s PH q Er 3 Q BL A 3 i N 7 p Pa Y 0 SD ln m wb M xs T 0 UB k 3 j 7 V 6 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" n 5 th h jn AO UP i 9 K 2 2 P 2 YW x PL d 7 k Y p Fq 2 O QE w 5 Ag MB A AG j gg HT MI IB zz Af Bg NV HS ME \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" G DA Wg BS Qr 2 o 6 l Fo L 2 JD q El Zz 3 0 O 0 Oi ja 5 z Ad Bg NV HQ 4 EF g QU vg st ff + Nm Db I lg T /\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Hm Z mV 9 Vo 3 J ww D gY D VR 0 PA QH / BA QD Ag Wg MA w GA 1 Ud Ew EB / w QC MA Aw HQ YD VR 0 l BB Yw \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FA Y IK wY BB QU H Aw EG CC s GA QU FB w MC ME 8 GA 1 Ud I AR IME Yw O gY LK wY BB AG y MQ EC Ag cw \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Kz Ap Bg gr Bg E FB Qc C ARY da HR 0 c HM 6 Ly 9 z Z WN 1 cm Uu Y 2 9 tb 2 Rv Lm Nvb S 9 DU FM w C AY G \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Z 4 E MA Q IB MF Q GA 1 Ud Hw RN ME sw Sa B Ho E WG Q 2 h 0 d HA 6 Ly 9 j cm wu Y 2 9 tb 2 Rv Y 2 Eu Y 2 9 t \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" L 0 N PT U 9 ET 1 JT Q UR vb WF p bl Zhb Gl k YXR pb 2 5 TZ WN 1 cm VT ZXJ 2 ZXJ D QS 5 j cm ww gY UG \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" CC s GA QU FB w E BB H kw dz BP Bg gr Bg E FB Q cw Ao Z Da HR 0 c D ov L 2 N yd C 5 jb 2 1 v ZG 9 j YS 5 j \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b 2 0 v Q 0 9 NT 0 R PU l N BRG 9 t YW lu Vm F sa WR hdG lv bl Nl Y 3 Vy Z VN l cn Zl ck N BL m N yd DA k \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bg gr Bg E FB Q cw AY YY a HR 0 c D ov L 2 9 jc 3 Au Y 2 9 tb 2 Rv Y 2 Eu Y 2 9 t M CE GA 1 Ud EQ Qa MB i C \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" C you Z XR zb XR s Lm Nh gg lld HN td G wu Y 2 Ew DQ Y JK o ZI h vc NA Q EL BQ AD gg EB AA 0 + MZ BG \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" k GJ v jo h Y nv q G / e / rd g qq IQ xx Me WN Kb 6 x IF XM + O XX n Un nw OW ZS gb nf Y / 0 K AB q 1 E 3 g \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 6 HD ob U 1 9 pq o / F St qj BM JJ Fv 9 P ij Nm 4 na Ot H mn FP Id 5 S 3 vk V MP y Dl O HG v UK nz p XS \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" R J Hj Y pg S 4 G 1 a 1 c W IS i 6 L ne T 6 C vc 2 B 0 8 z Sl w Cz 1 z 7 6 Nu Lb Rk M +/ Z GA 2 ym 6 Jo Xr SR b \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" v Rd Q aC c BE Jv ap 8 irs j Dn G 3 0 Sh Rt B MR 1 ks Pg q acd + hd P of / ws 6 jp Nl 7 J Os 1 ld as Kt \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" i 6 o 7 5 g QX bbf CG 9 lc MX z 0 w 2 S 0 +/ Wpf 0 X IY f V 0 5 H 6 / t Q 7 8 LT Vk X lp d Zz If j GJ h Ej xE \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" i E + LX E 3 FU Ve Jd C 0 =\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ----- END ĠC ER TIFICATE ----- \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuffer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Utf 8 ( com odo R sa Cert ification Authority ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inputStream () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ