/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
package org.mozilla.gecko.sync.crypto.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import org.junit.Test;
import org.mozilla.apache.commons.codec.binary.Base32;
import org.mozilla.gecko.sync.Utils;
public class TestBase32 {
public static void assertSame(byte[] arrayOne, byte[] arrayTwo) {
assertTrue(Arrays.equals(arrayOne, arrayTwo));
}
@Test
public void testBase32() throws UnsupportedEncodingException {
byte[] decoded = new Base32().decode("MZXW6YTBOI======");
byte[] expected = "foobar".getBytes();
assertSame(decoded, expected);
byte[] encoded = new Base32().encode("fooba".getBytes());
expected = "MZXW6YTB".getBytes();
assertSame(encoded, expected);
}
@Test
public void testFriendlyBase32() {
// These checks are drawn from Firefox, test_utils_encodeBase32.js.
byte[] decoded = Utils.decodeFriendlyBase32("mzxw6ytb9jrgcztpn5rgc4tcme");
byte[] expected = "foobarbafoobarba".getBytes();
assertEquals(decoded.length, 16);
assertSame(decoded, expected);
// These are real values extracted from the Service object in a Firefox profile.
String base32Key = "6m8mv8ex2brqnrmsb9fjuvfg7y";
String expectedHex = "f316caac97d06306c5920b8a9a54a6fe";
byte[] computedBytes = Utils.decodeFriendlyBase32(base32Key);
byte[] expectedBytes = Utils.hex2Byte(expectedHex);
assertSame(computedBytes, expectedBytes);
}
}