Example #1
0
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;
}
Example #2
0
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;
}