Skip to content

Commit 8be56f0

Browse files
committed
p2p, refactor: extract OnionToString() from CNetAddr::ToStringIp()
1 parent 5f9d3c0 commit 8be56f0

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

src/netaddress.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -594,22 +594,26 @@ static std::string IPv6ToString(Span<const uint8_t> a, uint32_t scope_id)
594594
return r;
595595
}
596596

597+
static std::string OnionToString(const Span<const uint8_t>& addr)
598+
{
599+
uint8_t checksum[torv3::CHECKSUM_LEN];
600+
torv3::Checksum(addr, checksum);
601+
// TORv3 onion_address = base32(PUBKEY | CHECKSUM | VERSION) + ".onion"
602+
prevector<torv3::TOTAL_LEN, uint8_t> address{addr.begin(), addr.end()};
603+
address.insert(address.end(), checksum, checksum + torv3::CHECKSUM_LEN);
604+
address.insert(address.end(), torv3::VERSION, torv3::VERSION + sizeof(torv3::VERSION));
605+
return EncodeBase32(address) + ".onion";
606+
}
607+
597608
std::string CNetAddr::ToStringIP() const
598609
{
599610
switch (m_net) {
600611
case NET_IPV4:
601612
return IPv4ToString(m_addr);
602-
case NET_IPV6: {
613+
case NET_IPV6:
603614
return IPv6ToString(m_addr, m_scope_id);
604-
}
605615
case NET_ONION:
606-
uint8_t checksum[torv3::CHECKSUM_LEN];
607-
torv3::Checksum(m_addr, checksum);
608-
// TORv3 onion_address = base32(PUBKEY | CHECKSUM | VERSION) + ".onion"
609-
prevector<torv3::TOTAL_LEN, uint8_t> address{m_addr.begin(), m_addr.end()};
610-
address.insert(address.end(), checksum, checksum + torv3::CHECKSUM_LEN);
611-
address.insert(address.end(), torv3::VERSION, torv3::VERSION + sizeof(torv3::VERSION));
612-
return EncodeBase32(address) + ".onion";
616+
return OnionToString(m_addr);
613617
case NET_I2P:
614618
return EncodeBase32(m_addr, false /* don't pad with = */) + ".b32.i2p";
615619
case NET_CJDNS:

0 commit comments

Comments
 (0)