From 95de289a97da330932ec63c35524902bd94e1429 Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 20:41:28 +0200 Subject: [PATCH 1/8] Add test case #73 --- src/test/java/com/apicatalog/did/DidTest.java | 54 +++++++++++++++++++ .../apicatalog/did/{ => key}/DidKeyTest.java | 2 +- .../did/{ => key}/DidKeyTestCase.java | 2 +- 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/apicatalog/did/DidTest.java rename src/test/java/com/apicatalog/did/{ => key}/DidKeyTest.java (99%) rename src/test/java/com/apicatalog/did/{ => key}/DidKeyTestCase.java (96%) diff --git a/src/test/java/com/apicatalog/did/DidTest.java b/src/test/java/com/apicatalog/did/DidTest.java new file mode 100644 index 0000000..dd83745 --- /dev/null +++ b/src/test/java/com/apicatalog/did/DidTest.java @@ -0,0 +1,54 @@ +package com.apicatalog.did; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.fail; + +import java.util.Arrays; +import java.util.stream.Stream; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation; +import org.junit.jupiter.api.TestMethodOrder; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import com.apicatalog.did.key.DidKey; +import com.apicatalog.did.key.DidKeyTestCase; +import com.apicatalog.multibase.MultibaseDecoder; + +@DisplayName("DID") +@TestMethodOrder(OrderAnnotation.class) +class DidTest { + + @DisplayName("Create DID from string") + @ParameterizedTest(name = "{0}") + @MethodSource({ "testVectors" }) + void fromString(String input) { + try { + + final Did did = Did.from(input); + + assertNotNull(did); +// assertNotNull(didKey.getKey()); +// assertEquals(testCase.version, didKey.getVersion()); +// assertEquals(testCase.keyLength, didKey.getKey().length); + + } catch (IllegalArgumentException | NullPointerException e) { + e.printStackTrace(); + fail(e); + } + } + + static Stream testVectors() { + return Arrays.stream(testCases); + } + + static final String testCases[] = new String[] { + "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH", + "did:example:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", + "did:key:1.1:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", + "did:web:method:specific:identifier", + }; + +} diff --git a/src/test/java/com/apicatalog/did/DidKeyTest.java b/src/test/java/com/apicatalog/did/key/DidKeyTest.java similarity index 99% rename from src/test/java/com/apicatalog/did/DidKeyTest.java rename to src/test/java/com/apicatalog/did/key/DidKeyTest.java index 3d3ca79..5c73c35 100644 --- a/src/test/java/com/apicatalog/did/DidKeyTest.java +++ b/src/test/java/com/apicatalog/did/key/DidKeyTest.java @@ -1,4 +1,4 @@ -package com.apicatalog.did; +package com.apicatalog.did.key; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; diff --git a/src/test/java/com/apicatalog/did/DidKeyTestCase.java b/src/test/java/com/apicatalog/did/key/DidKeyTestCase.java similarity index 96% rename from src/test/java/com/apicatalog/did/DidKeyTestCase.java rename to src/test/java/com/apicatalog/did/key/DidKeyTestCase.java index db9805e..02bef10 100644 --- a/src/test/java/com/apicatalog/did/DidKeyTestCase.java +++ b/src/test/java/com/apicatalog/did/key/DidKeyTestCase.java @@ -1,4 +1,4 @@ -package com.apicatalog.did; +package com.apicatalog.did.key; import java.net.URI; From 669ef0ceffa00230829099b29c561b254f4d37ee Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 20:46:00 +0200 Subject: [PATCH 2/8] Add Did.from(URI|String) test cases #75 --- src/test/java/com/apicatalog/did/DidTest.java | 41 +++++++++++++++---- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/src/test/java/com/apicatalog/did/DidTest.java b/src/test/java/com/apicatalog/did/DidTest.java index dd83745..89ec76d 100644 --- a/src/test/java/com/apicatalog/did/DidTest.java +++ b/src/test/java/com/apicatalog/did/DidTest.java @@ -4,6 +4,8 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.fail; +import java.net.URI; +import java.net.URL; import java.util.Arrays; import java.util.stream.Stream; @@ -23,7 +25,7 @@ class DidTest { @DisplayName("Create DID from string") @ParameterizedTest(name = "{0}") - @MethodSource({ "testVectors" }) + @MethodSource({ "stringValidVectors" }) void fromString(String input) { try { @@ -40,15 +42,36 @@ void fromString(String input) { } } - static Stream testVectors() { - return Arrays.stream(testCases); + @DisplayName("Create DID from URI") + @ParameterizedTest(name = "{0}") + @MethodSource({ "uriValidVectors" }) + void fromUri(URI input) { + try { + + final Did did = Did.from(input); + + assertNotNull(did); +// assertNotNull(didKey.getKey()); +// assertEquals(testCase.version, didKey.getVersion()); +// assertEquals(testCase.keyLength, didKey.getKey().length); + + } catch (IllegalArgumentException | NullPointerException e) { + e.printStackTrace(); + fail(e); + } + } + + static Stream stringValidVectors() { + return Arrays.stream(new String[] { + "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH", + "did:example:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", + "did:key:1.1:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", + "did:web:method:specific:identifier", + }); } - static final String testCases[] = new String[] { - "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH", - "did:example:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", - "did:key:1.1:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", - "did:web:method:specific:identifier", - }; + static Stream uriValidVectors() { + return stringValidVectors().map(URI::create); + } } From c901a0213eeeb20eca417191c95887bfa5487e14 Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 20:49:21 +0200 Subject: [PATCH 3/8] Add Did.isDid(String|URI) tests #75 --- src/test/java/com/apicatalog/did/DidTest.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/java/com/apicatalog/did/DidTest.java b/src/test/java/com/apicatalog/did/DidTest.java index 89ec76d..b32e697 100644 --- a/src/test/java/com/apicatalog/did/DidTest.java +++ b/src/test/java/com/apicatalog/did/DidTest.java @@ -2,6 +2,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.fail; import java.net.URI; @@ -61,6 +62,20 @@ void fromUri(URI input) { } } + @DisplayName("isDid(String)") + @ParameterizedTest(name = "{0}") + @MethodSource({ "stringValidVectors" }) + void isDid(String input) { + assertTrue(Did.isDid(input)); + } + + @DisplayName("isDid(URI)") + @ParameterizedTest(name = "{0}") + @MethodSource({ "uriValidVectors" }) + void isDid(URI input) { + assertTrue(Did.isDid(input)); + } + static Stream stringValidVectors() { return Arrays.stream(new String[] { "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH", From ec681aa823b92b976cc3e0b061d6661b438cdc7b Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 22:03:12 +0200 Subject: [PATCH 4/8] Improve DidTest #75 --- src/test/java/com/apicatalog/did/DidTest.java | 74 ++++++++++--------- 1 file changed, 39 insertions(+), 35 deletions(-) diff --git a/src/test/java/com/apicatalog/did/DidTest.java b/src/test/java/com/apicatalog/did/DidTest.java index b32e697..c9c83e7 100644 --- a/src/test/java/com/apicatalog/did/DidTest.java +++ b/src/test/java/com/apicatalog/did/DidTest.java @@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.fail; import java.net.URI; -import java.net.URL; import java.util.Arrays; import java.util.stream.Stream; @@ -16,26 +15,21 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import com.apicatalog.did.key.DidKey; -import com.apicatalog.did.key.DidKeyTestCase; -import com.apicatalog.multibase.MultibaseDecoder; - @DisplayName("DID") @TestMethodOrder(OrderAnnotation.class) class DidTest { @DisplayName("Create DID from string") @ParameterizedTest(name = "{0}") - @MethodSource({ "stringValidVectors" }) - void fromString(String input) { + @MethodSource({ "validVectors" }) + void fromString(String uri, String method, String specificId) { try { - final Did did = Did.from(input); - + final Did did = Did.from(uri); + assertNotNull(did); -// assertNotNull(didKey.getKey()); -// assertEquals(testCase.version, didKey.getVersion()); -// assertEquals(testCase.keyLength, didKey.getKey().length); + assertEquals(method, did.getMethod()); + assertEquals(specificId, did.getMethodSpecificId()); } catch (IllegalArgumentException | NullPointerException e) { e.printStackTrace(); @@ -45,16 +39,15 @@ void fromString(String input) { @DisplayName("Create DID from URI") @ParameterizedTest(name = "{0}") - @MethodSource({ "uriValidVectors" }) - void fromUri(URI input) { + @MethodSource({ "validVectors" }) + void fromUri(String input, String method, String specificId) { try { - final Did did = Did.from(input); + final Did did = Did.from(URI.create(input)); assertNotNull(did); -// assertNotNull(didKey.getKey()); -// assertEquals(testCase.version, didKey.getVersion()); -// assertEquals(testCase.keyLength, didKey.getKey().length); + assertEquals(method, did.getMethod()); + assertEquals(specificId, did.getMethodSpecificId()); } catch (IllegalArgumentException | NullPointerException e) { e.printStackTrace(); @@ -64,29 +57,40 @@ void fromUri(URI input) { @DisplayName("isDid(String)") @ParameterizedTest(name = "{0}") - @MethodSource({ "stringValidVectors" }) - void isDid(String input) { - assertTrue(Did.isDid(input)); + @MethodSource({ "validVectors" }) + void stringIsDid(String uri) { + assertTrue(Did.isDid(uri)); } @DisplayName("isDid(URI)") @ParameterizedTest(name = "{0}") - @MethodSource({ "uriValidVectors" }) - void isDid(URI input) { - assertTrue(Did.isDid(input)); + @MethodSource({ "validVectors" }) + void uriIsDid(String uri) { + assertTrue(Did.isDid(URI.create(uri))); } - static Stream stringValidVectors() { - return Arrays.stream(new String[] { - "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH", - "did:example:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", - "did:key:1.1:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", - "did:web:method:specific:identifier", + static Stream validVectors() { + return Arrays.stream(new String[][] { + { + "did:key:z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH", + "key", + "z6MkpTHR8VNsBxYAAWHut2Geadd9jSwuBV8xRoAnwWsdvktH" + }, + { + "did:example:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", + "example", + "z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2" + }, + { + "did:key:1.1:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2", + "key", + "1.1:z6MkicdicToW5HbxPP7zZV1H7RHvXgRMhoujWAF2n5WQkdd2" + }, + { + "did:web:method:specific:identifier", + "web", + "method:specific:identifier" + }, }); } - - static Stream uriValidVectors() { - return stringValidVectors().map(URI::create); - } - } From ba4dd1ba85e6f29851b42ed746defeda28735705 Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 22:12:06 +0200 Subject: [PATCH 5/8] Fix Did.from and Did.isDid method #75 --- src/main/java/com/apicatalog/did/Did.java | 145 +++++++++--------- src/main/java/com/apicatalog/did/DidUrl.java | 8 +- .../java/com/apicatalog/did/key/DidKey.java | 40 +++-- 3 files changed, 106 insertions(+), 87 deletions(-) diff --git a/src/main/java/com/apicatalog/did/Did.java b/src/main/java/com/apicatalog/did/Did.java index 4010f23..c1098cb 100644 --- a/src/main/java/com/apicatalog/did/Did.java +++ b/src/main/java/com/apicatalog/did/Did.java @@ -4,21 +4,25 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.Objects; +import java.util.function.IntPredicate; public class Did implements Serializable { private static final long serialVersionUID = -3127318269811273712L; - public static final String SCHEME = "did"; + /* + * method-char = %x61-7A / DIGIT + */ + static final IntPredicate METHOD_CHAR = ch -> (0x61 <= ch && ch <= 0x7A) || ('0' <= ch && ch <= '9'); + public static final String SCHEME = "did"; + protected final String method; - protected final String version; - protected final String methodSpecificId; + protected final String specificId; - protected Did(final String method, final String version, final String methodSpecificId) { + protected Did(final String method, final String specificId) { this.method = method; - this.version = version; - this.methodSpecificId = methodSpecificId; + this.specificId = specificId; } public static boolean isDid(final URI uri) { @@ -29,29 +33,32 @@ public static boolean isDid(final URI uri) { || isNotBlank(uri.getHost()) || isNotBlank(uri.getPath()) || isNotBlank(uri.getQuery()) - || isNotBlank(uri.getFragment()) - ) { - return false; - } + || isNotBlank(uri.getFragment())) { + return false; + } - final String[] parts = uri.getSchemeSpecificPart().split(":"); + final String[] parts = uri.getSchemeSpecificPart().split(":", 2); - return parts.length == 2 || parts.length == 3; + return parts.length == 2 + && parts[0].length() > 0 + && parts[1].length() > 0 + && parts[0].codePoints().allMatch(METHOD_CHAR) + ; } public static boolean isDid(final String uri) { - if (isBlank(uri)) { + if (uri == null) { return false; } - final String[] parts = uri.split(":"); + final String[] parts = uri.split(":", 3); - return (parts.length == 3 || parts.length == 4) + return parts.length == 3 && Did.SCHEME.equalsIgnoreCase(parts[0]) - && !parts[parts.length - 1].contains("/") // path - && !parts[parts.length - 1].contains("?") // query - && !parts[parts.length - 1].contains("#") // fragment + && parts[1].length() > 0 + && parts[2].length() > 0 + && parts[1].codePoints().allMatch(METHOD_CHAR) ; } @@ -61,19 +68,21 @@ public static boolean isDid(final String uri) { * @param uri The source URI to be transformed into DID * @return The new DID * - * @throws NullPointerException - * If {@code uri} is {@code null} + * @throws NullPointerException If {@code uri} is {@code null} * - * @throws IllegalArgumentException - * If the given {@code uri} is not valid DID + * @throws IllegalArgumentException If the given {@code uri} is not valid DID */ public static Did from(final URI uri) { - if (!isDid(uri)) { - throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID key, does not start with 'did:'."); + if (uri == null) { + throw new IllegalArgumentException("The DID must not be null."); } - return from(uri, uri.getSchemeSpecificPart().split(":"), 3); + if (!Did.SCHEME.equalsIgnoreCase(uri.getScheme())) { + throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, must start with 'did:' prefix."); + } + + return from(uri, uri.getSchemeSpecificPart().split(":", 2)); } /** @@ -82,59 +91,58 @@ public static Did from(final URI uri) { * @param uri The source URI to be transformed into DID * @return The new DID * - * @throws NullPointerException - * If {@code uri} is {@code null} + * @throws NullPointerException If {@code uri} is {@code null} * - * @throws IllegalArgumentException - * If the given {@code uri} is not valid DID + * @throws IllegalArgumentException If the given {@code uri} is not valid DID */ public static Did from(final String uri) { + if (uri == null || uri.length() == 0) { + throw new IllegalArgumentException("The DID must not be null or blank string."); + } - if (!isDid(uri)) { - throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID key, does not start with 'did:'."); + final String[] parts = uri.split(":", 3); + + if (parts.length != 3) { + throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, must be in form 'did:method:method-specific-id'."); } - return from(uri, uri.split(":"), 4); - } + if (!Did.SCHEME.equalsIgnoreCase(parts[0])) { + throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, must start with 'did:' prefix."); + } - protected static Did from(final Object uri, final String[] parts, int max) { + return from(uri, new String[] { parts[1], parts[2] }); + } - if (parts.length < max - 1 - || parts.length > max - || isBlank(parts[max - 3]) - || isBlank(parts[max - 2]) - ) { + protected static Did from(final Object uri, final String[] parts) { + if (parts.length != 2) { throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, must be in form 'did:method:method-specific-id'."); } - String methodSpecificId = parts[max - 2]; - String version = "1"; // default DID version - - if (parts.length == max) { - if (isBlank(parts[max - 1])) { - throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, must be in form 'did:method:method-specific-id'."); - } - version = parts[max - 2]; - methodSpecificId = parts[max - 1]; + // check method + if (parts[0].length() == 0 + || !parts[0].codePoints().allMatch(METHOD_CHAR)) { + throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, method [" + parts[0] + "] syntax is blank or invalid."); + } + + // check method specific id + if (parts[1].length() == 0) { + throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID, method specific id [" + parts[1] + "] is blank."); } - return new Did(parts[max - 3], version, methodSpecificId); + return new Did(parts[0], parts[1]); } + public String getMethod() { return method; } - public String getVersion() { - return version; - } - public String getMethodSpecificId() { - return methodSpecificId; + return specificId; } public URI toUri() { try { - return new URI(SCHEME, method + ":" + methodSpecificId, null); + return new URI(SCHEME, method + ":" + specificId, null); } catch (URISyntaxException e) { throw new IllegalStateException(e); } @@ -150,23 +158,17 @@ public DidUrl asDidUrl() { @Override public String toString() { - final StringBuilder builder = new StringBuilder() - .append(SCHEME) - .append(':') - .append(method) - .append(':'); - - if (!"1".equals(version)) { - builder - .append(version) - .append(':'); - } - return builder.append(methodSpecificId).toString(); + return new StringBuilder() + .append(SCHEME) + .append(':') + .append(method) + .append(':') + .append(specificId).toString(); } @Override public int hashCode() { - return Objects.hash(method, methodSpecificId, version); + return Objects.hash(method, specificId); } @Override @@ -181,10 +183,10 @@ public boolean equals(final Object obj) { return false; } Did other = (Did) obj; - return Objects.equals(method, other.method) && Objects.equals(methodSpecificId, other.methodSpecificId) - && Objects.equals(version, other.version); + return Objects.equals(method, other.method) && Objects.equals(specificId, other.specificId); + } - + static final boolean isNotBlank(String value) { return value != null && !value.trim().isEmpty(); } @@ -192,5 +194,4 @@ static final boolean isNotBlank(String value) { static final boolean isBlank(String value) { return value == null || value.trim().isEmpty(); } - } diff --git a/src/main/java/com/apicatalog/did/DidUrl.java b/src/main/java/com/apicatalog/did/DidUrl.java index ef10683..ea31952 100644 --- a/src/main/java/com/apicatalog/did/DidUrl.java +++ b/src/main/java/com/apicatalog/did/DidUrl.java @@ -9,13 +9,13 @@ public class DidUrl extends Did { private static final long serialVersionUID = 5752880077497569763L; - + protected final String path; protected final String query; protected final String fragment; protected DidUrl(Did did, String path, String query, String fragment) { - super(did.method, did.version, did.methodSpecificId); + super(did.method, did.specificId); this.path = path; this.query = query; this.fragment = fragment; @@ -31,7 +31,7 @@ public static DidUrl from(final URI uri) { throw new IllegalArgumentException("The URI [" + uri + "] is not valid DID URL, does not start with 'did:'."); } - Did did = from(uri, uri.getSchemeSpecificPart().split(":"), 3); + Did did = from(uri, uri.getSchemeSpecificPart().split(":", 2)); return new DidUrl(did, uri.getPath(), uri.getQuery(), uri.getFragment()); } @@ -56,7 +56,7 @@ public static boolean isDidUrl(final String uri) { @Override public URI toUri() { try { - return new URI(SCHEME, method + ":" + methodSpecificId, path, query, fragment); + return new URI(SCHEME, method + ":" + specificId, path, query, fragment); } catch (URISyntaxException e) { throw new IllegalStateException(e); } diff --git a/src/main/java/com/apicatalog/did/key/DidKey.java b/src/main/java/com/apicatalog/did/key/DidKey.java index a26fd7f..210ca26 100644 --- a/src/main/java/com/apicatalog/did/key/DidKey.java +++ b/src/main/java/com/apicatalog/did/key/DidKey.java @@ -9,8 +9,7 @@ /** * Immutable DID Key *

- * did-key-format := did:key:MULTIBASE(base58-btc, MULTICODEC(public-key-type, - * raw-public-key-bytes)) + * did-key-format := did:key:[version]:MULTIBASE(multiencodedKey) *

* * @see new IllegalArgumentException("Unsupported did:key base encoding. DID [" + did.toString() + "].")); + final String[] parts = did.getMethodSpecificId().split(":", 2); + + String version = DEFAULT_VERSION; + String encoded = parts[0]; + + if (parts.length == 2) { + version = parts[0]; + encoded = parts[1]; + } + + final Multibase base = bases.getBase(encoded).orElseThrow(() -> new IllegalArgumentException("Unsupported did:key base encoding. DID [" + did.toString() + "].")); - final byte[] debased = base.decode(did.getMethodSpecificId()); + final byte[] debased = base.decode(encoded); - return new DidKey(did.getVersion(), did.getMethodSpecificId(), base, debased); + return new DidKey(version, encoded, base, debased); } public static final DidKey create(Multibase base, byte[] key) { @@ -93,6 +107,10 @@ public Multibase getBase() { } public byte[] getKey() { - return encodedKey; + return debased; + } + + public String getVersion() { + return version; } } From 62ea07c91630f938ff6740a3f0beb88142d96537 Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 22:12:40 +0200 Subject: [PATCH 6/8] Bump version to 0.5.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c0fc82c..26f19f2 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.apicatalog carbon-did - 0.4.0 + 0.5.0 jar https://github.com/filip26/carbon-decentralized-identifiers From 3c06daffe70f3ff3ac3fca34e1c46cb7550fa84a Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 22:13:58 +0200 Subject: [PATCH 7/8] Update README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9b4cb3a..86b4017 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ An implementation of the [Decentralized Identifiers (DIDs) v1.0](https://www.w3. com.apicatalog carbon-did - 0.4.0 + 0.5.0 com.apicatalog @@ -39,7 +39,7 @@ Android 12+ (API Level >=32) ```gradle -implementation("com.apicatalog:carbon-did:0.4.0") +implementation("com.apicatalog:carbon-did:0.5.0") implementation("com.apicatalog:copper-multibase:0.5.0") ``` From 0f09b5b41b2e11e52a785a3f48d5e81171bf3762 Mon Sep 17 00:00:00 2001 From: Filip Date: Wed, 10 Jul 2024 22:14:18 +0200 Subject: [PATCH 8/8] Remove unused import --- src/test/java/com/apicatalog/did/key/DidKeyTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/apicatalog/did/key/DidKeyTest.java b/src/test/java/com/apicatalog/did/key/DidKeyTest.java index 5c73c35..52e142a 100644 --- a/src/test/java/com/apicatalog/did/key/DidKeyTest.java +++ b/src/test/java/com/apicatalog/did/key/DidKeyTest.java @@ -13,7 +13,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import com.apicatalog.did.key.DidKey; import com.apicatalog.multibase.MultibaseDecoder; @DisplayName("DID Key")