org.bouncycastle.crypto.prng.test.DRBGTestVector Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-ext-jdk14 Show documentation
Show all versions of bcprov-ext-jdk14 Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.4. Note: this package includes the NTRU encryption algorithms.
package org.bouncycastle.crypto.prng.test;
import java.util.ArrayList;
import java.util.List;
import org.bouncycastle.crypto.BlockCipher;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.prng.EntropySource;
import org.bouncycastle.util.encoders.Hex;
public class DRBGTestVector
{
private Digest _digest;
private BlockCipher _cipher;
private int _keySizeInBits;
private EntropySource _eSource;
private boolean _pr;
private String _nonce;
private String _personalisation;
private int _ss;
private String[] _ev;
private List _ai = new ArrayList();
public DRBGTestVector(Digest digest, EntropySource eSource, boolean predictionResistance, String nonce, int securityStrength, String[] expected)
{
_digest = digest;
_eSource = eSource;
_pr = predictionResistance;
_nonce = nonce;
_ss = securityStrength;
_ev = expected;
_personalisation = null;
}
public DRBGTestVector(BlockCipher cipher, int keySizeInBits, EntropySource eSource, boolean predictionResistance, String nonce, int securityStrength, String[] expected)
{
_cipher = cipher;
_keySizeInBits = keySizeInBits;
_eSource = eSource;
_pr = predictionResistance;
_nonce = nonce;
_ss = securityStrength;
_ev = expected;
_personalisation = null;
}
public Digest getDigest()
{
return _digest;
}
public BlockCipher getCipher()
{
return _cipher;
}
public int keySizeInBits()
{
return _keySizeInBits;
}
public DRBGTestVector addAdditionalInput(String input)
{
_ai.add(input);
return this;
}
public DRBGTestVector setPersonalizationString(String p)
{
_personalisation = p;
return this;
}
public EntropySource entropySource()
{
return _eSource;
}
public boolean predictionResistance()
{
return _pr;
}
public byte[] nonce()
{
if (_nonce == null)
{
return null;
}
return Hex.decode(_nonce);
}
public byte[] personalizationString()
{
if (_personalisation == null)
{
return null;
}
return Hex.decode(_personalisation);
}
public int securityStrength()
{
return _ss;
}
public byte[] expectedValue(int index)
{
return Hex.decode(_ev[index]);
}
public byte[] additionalInput(int position)
{
int len = _ai.size();
byte[] rv;
if (position >= len)
{
rv = null;
}
else
{
rv = Hex.decode((String)(_ai.get(position)));
}
return rv;
}
}