@@ -38,20 +38,17 @@ static class ShakeSymmetric
3838 extends Symmetric
3939 {
4040 private final SHAKEDigest xof ;
41- private final SHAKEDigest prf ;
4241 private final SHA3Digest sha3Digest512 ;
4342 private final SHA3Digest sha3Digest256 ;
4443 private final SHAKEDigest shakeDigest ;
4544
46-
4745 ShakeSymmetric ()
4846 {
4947 super (168 );
5048 this .xof = new SHAKEDigest (128 );
51- this .prf = new SHAKEDigest (256 );
49+ this .shakeDigest = new SHAKEDigest (256 );
5250 this .sha3Digest256 = new SHA3Digest (256 );
5351 this .sha3Digest512 = new SHA3Digest (512 );
54- this .shakeDigest = new SHAKEDigest (256 );
5552 }
5653
5754 @ Override
@@ -91,8 +88,8 @@ void prf(byte[] out, byte[] seed, byte nonce)
9188 byte [] extSeed = new byte [seed .length + 1 ];
9289 System .arraycopy (seed , 0 , extSeed , 0 , seed .length );
9390 extSeed [seed .length ] = nonce ;
94- prf .update (extSeed , 0 , extSeed .length );
95- prf .doFinal (out , 0 , out .length );
91+ shakeDigest .update (extSeed , 0 , extSeed .length );
92+ shakeDigest .doFinal (out , 0 , out .length );
9693 }
9794
9895 @ Override
@@ -133,17 +130,13 @@ private void aes128(byte[] out, int offset, int size)
133130 @ Override
134131 void hash_h (byte [] out , byte [] in , int outOffset )
135132 {
136- sha256Digest .update (in , 0 , in .length );
137- sha256Digest .doFinal (out , outOffset );
138- // doDigest(sha256Digest, out, in, outOffset);
133+ doDigest (sha256Digest , out , in , outOffset );
139134 }
140135
141136 @ Override
142137 void hash_g (byte [] out , byte [] in )
143138 {
144- sha512Digest .update (in , 0 , in .length );
145- sha512Digest .doFinal (out , 0 );
146- // doDigest(sha512Digest, out, in, 0);
139+ doDigest (sha512Digest , out , in , 0 );
147140 }
148141
149142 @ Override
@@ -166,23 +159,20 @@ void xofSqueezeBlocks(byte[] out, int outOffset, int outLen)
166159 @ Override
167160 void prf (byte [] out , byte [] key , byte nonce )
168161 {
169- SICBlockCipher prf = new SICBlockCipher (new AESEngine ());
170162 byte [] expnonce = new byte [12 ];
171163 expnonce [0 ] = nonce ;
172164
173165 ParametersWithIV kp = new ParametersWithIV (new KeyParameter (Arrays .copyOfRange (key , 0 , 32 )), expnonce );
174- prf .init (true , kp );
166+ cipher .init (true , kp );
175167 aes128 (out , 0 , out .length );
176- byte [] buf = new byte [out .length ]; // TODO: there might be a more efficient way of doing this...
177- prf .processBytes (buf , 0 , out .length , out , 0 );
178168 }
179169
180170 @ Override
181171 void kdf (byte [] out , byte [] in )
182172 {
183- sha256Digest . update ( in , 0 , in . length ) ;
184- sha256Digest . doFinal ( out , 0 );
185- // doDigest(sha256Digest, out, in , 0);
173+ byte [] buf = new byte [ 32 ] ;
174+ doDigest ( sha256Digest , buf , in , 0 );
175+ System . arraycopy ( buf , 0 , out , 0 , out . length );
186176 }
187177 }
188178}
0 commit comments