Interface ExtraInfoDescriptor

  • All Superinterfaces:
    Descriptor, java.io.Serializable
    All Known Subinterfaces:
    BridgeExtraInfoDescriptor, RelayExtraInfoDescriptor

    public interface ExtraInfoDescriptor
    extends Descriptor
    Contains a relay or sanitized bridge extra-info descriptor.

    Relays publish extra-info descriptors as an addendum to server descriptors (ServerDescriptor) to report extraneous information to the directory authorities that clients do not need to download in order to function. This information primarily consists of statistics gathered by the relay about its usage and can take up a lot of descriptor space. The separation of server descriptors and extra-info descriptors has become less relevant with the introduction of microdescriptors (Microdescriptor) that are derived from server descriptors by the directory authority and which clients download instead of server descriptors, but it persists.

    Bridges publish extra-info descriptors to the bridge authority for the same reason, to include statistics about their usage without increasing the directory protocol overhead for bridge clients. In this case, the separation of server descriptors and extra-info descriptors is slightly more relevant, because there are no microdescriptors for bridges, so that bridge clients still download server descriptors of bridges they're using. Another reason is that bridges need to include information like details of all the transports they support in their descriptors, and bridge clients using one such transport are not supposed to learn the details of the other transports.

    It's worth noting that all contents of extra-info descriptors are written and signed by relays and bridges without a third party verifying their correctness. The (bridge) directory authorities may decide to exclude dishonest servers from the network statuses they produce, but that wouldn't be reflected in extra-info descriptors.

    Since:
    1.0.0
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getBridgeIps()
      Return statistics on bridge client IP addresses by country with map keys being country codes and map values being the number of unique IP addresses that have connected from that country rounded up to the nearest multiple of 8, or null if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getBridgeIpTransports()
      Return statistics on bridge client IP addresses by transport with map keys being pluggable transport names, e.g., "obfs2" or "obfs3" for known transports, "<OR>" for the default onion routing protocol, or "<??>" for an unknown transport, and map values being the number of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getBridgeIpVersions()
      Return statistics on bridge client IP addresses by IP version with map keys being protocol families, e.g., "v4" or "v6", and map values being the number of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included.
      long getBridgeStatsEndMillis()
      Return the time in milliseconds since the epoch when the included bridge statistics interval ended, or -1 if no such statistics are included.
      long getBridgeStatsIntervalLength()
      Return the interval length of the included bridge statistics in seconds, or -1 if no such statistics are included.
      int getCellCircuitsPerDecile()
      Return the mean number of circuits included in any of the cell statistics deciles, or -1 if no such statistics are included.
      java.util.List<java.lang.Integer> getCellProcessedCells()
      Return the mean number of processed cells per circuit by circuit decile starting with the loudest decile at index 0 and the quietest decile at index 8, or null if no such statistics are included.
      java.util.List<java.lang.Double> getCellQueuedCells()
      Return the mean number of cells contained in circuit queues by circuit decile starting with the loudest decile at index 0 and the quietest decile at index 8, or null if no such statistics are included.
      long getCellStatsEndMillis()
      Return the time in milliseconds since the epoch when the included cell statistics interval ended, or -1 if no such statistics are included.
      long getCellStatsIntervalLength()
      Return the interval length of the included cell statistics in seconds, or -1 if no such statistics are included.
      java.util.List<java.lang.Integer> getCellTimeInQueue()
      Return the mean times in milliseconds that cells spend in circuit queues by circuit decile starting with the loudest decile at index 0 and the quietest decile at index 8, or null if no such statistics are included.
      int getConnBiDirectBelow()
      Return the number of connections on which this server read and wrote less than 2 KiB/s in a 10-second interval, or -1 if no such statistics are included.
      int getConnBiDirectBoth()
      Return the number of connections on which this server read and wrote at least 2 KiB/s in a 10-second interval but not 10 times more in either direction, or -1 if no such statistics are included.
      int getConnBiDirectRead()
      Return the number of connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in read direction than in write direction, or -1 if no such statistics are included.
      long getConnBiDirectStatsEndMillis()
      Return the time in milliseconds since the epoch when the included statistics on bi-directional connection usage ended, or -1 if no such statistics are included.
      long getConnBiDirectStatsIntervalLength()
      Return the interval length of the included statistics on bi-directional connection usage in seconds, or -1 if no such statistics are included.
      int getConnBiDirectWrite()
      Return the number of connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in write direction than in read direction, or -1 if no such statistics are included.
      java.lang.String getDigestSha1Hex()
      Return the SHA-1 descriptor digest, encoded as 40 lower-case (relay descriptors) or upper-case (bridge descriptors) hexadecimal characters, that is used to reference this descriptor from a server descriptor.
      java.lang.String getDigestSha256Base64()
      Return the SHA-256 descriptor digest, encoded as 43 base64 characters without padding characters, that may be used to reference this descriptor from a server descriptor.
      BandwidthHistory getDirreqReadHistory()
      Return the directory request read history contained in this descriptor, or null if no such history is contained.
      long getDirreqStatsEndMillis()
      Return the time in milliseconds since the epoch when the included directory request statistics interval ended, or -1 if no such statistics are included.
      long getDirreqStatsIntervalLength()
      Return the interval length of the included directory request statistics in seconds, or -1 if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2DirectDl()
      Return statistics on directory requests for v2 network statuses to the server's directory port with map keys being statistic keys and map values being statistic values like counts or quantiles, or null if no such statistics are included (which is the case with recent Tor versions).
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2Ips()
      Return statistics on unique IP addresses requesting v2 network statuses with map keys being country codes and map values being numbers of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included (which is the case with recent Tor versions).
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2Reqs()
      Return statistics on directory requests for v2 network statuses with map keys being country codes and map values being request numbers rounded up to the nearest multiple of 8, or null if no such statistics are included (which is the case with recent Tor versions).
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2Resp()
      Return statistics on responses to directory requests for v2 network statuses with map keys being response strings and map values being response numbers rounded up to the nearest multiple of 4, or null if no such statistics are included (which is the case with recent Tor versions).
      double getDirreqV2Share()
      Return the share of requests for v2 network statuses that the server expects to receive from clients, or -1.0 if this share is not included (which is the case with recent Tor versions).
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2TunneledDl()
      Return statistics on directory requests for v2 network statuses tunneled through a circuit with map keys being statistic keys and map values being statistic values, or null if no such statistics are included (which is the case with recent Tor versions).
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3DirectDl()
      Return statistics on directory requests for v3 network status consensuses of any flavor to the server's directory port with map keys being statistic keys and map values being statistic values like counts or quantiles, or null if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3Ips()
      Return statistics on unique IP addresses requesting v3 network status consensuses of any flavor with map keys being country codes and map values being numbers of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3Reqs()
      Return statistics on directory requests for v3 network status consensuses of any flavor with map keys being country codes and map values being request numbers rounded up to the nearest multiple of 8, or null if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3Resp()
      Return statistics on responses to directory requests for v3 network status consensuses of any flavor with map keys being response strings and map values being response numbers rounded up to the nearest multiple of 4, or null if no such statistics are included.
      double getDirreqV3Share()
      Return the share of requests for v3 network status consensuses of any flavor that the server expects to receive from clients, or -1.0 if this share is not included (which is the case with recent Tor versions).
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3TunneledDl()
      Return statistics on directory requests for v3 network status consensuses of any flavor tunneled through a circuit with map keys being statistic keys and map values being statistic values, or null if no such statistics are included.
      BandwidthHistory getDirreqWriteHistory()
      Return the directory request write history contained in this descriptor, or null if no such history is contained.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getEntryIps()
      Return statistics on client IP addresses with map keys being country codes and map values being the number of unique IP addresses that have connected from that country rounded up to the nearest multiple of 8, or null if no such statistics are included.
      long getEntryStatsEndMillis()
      Return the time in milliseconds since the epoch when the included entry statistics interval ended, or -1 if no such statistics are included.
      long getEntryStatsIntervalLength()
      Return the interval length of the included entry statistics in seconds, or -1 if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Long> getExitKibibytesRead()
      Return statistics on KiB read from streams exiting the Tor network by target TCP port with map keys being string representations of ports (or "other") and map values being KiB rounded up to the next full KiB, or null if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Long> getExitKibibytesWritten()
      Return statistics on KiB written to streams exiting the Tor network by target TCP port with map keys being string representations of ports (or "other") and map values being KiB rounded up to the next full KiB, or null if no such statistics are included.
      long getExitStatsEndMillis()
      Return the time in milliseconds since the epoch when the included exit statistics interval ended, or -1 if no such statistics are included.
      long getExitStatsIntervalLength()
      Return the interval length of the included exit statistics in seconds, or -1 if no such statistics are included.
      java.util.SortedMap<java.lang.String,​java.lang.Long> getExitStreamsOpened()
      Return statistics on opened streams exiting the Tor network by target TCP port with map keys being string representations of ports (or "other") and map values being the number of opened streams, rounded up to the nearest multiple of 4, or null if no such statistics are included.
      java.lang.String getFingerprint()
      Return a SHA-1 digest of the server's public identity key, encoded as 40 upper-case hexadecimal characters, that is typically used to uniquely identify the server.
      java.lang.String getGeoip6DbDigestSha1Hex()
      Return a SHA-1 digest of the GeoIPv6 database file used by this server to resolve client IP addresses to country codes, encoded as 40 upper-case hexadecimal characters, or null if no GeoIPv6 database digest is included.
      java.util.SortedMap<java.lang.String,​java.lang.Integer> getGeoipClientOrigins()
      Return statistics on the origin of client IP addresses with map keys being country codes and map values being the number of unique IP addresses that have connected from that country between the start of the statistics interval and the descriptor publication time rounded up to the nearest multiple of 8, or null if no such statistics are included (which is the case except for very old Tor versions).
      java.lang.String getGeoipDbDigestSha1Hex()
      Return a SHA-1 digest of the GeoIP database file used by this server to resolve client IP addresses to country codes, encoded as 40 upper-case hexadecimal characters, or null if no GeoIP database digest is included.
      long getGeoipStartTimeMillis()
      Return the time in milliseconds since the epoch when the included "geoip" statistics interval started, or -1 if no such statistics are included (which is the case except for very old Tor versions).
      java.lang.Double getHidservDirOnionsSeen()
      Return the approximate number of unique hidden-service identities seen in descriptors published to and accepted by this hidden-service directory, or null if no such statistics are included.
      java.util.Map<java.lang.String,​java.lang.Double> getHidservDirOnionsSeenParameters()
      Return the obfuscation parameters applied to the original measurement value of unique hidden-service identities seen in descriptors published to and accepted by this hidden-service directory, or null if no such statistics are included.
      java.lang.Double getHidservDirV3OnionsSeen()
      Return the approximate number of unique version 3 onion service identities seen in descriptors published to and accepted by this onion service directory, or null if no such statistics are included.
      java.util.Map<java.lang.String,​java.lang.Double> getHidservDirV3OnionsSeenParameters()
      Return the obfuscation parameters applied to the original measurement value of unique version 3 onion service identities seen in descriptors published to and accepted by this onion service directory, or null if no such statistics are included.
      java.lang.Double getHidservRendRelayedCells()
      Return the approximate number of RELAY cells seen in either direction on a circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
      java.util.Map<java.lang.String,​java.lang.Double> getHidservRendRelayedCellsParameters()
      Return the obfuscation parameters applied to the original measurement value of RELAY cells seen in either direction on a circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
      java.lang.Double getHidservRendV3RelayedCells()
      Return the approximate number of RELAY cells seen in either direction on a version 3 onion service circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
      java.util.Map<java.lang.String,​java.lang.Double> getHidservRendV3RelayedCellsParameters()
      Return the obfuscation parameters applied to the original measurement value of RELAY cells seen in either direction on a version 3 onion service circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
      long getHidservStatsEndMillis()
      Return the time in milliseconds since the epoch when the included hidden-service statistics interval ended, or -1 if no such statistics are included.
      long getHidservStatsIntervalLength()
      Return the interval length of the included hidden-service statistics in seconds, or -1 if no such statistics are included.
      long getHidservV3StatsEndMillis()
      Return the time in milliseconds since the epoch when the included version 3 onion service statistics interval ended, or -1 if no such statistics are included.
      long getHidservV3StatsIntervalLength()
      Return the interval length of the included version 3 onion service statistics in seconds, or -1 if no such statistics are included.
      java.lang.String getIdentityEd25519()
      Return the Ed25519 certificate in PEM format, or null if the descriptor doesn't contain one.
      int getIpv6ConnBiDirectBelow()
      Return the number of IPv6 connections on which this server read and wrote less than 2 KiB/s in a 10-second interval, or -1 if no such statistics are included.
      int getIpv6ConnBiDirectBoth()
      Return the number of IPv6 connections on which this server read and wrote at least 2 KiB/s in a 10-second interval but not 10 times more in either direction, or -1 if no such statistics are included.
      int getIpv6ConnBiDirectRead()
      Return the number of IPv6 connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in read direction than in write direction, or -1 if no such statistics are included.
      long getIpv6ConnBiDirectStatsEndMillis()
      Return the time in milliseconds since the epoch when the included statistics on bi-directional IPv6 connection usage ended, or -1 if no such statistics are included.
      long getIpv6ConnBiDirectStatsIntervalLength()
      Return the interval length of the included statistics on bi-directional IPv6 connection usage in seconds, or -1 if no such statistics are included.
      int getIpv6ConnBiDirectWrite()
      Return the number of IPv6 connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in write direction than in read direction, or -1 if no such statistics are included.
      BandwidthHistory getIpv6ReadHistory()
      Return the server's history of read IPv6 bytes, or null if the descriptor does not contain a bandwidth history.
      BandwidthHistory getIpv6WriteHistory()
      Return the server's history of written IPv6 bytes, or null if the descriptor does not contain a bandwidth history.
      java.lang.String getMasterKeyEd25519()
      Return the Ed25519 master key, encoded as 43 base64 characters without padding characters, which was either parsed from the optional "master-key-ed25519" line or derived from the (likewise optional) Ed25519 certificate following the "identity-ed25519" line, or null if the descriptor contains neither Ed25519 master key nor Ed25519 certificate.
      java.lang.String getNickname()
      Return the server's nickname consisting of 1 to 19 alphanumeric characters.
      java.util.Map<java.lang.String,​java.lang.Long> getPaddingCounts()
      Return padding-counts statistics, or null if no such statistics are included.
      long getPaddingCountsStatsEndMillis()
      Return the time in milliseconds since the epoch when the included padding-counts statistics ended, or -1 if no such statistics are included.
      long getPaddingCountsStatsIntervalLength()
      Return the interval length of the included padding-counts statistics in seconds, or -1 if no such statistics are included.
      long getPublishedMillis()
      Return the time in milliseconds since the epoch when this descriptor and the corresponding server descriptor were generated.
      BandwidthHistory getReadHistory()
      Return the server's history of read bytes, or null if the descriptor does not contain a bandwidth history; older Tor versions included bandwidth histories in their server descriptors (ServerDescriptor.getReadHistory()).
      java.lang.String getRouterSignature()
      Return the RSA-1024 signature of the PKCS1-padded descriptor digest, taken from the beginning of the router line through the newline after the router-signature line, or null if the descriptor doesn't contain a signature (which is the case in sanitized bridge descriptors).
      java.lang.String getRouterSignatureEd25519()
      Return the Ed25519 signature of the SHA-256 digest of the entire descriptor, encoded as 86 base64 characters without padding characters, from the first character up to and including the first space after the "router-sig-ed25519" string, prefixed with the string "Tor router descriptor signature v1".
      java.util.List<java.lang.String> getTransports()
      Return the (possibly empty) list of pluggable transports supported by this server.
      BandwidthHistory getWriteHistory()
      Return the server's history of written bytes, or null if the descriptor does not contain a bandwidth history; older Tor versions included bandwidth histories in their server descriptors (ServerDescriptor.getWriteHistory()).
    • Method Detail

      • getDigestSha1Hex

        java.lang.String getDigestSha1Hex()
        Return the SHA-1 descriptor digest, encoded as 40 lower-case (relay descriptors) or upper-case (bridge descriptors) hexadecimal characters, that is used to reference this descriptor from a server descriptor.
        Since:
        1.7.0
      • getDigestSha256Base64

        java.lang.String getDigestSha256Base64()
        Return the SHA-256 descriptor digest, encoded as 43 base64 characters without padding characters, that may be used to reference this descriptor from a server descriptor.
        Since:
        1.7.0
      • getNickname

        java.lang.String getNickname()
        Return the server's nickname consisting of 1 to 19 alphanumeric characters.
        Since:
        1.0.0
      • getFingerprint

        java.lang.String getFingerprint()
        Return a SHA-1 digest of the server's public identity key, encoded as 40 upper-case hexadecimal characters, that is typically used to uniquely identify the server.
        Since:
        1.0.0
      • getPublishedMillis

        long getPublishedMillis()
        Return the time in milliseconds since the epoch when this descriptor and the corresponding server descriptor were generated.
        Since:
        1.0.0
      • getReadHistory

        BandwidthHistory getReadHistory()
        Return the server's history of read bytes, or null if the descriptor does not contain a bandwidth history; older Tor versions included bandwidth histories in their server descriptors (ServerDescriptor.getReadHistory()).
        Since:
        1.0.0
      • getWriteHistory

        BandwidthHistory getWriteHistory()
        Return the server's history of written bytes, or null if the descriptor does not contain a bandwidth history; older Tor versions included bandwidth histories in their server descriptors (ServerDescriptor.getWriteHistory()).
        Since:
        1.0.0
      • getIpv6WriteHistory

        BandwidthHistory getIpv6WriteHistory()
        Return the server's history of written IPv6 bytes, or null if the descriptor does not contain a bandwidth history.
        Since:
        2.14.0
      • getIpv6ReadHistory

        BandwidthHistory getIpv6ReadHistory()
        Return the server's history of read IPv6 bytes, or null if the descriptor does not contain a bandwidth history.
        Since:
        2.14.0
      • getGeoipDbDigestSha1Hex

        java.lang.String getGeoipDbDigestSha1Hex()
        Return a SHA-1 digest of the GeoIP database file used by this server to resolve client IP addresses to country codes, encoded as 40 upper-case hexadecimal characters, or null if no GeoIP database digest is included.
        Since:
        1.7.0
      • getGeoip6DbDigestSha1Hex

        java.lang.String getGeoip6DbDigestSha1Hex()
        Return a SHA-1 digest of the GeoIPv6 database file used by this server to resolve client IP addresses to country codes, encoded as 40 upper-case hexadecimal characters, or null if no GeoIPv6 database digest is included.
        Since:
        1.7.0
      • getDirreqStatsEndMillis

        long getDirreqStatsEndMillis()
        Return the time in milliseconds since the epoch when the included directory request statistics interval ended, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getDirreqStatsIntervalLength

        long getDirreqStatsIntervalLength()
        Return the interval length of the included directory request statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getDirreqV2Ips

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2Ips()
        Return statistics on unique IP addresses requesting v2 network statuses with map keys being country codes and map values being numbers of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV3Ips

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3Ips()
        Return statistics on unique IP addresses requesting v3 network status consensuses of any flavor with map keys being country codes and map values being numbers of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getDirreqV2Reqs

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2Reqs()
        Return statistics on directory requests for v2 network statuses with map keys being country codes and map values being request numbers rounded up to the nearest multiple of 8, or null if no such statistics are included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV3Reqs

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3Reqs()
        Return statistics on directory requests for v3 network status consensuses of any flavor with map keys being country codes and map values being request numbers rounded up to the nearest multiple of 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getDirreqV2Share

        double getDirreqV2Share()
        Return the share of requests for v2 network statuses that the server expects to receive from clients, or -1.0 if this share is not included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV3Share

        double getDirreqV3Share()
        Return the share of requests for v3 network status consensuses of any flavor that the server expects to receive from clients, or -1.0 if this share is not included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV2Resp

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2Resp()
        Return statistics on responses to directory requests for v2 network statuses with map keys being response strings and map values being response numbers rounded up to the nearest multiple of 4, or null if no such statistics are included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV3Resp

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3Resp()
        Return statistics on responses to directory requests for v3 network status consensuses of any flavor with map keys being response strings and map values being response numbers rounded up to the nearest multiple of 4, or null if no such statistics are included.
        Since:
        1.0.0
      • getDirreqV2DirectDl

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2DirectDl()
        Return statistics on directory requests for v2 network statuses to the server's directory port with map keys being statistic keys and map values being statistic values like counts or quantiles, or null if no such statistics are included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV3DirectDl

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3DirectDl()
        Return statistics on directory requests for v3 network status consensuses of any flavor to the server's directory port with map keys being statistic keys and map values being statistic values like counts or quantiles, or null if no such statistics are included.
        Since:
        1.0.0
      • getDirreqV2TunneledDl

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV2TunneledDl()
        Return statistics on directory requests for v2 network statuses tunneled through a circuit with map keys being statistic keys and map values being statistic values, or null if no such statistics are included (which is the case with recent Tor versions).
        Since:
        1.0.0
      • getDirreqV3TunneledDl

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getDirreqV3TunneledDl()
        Return statistics on directory requests for v3 network status consensuses of any flavor tunneled through a circuit with map keys being statistic keys and map values being statistic values, or null if no such statistics are included.
        Since:
        1.0.0
      • getDirreqReadHistory

        BandwidthHistory getDirreqReadHistory()
        Return the directory request read history contained in this descriptor, or null if no such history is contained.
        Since:
        1.0.0
      • getDirreqWriteHistory

        BandwidthHistory getDirreqWriteHistory()
        Return the directory request write history contained in this descriptor, or null if no such history is contained.
        Since:
        1.0.0
      • getEntryStatsEndMillis

        long getEntryStatsEndMillis()
        Return the time in milliseconds since the epoch when the included entry statistics interval ended, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getEntryStatsIntervalLength

        long getEntryStatsIntervalLength()
        Return the interval length of the included entry statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getEntryIps

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getEntryIps()
        Return statistics on client IP addresses with map keys being country codes and map values being the number of unique IP addresses that have connected from that country rounded up to the nearest multiple of 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getCellStatsEndMillis

        long getCellStatsEndMillis()
        Return the time in milliseconds since the epoch when the included cell statistics interval ended, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getCellStatsIntervalLength

        long getCellStatsIntervalLength()
        Return the interval length of the included cell statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getCellProcessedCells

        java.util.List<java.lang.Integer> getCellProcessedCells()
        Return the mean number of processed cells per circuit by circuit decile starting with the loudest decile at index 0 and the quietest decile at index 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getCellQueuedCells

        java.util.List<java.lang.Double> getCellQueuedCells()
        Return the mean number of cells contained in circuit queues by circuit decile starting with the loudest decile at index 0 and the quietest decile at index 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getCellTimeInQueue

        java.util.List<java.lang.Integer> getCellTimeInQueue()
        Return the mean times in milliseconds that cells spend in circuit queues by circuit decile starting with the loudest decile at index 0 and the quietest decile at index 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getCellCircuitsPerDecile

        int getCellCircuitsPerDecile()
        Return the mean number of circuits included in any of the cell statistics deciles, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getConnBiDirectStatsEndMillis

        long getConnBiDirectStatsEndMillis()
        Return the time in milliseconds since the epoch when the included statistics on bi-directional connection usage ended, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getConnBiDirectStatsIntervalLength

        long getConnBiDirectStatsIntervalLength()
        Return the interval length of the included statistics on bi-directional connection usage in seconds, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getConnBiDirectBelow

        int getConnBiDirectBelow()
        Return the number of connections on which this server read and wrote less than 2 KiB/s in a 10-second interval, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getConnBiDirectRead

        int getConnBiDirectRead()
        Return the number of connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in read direction than in write direction, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getConnBiDirectWrite

        int getConnBiDirectWrite()
        Return the number of connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in write direction than in read direction, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getConnBiDirectBoth

        int getConnBiDirectBoth()
        Return the number of connections on which this server read and wrote at least 2 KiB/s in a 10-second interval but not 10 times more in either direction, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getIpv6ConnBiDirectStatsEndMillis

        long getIpv6ConnBiDirectStatsEndMillis()
        Return the time in milliseconds since the epoch when the included statistics on bi-directional IPv6 connection usage ended, or -1 if no such statistics are included.
        Since:
        2.14.0
      • getIpv6ConnBiDirectStatsIntervalLength

        long getIpv6ConnBiDirectStatsIntervalLength()
        Return the interval length of the included statistics on bi-directional IPv6 connection usage in seconds, or -1 if no such statistics are included.
        Since:
        2.14.0
      • getIpv6ConnBiDirectBelow

        int getIpv6ConnBiDirectBelow()
        Return the number of IPv6 connections on which this server read and wrote less than 2 KiB/s in a 10-second interval, or -1 if no such statistics are included.
        Since:
        2.14.0
      • getIpv6ConnBiDirectRead

        int getIpv6ConnBiDirectRead()
        Return the number of IPv6 connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in read direction than in write direction, or -1 if no such statistics are included.
        Since:
        2.14.0
      • getIpv6ConnBiDirectWrite

        int getIpv6ConnBiDirectWrite()
        Return the number of IPv6 connections on which this server read and wrote at least 2 KiB/s in a 10-second interval and at least 10 times more in write direction than in read direction, or -1 if no such statistics are included.
        Since:
        2.14.0
      • getIpv6ConnBiDirectBoth

        int getIpv6ConnBiDirectBoth()
        Return the number of IPv6 connections on which this server read and wrote at least 2 KiB/s in a 10-second interval but not 10 times more in either direction, or -1 if no such statistics are included.
        Since:
        2.14.0
      • getExitStatsEndMillis

        long getExitStatsEndMillis()
        Return the time in milliseconds since the epoch when the included exit statistics interval ended, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getExitStatsIntervalLength

        long getExitStatsIntervalLength()
        Return the interval length of the included exit statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getExitKibibytesWritten

        java.util.SortedMap<java.lang.String,​java.lang.Long> getExitKibibytesWritten()
        Return statistics on KiB written to streams exiting the Tor network by target TCP port with map keys being string representations of ports (or "other") and map values being KiB rounded up to the next full KiB, or null if no such statistics are included.
        Since:
        1.0.0
      • getExitKibibytesRead

        java.util.SortedMap<java.lang.String,​java.lang.Long> getExitKibibytesRead()
        Return statistics on KiB read from streams exiting the Tor network by target TCP port with map keys being string representations of ports (or "other") and map values being KiB rounded up to the next full KiB, or null if no such statistics are included.
        Since:
        1.0.0
      • getExitStreamsOpened

        java.util.SortedMap<java.lang.String,​java.lang.Long> getExitStreamsOpened()
        Return statistics on opened streams exiting the Tor network by target TCP port with map keys being string representations of ports (or "other") and map values being the number of opened streams, rounded up to the nearest multiple of 4, or null if no such statistics are included.
        Since:
        1.0.0
      • getGeoipStartTimeMillis

        long getGeoipStartTimeMillis()
        Return the time in milliseconds since the epoch when the included "geoip" statistics interval started, or -1 if no such statistics are included (which is the case except for very old Tor versions).
        Since:
        1.0.0
      • getGeoipClientOrigins

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getGeoipClientOrigins()
        Return statistics on the origin of client IP addresses with map keys being country codes and map values being the number of unique IP addresses that have connected from that country between the start of the statistics interval and the descriptor publication time rounded up to the nearest multiple of 8, or null if no such statistics are included (which is the case except for very old Tor versions).
        Since:
        1.0.0
      • getBridgeStatsEndMillis

        long getBridgeStatsEndMillis()
        Return the time in milliseconds since the epoch when the included bridge statistics interval ended, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getBridgeStatsIntervalLength

        long getBridgeStatsIntervalLength()
        Return the interval length of the included bridge statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.0.0
      • getBridgeIps

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getBridgeIps()
        Return statistics on bridge client IP addresses by country with map keys being country codes and map values being the number of unique IP addresses that have connected from that country rounded up to the nearest multiple of 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getBridgeIpVersions

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getBridgeIpVersions()
        Return statistics on bridge client IP addresses by IP version with map keys being protocol families, e.g., "v4" or "v6", and map values being the number of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getBridgeIpTransports

        java.util.SortedMap<java.lang.String,​java.lang.Integer> getBridgeIpTransports()
        Return statistics on bridge client IP addresses by transport with map keys being pluggable transport names, e.g., "obfs2" or "obfs3" for known transports, "<OR>" for the default onion routing protocol, or "<??>" for an unknown transport, and map values being the number of unique IP addresses rounded up to the nearest multiple of 8, or null if no such statistics are included.
        Since:
        1.0.0
      • getTransports

        java.util.List<java.lang.String> getTransports()
        Return the (possibly empty) list of pluggable transports supported by this server.
        Since:
        1.0.0
      • getHidservStatsEndMillis

        long getHidservStatsEndMillis()
        Return the time in milliseconds since the epoch when the included hidden-service statistics interval ended, or -1 if no such statistics are included.
        Since:
        1.1.0
      • getHidservStatsIntervalLength

        long getHidservStatsIntervalLength()
        Return the interval length of the included hidden-service statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.1.0
      • getHidservRendRelayedCells

        java.lang.Double getHidservRendRelayedCells()
        Return the approximate number of RELAY cells seen in either direction on a circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
        Since:
        1.1.0
      • getHidservRendRelayedCellsParameters

        java.util.Map<java.lang.String,​java.lang.Double> getHidservRendRelayedCellsParameters()
        Return the obfuscation parameters applied to the original measurement value of RELAY cells seen in either direction on a circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
        Since:
        1.1.0
      • getHidservDirOnionsSeen

        java.lang.Double getHidservDirOnionsSeen()
        Return the approximate number of unique hidden-service identities seen in descriptors published to and accepted by this hidden-service directory, or null if no such statistics are included.
        Since:
        1.1.0
      • getHidservDirOnionsSeenParameters

        java.util.Map<java.lang.String,​java.lang.Double> getHidservDirOnionsSeenParameters()
        Return the obfuscation parameters applied to the original measurement value of unique hidden-service identities seen in descriptors published to and accepted by this hidden-service directory, or null if no such statistics are included.
        Since:
        1.1.0
      • getHidservV3StatsEndMillis

        long getHidservV3StatsEndMillis()
        Return the time in milliseconds since the epoch when the included version 3 onion service statistics interval ended, or -1 if no such statistics are included.
        Since:
        2.15.0
      • getHidservV3StatsIntervalLength

        long getHidservV3StatsIntervalLength()
        Return the interval length of the included version 3 onion service statistics in seconds, or -1 if no such statistics are included.
        Since:
        2.15.0
      • getHidservRendV3RelayedCells

        java.lang.Double getHidservRendV3RelayedCells()
        Return the approximate number of RELAY cells seen in either direction on a version 3 onion service circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
        Since:
        2.15.0
      • getHidservRendV3RelayedCellsParameters

        java.util.Map<java.lang.String,​java.lang.Double> getHidservRendV3RelayedCellsParameters()
        Return the obfuscation parameters applied to the original measurement value of RELAY cells seen in either direction on a version 3 onion service circuit after receiving and successfully processing a RENDEZVOUS1 cell, or null if no such statistics are included.
        Since:
        2.15.0
      • getHidservDirV3OnionsSeen

        java.lang.Double getHidservDirV3OnionsSeen()
        Return the approximate number of unique version 3 onion service identities seen in descriptors published to and accepted by this onion service directory, or null if no such statistics are included.
        Since:
        2.15.0
      • getHidservDirV3OnionsSeenParameters

        java.util.Map<java.lang.String,​java.lang.Double> getHidservDirV3OnionsSeenParameters()
        Return the obfuscation parameters applied to the original measurement value of unique version 3 onion service identities seen in descriptors published to and accepted by this onion service directory, or null if no such statistics are included.
        Since:
        2.15.0
      • getPaddingCountsStatsEndMillis

        long getPaddingCountsStatsEndMillis()
        Return the time in milliseconds since the epoch when the included padding-counts statistics ended, or -1 if no such statistics are included.
        Since:
        1.7.0
      • getPaddingCountsStatsIntervalLength

        long getPaddingCountsStatsIntervalLength()
        Return the interval length of the included padding-counts statistics in seconds, or -1 if no such statistics are included.
        Since:
        1.7.0
      • getPaddingCounts

        java.util.Map<java.lang.String,​java.lang.Long> getPaddingCounts()
        Return padding-counts statistics, or null if no such statistics are included.
        Since:
        1.7.0
      • getRouterSignature

        java.lang.String getRouterSignature()
        Return the RSA-1024 signature of the PKCS1-padded descriptor digest, taken from the beginning of the router line through the newline after the router-signature line, or null if the descriptor doesn't contain a signature (which is the case in sanitized bridge descriptors).
        Since:
        1.1.0
      • getIdentityEd25519

        java.lang.String getIdentityEd25519()
        Return the Ed25519 certificate in PEM format, or null if the descriptor doesn't contain one.
        Since:
        1.1.0
      • getMasterKeyEd25519

        java.lang.String getMasterKeyEd25519()
        Return the Ed25519 master key, encoded as 43 base64 characters without padding characters, which was either parsed from the optional "master-key-ed25519" line or derived from the (likewise optional) Ed25519 certificate following the "identity-ed25519" line, or null if the descriptor contains neither Ed25519 master key nor Ed25519 certificate.
        Since:
        1.1.0
      • getRouterSignatureEd25519

        java.lang.String getRouterSignatureEd25519()
        Return the Ed25519 signature of the SHA-256 digest of the entire descriptor, encoded as 86 base64 characters without padding characters, from the first character up to and including the first space after the "router-sig-ed25519" string, prefixed with the string "Tor router descriptor signature v1".
        Since:
        1.1.0