aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2014-08-06 19:41:51 +0000
committerFlorian Dold <florian.dold@gmail.com>2014-08-06 19:41:51 +0000
commit92844bdea0fd13eee6d7aa738681321bf43052a4 (patch)
treed00ceb4bc2603be3df759f3acaf85a389dca9717
parent430a7c7d6450904e5586a5ab5023c54621e73dd8 (diff)
downloadgnunet-java-92844bdea0fd13eee6d7aa738681321bf43052a4.tar.gz
gnunet-java-92844bdea0fd13eee6d7aa738681321bf43052a4.zip
fix string en-/decoding
-rw-r--r--src/main/java/org/gnunet/util/Strings.java47
-rw-r--r--src/test/java/org/gnunet/util/PeerIdentityTest.java9
2 files changed, 50 insertions, 6 deletions
diff --git a/src/main/java/org/gnunet/util/Strings.java b/src/main/java/org/gnunet/util/Strings.java
index 8de30ab..1efaecf 100644
--- a/src/main/java/org/gnunet/util/Strings.java
+++ b/src/main/java/org/gnunet/util/Strings.java
@@ -24,7 +24,7 @@ package org.gnunet.util;
24 * Common functions on Strings, specific to gnunet-java 24 * Common functions on Strings, specific to gnunet-java
25 */ 25 */
26public class Strings { 26public class Strings {
27 private static final String encTable = "0123456789ABCDEFGHIJKLMNOPQRSTUV"; 27 private static final String encTable = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
28 28
29 /** 29 /**
30 * Convert binary data to ASCII encoding. The ASCII encoding is rather 30 * Convert binary data to ASCII encoding. The ASCII encoding is rather
@@ -170,11 +170,45 @@ public class Strings {
170 } 170 }
171 171
172 private static int getValue(char a) { 172 private static int getValue(char a) {
173 if ((a >= '0') && (a <= '9')) { 173 int dec;
174 return a - '0'; 174
175 } 175 switch (a)
176 if ((a >= 'A') && (a <= 'V')) { 176 {
177 return (a - 'A' + 10); 177 case 'O':
178 case 'o':
179 a = '0';
180 break;
181 case 'i':
182 case 'I':
183 case 'l':
184 case 'L':
185 a = '1';
186 break;
187 /* also consider U to be V */
188 case 'u':
189 case 'U':
190 a = 'V';
191 break;
192 default:
193 break;
194 }
195 if ((a >= '0') && (a <= '9'))
196 return a - '0';
197 if ((a >= 'a') && (a <= 'z'))
198 a = Character.toUpperCase((char) a);
199 /* return (a - 'a' + 10); */
200 dec = 0;
201 if ((a >= 'A') && (a <= 'Z'))
202 {
203 if ('I' < a)
204 dec++;
205 if ('L' < a)
206 dec++;
207 if ('O' < a)
208 dec++;
209 if ('U' < a)
210 dec++;
211 return (a - 'A' + 10 - dec);
178 } 212 }
179 return -1; 213 return -1;
180 } 214 }
@@ -183,3 +217,4 @@ public class Strings {
183 return stringToData(s, getDecodedDataLength(s.length())); 217 return stringToData(s, getDecodedDataLength(s.length()));
184 } 218 }
185} 219}
220
diff --git a/src/test/java/org/gnunet/util/PeerIdentityTest.java b/src/test/java/org/gnunet/util/PeerIdentityTest.java
index ac09813..7dd8c95 100644
--- a/src/test/java/org/gnunet/util/PeerIdentityTest.java
+++ b/src/test/java/org/gnunet/util/PeerIdentityTest.java
@@ -19,5 +19,14 @@ public class PeerIdentityTest {
19 Assert.assertArrayEquals(peerIdentity.data, peerIdentity2.data); 19 Assert.assertArrayEquals(peerIdentity.data, peerIdentity2.data);
20 } 20 }
21 21
22 /**
23 * Test that new encoding works (test string from Ilya Migal)
24 */
25 @Test
26 public void test_ilya() {
27 PeerIdentity peerIdentity = PeerIdentity.fromString("NF0QZQSD5JEAXTK701H84YP0D2K0ZRM7GYA7MN2RFBJDJPVVYM90");
28 Assert.assertNotNull(peerIdentity);
29 }
30
22} 31}
23 32