bool item::assign(bdecode_node const& v, span<char const> salt , sequence_number const seq, public_key const& pk, signature const& sig) { TORRENT_ASSERT(v.data_section().size() <= 1000); if (!verify_mutable_item(v.data_section(), salt, seq, pk, sig)) return false; m_pk = pk; m_sig = sig; if (salt.size() > 0) m_salt.assign(salt.data(), salt.size()); else m_salt.clear(); m_seq = seq; m_mutable = true; m_value = v; return true; }
bool item::assign(bdecode_node const& v , std::pair<char const*, int> salt , boost::uint64_t seq, char const* pk, char const* sig) { TORRENT_ASSERT(v.data_section().second <= 1000); if (pk && sig) { if (!verify_mutable_item(v.data_section(), salt, seq, pk, sig)) return false; memcpy(m_pk.c_array(), pk, item_pk_len); memcpy(m_sig.c_array(), sig, item_sig_len); if (salt.second > 0) m_salt.assign(salt.first, salt.second); else m_salt.clear(); m_seq = seq; m_mutable = true; } else m_mutable = false; m_value = v; return true; }