/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 ĠMan uel ĠRo ed ig Ġ/ ĠP hash Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġde . ph ash . man uel . as w . encrypt Ċ Ċ import Ġde . ph ash . man uel . as w . sem ux . key . Bytes Ċ import Ġde . ph ash . man uel . as w . sem ux . key . Hex Ċ import Ġde . ph ash . man uel . as w . sem ux . key . Key Ċ import Ġde . ph ash . man uel . as w . util . create Account Ċ import Ġde . ph ash . man uel . as w . util . decrypt Account Ċ import Ġorg . junit . jupiter . api . Assertions Ċ import Ġorg . junit . jupiter . api . Test ĊĊ Ċ class ĠEncryption Tests Ġ{ ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġkey Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġkey String Ġ= Ġ" 3 0 2 e 0 2 0 1 0 0 3 0 0 5 0 6 0 3 2 b 6 5 7 0 0 4 2 2 0 4 2 0 3 d 4 2 3 ee 2 f 6 0 c 8 b 9 a 6 a 7 8 be ea 9 2 8 2 6 8 6 e 6 c 3 0 0 e 4 cb ae 1 5 4 ac 4 c 8 1 eae 1 8 0 1 d 0 8 7 a " ĊĊĠĠĠĠĠĠĠ Ġvar Ġkey Ġ= ĠKey ( Hex . decode 0 x ( key String )) ĊĠĠĠĠĠĠĠ Ġprintln (" key . to Address String : Ġ" Ġ+ Ġkey . to Address String ()) ĊĠĠĠĠĠĠĠ Ġprintln (" key . to Address : Ġ" Ġ+ Ġkey . to Address ()) ĊĠĠĠĠĠĠĠ Ġprintln (" key . to Address String 0 x : Ġ" Ġ+ Ġkey . to Address String ()) ĊĠĠĠĠĠĠĠ Ġkey . sign ( ByteArray ( 1 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġencrypt () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġ" my Password " ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠKey () ĊĠĠĠĠĠĠĠ Ġval Ġsem ux Address Ġ= Ġcreate Account ( key , Ġpass ) ĊĠĠĠĠĠĠĠ Ġvar Ġvalues Ġ= Ġsem ux Address . to Content Values () ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( key . to Address String (), Ġsem ux Address . address ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġencrypt And Decrypt () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġpass Ġ= Ġ" 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 " ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= ĠKey () ĊĠĠĠĠĠĠĠ Ġval Ġsem ux Address Ġ= Ġcreate Account ( key , Ġpass ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( key . to Address String (), Ġsem ux Address . address ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertNot Equals ( Bytes . toString ( key . privateKey ), Ġsem ux Address . privateKey ) ĊĊĠĠĠĠĠĠĠ Ġprintln (" iv s Ġ" Ġ+ Ġsem ux Address . iv ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdecrypted Address Ġ= Ġdecrypt Account ( sem ux Address , Ġpass ) ĊĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( key . to Address String (), Ġdecrypted Address . address ) ĊĠĠĠĠĠĠĠ ĠAssertions . assertEquals ( Hex . encode 0 x ( key . privateKey ), Ġdecrypted Address . privateKey ) ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ