bool attack_cpa<real>::setup(crypto_instance *crypto, const parameters ¶ms) { if (!params.get("num_events", m_nevents) || !params.get("num_reports", m_nreports) || !params.get("byte", m_byte) || !params.get("offset", m_offset) || !params.get("bits", m_bits)) { fprintf(stderr, "required parameters: byte, offset, bits\n"); return false; } m_mask = 0; for (unsigned int i = m_offset; i < (m_offset + m_bits); ++i) m_mask |= 1 << i; m_crypto = crypto; m_guesses = 1 << m_crypto->estimate_bits(); m_center = m_bits >> 1; m_traces = 0; // allocate storage for intermediate results in advance m_t1.resize(m_nevents, 0); m_t2.resize(m_nevents, 0); m_w1.resize(m_guesses, 0); m_w2.resize(m_guesses, 0); m_tw.resize(m_guesses * m_nevents, 0); m_dtemp.resize(m_guesses * m_nevents, 0); m_maxes.resize(m_guesses * m_nreports, 0); return true; }
shape_datasource::shape_datasource(const parameters ¶ms) : shape_name_(params.get("file")), type_(datasource::Vector), file_length_(0), indexed_(false), desc_(params.get("name")) { try { shape_io shape(shape_name_); init(shape); for (int i=0;i<shape.dbf().num_fields();++i) { field_descriptor const& fd=shape.dbf().descriptor(i); std::string fld_name=fd.name_; switch (fd.type_) { case 'C': case 'D': case 'M': case 'L': desc_.add_descriptor(attribute_descriptor(fld_name,String)); break; case 'N': case 'F': { if (fd.dec_>0) { desc_.add_descriptor(attribute_descriptor(fld_name,Double,false,8)); } else { desc_.add_descriptor(attribute_descriptor(fld_name,Integer,false,4)); } break; } default: // std::clog << "unknown type "<<fd.type_<<"\n"; break; } } } catch (datasource_exception& ex) { std::clog<<ex.what()<<std::endl; throw; } }