org.bouncycastle.crypto.general.ContinuousTestingEntropySource Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bc-fips Show documentation
Show all versions of bc-fips Show documentation
The FIPS 140-3 Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms certified to FIPS 140-3 level 1. This jar contains JCE provider and low-level API for the BC-FJA version 2.0.0, FIPS Certificate #4743. Please see certificate for certified platform details.
package org.bouncycastle.crypto.general;
import org.bouncycastle.crypto.EntropySource;
import org.bouncycastle.crypto.fips.FipsStatus;
import org.bouncycastle.util.Arrays;
class ContinuousTestingEntropySource
implements EntropySource
{
private final EntropySource entropySource;
private byte[] buf;
public ContinuousTestingEntropySource(EntropySource entropySource)
{
this.entropySource = entropySource;
}
public boolean isPredictionResistant()
{
return entropySource.isPredictionResistant();
}
public byte[] getEntropy()
{
synchronized (this)
{
byte[] nxt;
if (buf == null)
{
buf = entropySource.getEntropy();
}
nxt = entropySource.getEntropy();
if (Arrays.areEqual(nxt, buf))
{
throw new IllegalStateException("Duplicate block detected in EntropySource output");
}
System.arraycopy(nxt, 0, buf, 0, buf.length);
return nxt;
}
}
public int entropySize()
{
return entropySource.entropySize();
}
}