Unverified Commit 6e22a197 authored by Georg Koppen's avatar Georg Koppen
Browse files

Merge remote-tracking branch 'gitlab/merge-requests/14'

Closes: #40018.
parents 0bdb96d7 eb313064
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -191,4 +191,12 @@ public interface NetworkStatusEntry extends Serializable {
   * @since 1.1.0
   */
  String getMasterKeyEd25519();

  /**
   * Return the server's supported consensus methods, or null if the status
   * entry didn't contain this information or if the status is not a vote.
   *
   * @since 1.2.20
   */
  String getSupportedConsensusMethods();
}
+20 −0
Original line number Diff line number Diff line
@@ -281,6 +281,7 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {

  private void parseMLine(String line, String[] parts)
      throws DescriptorParseException {
    boolean isValid = true;
    if (this.microdescriptorDigests == null) {
      this.microdescriptorDigests = new HashSet<>();
    }
@@ -292,6 +293,17 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
      ParseHelper.verifyThirtyTwoByteBase64String(line,
          parts[2].substring(7));
      this.microdescriptorDigests.add(parts[2].substring(7));
      this.supportedConsensusMethods = parts[1];
      String[] methods = parts[1].split(",", -1);
      for (String method : methods) {
        if (method.length() < 1) {
          isValid = false;
          break;
        }
      }
    }
    if (!isValid) {
      throw new DescriptorParseException("Illegal line '" + line + "'.");
    }
  }

@@ -451,4 +463,12 @@ public class NetworkStatusEntryImpl implements NetworkStatusEntry {
  public String getMasterKeyEd25519() {
    return this.masterKeyEd25519;
  }

  private String supportedConsensusMethods;

  @Override
  public String getSupportedConsensusMethods() {
    return this.supportedConsensusMethods;
  }

}
+1 −0
Original line number Diff line number Diff line
@@ -718,6 +718,7 @@ public class RelayNetworkStatusVoteImplTest {
        nse.getVersion());
    assertTrue(nse.getMicrodescriptorDigestsSha256Base64().contains(
        "9ciEx9t0McXk9A06I7qwN7pxuNOdpCP64RV/6cx2Zkc"));
    assertEquals("8,9,10,11", nse.getSupportedConsensusMethods());
    assertEquals(3, vote.getDirKeyCertificateVersion());
    assertEquals("80550987E1D626E3EBA5E5E75A458DE0626D088C",
        vote.getIdentity());