[tor-commits] [metrics-lib/master] Fix legacy-dir-key line parsing in votes.

karsten at torproject.org karsten at torproject.org
Sat Feb 25 12:03:45 UTC 2012


commit 8664260c1f63381d81ebdd5fddeedb300afe29d5
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Fri Feb 17 07:48:53 2012 +0100

    Fix legacy-dir-key line parsing in votes.
---
 .../descriptor/RelayNetworkStatusVote.java         |    6 ++--
 .../impl/RelayNetworkStatusVoteImpl.java           |   14 +++++-----
 .../impl/RelayNetworkStatusVoteImplTest.java       |   24 ++++++++++++++++++++
 3 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/src/org/torproject/descriptor/RelayNetworkStatusVote.java b/src/org/torproject/descriptor/RelayNetworkStatusVote.java
index 3dd82bc..f9635e2 100644
--- a/src/org/torproject/descriptor/RelayNetworkStatusVote.java
+++ b/src/org/torproject/descriptor/RelayNetworkStatusVote.java
@@ -68,9 +68,9 @@ public interface RelayNetworkStatusVote extends Descriptor {
   /* Return the directory key certificate version. */
   public int getDirKeyCertificateVersion();
 
-  /* Return the legacy key or null if the directory authority does not use
-   * a legacy key. */
-  public String getLegacyKey();
+  /* Return the legacy dir key or null if the directory authority does not
+   * use a legacy dir key. */
+  public String getLegacyDirKey();
 
   /* Return the directory key publication timestamp. */
   public long getDirKeyPublishedMillis();
diff --git a/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java b/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
index 3729f75..a00cd75 100644
--- a/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
+++ b/src/org/torproject/descriptor/impl/RelayNetworkStatusVoteImpl.java
@@ -255,8 +255,8 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
           this.parseDirAddressLine(line, parts);
         } else if (keyword.equals("fingerprint")) {
           this.parseFingerprintLine(line, parts);
-        } else if (keyword.equals("legacy-key")) {
-          this.parseLegacyKeyLine(line, parts);
+        } else if (keyword.equals("legacy-dir-key")) {
+          this.parseLegacyDirKeyLine(line, parts);
         } else if (keyword.equals("dir-key-published")) {
           this.parseDirKeyPublished(line, parts);
         } else if (keyword.equals("dir-key-expires")) {
@@ -349,12 +349,12 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
     ParseHelper.parseTwentyByteHexString(line, parts[1]);
   }
 
-  private void parseLegacyKeyLine(String line, String[] parts)
+  private void parseLegacyDirKeyLine(String line, String[] parts)
       throws DescriptorParseException {
     if (parts.length != 2) {
       throw new DescriptorParseException("Illegal line '" + line + "'.");
     }
-    this.legacyKey = ParseHelper.parseTwentyByteHexString(line, parts[2]);
+    this.legacyDirKey = ParseHelper.parseTwentyByteHexString(line, parts[1]);
   }
 
   private void parseDirKeyPublished(String line, String[] parts)
@@ -430,9 +430,9 @@ public class RelayNetworkStatusVoteImpl extends NetworkStatusImpl
     return this.dirKeyCertificateVersion;
   }
 
-  private String legacyKey;
-  public String getLegacyKey() {
-    return this.legacyKey;
+  private String legacyDirKey;
+  public String getLegacyDirKey() {
+    return this.legacyDirKey;
   }
 
   private long dirKeyPublishedMillis;
diff --git a/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java b/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
index e907086..8a60eec 100644
--- a/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
+++ b/test/org/torproject/descriptor/impl/RelayNetworkStatusVoteImplTest.java
@@ -146,6 +146,14 @@ public class RelayNetworkStatusVoteImplTest {
       vb.contactLine = line;
       return new RelayNetworkStatusVoteImpl(vb.buildVote(), true);
     }
+    private String legacyDirKeyLine = null;
+    private static RelayNetworkStatusVote
+        createWithLegacyDirKeyLine(String line)
+        throws DescriptorParseException {
+      VoteBuilder vb = new VoteBuilder();
+      vb.legacyDirKeyLine = line;
+      return new RelayNetworkStatusVoteImpl(vb.buildVote(), true);
+    }
     private String dirKeyCertificateVersionLine =
         "dir-key-certificate-version 3";
     private static RelayNetworkStatusVote
@@ -394,6 +402,9 @@ public class RelayNetworkStatusVoteImplTest {
       if (this.contactLine != null) {
         sb.append(this.contactLine + "\n");
       }
+      if (this.legacyDirKeyLine != null) {
+        sb.append(this.legacyDirKeyLine + "\n");
+      }
       if (this.dirKeyCertificateVersionLine != null) {
         sb.append(this.dirKeyCertificateVersionLine + "\n");
       }
@@ -902,6 +913,19 @@ public class RelayNetworkStatusVoteImplTest {
         + "Appelbaum <jacob at appelbaum.net>");
   }
 
+  @Test()
+  public void testLegacyDirKeyLine() throws DescriptorParseException {
+    RelayNetworkStatusVote vote = VoteBuilder.createWithLegacyDirKeyLine(
+        "legacy-dir-key 81349FC1F2DBA2C2C11B45CB9706637D480AB913");
+    assertEquals("81349FC1F2DBA2C2C11B45CB9706637D480AB913",
+        vote.getLegacyDirKey());
+  }
+
+  @Test(expected = DescriptorParseException.class)
+  public void testLegacyDirKeyLineNoId() throws DescriptorParseException {
+    VoteBuilder.createWithLegacyDirKeyLine("legacy-dir-key ");
+  }
+
   @Test(expected = DescriptorParseException.class)
   public void testDirKeyCertificateVersionLineMissing()
       throws DescriptorParseException {





More information about the tor-commits mailing list