package org.bouncycastle.jce.spec;

import java.security.spec.AlgorithmParameterSpec;

import org.bouncycastle.util.Arrays;

Parameter spec for an integrated encryptor, as in IEEE P1363a
/** * Parameter spec for an integrated encryptor, as in IEEE P1363a */
public class IESParameterSpec implements AlgorithmParameterSpec { private byte[] derivation; private byte[] encoding; private int macKeySize; private int cipherKeySize; private byte[] nonce; private boolean usePointCompression;
Set the IES engine parameters.
Params:
  • derivation – the optional derivation vector for the KDF.
  • encoding – the optional encoding vector for the KDF.
  • macKeySize – the key size (in bits) for the MAC.
/** * Set the IES engine parameters. * * @param derivation the optional derivation 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[] derivation, byte[] encoding, int macKeySize) { this(derivation, encoding, macKeySize, -1, null, false); }
Set the IES engine parameters.
Params:
  • derivation – the optional derivation vector for the KDF.
  • encoding – the optional encoding vector for the KDF.
  • macKeySize – the key size (in bits) for the MAC.
  • cipherKeySize – the key size (in bits) for the block cipher.
  • nonce – an IV to use initialising the block cipher.
/** * Set the IES engine parameters. * * @param derivation the optional derivation 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[] derivation, byte[] encoding, int macKeySize, int cipherKeySize, byte[] nonce) { this(derivation, encoding, macKeySize, cipherKeySize, nonce, false); }
Set the IES engine parameters.
Params:
  • derivation – the optional derivation vector for the KDF.
  • encoding – the optional encoding vector for the KDF.
  • macKeySize – the key size (in bits) for the MAC.
  • cipherKeySize – the key size (in bits) for the block cipher.
  • nonce – an IV to use initialising the block cipher.
  • usePointCompression – whether to use EC point compression or not (false by default)
/** * Set the IES engine parameters. * * @param derivation the optional derivation 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. * @param usePointCompression whether to use EC point compression or not (false by default) */
public IESParameterSpec( byte[] derivation, byte[] encoding, int macKeySize, int cipherKeySize, byte[] nonce, boolean usePointCompression) { if (derivation != null) { this.derivation = new byte[derivation.length]; System.arraycopy(derivation, 0, this.derivation, 0, derivation.length); } else { this.derivation = 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); this.usePointCompression = usePointCompression; }
return the derivation vector.
/** * return the derivation vector. */
public byte[] getDerivationV() { return Arrays.clone(derivation); }
return the encoding vector.
/** * return the encoding vector. */
public byte[] getEncodingV() { return Arrays.clone(encoding); }
return the key size in bits for the MAC used with the message
/** * 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
/** * 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.
Returns:block cipher IV for message.
/** * Return the nonce (IV) value to be associated with message. * * @return block cipher IV for message. */
public byte[] getNonce() { return Arrays.clone(nonce); }
Set the 'point compression' flag.
/** * Set the 'point compression' flag. */
public void setPointCompression(boolean usePointCompression) { this.usePointCompression = usePointCompression; }
Return the 'point compression' flag.
Returns:the point compression flag
/** * Return the 'point compression' flag. * * @return the point compression flag */
public boolean getPointCompression() { return usePointCompression; } }