/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 2 1 ĠNet Found ry Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġorg . open z iti Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġorg . open z iti . api . Service Ċ import Ġorg . open z iti . impl . Z iti Impl Ċ import Ġorg . open z iti . net . Z iti Socket Factory Ċ import Ġorg . open z iti . net . dns . DNS Resolver Ċ import Ġorg . open z iti . net . dns . Z iti DNS Manager Ċ import Ġorg . open z iti . net . nio . Async TL SS ocket Factory Ċ import Ġjava . io . File Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . SocketAddress Ċ import Ġjava . security . KeyStore Ċ import Ġjavax . net . Socket Factory Ċ import Ġjavax . net . ssl . SS LS ocket Factory Ċ Ċ /** Ċ Ġ* ĠMain ĠAPI Ġentry Ġpoint . Ċ Ġ*/ Ċ object ĠZ iti Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠIdentity EventType Ġ{ ĊĠĠĠĠĠĠĠ ĠLoaded , ĊĠĠĠĠĠĠĠ ĠRemoved ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠIdentity Event ( val Ġtype : ĠIdentity EventType , Ġval Ġz tx : ĠZ iti Context ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad ĠZ iti Ġidentity Ġfrom Ġthe Ġfile . ĊĠĠĠĠ Ġ* ĠThe Ġfollowing Ġformats Ġof Ġz iti Ġidentity Ġfiles Ġare Ġsupported : ĊĠĠĠĠ Ġ* Ġ* ĠJSON Ġfile Ġproduced Ġby Ġ` z iti - en roller ` ĊĠĠĠĠ Ġ* Ġ* ĠJ KS Ġor ĠPKCS # 1 2 Ġfile Ġproduced Ġby Ġ[ enroll ] Ġmethod ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġid File Ġfile Ġcontaining Ġidentity Ġinformation Ġ( key , Ġcertificate , Ġcontroller Ġurl ) ĊĠĠĠĠ Ġ* Ġ@ param Ġpwd Ġpassword Ġto Ġaccess Ġthe Ġfile Ġ( only Ġneeded Ġfor Ġ. j ks Ġor Ġ. p fx /. p 1 2 Ġif Ġthey Ġare Ġprotected Ġby Ġpassword ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġnew Context ( id File : ĠFile , Ġpwd : ĠChar Array ): ĠZ iti Context Ġ= ĠZ iti Impl . load Context ( id File , Ġpwd , Ġnull ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad ĠZ iti Ġidentity Ġfrom Ġthe Ġfile . ĊĠĠĠĠ Ġ* ĠThe Ġfollowing Ġformats Ġof Ġz iti Ġidentity Ġfiles Ġare Ġsupported : ĊĠĠĠĠ Ġ* Ġ@ param Ġfname Ġpath Ġto Ġfile ĊĠĠĠĠ Ġ* Ġ@ param Ġpwd Ġpassword Ġto Ġaccess Ġthe Ġfile Ġ( only Ġneeded Ġfor Ġ. j ks Ġor Ġ. p fx /. p 1 2 Ġif Ġthey Ġare Ġprotected Ġby Ġpassword ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġnew Context ( fname : ĠString , Ġpwd : ĠChar Array ): ĠZ iti Context Ġ= Ġnew Context ( File ( fname ), Ġpwd ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġremove Context ( ctx : ĠZ iti Context ) Ġ= ĠZ iti Impl . remove Context ( ctx ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġinit ( fname : ĠString , Ġpwd : ĠChar Array , Ġse am less : ĠBoolean ) Ġ= ĠZ iti Impl . init ( File ( fname ), Ġpwd , Ġse am less ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġinit ( ks : ĠKey Store , Ġse am less : ĠBoolean ) Ġ= Ġ ĠZ iti Impl . init ( ks , Ġse am less ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġinit ( identity : ĠByteArray , Ġse am less : ĠBoolean ) Ġ= Ġ ĠZ iti Impl . init ( identity , Ġse am less ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Se am less () Ġ= ĠZ iti Impl . is Se am less () ĊĊĠĠĠ Ġfun Ġidentity Events (): ĠFlow < Identity Event > Ġ= ĠZ iti Impl . get Events () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġen roll ( ks : ĠKey Store , Ġjwt : ĠByteArray , Ġname : ĠString ): ĠZ iti Context Ġ= ĠZ iti Impl . enroll ( ks , Ġjwt , Ġname ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Socket Factory (): ĠSocket Factory Ġ= ĠZ iti Socket Factory () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget SS LS ocket Factory (): ĠSSL Socket Factory Ġ= ĠAsync TL SS ocket Factory () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget DNS Resolver (): ĠDNS Resolver Ġ= ĠZ iti DNS Manager ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġconnect ( addr : ĠSocket Address ): ĠZ iti Connection Ġ= ĠZ iti Impl . connect ( addr ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Contexts (): ĠCollection < Z iti Context > Ġ= ĠZ iti Impl . contexts ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġset Application Info ( id : ĠString , Ġversion : ĠString ) Ġ= ĠZ iti Impl . set Application Info ( id , Ġversion ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Service For ( host : ĠString , Ġport : ĠInt ): ĠPair < Z iti Context , ĠService >? Ġ= ĠZ iti Impl . getService For ( host , Ġport ) ĊĊĠĠĠ Ġfun Ġget Service For ( addr : ĠInet SocketAddress ): ĠPair < Z iti Context , ĠService >? Ġ= ĠZ iti Impl . getService For ( addr ) ĊĊĠĠĠ Ġfun Ġfind Dial Info ( addr : ĠInet SocketAddress ): ĠPair < Z iti Context , ĠSocket Address >? Ġ= ĠZ iti Impl . find Dial Info ( addr ) ĊĊĠĠĠ Ġfun Ġservice Updates (): ĠFlow < Pair < Z iti Context , ĠZ iti Context . Service Event >> Ġ= ĠZ iti Impl . service Updates () Ċ } Ċ