6
6
import com .apicatalog .multibase .Multibase ;
7
7
import com .apicatalog .multibase .MultibaseDecoder ;
8
8
import com .apicatalog .multicodec .Multicodec ;
9
- import com .apicatalog .multicodec .Multicodec .Tag ;
10
9
import com .apicatalog .multicodec .MulticodecDecoder ;
11
10
12
11
/**
@@ -27,9 +26,6 @@ public class DidKey extends Did {
27
26
28
27
public static final String METHOD_KEY = "key" ;
29
28
30
- protected static final MulticodecDecoder MULTICODEC = MulticodecDecoder .getInstance (Tag .Key );
31
- protected static final MultibaseDecoder MULTIBASE = MultibaseDecoder .getInstance ();
32
-
33
29
private final Multicodec codec ;
34
30
35
31
private final byte [] rawKey ;
@@ -51,28 +47,28 @@ protected DidKey(Did did, Multicodec codec, byte[] rawValue) {
51
47
* @throws IllegalArgumentException If the given {@code uri} is not valid DID
52
48
* key
53
49
*/
54
- public static final DidKey from (final URI uri ) {
50
+ public static final DidKey from (final URI uri , final MultibaseDecoder bases , final MulticodecDecoder codecs ) {
55
51
56
52
final Did did = Did .from (uri );
57
53
58
54
if (!METHOD_KEY .equalsIgnoreCase (did .getMethod ())) {
59
55
throw new IllegalArgumentException ("The given URI [" + uri + "] is not valid DID key, does not start with 'did:key'." );
60
56
}
61
57
62
- return from (did );
58
+ return from (did , bases , codecs );
63
59
}
64
60
65
- public static final DidKey from (final Did did ) {
61
+ public static final DidKey from (final Did did , final MultibaseDecoder bases , final MulticodecDecoder codecs ) {
66
62
67
63
if (!METHOD_KEY .equalsIgnoreCase (did .getMethod ())) {
68
64
throw new IllegalArgumentException ("The given DID method [" + did .getMethod () + "] is not 'key'. DID [" + did .toString () + "]." );
69
65
}
70
66
71
- final Multibase base = MULTIBASE .getBase (did .getMethodSpecificId ()).orElseThrow (() -> new IllegalArgumentException ("Cannot detect did:key base encoding." ));
67
+ final Multibase base = bases .getBase (did .getMethodSpecificId ()).orElseThrow (() -> new IllegalArgumentException ("Unsupported did:key base encoding. DID [" + did . toString () + "] ." ));
72
68
73
69
final byte [] decoded = base .decode (did .getMethodSpecificId ());
74
70
75
- final Multicodec codec = MULTICODEC .getCodec (decoded ).orElseThrow (() -> new IllegalArgumentException ("Cannot detect did:key codec." ));
71
+ final Multicodec codec = codecs .getCodec (decoded ).orElseThrow (() -> new IllegalArgumentException ("Unsupported did:key codec. DID [" + did . toString () + "] ." ));
76
72
77
73
final byte [] rawKey = codec .decode (decoded );
78
74
0 commit comments