INNER CODE UNIT · C++
poly
ph4r05/Whitebox-crypto-AES · BGEAttack.cpp:341
poly = poly + m.x[0][k] * characteristicPolynomial(nm);
}
return poly;
}
NTL::GF2X BGEAttack::characteristicPolynomial(mat_GF2 & m){
mat_GF2X_t subMatrix;
int n = m.NumRows();
subMatrix.n=n;
// Transform to GF2X matrix with variable on main diagonal
NTL::GF2X var = GF2XFromLong(2, 9);
assert(m.NumCols()==n); // we can do this only for square matrix
if (n==1) return (m[0][0] + var); // such a degenerate case
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){