package Ġme . sh ks ch ne ider . crypto Ċ Ċ import Ġme . sh ks ch ne ider . blockchain . Transaction Ċ import Ġme . sh ks ch ne ider . blockchain . tx Ċ import Ġme . sh ks ch ne ider . data . from Base 6 4 Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . Parameterized Ċ import Ġkotlin . test . assertTrue Ċ Ċ private Ġconst Ġval Ġtimes Ġ= Ġ 1 0 Ċ Ċ @ RunWith ( Parameterized :: class ) Ċ class ĠSignature Test ( pair : ĠPair < PublicKey , ĠTransaction >) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġ@ Parameterized . Parameters ĊĠĠĠĠĠĠĠ Ġfun Ġparameters () Ġ= Ġmutable ListOf < Pair < PublicKey , ĠTransaction >> (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( times ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Pair Ġ= ĠKey Pair . Factory () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . public Ġto Ġtx ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin base Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsigned Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclaimed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign ( key Pair . private ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġkey Ġ= Ġpair . first ĊĠĠĠ Ġprivate Ġval Ġtx Ġ= Ġpair . second ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsignature () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertTrue Ġ{ Ġtx . signature ?. let Ġ{ Ġkey . verify ( tx . data , Ġit . from Base 6 4 ()) Ġ} Ġ?: Ġfalse Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ