/// pad binary representation to given size inline void Pad(BinaryData& data, size_t uiTargetSize) { if (data.size() < uiTargetSize) { data.reserve(uiTargetSize); data.insert(data.begin(), uiTargetSize - data.size(), 0); } }
BigInteger Helper::CalcLowerU(const BigInteger& A, const BigInteger& B, unsigned int uiPadSize) { // u = SHA1(PAD(A) | PAD(B)) BinaryData temp; Helper::ToBinaryData(A, temp); Helper::Pad(temp, uiPadSize); BinaryData temp2; Helper::ToBinaryData(B, temp2); Helper::Pad(temp2, uiPadSize); temp.insert(temp.end(), temp2.begin(), temp2.end()); BinaryData ubin = Sha1(temp); return Helper::ToInteger<BigInteger>(ubin); }