org.bouncycastle.crypto.test.cavp.KDFDoublePipelineIterationNoCounterTests Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-ext-debug-jdk15on Show documentation
Show all versions of bcprov-ext-debug-jdk15on 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.5 to JDK 1.8 with debug enabled.
package org.bouncycastle.crypto.test.cavp;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Properties;
import org.bouncycastle.crypto.Mac;
import org.bouncycastle.crypto.generators.KDFDoublePipelineIterationBytesGenerator;
import org.bouncycastle.crypto.params.KDFDoublePipelineIterationParameters;
import org.bouncycastle.util.Arrays;
import org.bouncycastle.util.encoders.Hex;
import org.bouncycastle.util.test.SimpleTestResult;
import org.bouncycastle.util.test.TestFailedException;
public final class KDFDoublePipelineIterationNoCounterTests
implements CAVPListener
{
private PrintWriter out;
public void receiveCAVPVectors(String name, Properties config,
Properties vectors)
{
// create Mac based PRF from PRF property, create the KDF
final Mac prf = CAVPReader.createPRF(config);
final KDFDoublePipelineIterationBytesGenerator gen = new KDFDoublePipelineIterationBytesGenerator(prf);
final int count = Integer.parseInt(vectors.getProperty("COUNT"));
final int l = Integer.parseInt(vectors.getProperty("L"));
final byte[] ki = Hex.decode(vectors.getProperty("KI"));
final byte[] fixedInputData = Hex.decode(vectors.getProperty("FixedInputData"));
final KDFDoublePipelineIterationParameters params = KDFDoublePipelineIterationParameters.createWithoutCounter(ki, fixedInputData);
gen.init(params);
final byte[] koGenerated = new byte[l / 8];
gen.generateBytes(koGenerated, 0, koGenerated.length);
final byte[] koVectors = Hex.decode(vectors.getProperty("KO"));
compareKO(name, config, count, koGenerated, koVectors);
}
private static void compareKO(
String name, Properties config, int test, byte[] calculatedOKM, byte[] testOKM)
{
if (!Arrays.areEqual(calculatedOKM, testOKM))
{
throw new TestFailedException(new SimpleTestResult(
false, name + " using " + config + " test " + test + " failed"));
}
}
public void receiveCommentLine(String commentLine)
{
// out.println("# " + commentLine);
}
public void receiveStart(String name)
{
// do nothing
}
public void receiveEnd()
{
out.println(" *** *** *** ");
}
public void setup()
{
try
{
out = new PrintWriter(new FileWriter("KDFDblPipelineNoCounter.gen"));
}
catch (IOException e)
{
throw new IllegalStateException(e);
}
}
public void tearDown()
{
out.close();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy