mirror of https://github.com/shred/acme4j
Read base64 encoded binary from JSON
parent
e52a900001
commit
4426a4a210
|
@ -99,6 +99,17 @@ public final class AcmeUtils {
|
||||||
return Base64Url.encode(data);
|
return Base64Url.encode(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Base64 decodes to a byte array, using URL style encoding.
|
||||||
|
*
|
||||||
|
* @param base64
|
||||||
|
* base64 encoded string
|
||||||
|
* @return decoded data
|
||||||
|
*/
|
||||||
|
public static byte[] base64UrlDecode(String base64) {
|
||||||
|
return Base64Url.decode(base64);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ASCII encodes a domain name.
|
* ASCII encodes a domain name.
|
||||||
* <p>
|
* <p>
|
||||||
|
|
|
@ -393,6 +393,19 @@ public final class JSON implements Serializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the value as base64 decoded byte array.
|
||||||
|
*
|
||||||
|
* @return byte array, or {@code null} if the value was not set.
|
||||||
|
*/
|
||||||
|
public byte[] asBinary() {
|
||||||
|
if (val == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return AcmeUtils.base64UrlDecode(val.toString());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the parsed status.
|
* Returns the parsed status.
|
||||||
*
|
*
|
||||||
|
|
|
@ -84,6 +84,15 @@ public class AcmeUtilsTest {
|
||||||
assertThat(base64UrlEncode, is("w6uP8Tcg6K2QR905Rms8iXTlksL6OD1KOWBxTK7wxPI"));
|
assertThat(base64UrlEncode, is("w6uP8Tcg6K2QR905Rms8iXTlksL6OD1KOWBxTK7wxPI"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test base64 URL decode.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testBase64UrlDecode() {
|
||||||
|
byte[] base64UrlDecode = base64UrlDecode("w6uP8Tcg6K2QR905Rms8iXTlksL6OD1KOWBxTK7wxPI");
|
||||||
|
assertThat(base64UrlDecode, is(sha256hash("foobar")));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test ACE conversion.
|
* Test ACE conversion.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class JSONTest {
|
||||||
|
|
||||||
assertThat(json.keySet(), containsInAnyOrder(
|
assertThat(json.keySet(), containsInAnyOrder(
|
||||||
"text", "number", "boolean", "uri", "url", "date", "array",
|
"text", "number", "boolean", "uri", "url", "date", "array",
|
||||||
"collect", "status"));
|
"collect", "status", "binary"));
|
||||||
assertThat(json.contains("text"), is(true));
|
assertThat(json.contains("text"), is(true));
|
||||||
assertThat(json.contains("music"), is(false));
|
assertThat(json.contains("music"), is(false));
|
||||||
assertThat(json.get("text"), is(notNullValue()));
|
assertThat(json.get("text"), is(notNullValue()));
|
||||||
|
@ -181,6 +181,7 @@ public class JSONTest {
|
||||||
assertThat(json.get("url").asURL(), is(new URL("http://example.com")));
|
assertThat(json.get("url").asURL(), is(new URL("http://example.com")));
|
||||||
assertThat(json.get("date").asInstant(), is(date));
|
assertThat(json.get("date").asInstant(), is(date));
|
||||||
assertThat(json.get("status").asStatusOrElse(Status.INVALID), is(Status.VALID));
|
assertThat(json.get("status").asStatusOrElse(Status.INVALID), is(Status.VALID));
|
||||||
|
assertThat(json.get("binary").asBinary(), is("Chainsaw".getBytes()));
|
||||||
|
|
||||||
JSON.Array array = json.get("array").asArray();
|
JSON.Array array = json.get("array").asArray();
|
||||||
assertThat(array.get(0).asString(), is("foo"));
|
assertThat(array.get(0).asString(), is("foo"));
|
||||||
|
@ -209,6 +210,7 @@ public class JSONTest {
|
||||||
assertThat(json.get("none").asInstant(), is(nullValue()));
|
assertThat(json.get("none").asInstant(), is(nullValue()));
|
||||||
assertThat(json.get("none").asObject(), is(nullValue()));
|
assertThat(json.get("none").asObject(), is(nullValue()));
|
||||||
assertThat(json.get("none").asStatusOrElse(Status.INVALID), is(Status.INVALID));
|
assertThat(json.get("none").asStatusOrElse(Status.INVALID), is(Status.INVALID));
|
||||||
|
assertThat(json.get("none").asBinary(), is(nullValue()));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
json.get("none").asInt();
|
json.get("none").asInt();
|
||||||
|
|
|
@ -45,7 +45,8 @@ json = \
|
||||||
"date": "2016-01-08T00:00:00Z",\
|
"date": "2016-01-08T00:00:00Z",\
|
||||||
"array": ["foo", 987, [1, 2, 3], {"test": "ok"}],\
|
"array": ["foo", 987, [1, 2, 3], {"test": "ok"}],\
|
||||||
"collect": ["foo", "bar", "barfoo"],\
|
"collect": ["foo", "bar", "barfoo"],\
|
||||||
"status": "VALID"\
|
"status": "VALID",\
|
||||||
|
"binary": "Q2hhaW5zYXc"\
|
||||||
}
|
}
|
||||||
|
|
||||||
newRegistration = \
|
newRegistration = \
|
||||||
|
|
Loading…
Reference in New Issue