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; } }