@@ -594,22 +594,26 @@ static std::string IPv6ToString(Span<const uint8_t> a, uint32_t scope_id)
594
594
return r;
595
595
}
596
596
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
+
597
608
std::string CNetAddr::ToStringIP () const
598
609
{
599
610
switch (m_net) {
600
611
case NET_IPV4:
601
612
return IPv4ToString (m_addr);
602
- case NET_IPV6: {
613
+ case NET_IPV6:
603
614
return IPv6ToString (m_addr, m_scope_id);
604
- }
605
615
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);
613
617
case NET_I2P:
614
618
return EncodeBase32 (m_addr, false /* don't pad with = */ ) + " .b32.i2p" ;
615
619
case NET_CJDNS:
0 commit comments