package Ġcap o . ost kit . sdk . utils Ċ Ċ import Ġcap o . ost kit . sdk . common . Constants Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . Mac Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ /** Ċ * ĠCreated Ġby ĠT inh VC Ġon Ġ 5 / 1 6 / 1 8 . Ċ */ Ċ Ċ class ĠUtilities Ġ{ ĊĠĠĠ Ġcompanion Ġobject ĠUtilities Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġis Debug : Boolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHEX _ CHARS Ġ= Ġ" 0 1 2 3 4 5 6 7 8 9 ABCDEF ". toCharArray () ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Timestamp (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( System . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠString . sha 2 5 6 ( key String : ĠString , Ġalgorithm : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata : ĠByteArray Ġ= Ġthis . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey : ĠByteArray Ġ= Ġkey String . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Spec Ġ= ĠSecret KeySpec ( key , Ġalgorithm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmac Ġ= ĠMac . getInstance ( algorithm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmac . init ( key Spec ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh Mac Ġ= Ġmac . do Final ( data ). to Hex () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġh Mac . toLowerCase () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠByteArray . to Hex (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuffer () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoct et Ġ= Ġit . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Index Ġ= Ġ( octet Ġand Ġ 0 xF 0 ). ush r ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Index Ġ= Ġoct et Ġand Ġ 0 x 0 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( HEX _ CHARS [ first Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . append ( HEX _ CHARS [ second Index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġgenerate QueryString (_ end Point : ĠString , Ġm Params : ĠMap < String , ĠString >): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġm StringTo Sign Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTreeMap Ġto Ġstore Ġvalues Ġof ĠHashMap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Ġ= ĠTreeMap ( m Params ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ(( key , Ġvalue ) Ġin Ġsorted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m StringTo Sign . equals ("", Ġignore Case Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm StringTo Sign Ġ= Ġ_ end Point Ġ+ Ġ" ?" Ġ+ Ġkey . toLowerCase () Ġ+ Ġ"=" Ġ+ Ġvalue . toString (). replace (" Ġ", Ġ"+ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm StringTo Sign Ġ+= Ġ"& " Ġ+ Ġkey . toLowerCase () Ġ+ Ġ"=" Ġ+ Ġvalue . toString (). replace (" Ġ", Ġ"+ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . log ( Constants . TAG , Ġm StringTo Sign ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm StringTo Sign ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġgenerate Api Signature ( m StringTo Sign : ĠString , Ġm Secret : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm StringTo Sign . sha 2 5 6 ( m Secret , Ġ" H mac SHA 2 5 6 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }