Class GF2Vector


  • public class GF2Vector
    extends Vector
    This class implements the abstract class Vector for the case of vectors over the finite field GF(2).
    For the vector representation the array of type int[] is used, thus one element of the array holds 32 elements of the vector.
    See Also:
    Vector
    • Field Summary

      • Fields inherited from class org.bouncycastle.pqc.math.linearalgebra.Vector

        length
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
        GF2Vector​(int length)
      Construct the zero vector of the given length.
      protected GF2Vector​(int[] v, int length)
      Construct a new GF2Vector of the given length and with the given element array.
        GF2Vector​(int length, int[] v)
      Construct a GF2Vector of the given length and with elements from the given array.
        GF2Vector​(int length, int t, java.security.SecureRandom sr)
      Construct a random GF2Vector of the given length with the specified number of non-zero coefficients.
        GF2Vector​(int length, java.security.SecureRandom sr)
      Construct a random GF2Vector of the given length.
        GF2Vector​(GF2Vector other)
      Copy constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Vector add​(Vector other)
      Adds another GF2Vector to this vector.
      boolean equals​(java.lang.Object other)
      Check if the given object is equal to this vector.
      GF2Vector extractLeftVector​(int k)
      Return a new vector consisting of the first k elements of this vector.
      GF2Vector extractRightVector​(int k)
      Return a new vector consisting of the last k elements of this vector.
      GF2Vector extractVector​(int[] setJ)
      Return a new vector consisting of the elements of this vector with the indices given by the set setJ.
      int getBit​(int index)
      Return the value of the bit of this vector at the specified index.
      byte[] getEncoded()
      Encode this vector as byte array.
      int getHammingWeight()
      Return the Hamming weight of this vector, i.e., compute the number of units of this vector.
      int[] getVecArray()  
      int hashCode()  
      boolean isZero()
      Return whether this is the zero vector (i.e., all elements are zero).
      Vector multiply​(Permutation p)
      Multiply this vector with a permutation.
      static GF2Vector OS2VP​(int length, byte[] encVec)
      Construct a new GF2Vector with the given length out of the encoded vector.
      void setBit​(int index)
      Set the coefficient at the given index to 1.
      GF2mVector toExtensionFieldVector​(GF2mField field)
      Rewrite this vector as a vector over GF(2m) with t elements.
      java.lang.String toString()  
      • Methods inherited from class org.bouncycastle.pqc.math.linearalgebra.Vector

        getLength
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • GF2Vector

        public GF2Vector​(int length)
        Construct the zero vector of the given length.
        Parameters:
        length - the length of the vector
      • GF2Vector

        public GF2Vector​(int length,
                         java.security.SecureRandom sr)
        Construct a random GF2Vector of the given length.
        Parameters:
        length - the length of the vector
        sr - the source of randomness
      • GF2Vector

        public GF2Vector​(int length,
                         int t,
                         java.security.SecureRandom sr)
        Construct a random GF2Vector of the given length with the specified number of non-zero coefficients.
        Parameters:
        length - the length of the vector
        t - the number of non-zero coefficients
        sr - the source of randomness
      • GF2Vector

        public GF2Vector​(int length,
                         int[] v)
        Construct a GF2Vector of the given length and with elements from the given array. The array is copied and unused bits are masked out.
        Parameters:
        length - the length of the vector
        v - the element array
      • GF2Vector

        public GF2Vector​(GF2Vector other)
        Copy constructor.
        Parameters:
        other - another GF2Vector
      • GF2Vector

        protected GF2Vector​(int[] v,
                            int length)
        Construct a new GF2Vector of the given length and with the given element array. The array is not changed and only a reference to the array is stored. No length checking is performed either.
        Parameters:
        v - the element array
        length - the length of the vector
    • Method Detail

      • OS2VP

        public static GF2Vector OS2VP​(int length,
                                      byte[] encVec)
        Construct a new GF2Vector with the given length out of the encoded vector.
        Parameters:
        length - the length of the vector
        encVec - the encoded vector
        Returns:
        the decoded vector
      • getEncoded

        public byte[] getEncoded()
        Encode this vector as byte array.
        Specified by:
        getEncoded in class Vector
        Returns:
        the encoded vector
      • getVecArray

        public int[] getVecArray()
        Returns:
        the int array representation of this vector
      • getHammingWeight

        public int getHammingWeight()
        Return the Hamming weight of this vector, i.e., compute the number of units of this vector.
        Returns:
        the Hamming weight of this vector
      • isZero

        public boolean isZero()
        Description copied from class: Vector
        Return whether this is the zero vector (i.e., all elements are zero).
        Specified by:
        isZero in class Vector
        Returns:
        whether this is the zero vector (i.e., all elements are zero)
      • getBit

        public int getBit​(int index)
        Return the value of the bit of this vector at the specified index.
        Parameters:
        index - the index
        Returns:
        the value of the bit (0 or 1)
      • setBit

        public void setBit​(int index)
        Set the coefficient at the given index to 1. If the index is out of bounds, do nothing.
        Parameters:
        index - the index of the coefficient to set
      • add

        public Vector add​(Vector other)
        Adds another GF2Vector to this vector.
        Specified by:
        add in class Vector
        Parameters:
        other - another GF2Vector
        Returns:
        this + other
        Throws:
        java.lang.ArithmeticException - if the other vector is not a GF2Vector or has another length.
      • multiply

        public Vector multiply​(Permutation p)
        Multiply this vector with a permutation.
        Specified by:
        multiply in class Vector
        Parameters:
        p - the permutation
        Returns:
        this*p = p*this
      • extractVector

        public GF2Vector extractVector​(int[] setJ)
        Return a new vector consisting of the elements of this vector with the indices given by the set setJ.
        Parameters:
        setJ - the set of indices of elements to extract
        Returns:
        the new GF2Vector [this_setJ[0], this_setJ[1], ..., this_setJ[#setJ-1]]
      • extractLeftVector

        public GF2Vector extractLeftVector​(int k)
        Return a new vector consisting of the first k elements of this vector.
        Parameters:
        k - the number of elements to extract
        Returns:
        a new GF2Vector consisting of the first k elements of this vector
      • extractRightVector

        public GF2Vector extractRightVector​(int k)
        Return a new vector consisting of the last k elements of this vector.
        Parameters:
        k - the number of elements to extract
        Returns:
        a new GF2Vector consisting of the last k elements of this vector
      • toExtensionFieldVector

        public GF2mVector toExtensionFieldVector​(GF2mField field)
        Rewrite this vector as a vector over GF(2m) with t elements.
        Parameters:
        field - the finite field GF(2m)
        Returns:
        the converted vector over GF(2m)
      • equals

        public boolean equals​(java.lang.Object other)
        Check if the given object is equal to this vector.
        Specified by:
        equals in class Vector
        Parameters:
        other - vector
        Returns:
        the result of the comparison
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in class Vector
        Returns:
        the hash code of this vector
      • toString

        public java.lang.String toString()
        Specified by:
        toString in class Vector
        Returns:
        a human readable form of this vector