package Ġio . github . matrix kt . ol m Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assert Fails Ċ import Ġkotlin . test . assertFalse Ċ Ċ class ĠUtility Test Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTest Ġthe Ġsigning ĠAPI ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 1 Verify Ed 2 5 5 1 9 Signing () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġlanguage = json ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ""" {" algorithms ":[" m . meg ol m . v 1 . aes - sha 2 "," m . ol m . v 1 . curve 2 5 5 1 9 - aes - sha 2 "]," device _ id ":" Y MB Y CW TW CG "," keys ":{" curve 2 5 5 1 9 : Y MB Y CW TW CG ":" K ZF a 5 Y UX V 2 EO dh K 8 dc G MM HW B 6 7 std g AP 4 + x wi S 6 9 m CU "," ed 2 5 5 1 9 : Y MB Y CW TW CG ":" 0 c Eg Q JJ qj gt X UG p 4 ZX QQ mh 3 6 R Ax wx r 8 HJ w 2 E 9 v 1 gv A 0 "}," user _ id ":" @ mx Bob 1 4 7 7 4 8 9 1 2 5 4 2 7 6 b 2 5 3 f 4 2 - f 2 6 7 - 4 3 ec - bad 9 - 7 6 7 1 4 2 b fea 3 0 : localhost : 8 4 8 0 "} """ ĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġaccount ĊĠĠĠĠĠĠĠ Ġval Ġaccount Ġ= ĠAccount () ĊĊĠĠĠĠĠĠĠ Ġ// Ġsign Ġmessage ĊĠĠĠĠĠĠĠ Ġval Ġmessage Signature Ġ= Ġaccount . sign ( message ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġget Ġident ities Ġkey Ġ( f inger Ġprint Ġkey ) ĊĠĠĠĠĠĠĠ Ġval Ġidentity Keys Ġ= Ġaccount . identity Keys ĊĊĠĠĠĠĠĠĠ Ġval Ġfinger Print Key Ġ= Ġidentity Keys . ed 2 5 5 1 9 ĊĊĠĠĠĠĠĠĠ Ġ// Ġinstantiate Ġutility Ġobject ĊĠĠĠĠĠĠĠ Ġval Ġutility Ġ= ĠUtility () ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġsignature ĊĠĠĠĠĠĠĠ Ġutility . verify Ed 2 5 5 1 9 Signature ( f inger Print Key , Ġmessage , Ġmessage Signature ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġa Ġbad Ġsignature Ġis Ġdetected Ġ=> Ġerror Msg Ġ= ĠBAD _ MESSAGE _ MAC ĊĠĠĠĠĠĠĠ Ġval Ġbad Signature Ġ= Ġ" Bad Ġsignature ĠBad Ġsignature ĠBad Ġsignature .." ĊĊĠĠĠĠĠĠĠ Ġassert Fails Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġutility . verify Ed 2 5 5 1 9 Signature ( f inger Print Key , Ġmessage , Ġbad Signature ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġbad Ġfingerprint Ġsize Ġ=> Ġerror Msg Ġ= ĠINVALID _ BASE 6 4 ĊĠĠĠĠĠĠĠ Ġval Ġbad Size F inger Print Key Ġ= Ġfinger Print Key . substring ( f inger Print Key . length Ġ/ Ġ 2 ) ĊĊĠĠĠĠĠĠĠ Ġassert Fails Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġutility . verify Ed 2 5 5 1 9 Signature ( bad Size F inger Print Key , Ġmessage , Ġmessage Signature ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġutility . clear () ĊĠĠĠĠĠĠĠ Ġaccount . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest 0 2 sha 2 5 6 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġutility Ġ= ĠUtility () ĊĊĠĠĠĠĠĠĠ Ġval Ġmsg To Hash Ġ= Ġ" The Ġquick Ġbrown Ġf ox Ġjumps Ġover Ġthe Ġlazy Ġdog " ĊĊĠĠĠĠĠĠĠ Ġval Ġhash Result Ġ= Ġutility . sha 2 5 6 ( msg To Hash ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( hash Result . isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġutility . clear () ĊĠĠĠ Ġ} Ċ } Ċ