com.fitbur.bouncycastle.jce.spec.IESParameterSpec Maven / Gradle / Ivy
package com.fitbur.bouncycastle.jce.spec;
import java.security.spec.AlgorithmParameterSpec;
import com.fitbur.bouncycastle.util.Arrays;
/**
* Parameter spec for an integrated encryptor, as in IEEE P1363a
*/
public class IESParameterSpec
implements AlgorithmParameterSpec
{
private byte[] com.fitburrivation;
private byte[] encoding;
private int macKeySize;
private int cipherKeySize;
private byte[] nonce;
/**
* Set the IES engine parameters.
*
* @param com.fitburrivation the optional com.fitburrivation vector for the KDF.
* @param encoding the optional encoding vector for the KDF.
* @param macKeySize the key size (in bits) for the MAC.
*/
public IESParameterSpec(
byte[] com.fitburrivation,
byte[] encoding,
int macKeySize)
{
this(com.fitburrivation, encoding, macKeySize, -1);
}
/**
* Set the IES engine parameters.
*
* @param com.fitburrivation the optional com.fitburrivation vector for the KDF.
* @param encoding the optional encoding vector for the KDF.
* @param macKeySize the key size (in bits) for the MAC.
* @param cipherKeySize the key size (in bits) for the block cipher.
*/
public IESParameterSpec(
byte[] com.fitburrivation,
byte[] encoding,
int macKeySize,
int cipherKeySize)
{
this(com.fitburrivation, encoding, macKeySize, cipherKeySize, null);
}
/**
* Set the IES engine parameters.
*
* @param com.fitburrivation the optional com.fitburrivation vector for the KDF.
* @param encoding the optional encoding vector for the KDF.
* @param macKeySize the key size (in bits) for the MAC.
* @param cipherKeySize the key size (in bits) for the block cipher.
* @param nonce an IV to use initialising the block cipher.
*/
public IESParameterSpec(
byte[] com.fitburrivation,
byte[] encoding,
int macKeySize,
int cipherKeySize,
byte[] nonce)
{
if (com.fitburrivation != null)
{
this.com.fitburrivation = new byte[com.fitburrivation.length];
System.arraycopy(com.fitburrivation, 0, this.com.fitburrivation, 0, com.fitburrivation.length);
}
else
{
this.com.fitburrivation = null;
}
if (encoding != null)
{
this.encoding = new byte[encoding.length];
System.arraycopy(encoding, 0, this.encoding, 0, encoding.length);
}
else
{
this.encoding = null;
}
this.macKeySize = macKeySize;
this.cipherKeySize = cipherKeySize;
this.nonce = Arrays.clone(nonce);
}
/**
* return the com.fitburrivation vector.
*/
public byte[] getDerivationV()
{
return Arrays.clone(com.fitburrivation);
}
/**
* return the encoding vector.
*/
public byte[] getEncodingV()
{
return Arrays.clone(encoding);
}
/**
* return the key size in bits for the MAC used with the message
*/
public int getMacKeySize()
{
return macKeySize;
}
/**
* return the key size in bits for the block cipher used with the message
*/
public int getCipherKeySize()
{
return cipherKeySize;
}
/**
* Return the nonce (IV) value to be associated with message.
*
* @return block cipher IV for message.
*/
public byte[] getNonce()
{
return Arrays.clone(nonce);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy