package Ġnet . cord a . core . crypto Ċ Ċ import Ġnet . cord a . core . utilities . hex To ByteArray Ċ import Ġnet . cord a . core . utilities . to Hex Ċ import Ġnet . i 2 p . crypto . edd sa . Ed DS AP rivate Key Ċ import Ġnet . i 2 p . crypto . edd sa . Ed DS AS ec urity Provider Ċ import Ġnet . i 2 p . crypto . edd sa . spec . Ed D SA Named Curve Spec Ċ import Ġnet . i 2 p . crypto . edd sa . spec . Ed DS AP rivate KeySpec Ċ import Ġorg . junit . Test Ċ import Ġjava . security . PrivateKey Ċ import Ġjava . security . Signature Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNot Equals Ċ Ċ /** Ċ Ġ* ĠTesting ĠPure Ed D SA ĠEd 2 5 5 1 9 Ġusing Ġtest Ġvectors Ġfrom Ġhttps :// tools . ietf . org / html / rfc 8 0 3 2 # section - 7 . 1 Ċ Ġ*/ Ċ class ĠEd DS AT ests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Pure Ed D SA ĠEd 2 5 5 1 9 Ġtest Ġvectors `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġed Params Ġ= ĠCrypto . ED D SA _ ED 2 5 5 1 9 _ SHA 5 1 2 . alg Spec Ġas ĠEd D SA Named Curve Spec ĊĊĠĠĠĠĠĠĠ Ġ// ĠMESSAGE Ġ( length Ġ 0 Ġbytes ). ĊĠĠĠĠĠĠĠ Ġval Ġtest Vector 1 Ġ= ĠSignature Test Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 d 6 1 b 1 9 de ffd 5 a 6 0 ba 8 4 4 af 4 9 2 ec 2 cc 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 4 4 9 c 5 6 9 7 b 3 2 6 9 1 9 7 0 3 bac 0 3 1 cae 7 f 6 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d 7 5 a 9 8 0 1 8 2 b 1 0 ab 7 d 5 4 bf ed 3 c 9 6 4 0 7 3 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ee 1 7 2 f 3 daa 6 2 3 2 5 af 0 2 1 a 6 8 f 7 0 7 5 1 1 a ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" e 5 5 6 4 3 0 0 c 3 6 0 ac 7 2 9 0 8 6 e 2 cc 8 0 6 e 8 2 8 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 4 8 7 7 f 1 eb 8 e 5 d 9 7 4 d 8 7 3 e 0 6 5 2 2 4 9 0 1 5 5 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 fb 8 8 2 1 5 9 0 a 3 3 b acc 6 1 e 3 9 7 0 1 cf 9 b 4 6 b " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d 2 5 bf 5 f 0 5 9 5 bbe 2 4 6 5 5 1 4 1 4 3 8 e 7 a 1 0 0 b " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMESSAGE Ġ( length Ġ 1 Ġbyte ). ĊĠĠĠĠĠĠĠ Ġval Ġtest Vector 2 Ġ= ĠSignature Test Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 ccd 0 8 9 b 2 8 ff 9 6 da 9 db 6 c 3 4 6 ec 1 1 4 e 0 f " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 b 8 a 3 1 9 f 3 5 aba 6 2 4 da 8 cf 6 ed 4 fb 8 a 6 fb ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 d 4 0 1 7 c 3 e 8 4 3 8 9 5 a 9 2 b 7 0 aa 7 4 d 1 b 7 ebc " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 c 9 8 2 ccf 2 ec 4 9 6 8 cc 0 cd 5 5 f 1 2 af 4 6 6 0 c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 2 a 0 0 9 a 9 f 0 d 4 cab 8 7 2 0 e 8 2 0 b 5 f 6 4 2 5 4 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a 2 b 2 7 b 5 4 1 6 5 0 3 f 8 fb 3 7 6 2 2 2 3 eb db 6 9 da " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 8 5 ac 1 e 4 3 e 1 5 9 9 6 e 4 5 8 f 3 6 1 3 d 0 f 1 1 d 8 c " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 8 7 b 2 ea eb 4 3 0 2 ae eb 0 0 d 2 9 1 6 1 2 bb 0 c 0 0 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMESSAGE Ġ( length Ġ 2 Ġbytes ). ĊĠĠĠĠĠĠĠ Ġval Ġtest Vector 3 Ġ= ĠSignature Test Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" c 5 aa 8 df 4 3 f 9 f 8 3 7 bed b 7 4 4 2 f 3 1 dcb 7 b 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 6 d 3 8 5 3 5 0 7 6 f 0 9 4 b 8 5 ce 3 a 2 e 0 b 4 4 5 8 f 7 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fc 5 1 cd 8 e 6 2 1 8 a 1 a 3 8 da 4 7 ed 0 0 2 3 0 f 0 5 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 8 1 6 ed 1 3 ba 3 3 0 3 ac 5 deb 9 1 1 5 4 8 9 0 8 0 2 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" af 8 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 2 9 1 d 6 5 7 de ec 2 4 0 2 4 8 2 7 e 6 9 c 3 abe 0 1 a 3 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ce 5 4 8 a 2 8 4 7 4 3 a 4 4 5 e 3 6 8 0 d 7 db 5 ac 3 ac " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 8 ff 9 b 5 3 8 d 1 6 f 2 9 0 ae 6 7 f 7 6 0 9 8 4 dc 6 5 9 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 a 7 c 1 5 e 9 7 1 6 ed 2 8 dc 0 2 7 be ce ea 1 ec 4 0 a " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMESSAGE Ġ( length Ġ 1 0 2 3 Ġbytes ). ĊĠĠĠĠĠĠĠ Ġval Ġtest Vector 1 0 2 4 Ġ= ĠSignature Test Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 5 e 5 7 6 7 cf 1 5 3 3 1 9 5 1 7 6 3 0 f 2 2 6 8 7 6 b 8 6 c " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 1 6 0 cc 5 8 3 bc 0 1 3 7 4 4 c 6 bf 2 5 5 f 5 cc 0 ee 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 7 8 1 1 7 fc 1 4 4 c 7 2 3 4 0 f 6 7 d 0 f 2 3 1 6 e 8 3 8 6 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ce ff bf 2 b 2 4 2 8 c 9 c 5 1 fef 7 c 5 9 7 f 1 d 4 2 6 e ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 8 b 8 b 2 b 7 3 3 4 2 4 2 4 3 7 6 0 fe 4 2 6 a 4 b 5 4 9 0 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 3 2 1 1 0 a 6 6 c 2 f 6 5 9 1 e abd 3 3 4 5 e 3 e 4 eb 9 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fa 6 e 2 6 4 bf 0 9 efe 1 2 ee 5 0 f 8 f 5 4 e 9 f 7 7 b 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" e 3 5 5 f 6 c 5 0 5 4 4 e 2 3 fb 1 4 3 3 ddf 7 3 be 8 4 d 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 9 de 7 c 0 0 4 6 dc 4 9 9 6 d 9 e 7 7 3 f 4 bc 9 efe 5 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 8 8 2 9 adb 2 6 c 8 1 b 3 7 c 9 3 a 1 b 2 7 0 b 2 0 3 2 9 d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 5 8 6 7 5 fc 6 ea 5 3 4 e 0 8 1 0 a 4 4 3 2 8 2 6 bf 5 8 c " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 4 1 efb 6 5 d 5 7 a 3 3 8 bbd 2 e 2 6 6 4 0 f 8 9 ff bc " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 a 8 5 8 ef cb 8 5 5 0 ee 3 a 5 e 1 9 9 8 bd 1 7 7 e 9 3 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 3 6 3 c 3 4 4 fe 6 b 1 9 9 ee 5 d 0 2 e 8 2 d 5 2 2 c 4 fe " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ba 1 5 4 5 2 f 8 0 2 8 8 a 8 2 1 a 5 7 9 1 1 6 ec 6 dad 2 b " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 b 3 1 0 da 9 0 3 4 0 1 aa 6 2 1 0 0 ab 5 d 1 a 3 6 5 5 3 e " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 6 2 0 3 b 3 3 8 9 0 cc 9 b 8 3 2 f 7 9 ef 8 0 5 6 0 ccb 9 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" a 3 9 ce 7 6 7 9 6 7 ed 6 2 8 c 6 ad 5 7 3 cb 1 1 6 dbe f " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" efd 7 5 4 9 9 da 9 6 bd 6 8 a 8 a 9 7 b 9 2 8 a 8 bbc 1 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 b 6 6 2 1 fc de 2 b eca 1 2 3 1 d 2 0 6 be 6 cd 9 ec 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aff 6 f 6 c 9 4 fcd 7 2 0 4 ed 3 4 5 5 c 6 8 c 8 3 f 4 a 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 da 4 af 2 b 7 4 ef 5 c 5 3 f 1 d 8 ac 7 0 bd cb 7 ed 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 5 ce 8 1 bd 8 4 3 5 9 d 4 4 2 5 4 d 9 5 6 2 9 e 9 8 5 5 a 9 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 a 7 c 1 9 5 8 d 1 f 8 ada 5 d 0 5 3 2 ed 8 a 5 aa 3 fb 2 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d 1 7 ba 7 0 eb 6 2 4 8 e 5 9 4 e 1 a 2 2 9 7 ac bbb 3 9 d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 0 2 f 1 a 8 c 6 eb 6 f 1 ce 2 2 b 3 de 1 a 1 f 4 0 cc 2 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 5 4 1 1 9 a 8 3 1 a 9 aad 6 0 7 9 cad 8 8 4 2 5 de 6 bd " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" e 1 a 9 1 8 7 ebb 6 0 9 2 cf 6 7 bf 2 b 1 3 fd 6 5 f 2 7 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 8 d 7 8 b 7 e 8 8 3 c 8 7 5 9 d 2 c 4 f 5 c 6 5 adb 7 5 5 3 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 7 8 ad 5 7 5 f 9 fad 8 7 8 e 8 0 a 0 c 9 ba 6 3 bcb cc " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 7 3 2 e 6 9 4 8 5 bbc 9 c 9 0 bf bd 6 2 4 8 1 d 9 0 8 9 b " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ec cf 8 0 cfe 2 df 1 6 a 2 cf 6 5 bd 9 2 dd 5 9 7 b 0 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 7 e 0 9 1 7 af 4 8 bbb 7 5 fed 4 1 3 d 2 3 8 f 5 5 5 5 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 7 a 5 6 9 d 8 0 c 3 4 1 4 a 8 d 0 8 5 9 dc 6 5 a 4 6 1 2 8 ba " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b 2 7 af 8 7 a 7 1 3 1 4 f 3 1 8 c 7 8 2 b 2 3 eb fe 8 0 8 b " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 2 b 0 ce 2 6 4 0 1 d 2 e 2 2 f 0 4 d 8 3 d 1 2 5 5 dc 5 1 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ddd 3 b 7 5 a 2 b 1 ae 0 7 8 4 5 0 4 df 5 4 3 af 8 9 6 9 b " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" e 3 ea 7 0 8 2 ff 7 fc 9 8 8 8 c 1 4 4 da 2 af 5 8 4 2 9 e " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" c 9 6 0 3 1 dbc ad 3 dad 9 af 0 dcb aa af 2 6 8 cb 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fc ff ead 9 4 f 3 c 7 ca 4 9 5 e 0 5 6 a 9 b 4 7 ac db 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 1 fb 7 3 e 6 6 6 c 6 c 6 5 5 ade 8 2 9 7 2 9 7 d 0 7 ad 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ba 5 e 4 3 f 1 bca 3 2 3 0 1 6 5 1 3 3 9 e 2 2 9 0 4 cc 8 c " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 2 f 5 8 c 3 0 c 0 4 aaf db 0 3 8 dda 0 8 4 7 dd 9 8 8 d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cda 6 f 3 bfd 1 5 c 4 b 4 c 4 5 2 5 0 0 4 aa 0 6 ee ff 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ca 6 1 7 8 3 a ace c 5 7 fb 3 d 1 f 9 2 b 0 fe 2 fd 1 a 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 f 6 7 2 4 5 1 7 b 6 5 e 6 1 4 ad 6 8 0 8 d 6 f 6 ee 3 4 df " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 7 3 1 0 fdc 8 2 aeb fd 9 0 4 b 0 1 e 1 dc 5 4 b 2 9 2 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 9 4 b 2 db 6 8 d 6 f 9 0 3 b 6 8 4 0 1 ade bf 5 a 7 e 0 8 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d 7 8 ff 4 ef 5 d 6 3 6 5 3 a 6 5 0 4 0 cf 9 bfd 4 aca 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 8 4 a 7 4 d 3 7 1 4 5 9 8 6 7 8 0 fc 0 b 1 6 ac 4 5 1 6 4 9 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" de 6 1 8 8 a 7 db df 1 9 1 f 6 4 b 5 fc 5 e 2 ab 4 7 b 5 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 7 f 7 2 7 6 cd 4 1 9 c 1 7 a 3 ca 8 e 1 b 9 3 9 ae 4 9 e 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 8 ac ba 6 b 9 6 5 6 1 0 b 5 4 8 0 1 0 9 c 8 b 1 7 b 8 0 e 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b 7 b 7 5 0 dfc 7 5 9 8 d 5 d 5 0 1 1 fd 2 dcc 5 6 0 0 a 3 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 ef 5 b 5 2 a 1 ecc 8 2 0 e 3 0 8 aa 3 4 2 7 2 1 aac 0 9 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 3 bf 6 6 8 6 b 6 4 b 2 5 7 9 3 7 6 5 0 4 ccc 4 9 3 d 9 7 e " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 6 aed 3 fb 0 f 9 cd 7 1 a 4 3 dd 4 9 7 f 0 1 f 1 7 c 0 e 2 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" cb 3 7 9 7 aa 2 a 2 f 2 5 6 6 5 6 1 6 8 e 6 c 4 9 6 afc 5 f " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b 9 3 2 4 6 f 6 b 1 1 1 6 3 9 8 a 3 4 6 f 1 a 6 4 1 f 3 b 0 4 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" e 9 8 9 f 7 9 1 4 f 9 0 cc 2 c 7 fff 3 5 7 8 7 6 e 5 0 6 b 5 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 d 3 3 4 ba 7 7 c 2 2 5 bc 3 0 7 ba 5 3 7 1 5 2 f 3 f 1 6 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 e 4 ea fe 5 9 5 f 6 d 9 d 9 0 d 1 1 faa 9 3 3 a 1 5 ef 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 6 9 5 4 6 8 6 8 a 7 f 3 a 4 5 a 9 6 7 6 8 d 4 0 fd 9 d 0 3 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 c 0 9 1 c 6 3 1 5 cf 4 fde 7 cb 6 8 6 0 6 9 3 7 3 8 0 d " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" b 2 e aaa 7 0 7 b 4 c 4 1 8 5 c 3 2 ed dc dd 3 0 6 7 0 5 e " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 dc 1 ffc 8 7 2 eeee 4 7 5 a 6 4 df ac 8 6 aba 4 1 c " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 6 1 8 9 8 3 f 8 7 4 1 c 5 ef 6 8 d 3 a 1 0 1 e 8 a 3 b 8 ca " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" c 6 0 c 9 0 5 c 1 5 fc 9 1 0 8 4 0 b 9 4 c 0 0 a 0 b 9 d 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 aab 4 c 9 0 0 5 0 1 b 3 e 2 4 d 7 cdf 4 6 6 3 3 2 6 a 3 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 7 df 5 e 4 8 4 3 b 2 cb db 6 7 cbf 6 e 4 6 0 fec 3 5 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" aa 5 3 7 1 b 1 5 0 8 f 9 f 4 5 2 8 ece a 2 3 c 4 3 6 d 9 4 b " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 e 8 fcd 4 f 6 8 1 e 3 0 a 6 ac 0 0 a 9 7 0 4 a 1 8 8 a 0 3 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMESSAGE Ġ( length Ġ 6 4 Ġbytes ). ĠTEST ĠSHA ( abc ). ĊĠĠĠĠĠĠĠ Ġval Ġtest Vector SHA abc Ġ= ĠSignature Test Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 3 3 fe 6 2 4 0 9 2 3 7 b 9 d 6 2 ec 7 7 5 8 7 5 2 0 9 1 1 e " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 9 a 7 5 9 cec 1 d 1 9 7 5 5 b 7 da 9 0 1 b 9 6 dca 3 d 4 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ec 1 7 2 b 9 3 ad 5 e 5 6 3 bf 4 9 3 2 c 7 0 e 1 2 4 5 0 3 4 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" c 3 5 4 6 7 ef 2 efd 4 d 6 4 ebf 8 1 9 6 8 3 4 6 7 e 2 bf ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dd af 3 5 a 1 9 3 6 1 7 ab acc 4 1 7 3 4 9 ae 2 0 4 1 3 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 2 e 6 fa 4 e 8 9 a 9 7 ea 2 0 a 9 eeee 6 4 b 5 5 d 3 9 a " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 1 9 2 9 9 2 a 2 7 4 fc 1 a 8 3 6 ba 3 c 2 3 a 3 fe eb bd " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 5 4 d 4 4 2 3 6 4 3 ce 8 0 e 2 a 9 ac 9 4 fa 5 4 ca 4 9 f ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dc 2 a 4 4 5 9 e 7 3 6 9 6 3 3 a 5 2 b 1 bf 2 7 7 8 3 9 a 0 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 0 1 0 0 9 a 3 ef bf 3 ecb 6 9 bea 2 1 8 6 c 2 6 b 5 8 9 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 9 3 5 1 fc 9 ac 9 0 b 3 ec fdf bc 7 c 6 6 4 3 1 e 0 3 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 3 dca 1 7 9 c 1 3 8 ac 1 7 ad 9 bef 1 1 7 7 3 3 1 a 7 0 4 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Vectors Ġ= ĠlistOf ( test Vector 1 , Ġtest Vector 2 , Ġtest Vector 3 , Ġtest Vector 1 0 2 4 , Ġtest Vector SHA abc ) ĊĠĠĠĠĠĠĠ Ġtest Vectors . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠprivateKey Ġ= ĠEd DS AP rivate Key ( Ed DS AP rivate KeySpec ( it . privateKey Hex . hex To ByteArray (), Ġed Params )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . signature Output Hex , Ġdo Sign ( privateKey , Ġit . message To Sign Hex . hex To ByteArray ()). to Hex (). toLowerCase ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġvector Ġfor Ġthe Ġvariant ĠEd 2 5 5 1 9 ctx , Ġexpected Ġto Ġfail . ĊĠĠĠĠĠĠĠ Ġval Ġtest Vector Ed 2 5 5 1 9 ctx Ġ= ĠSignature Test Vector ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 3 0 5 3 3 4 e 3 8 1 af 7 8 f 1 4 1 cb 6 6 6 f 6 1 9 9 f 5 7 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" bc 3 4 9 5 3 3 5 a 2 5 6 a 9 5 bd 2 a 5 5 bf 5 4 6 6 6 3 f 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dfc 9 4 2 5 e 4 f 9 6 8 f 7 f 0 c 2 9 f 0 2 5 9 cf 5 f 9 ae " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" d 6 8 5 1 c 2 bb 4 ad 8 bfb 8 6 0 c fee 0 ab 2 4 8 2 9 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f 7 2 6 9 3 6 d 1 9 c 8 0 0 4 9 4 e 3 fda ff 2 0 b 2 7 6 a 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fc 6 0 d 5 8 7 2 fc 4 6 b 3 aa 6 9 f 8 b 5 b 4 3 5 1 d 5 8 0 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 f 9 2 bcc 0 4 4 6 0 6 db 0 9 7 abab 6 db cb 1 aee 3 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 2 1 6 c 4 8 e 8 b 3 b 6 6 4 3 1 b 5 b 1 8 6 d 1 d 2 8 f 8 ee 1 " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 5 a 5 ca 2 df 6 6 6 8 3 4 6 2 9 1 c 2 0 4 3 d 4 eb 3 e 9 0 d " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠprivateKey Ġ= ĠEd DS AP rivate Key ( Ed DS AP rivate KeySpec ( test Vector Ed 2 5 5 1 9 ctx . privateKey Hex . hex To ByteArray (), Ġed Params )) ĊĠĠĠĠĠĠĠ Ġassert Not Equals ( test Vector Ed 2 5 5 1 9 ctx . signature Output Hex , Ġdo Sign ( privateKey , Ġtest Vector Ed 2 5 5 1 9 ctx . message To Sign Hex . hex To ByteArray ()). to Hex (). toLowerCase ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠA Ġtest Ġvector Ġobject Ġfor Ġdigital Ġsignature Ġschemes . Ġ*/ ĊĠĠĠ Ġprivate Ġdata Ġclass ĠSignature Test Vector ( val ĠprivateKey Hex : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpublicKey Hex : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage To Sign Hex : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsignature Output Hex : ĠString ) ĊĊĠĠĠ Ġ// ĠRequired Ġto Ġimplement Ġa Ġcustom Ġdo Sign Ġfunction , Ġbecause ĠC ord a 's ĠCrypto . do Sign Ġdoes Ġnot Ġallow Ġempty Ġmessages Ġ( test Vector 1 ). ĊĠĠĠ Ġprivate Ġfun Ġdo Sign ( privateKey : ĠPrivate Key , Ġclear Data : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsignature Ġ= ĠSignature . getInstance ( Crypto . ED D SA _ ED 2 5 5 1 9 _ SHA 5 1 2 . signature Name , ĠEd DS AS ec urity Provider ()) ĊĠĠĠĠĠĠĠ Ġsignature . init Sign ( privateKey ) ĊĠĠĠĠĠĠĠ Ġsignature . update ( clear Data ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsignature . sign () ĊĠĠĠ Ġ} Ċ } Ċ