-rw-r--r-- 1007 cryptattacktester-20230614/decoding.cpp raw
#include <cassert> #include "decoding.h" using namespace std; vector<bool> decoding_serialize(const vector<vector<bool>> &pk,const vector<bool> &s,const vector<bigint> &params) { bigint n = params.at(0); bigint k = params.at(1); vector<bool> result; assert(pk.size() == n-k); for (auto pkj : pk) { assert(pkj.size() == k); result.insert(result.end(),pkj.begin(),pkj.end()); } assert(s.size() == n-k); result.insert(result.end(),s.begin(),s.end()); return result; } pair<vector<vector<bit>>,vector<bit>> decoding_deserialize(const vector<bit> &bits,const vector<bigint> &params) { bigint n = params.at(0); bigint k = params.at(1); bigint pos = 0; vector<vector<bit>> pk; for (bigint j = 0;j < n-k;++j) { vector<bit> pkj; for (bigint i = 0;i < k;++i) pkj.push_back(bits.at(pos++)); pk.push_back(pkj); } vector<bit> s; for (bigint j = 0;j < n-k;++j) s.push_back(bits.at(pos++)); assert(pos == bits.size()); return make_pair(pk,s); }