gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r34118 - in gnunet-java/src: main/java/org/gnunet/util test


From: gnunet
Subject: [GNUnet-SVN] r34118 - in gnunet-java/src: main/java/org/gnunet/util test/java/org/gnunet/util
Date: Wed, 6 Aug 2014 21:41:51 +0200

Author: dold
Date: 2014-08-06 21:41:51 +0200 (Wed, 06 Aug 2014)
New Revision: 34118

Modified:
   gnunet-java/src/main/java/org/gnunet/util/Strings.java
   gnunet-java/src/test/java/org/gnunet/util/PeerIdentityTest.java
Log:
fix string en-/decoding


Modified: gnunet-java/src/main/java/org/gnunet/util/Strings.java
===================================================================
--- gnunet-java/src/main/java/org/gnunet/util/Strings.java      2014-08-06 
18:38:27 UTC (rev 34117)
+++ gnunet-java/src/main/java/org/gnunet/util/Strings.java      2014-08-06 
19:41:51 UTC (rev 34118)
@@ -24,7 +24,7 @@
  * Common functions on Strings, specific to gnunet-java
  */
 public class Strings {
-    private static final String encTable = "0123456789ABCDEFGHIJKLMNOPQRSTUV";
+    private static final String encTable = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
 
     /**
      * Convert binary data to ASCII encoding.  The ASCII encoding is rather
@@ -170,12 +170,46 @@
     }
 
     private static int getValue(char a) {
-        if ((a >= '0') && (a <= '9')) {
-            return a - '0';
+        int dec;
+
+        switch (a)
+        {
+            case 'O':
+            case 'o':
+                a = '0';
+                break;
+            case 'i':
+            case 'I':
+            case 'l':
+            case 'L':
+                a = '1';
+                break;
+                /* also consider U to be V */
+            case 'u':
+            case 'U':
+                a = 'V';
+                break;
+            default:
+                break;
+            }
+            if ((a >= '0') && (a <= '9'))
+                return a - '0';
+            if ((a >= 'a') && (a <= 'z'))
+                a = Character.toUpperCase((char) a);
+                /* return (a - 'a' + 10); */
+            dec = 0;
+            if ((a >= 'A') && (a <= 'Z'))
+            {
+              if ('I' < a)
+                  dec++;
+              if ('L' < a)
+                  dec++;
+              if ('O' < a)
+                  dec++;
+              if ('U' < a)
+                  dec++;
+              return (a - 'A' + 10 - dec);
         }
-        if ((a >= 'A') && (a <= 'V')) {
-            return (a - 'A' + 10);
-        }
         return -1;
     }
 
@@ -183,3 +217,4 @@
         return stringToData(s, getDecodedDataLength(s.length()));
     }
 }
+

Modified: gnunet-java/src/test/java/org/gnunet/util/PeerIdentityTest.java
===================================================================
--- gnunet-java/src/test/java/org/gnunet/util/PeerIdentityTest.java     
2014-08-06 18:38:27 UTC (rev 34117)
+++ gnunet-java/src/test/java/org/gnunet/util/PeerIdentityTest.java     
2014-08-06 19:41:51 UTC (rev 34118)
@@ -19,5 +19,14 @@
         Assert.assertArrayEquals(peerIdentity.data, peerIdentity2.data);
     }
 
+    /**
+     * Test that new encoding works (test string from Ilya Migal)
+     */
+    @Test
+    public void test_ilya() {
+        PeerIdentity peerIdentity = 
PeerIdentity.fromString("NF0QZQSD5JEAXTK701H84YP0D2K0ZRM7GYA7MN2RFBJDJPVVYM90");
+        Assert.assertNotNull(peerIdentity);
+    }
+
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]