package Ġcom . ion spin . kotlin . crypto Ċ Ċ import Ġcom . ion spin . kotlin . crypto . hash . encode ToU ByteArray Ċ import Ġcom . ion spin . kotlin . crypto . util . to HexString Ċ import Ġcom . ion spin . kotlin . crypto . util . to Ptr Ċ import Ġkotlinx . c interop .* Ċ import Ġlibs odium .* Ċ import Ġplatform . posix . free Ċ import Ġplatform . posix . malloc Ċ import Ġkotlin . test . Ignore Ċ import Ġkotlin . test . Test Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠU gl jes a ĠJ ovan ov ic Ċ Ġ* Ġug lj es a . j ovan ov ic @ ion spin . com Ċ Ġ* Ġon Ġ 1 3 - Jul - 2 0 2 0 Ċ Ġ*/ Ċ class ĠHelper Test Ġ{ ĊĠĠĠ Ġ@ Ignore Ġ// Just Ġused Ġfor Ġdebugging Ġpure Ġimplementation ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlong Sha 2 5 6 () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( target Ġin Ġ 0 L Ġuntil Ġ 1 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate For Round s 2 5 6 ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( target Ġin Ġ 0 L Ġuntil Ġ 1 6 _ 7 7 7 _ 2 1 6 L Ġstep Ġ 1 _ 0 0 0 _ 0 0 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate For Round s 2 5 6 ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgenerate For Round s 2 5 6 ( 1 6 _ 7 7 7 _ 2 1 6 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate For Round s 2 5 6 ( target : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdate Value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" abcdefgh bc def gh ic def gh ij def gh ij ke f gh ijk lf gh ijkl m gh ijkl mn hi j kl m no ". encode ToU ByteArray (). to C Values () ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġmalloc ( crypto _ hash _ sha 2 5 6 _ state . size . convert ()) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reinterpret < crypto _ hash _ sha 2 5 6 _ state >() ĊĊĠĠĠĠĠĠĠ Ġcrypto _ hash _ sha 2 5 6 _ init ( state ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtarget ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrypto _ hash _ sha 2 5 6 _ update ( state , Ġupdate Value , Ġupdate Value . size . convert ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠU ByteArray ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Pin ned Ġ= Ġresult . pin () ĊĠĠĠĠĠĠĠ Ġcrypto _ hash _ sha 2 5 6 _ final ( state , Ġresult Pin ned . to Ptr ()) ĊĠĠĠĠĠĠĠ Ġprintln ("$ target Ġto Ġ\" ${ result . to HexString () }\ ", ") ĊĠĠĠĠĠĠĠ Ġfree ( state ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Ignore Ġ// Just Ġused Ġfor Ġdebugging Ġpure Ġimplementation ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlong Sha 5 1 2 () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( target Ġin Ġ 0 L Ġuntil Ġ 1 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate For Round s 5 1 2 ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( target Ġin Ġ 0 L Ġuntil Ġ 1 6 _ 7 7 7 _ 2 1 6 L Ġstep Ġ 1 _ 0 0 0 _ 0 0 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate For Round s 5 1 2 ( target ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġgenerate For Round s 5 1 2 ( 1 6 _ 7 7 7 _ 2 1 6 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgenerate For Round s 5 1 2 ( target : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" W ut ") ĊĠĠĠĠĠĠĠ Ġval Ġupdate Value Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" abcdefgh bc def gh ic def gh ij def gh ij ke f gh ijk lf gh ijkl m gh ijkl mn hi j kl m no ". encode ToU ByteArray (). to C Values () ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġmalloc ( crypto _ hash _ sha 5 1 2 _ state . size . convert ()) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. reinterpret < crypto _ hash _ sha 5 1 2 _ state >() ĊĊĠĠĠĠĠĠĠ Ġcrypto _ hash _ sha 5 1 2 _ init ( state ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtarget ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcrypto _ hash _ sha 5 1 2 _ update ( state , Ġupdate Value , Ġupdate Value . size . convert ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠU ByteArray ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Pin ned Ġ= Ġresult . pin () ĊĠĠĠĠĠĠĠ Ġcrypto _ hash _ sha 5 1 2 _ final ( state , Ġresult Pin ned . to Ptr ()) ĊĠĠĠĠĠĠĠ Ġprintln ("$ target Ġto Ġ\" ${ result . to HexString () }\ ", ") ĊĠĠĠĠĠĠĠ Ġfree ( state ) ĊĠĠĠ Ġ} Ċ } Ċ