From 77da004c4808918a1896b306fe3071bb114bd809 Mon Sep 17 00:00:00 2001 From: kushal Date: Wed, 17 Jul 2019 14:17:32 -0700 Subject: [PATCH] Make Scheme::join() a static method --- README.md | 2 +- src/main/java/com/codahale/shamir/Scheme.java | 2 +- .../com/codahale/shamir/benchmarks/Benchmarks.java | 2 +- .../java/com/codahale/shamir/perf/LoadHarness.java | 2 +- .../java/com/codahale/shamir/tests/SchemeTest.java | 11 +++++------ 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 64ce109..8f95ea1 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ class Example { final Scheme scheme = new Scheme(new SecureRandom(), 5, 3); final byte[] secret = "hello there".getBytes(StandardCharsets.UTF_8); final Map parts = scheme.split(secret); - final byte[] recovered = scheme.join(parts); + final byte[] recovered = Scheme.join(parts); System.out.println(new String(recovered, StandardCharsets.UTF_8)); } } diff --git a/src/main/java/com/codahale/shamir/Scheme.java b/src/main/java/com/codahale/shamir/Scheme.java index db0e9b4..ee4d3dd 100644 --- a/src/main/java/com/codahale/shamir/Scheme.java +++ b/src/main/java/com/codahale/shamir/Scheme.java @@ -95,7 +95,7 @@ public Map split(byte[] secret) { * @throws IllegalArgumentException if {@code parts} is empty or contains values of varying * lengths */ - public byte[] join(Map parts) { + public static byte[] join(Map parts) { checkArgument(parts.size() > 0, "No parts provided"); final int[] lengths = parts.values().stream().mapToInt(v -> v.length).distinct().toArray(); checkArgument(lengths.length == 1, "Varying lengths of part values"); diff --git a/src/test/java/com/codahale/shamir/benchmarks/Benchmarks.java b/src/test/java/com/codahale/shamir/benchmarks/Benchmarks.java index d39a57b..85af408 100644 --- a/src/test/java/com/codahale/shamir/benchmarks/Benchmarks.java +++ b/src/test/java/com/codahale/shamir/benchmarks/Benchmarks.java @@ -60,6 +60,6 @@ public Map split() { @Benchmark public byte[] join() { - return scheme.join(parts); + return Scheme.join(parts); } } diff --git a/src/test/java/com/codahale/shamir/perf/LoadHarness.java b/src/test/java/com/codahale/shamir/perf/LoadHarness.java index d8a89de..c42f83e 100644 --- a/src/test/java/com/codahale/shamir/perf/LoadHarness.java +++ b/src/test/java/com/codahale/shamir/perf/LoadHarness.java @@ -24,7 +24,7 @@ public static void main(String[] args) { final byte[] secret = new byte[10 * 1024]; final Scheme scheme = new Scheme(new SecureRandom(), 200, 20); for (int i = 0; i < 100_000_000; i++) { - scheme.join(scheme.split(secret)); + Scheme.join(scheme.split(secret)); } } } diff --git a/src/test/java/com/codahale/shamir/tests/SchemeTest.java b/src/test/java/com/codahale/shamir/tests/SchemeTest.java index fbf47cd..ea05e90 100644 --- a/src/test/java/com/codahale/shamir/tests/SchemeTest.java +++ b/src/test/java/com/codahale/shamir/tests/SchemeTest.java @@ -62,7 +62,7 @@ void thresholdTooHigh() { @Test void joinEmptyParts() { - assertThatThrownBy(() -> new Scheme(new SecureRandom(), 3, 2).join(Collections.emptyMap())) + assertThatThrownBy(() -> Scheme.join(Collections.emptyMap())) .isInstanceOf(IllegalArgumentException.class); } @@ -71,8 +71,7 @@ void joinIrregularParts() { final byte[] one = new byte[] {1}; final byte[] two = new byte[] {1, 2}; - assertThatThrownBy( - () -> new Scheme(new SecureRandom(), 3, 2).join(ImmutableMap.of(1, one, 2, two))) + assertThatThrownBy(() -> Scheme.join(ImmutableMap.of(1, one, 2, two))) .isInstanceOf(IllegalArgumentException.class); } @@ -81,7 +80,7 @@ void splitAndJoinSingleByteSecret() { final Scheme scheme = new Scheme(new SecureRandom(), 8, 3); final byte[] secret = "x".getBytes(StandardCharsets.UTF_8); - assertThat(scheme.join(scheme.split(secret))).containsExactly(secret); + assertThat(Scheme.join(scheme.split(secret))).containsExactly(secret); } @Test @@ -89,7 +88,7 @@ void splitAndJoinMoreThanByteMaxValueParts() { final Scheme scheme = new Scheme(new SecureRandom(), 200, 3); final byte[] secret = "x".getBytes(StandardCharsets.UTF_8); - assertThat(scheme.join(scheme.split(secret))).containsExactly(secret); + assertThat(Scheme.join(scheme.split(secret))).containsExactly(secret); } @Test @@ -129,6 +128,6 @@ void splitAndJoinInquorate() { private byte[] join(Scheme scheme, Set> entries) { final Map m = new HashMap<>(); entries.forEach(v -> m.put(v.getKey(), v.getValue())); - return scheme.join(m); + return Scheme.join(m); } }