package Ġpw . bin om . ssl čĊč Ċ import Ġpw . bin om . io . Closeable č Ċ import Ġpw . bin om . io . socket . ssl . SSL Session č Ċ import Ġjava . security . Secure Random č Ċ import Ġjavax . net . ssl . SSL Context Ġas ĠJ SSL Context čĊčĊč Ċ actual Ġclass ĠSSL Context Ġprivate Ġconstructor ( val Ġctx : ĠJ SSL Context , Ġkey Manager : ĠKey Manager , Ġtrust Manager : ĠTrust Manager ) Ġ: ĠClose able Ġ{ čĊčĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ čĊĠĠĠ Ġ} čĊč Ċ // ĠĠĠ Ġactual Ġval Ġsocket Factory : ĠSSL Socket Factory Ġ= ĠSSL Socket Factory ( this ) čĊčĊĠĠĠ Ġinit Ġ{ čĊĠĠĠĠĠĠĠ Ġctx . init ( array Of ( Bin om X 5 0 9 Key Manager ( key Manager )), ĠarrayOf ( Bin om X 5 0 9 Trust Manager ( trust Manager )), ĠSecure Random ()) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġactual Ġcompanion Ġobject Ġ{ čĊĠĠĠĠĠĠĠ Ġactual Ġfun ĠgetInstance ( method : ĠSSL Method , Ġkey Manager : ĠKey Manager , Ġtrust Manager : ĠTrust Manager ): ĠSSL Context Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprotocol Ġ= Ġwhen Ġ( method ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSSL Method . TLS , čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSSL Method . TLS v 1 _ 2 Ġ-> Ġ" TLS v 1 . 2 " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSSL Method . TLS v 1 _ 1 Ġ-> Ġ" TLS v 1 . 1 " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSSL Method . TLS v 1 Ġ-> Ġ" TLS v 1 . 0 " čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSSL Method . SSL , ĠSSL Method . SSL v 2 Ġ-> Ġ" SSL v 2 . 0 " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSSL Context ( J SSL Context . getInstance ( protocol ), Ġkey Manager , Ġtrust Manager ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġactual Ġfun Ġclient Session ( host : ĠString , Ġport : ĠInt ): ĠSSL Session Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= Ġctx . create SSL Engine ( host , Ġport ) čĊĠĠĠĠĠĠĠ Ġengine . use Client Mode Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġengine . want Client Auth Ġ= Ġfalse // want Client Authentication čĊĠĠĠĠĠĠĠ Ġengine . need Client Auth Ġ= Ġfalse // need Client Authentication čĊĠĠĠĠĠĠĠ Ġengine . enabled Protocols Ġ= Ġfilter Array ( engine . enabled Protocols , Ġnull , Ġnull ) čĊĠĠĠĠĠĠĠ Ġengine . enabled Cipher Su ites Ġ= Ġfilter Array ( engine . enabled Cipher Su ites , Ġnull , Ġnull ) čĊĠĠĠĠĠĠĠ Ġreturn ĠSSL Session ( engine ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġactual Ġfun Ġserver Session (): ĠSSL Session Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġengine Ġ= Ġctx . create SSL Engine () čĊĠĠĠĠĠĠĠ Ġengine . use Client Mode Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġengine . want Client Auth Ġ= Ġfalse // want Client Authentication čĊĠĠĠĠĠĠĠ Ġengine . need Client Auth Ġ= Ġfalse // need Client Authentication čĊĠĠĠĠĠĠĠ Ġengine . enabled Protocols Ġ= Ġfilter Array ( engine . enabled Protocols , Ġnull , Ġnull ) čĊĠĠĠĠĠĠĠ Ġengine . enabled Cipher Su ites Ġ= Ġfilter Array ( engine . enabled Cipher Su ites , Ġnull , Ġnull ) čĊĠĠĠĠĠĠĠ Ġreturn ĠSSL Session ( engine ) čĊĠĠĠ Ġ} č Ċ }