Bouncy Castle Cryptography Library 1.79

org.bouncycastle.pqc.legacy.math.linearalgebra
Class GF2Vector

java.lang.Object
  |
  +--org.bouncycastle.pqc.legacy.math.linearalgebra.Vector
        |
        +--org.bouncycastle.pqc.legacy.math.linearalgebra.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

Fields inherited from class org.bouncycastle.pqc.legacy.math.linearalgebra.Vector
length
 
Constructor Summary
  GF2Vector(GF2Vector other)
          Copy constructor.
  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.
 
Method Summary
 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(2 m) with t elements.
 java.lang.String toString()
           
 
Methods inherited from class org.bouncycastle.pqc.legacy.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.
Overrides:
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).
Overrides:
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.
Overrides:
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.
Overrides:
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(2 m) with t elements.
Parameters:
field - the finite field GF(2 m)
Returns:
the converted vector over GF(2 m)

equals

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

hashCode

public int hashCode()
Overrides:
hashCode in class Vector
Returns:
the hash code of this vector

toString

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

Bouncy Castle Cryptography Library 1.79