@@ -26,12 +26,14 @@ public class DidKey extends Did {
26
26
27
27
public static final String METHOD_KEY = "key" ;
28
28
29
- private final Multicodec codec ;
29
+ protected final Multibase base ;
30
+ protected final Multicodec codec ;
30
31
31
- private final byte [] rawKey ;
32
+ protected final byte [] rawKey ;
32
33
33
- protected DidKey (Did did , Multicodec codec , byte [] rawValue ) {
34
- super (did .getMethod (), did .getVersion (), did .getMethodSpecificId ());
34
+ protected DidKey (String version , String encoded , Multibase base , Multicodec codec , byte [] rawValue ) {
35
+ super (METHOD_KEY , version , encoded );
36
+ this .base = base ;
35
37
this .codec = codec ;
36
38
this .rawKey = rawValue ;
37
39
}
@@ -65,14 +67,18 @@ public static final DidKey from(final Did did, final MultibaseDecoder bases, fin
65
67
}
66
68
67
69
final Multibase base = bases .getBase (did .getMethodSpecificId ()).orElseThrow (() -> new IllegalArgumentException ("Unsupported did:key base encoding. DID [" + did .toString () + "]." ));
68
-
70
+
69
71
final byte [] decoded = base .decode (did .getMethodSpecificId ());
70
72
71
73
final Multicodec codec = codecs .getCodec (decoded ).orElseThrow (() -> new IllegalArgumentException ("Unsupported did:key codec. DID [" + did .toString () + "]." ));
72
74
73
75
final byte [] rawKey = codec .decode (decoded );
74
76
75
- return new DidKey (did , codec , rawKey );
77
+ return new DidKey (did .getVersion (), did .getMethodSpecificId (), base , codec , rawKey );
78
+ }
79
+
80
+ public static final DidKey create (Multibase base , Multicodec codec , byte [] rawKey ) {
81
+ return new DidKey (null , base .encode (codec .encode (rawKey )), base , codec , rawKey );
76
82
}
77
83
78
84
public static boolean isDidKey (final Did did ) {
@@ -93,6 +99,10 @@ public Multicodec getCodec() {
93
99
return codec ;
94
100
}
95
101
102
+ public Multibase getBase () {
103
+ return base ;
104
+ }
105
+
96
106
public byte [] getRawKey () {
97
107
return rawKey ;
98
108
}
0 commit comments