ParametersWithID
using System;
namespace Org.BouncyCastle.Crypto.Parameters
{
public class ParametersWithID : ICipherParameters
{
private readonly ICipherParameters m_parameters;
private readonly byte[] m_id;
public int IDLength => m_id.Length;
public ICipherParameters Parameters => m_parameters;
internal static ICipherParameters ApplyOptionalID(ICipherParameters parameters, byte[] id)
{
if (id != null)
return new ParametersWithIV(parameters, id);
return parameters;
}
public ParametersWithID(ICipherParameters parameters, byte[] id)
{
if (id == null)
throw new ArgumentNullException("id");
m_parameters = parameters;
m_id = (byte[])id.Clone();
}
public ParametersWithID(ICipherParameters parameters, byte[] id, int idOff, int idLen)
{
if (id == null)
throw new ArgumentNullException("id");
m_parameters = parameters;
m_id = new byte[idLen];
Array.Copy(id, idOff, m_id, 0, idLen);
}
private ParametersWithID(ICipherParameters parameters, int idLength)
{
if (idLength < 0)
throw new ArgumentOutOfRangeException("idLength");
m_parameters = parameters;
m_id = new byte[idLength];
}
public void CopyIDTo(byte[] buf, int off, int len)
{
if (m_id.Length != len)
throw new ArgumentOutOfRangeException("len");
Array.Copy(m_id, 0, buf, off, len);
}
public byte[] GetID()
{
return (byte[])m_id.Clone();
}
}
}