package Ġall an le wis . coin base Ċ Ċ import Ġjava . util .* Ċ import Ġjavax . crypto . Mac Ċ import Ġjavax . crypto . spec . SecretKey Spec Ċ Ċ object ĠCoin base Utilities Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠSHARE D _ MAC Ġ= ĠMac . getInstance (" H mac SHA 2 5 6 ") ĊĊĠĠĠ Ġfun Ġtimestamp (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġ( System . currentTimeMillis () Ġ/ Ġ 1 0 0 0 ). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsign ( secret : ĠString , Ġpath : ĠString , Ġmethod : ĠString , Ġbody : ĠString , Ġtimestamp : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpre hash Ġ= Ġtimestamp Ġ+ Ġmethod . uppercase () Ġ+ Ġpath Ġ+ Ġbody ĊĠĠĠĠĠĠĠ Ġval Ġsecret Decoded : ĠByteArray Ġ= ĠBase 6 4 . get Decoder (). decode ( secret ) ĊĠĠĠĠĠĠĠ Ġval Ġkey spec Ġ= ĠSecret KeySpec ( secret Decoded , ĠSHARE D _ MAC . algorithm ) ĊĠĠĠĠĠĠĠ Ġval Ġsha 2 5 6 Ġ= ĠSHARE D _ MAC . clone () Ġas ĠMac ĊĠĠĠĠĠĠĠ Ġsha 2 5 6 . init ( key spec ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBase 6 4 . get Encoder (). encode ToString ( sha 2 5 6 . do Final ( pre hash . toByteArray ())) ĊĠĠĠ Ġ} Ċ Ċ }