/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠMat thew ĠN el son Ċ Ġ* Ċ Ġ* Ġ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 Ġio . mat the wn el son . k mp . tor . common . client auth Ċ Ċ import Ġio . mat the wn el son . component . base 6 4 . decode Base 6 4 ToArray Ċ import Ġio . mat the wn el son . component . encoding . base 3 2 . Base 3 2 Ċ import Ġio . mat the wn el son . component . encoding . base 3 2 . encode Base 3 2 Ċ import Ġio . mat the wn el son . k mp . tor . common . annotation . Experimental Tor Api Ċ import Ġio . mat the wn el son . k mp . tor . common . annotation . Se aled Value Class Ċ import Ġio . mat the wn el son . k mp . tor . common . util . descriptor String Ċ import Ġkotlin . jvm . Jvm Inline Ċ import Ġkotlin . jvm . Jvm Static Ċ Ċ /** Ċ Ġ* ĠH older Ġfor Ġa Ġvalid Ġbase 6 4 Ġencoded Ġ( without Ġpadding Ġ'= ') Ġx 2 5 5 1 9 Ġon ion Ġclient Ġauth Ġpublic Ġkey Ċ Ġ* Ċ Ġ* Ġ@ see Ġ[ On ion Client Auth PrivateKey _ B 6 4 _ X 2 5 5 1 9 . REGEX ] Ġfor Ġpublic Ġkey Ġcharacter Ġrequirements Ċ Ġ* Ġ@ see Ġ[ Real On ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 ] Ċ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġif Ġ[ value ] Ġis Ġnot Ġa Ġ 4 3 Ġcharacter Ġbase 6 4 Ċ Ġ* Ġ Ġencoded Ġ( without Ġpadding Ġ'= ') ĠString Ċ Ġ* Ġ*/ Ċ @ Se aled Value Class Ċ @ Suppress (" ClassName ") Ċ @ Opt In ( Experimental Tor Api :: class ) Ċ sealed Ġinterface ĠOn ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 : ĠOn ion Client Auth . PublicKey Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( key : ĠString ): ĠOn ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠReal On ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Jvm Inline Ċ @ Suppress (" ClassName ") Ċ private Ġvalue Ġclass ĠReal On ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 ( ĊĠĠĠ Ġoverride Ġval Ġvalue : ĠString Ċ ): ĠOn ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( value . matches ( On ion Client Auth PrivateKey _ B 6 4 _ X 2 5 5 1 9 . REGEX )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ value Ġis Ġnot Ġa Ġ 4 3 Ġcharacter Ġbase 6 4 Ġencoded Ġ( w / o Ġpadding Ġ'= ') ĠString " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbase 6 4 ( padded : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( padded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ value =" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbase 3 2 ( padded : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġb 3 2 Ġ= Ġdecode (). encode Base 3 2 ( Base 3 2 . Default ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( padded ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 2 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 2 . drop Last ( 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdecode (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalue . decode Base 6 4 ToArray () !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescriptor (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdescriptor String () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġkey Type : ĠOn ion Client Auth . Key . Type Ġget () Ġ= ĠOn ion Client Auth . Key . Type . x 2 5 5 1 9 ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" On ion Client Auth PublicKey _ B 6 4 _ X 2 5 5 1 9 ( value =$ value )" ĊĠĠĠ Ġ} Ċ } Ċ