All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fitbur.bouncycastle.jce.spec.IESParameterSpec Maven / Gradle / Ivy

There is a newer version: 1.0.0
Show newest version
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