package org.bouncycastle.pqc.crypto.rainbow.util;

This class is needed for the conversions while encoding and decoding, as well as for comparison between arrays of some dimensions
/** * This class is needed for the conversions while encoding and decoding, as well as for * comparison between arrays of some dimensions */
public class RainbowUtil {
This function converts an one-dimensional array of bytes into a one-dimensional array of int
Params:
  • in – the array to be converted
Returns:out the one-dimensional int-array that corresponds the input
/** * This function converts an one-dimensional array of bytes into a * one-dimensional array of int * * @param in the array to be converted * @return out * the one-dimensional int-array that corresponds the input */
public static int[] convertArraytoInt(byte[] in) { int[] out = new int[in.length]; for (int i = 0; i < in.length; i++) { out[i] = in[i] & GF2Field.MASK; } return out; }
This function converts an one-dimensional array of bytes into a one-dimensional array of type short
Params:
  • in – the array to be converted
Returns:out one-dimensional short-array that corresponds the input
/** * This function converts an one-dimensional array of bytes into a * one-dimensional array of type short * * @param in the array to be converted * @return out * one-dimensional short-array that corresponds the input */
public static short[] convertArray(byte[] in) { short[] out = new short[in.length]; for (int i = 0; i < in.length; i++) { out[i] = (short)(in[i] & GF2Field.MASK); } return out; }
This function converts a matrix of bytes into a matrix of type short
Params:
  • in – the matrix to be converted
Returns:out short-matrix that corresponds the input
/** * This function converts a matrix of bytes into a matrix of type short * * @param in the matrix to be converted * @return out * short-matrix that corresponds the input */
public static short[][] convertArray(byte[][] in) { short[][] out = new short[in.length][in[0].length]; for (int i = 0; i < in.length; i++) { for (int j = 0; j < in[0].length; j++) { out[i][j] = (short)(in[i][j] & GF2Field.MASK); } } return out; }
This function converts a 3-dimensional array of bytes into a 3-dimensional array of type short
Params:
  • in – the array to be converted
Returns:out short-array that corresponds the input
/** * This function converts a 3-dimensional array of bytes into a 3-dimensional array of type short * * @param in the array to be converted * @return out * short-array that corresponds the input */
public static short[][][] convertArray(byte[][][] in) { short[][][] out = new short[in.length][in[0].length][in[0][0].length]; for (int i = 0; i < in.length; i++) { for (int j = 0; j < in[0].length; j++) { for (int k = 0; k < in[0][0].length; k++) { out[i][j][k] = (short)(in[i][j][k] & GF2Field.MASK); } } } return out; }
This function converts an array of type int into an array of type byte
Params:
  • in – the array to be converted
Returns:out the byte-array that corresponds the input
/** * This function converts an array of type int into an array of type byte * * @param in the array to be converted * @return out * the byte-array that corresponds the input */
public static byte[] convertIntArray(int[] in) { byte[] out = new byte[in.length]; for (int i = 0; i < in.length; i++) { out[i] = (byte)in[i]; } return out; }
This function converts an array of type short into an array of type byte
Params:
  • in – the array to be converted
Returns:out the byte-array that corresponds the input
/** * This function converts an array of type short into an array of type byte * * @param in the array to be converted * @return out * the byte-array that corresponds the input */
public static byte[] convertArray(short[] in) { byte[] out = new byte[in.length]; for (int i = 0; i < in.length; i++) { out[i] = (byte)in[i]; } return out; }
This function converts a matrix of type short into a matrix of type byte
Params:
  • in – the matrix to be converted
Returns:out the byte-matrix that corresponds the input
/** * This function converts a matrix of type short into a matrix of type byte * * @param in the matrix to be converted * @return out * the byte-matrix that corresponds the input */
public static byte[][] convertArray(short[][] in) { byte[][] out = new byte[in.length][in[0].length]; for (int i = 0; i < in.length; i++) { for (int j = 0; j < in[0].length; j++) { out[i][j] = (byte)in[i][j]; } } return out; }
This function converts a 3-dimensional array of type short into a 3-dimensional array of type byte
Params:
  • in – the array to be converted
Returns:out the byte-array that corresponds the input
/** * This function converts a 3-dimensional array of type short into a 3-dimensional array of type byte * * @param in the array to be converted * @return out * the byte-array that corresponds the input */
public static byte[][][] convertArray(short[][][] in) { byte[][][] out = new byte[in.length][in[0].length][in[0][0].length]; for (int i = 0; i < in.length; i++) { for (int j = 0; j < in[0].length; j++) { for (int k = 0; k < in[0][0].length; k++) { out[i][j][k] = (byte)in[i][j][k]; } } } return out; }
Compare two short arrays. No null checks are performed.
Params:
  • left – the first short array
  • right – the second short array
Returns:the result of the comparison
/** * Compare two short arrays. No null checks are performed. * * @param left the first short array * @param right the second short array * @return the result of the comparison */
public static boolean equals(short[] left, short[] right) { if (left.length != right.length) { return false; } boolean result = true; for (int i = left.length - 1; i >= 0; i--) { result &= left[i] == right[i]; } return result; }
Compare two two-dimensional short arrays. No null checks are performed.
Params:
  • left – the first short array
  • right – the second short array
Returns:the result of the comparison
/** * Compare two two-dimensional short arrays. No null checks are performed. * * @param left the first short array * @param right the second short array * @return the result of the comparison */
public static boolean equals(short[][] left, short[][] right) { if (left.length != right.length) { return false; } boolean result = true; for (int i = left.length - 1; i >= 0; i--) { result &= equals(left[i], right[i]); } return result; }
Compare two three-dimensional short arrays. No null checks are performed.
Params:
  • left – the first short array
  • right – the second short array
Returns:the result of the comparison
/** * Compare two three-dimensional short arrays. No null checks are performed. * * @param left the first short array * @param right the second short array * @return the result of the comparison */
public static boolean equals(short[][][] left, short[][][] right) { if (left.length != right.length) { return false; } boolean result = true; for (int i = left.length - 1; i >= 0; i--) { result &= equals(left[i], right[i]); } return result; } }