com.fitbur.bouncycastle.pqc.crypto.rainbow.RainbowParameters Maven / Gradle / Ivy
package com.fitbur.bouncycastle.pqc.crypto.rainbow;
import com.fitbur.bouncycastle.crypto.CipherParameters;
public class RainbowParameters
implements CipherParameters
{
/**
* DEFAULT PARAMS
*/
/*
* Vi = vinegars per layer whereas n is vu (vu = 33 = n) such that
*
* v1 = 6; o1 = 12-6 = 6
*
* v2 = 12; o2 = 17-12 = 5
*
* v3 = 17; o3 = 22-17 = 5
*
* v4 = 22; o4 = 33-22 = 11
*
* v5 = 33; (o5 = 0)
*/
private final int[] DEFAULT_VI = {6, 12, 17, 22, 33};
private int[] vi;// set of vinegar vars per layer.
/**
* Default Constructor The elements of the array containing the number of
* Vinegar variables in each layer are set to the com.fitburfault values here.
*/
public RainbowParameters()
{
this.vi = this.DEFAULT_VI;
}
/**
* Constructor with parameters
*
* @param vi The elements of the array containing the number of Vinegar
* variables per layer are set to the values of the input array.
*/
public RainbowParameters(int[] vi)
{
this.vi = vi;
try
{
checkParams();
}
catch (Exception e)
{
e.printStackTrace();
}
}
private void checkParams()
throws Exception
{
if (vi == null)
{
throw new Exception("no layers com.fitburfined.");
}
if (vi.length > 1)
{
for (int i = 0; i < vi.length - 1; i++)
{
if (vi[i] >= vi[i + 1])
{
throw new Exception(
"v[i] has to be smaller than v[i+1]");
}
}
}
else
{
throw new Exception(
"Rainbow needs at least 1 layer, such that v1 < v2.");
}
}
/**
* Getter for the number of layers
*
* @return the number of layers
*/
public int getNumOfLayers()
{
return this.vi.length - 1;
}
/**
* Getter for the number of all the polynomials in Rainbow
*
* @return the number of the polynomials
*/
public int getDocLength()
{
return vi[vi.length - 1] - vi[0];
}
/**
* Getter for the array containing the number of Vinegar-variables per layer
*
* @return the numbers of vinegars per layer
*/
public int[] getVi()
{
return this.vi;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy