/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ Ċ package Ġaws . smithy . kotlin . runtime . util Ċ Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ /** Ċ Ġ* Ġhttps :// www . di - m gt . com . au / sha _ test vectors . html Ċ Ġ*/ Ċ class ĠSh a 1 Test Ġ{ ĊĠĠĠ Ġprivate Ġfun Ġassert Sha Hex Equal ( input : ĠString , Ġsha : ĠString , Ġrepeat : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġsha . replace (" Ġ", Ġ"") ĊĠĠĠĠĠĠĠ Ġval Ġhash Ġ= ĠSh a 1 () ĊĠĠĠĠĠĠĠ Ġval Ġchunk Ġ= Ġinput . encode To ByteArray () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġrepeat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhash . update ( chunk ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġhash . digest (). encode To Hex () ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vector 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ" abc " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" a 9 9 9 3 e 3 6 Ġ 4 7 0 6 8 1 6 a Ġba 3 e 2 5 7 1 Ġ 7 8 5 0 c 2 6 c Ġ 9 cd 0 d 8 9 d " ĊĠĠĠĠĠĠĠ Ġassert Sha Hex Equal ( input , Ġexpected ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vector 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" da 3 9 a 3 ee Ġ 5 e 6 b 4 b 0 d Ġ 3 2 5 5 b fef Ġ 9 5 6 0 1 8 9 0 Ġa fd 8 0 7 0 9 " ĊĠĠĠĠĠĠĠ Ġassert Sha Hex Equal ( input , Ġexpected ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vector 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ" abc dbc dec def def ge f gh f gh igh ij hi jk ijkl j kl mk l mn l mn om nop nop q " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" 8 4 9 8 3 e 4 4 Ġ 1 c 3 bd 2 6 e Ġb aae 4 aa 1 Ġf 9 5 1 2 9 e 5 Ġe 5 4 6 7 0 f 1 " ĊĠĠĠĠĠĠĠ Ġassert Sha Hex Equal ( input , Ġexpected ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vector 4 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ" 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 ijkl mn op j kl mnopq kl mnopq rl mn op qr sm nop q rst nop q rst u " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" a 4 9 b 2 4 4 6 Ġa 0 2 c 6 4 5 b Ġf 4 1 9 f 9 9 5 Ġb 6 7 0 9 1 2 5 Ġ 3 a 0 4 a 2 5 9 " ĊĠĠĠĠĠĠĠ Ġassert Sha Hex Equal ( input , Ġexpected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vector 5 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ" a " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" 3 4 aa 9 7 3 c Ġd 4 c 4 daa 4 Ġf 6 1 eeb 2 b Ġdb ad 2 7 3 1 Ġ 6 5 3 4 0 1 6 f " ĊĠĠĠĠĠĠĠ Ġassert Sha Hex Equal ( input , Ġexpected , Ġ 1 _ 0 0 0 _ 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Vector 6 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġ" 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 " ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ" 7 7 8 9 f 0 c 9 Ġef 7 bfc 4 0 Ġd 9 3 3 1 1 1 4 Ġ 3 df be 6 9 e Ġ 2 0 1 7 f 5 9 2 " ĊĠĠĠĠĠĠĠ Ġassert Sha Hex Equal ( input , Ġexpected , Ġ 1 6 _ 7 7 7 _ 2 1 6 ) ĊĠĠĠ Ġ} Ċ } Ċ