package org.bouncycastle.pqc.crypto.gmss;
import java.util.Enumeration;
import java.util.Vector;
import org.bouncycastle.util.Arrays;
class GMSSUtils
{
static GMSSLeaf[] clone(GMSSLeaf[] data)
{
if (data == null)
{
return null;
}
GMSSLeaf[] copy = new GMSSLeaf[data.length];
System.arraycopy(data, 0, copy, 0, data.length);
return copy;
}
static GMSSRootCalc[] clone(GMSSRootCalc[] data)
{
if (data == null)
{
return null;
}
GMSSRootCalc[] copy = new GMSSRootCalc[data.length];
System.arraycopy(data, 0, copy, 0, data.length);
return copy;
}
static GMSSRootSig[] clone(GMSSRootSig[] data)
{
if (data == null)
{
return null;
}
GMSSRootSig[] copy = new GMSSRootSig[data.length];
System.arraycopy(data, 0, copy, 0, data.length);
return copy;
}
static byte[][] clone(byte[][] data)
{
if (data == null)
{
return null;
}
byte[][] copy = new byte[data.length][];
for (int i = 0; i != data.length; i++)
{
copy[i] = Arrays.clone(data[i]);
}
return copy;
}
static byte[][][] clone(byte[][][] data)
{
if (data == null)
{
return null;
}
byte[][][] copy = new byte[data.length][][];
for (int i = 0; i != data.length; i++)
{
copy[i] = clone(data[i]);
}
return copy;
}
static Treehash[] clone(Treehash[] data)
{
if (data == null)
{
return null;
}
Treehash[] copy = new Treehash[data.length];
System.arraycopy(data, 0, copy, 0, data.length);
return copy;
}
static Treehash[][] clone(Treehash[][] data)
{
if (data == null)
{
return null;
}
Treehash[][] copy = new Treehash[data.length][];
for (int i = 0; i != data.length; i++)
{
copy[i] = clone(data[i]);
}
return copy;
}
static Vector[] clone(Vector[] data)
{
if (data == null)
{
return null;
}
Vector[] copy = new Vector[data.length];
for (int i = 0; i != data.length; i++)
{
copy[i] = new Vector();
for (Enumeration en = data[i].elements(); en.hasMoreElements();)
{
copy[i].addElement(en.nextElement());
}
}
return copy;
}
static Vector[][] clone(Vector[][] data)
{
if (data == null)
{
return null;
}
Vector[][] copy = new Vector[data.length][];
for (int i = 0; i != data.length; i++)
{
copy[i] = clone(data[i]);
}
return copy;
}
}