Skip to content

Commit 6f9e0f6

Browse files
committed
Clear SecretKey encodings after use
1 parent aa92214 commit 6f9e0f6

File tree

1 file changed

+12
-11
lines changed
  • prov/src/main/jdk25/org/bouncycastle/jcajce/provider/kdf/hkdf

1 file changed

+12
-11
lines changed

prov/src/main/jdk25/org/bouncycastle/jcajce/provider/kdf/hkdf/HKDFSpi.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.bouncycastle.crypto.digests.SHA512Digest;
77
import org.bouncycastle.crypto.generators.HKDFBytesGenerator;
88
import org.bouncycastle.crypto.params.HKDFParameters;
9+
import org.bouncycastle.util.Arrays;
910

1011
import javax.crypto.KDFParameters;
1112
import javax.crypto.KDFSpi;
@@ -17,7 +18,6 @@
1718
import java.security.spec.AlgorithmParameterSpec;
1819
import java.util.ArrayList;
1920
import java.util.List;
20-
import org.bouncycastle.util.Arrays;
2121

2222
class HKDFSpi
2323
extends KDFSpi
@@ -139,24 +139,25 @@ private byte[] flattenSecretKeys(List<SecretKey> keys)
139139
{
140140
return keys.get(0).getEncoded();
141141
}
142+
142143
int len = 0;
143144
int off = 0;
144145

145-
List<byte[]> encoding = new ArrayList<byte[]>();
146-
for (int i = 0; i < keys.size(); i++)
146+
ArrayList<byte[]> encodings = new ArrayList<byte[]>(keys.size());
147+
for (SecretKey key : keys)
147148
{
148-
encoding.add(keys.get(i).getEncoded());
149-
len += encoding.get(i).length;
149+
byte[] encoding = key.getEncoded();
150+
encodings.add(encoding);
151+
len += encoding.length;
150152
}
153+
151154
byte[] res = new byte[len];
152-
for (int i = 0; i < encoding.size(); i++)
155+
for (byte[] encoding : encodings)
153156
{
154-
System.arraycopy(encoding.get(i), 0, res, off, encoding.get(i).length);
155-
off += encoding.get(i).length;
157+
System.arraycopy(encoding, 0, res, off, encoding.length);
158+
off += encoding.length;
159+
Arrays.clear(encoding);
156160
}
157-
158-
encoding.clear();
159-
160161
return res;
161162
}
162163

0 commit comments

Comments
 (0)