1
1
import { JwkDIDProvider } from '../jwk-did-provider'
2
- import { IDIDManager , IKeyManager } from "@veramo/core-types" ;
2
+ import { getDidJwkResolver } from '../resolver'
3
+ import { IDIDManager , IKeyManager , IResolver } from '@veramo/core-types'
3
4
import { createAgent } from '@veramo/core'
4
- import { MemoryKeyStore , MemoryPrivateKeyStore , KeyManager } from '@veramo/key-manager'
5
+ import { KeyManager , MemoryKeyStore , MemoryPrivateKeyStore } from '@veramo/key-manager'
5
6
import { KeyManagementSystem } from '@veramo/kms-local'
6
- import { DIDManager , MemoryDIDStore } from "@veramo/did-manager" ;
7
+ import { DIDManager , MemoryDIDStore } from '@veramo/did-manager'
8
+ import { DIDResolverPlugin } from '@veramo/did-resolver'
7
9
8
10
const defaultKms = 'memory'
9
- const ionDIDProvider = new JwkDIDProvider ( { defaultKms } )
11
+ const jwkDIDProvider = new JwkDIDProvider ( { defaultKms } )
10
12
11
- const agent = createAgent < IKeyManager & IDIDManager > ( {
13
+ const agent = createAgent < IKeyManager & IDIDManager & IResolver > ( {
12
14
plugins : [
13
15
new KeyManager ( {
14
16
store : new MemoryKeyStore ( ) ,
@@ -18,51 +20,179 @@ const agent = createAgent<IKeyManager & IDIDManager>({
18
20
} ) ,
19
21
new DIDManager ( {
20
22
providers : {
21
- 'did:jwk' : ionDIDProvider ,
23
+ 'did:jwk' : jwkDIDProvider ,
22
24
} ,
23
25
defaultProvider : 'did:jwk' ,
24
26
store : new MemoryDIDStore ( ) ,
25
27
} ) ,
28
+ new DIDResolverPlugin ( {
29
+ ...getDidJwkResolver ( ) ,
30
+ } ) ,
26
31
] ,
27
32
} )
28
33
describe ( 'create did:jwk' , ( ) => {
29
34
it ( 'Secp256k1' , async ( ) => {
30
35
const id = await agent . didManagerCreate ( {
31
36
options : {
32
37
keyType : 'Secp256k1' ,
33
- privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d'
34
- }
38
+ privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d' ,
39
+ } ,
35
40
} )
36
- expect ( id . did ) . toEqual ( 'did:jwk:eyJhbGciOiJFUzI1NksiLCJjcnYiOiJzZWNwMjU2azEiLCJrdHkiOiJFQyIsInVzZSI6InNpZyIsIngiOiJVNV85NlJMQWxMeEl0a3llNXhzcnJzNGt4eEM4clN4N3JNN1dGZllLNVRrIiwieSI6IlNjM0pVM25yVUZWdEVjc0stckRscHNxTXRIWFVFN0x4SXdmTUxYOVVPTjQifQ' )
41
+ expect ( id . did ) . toEqual (
42
+ 'did:jwk:eyJhbGciOiJFUzI1NksiLCJjcnYiOiJzZWNwMjU2azEiLCJrdHkiOiJFQyIsInVzZSI6InNpZyIsIngiOiJVNV85NlJMQWxMeEl0a3llNXhzcnJzNGt4eEM4clN4N3JNN1dGZllLNVRrIiwieSI6IlNjM0pVM25yVUZWdEVjc0stckRscHNxTXRIWFVFN0x4SXdmTUxYOVVPTjQifQ' ,
43
+ )
37
44
} )
38
45
39
46
it ( 'Ed25519' , async ( ) => {
40
47
const id = await agent . didManagerCreate ( {
41
48
options : {
42
49
keyType : 'Ed25519' ,
43
- privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d'
44
- }
50
+ privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d' ,
51
+ } ,
45
52
} )
46
- expect ( id . did ) . toEqual ( 'did:jwk:eyJhbGciOiJFZERTQSIsImNydiI6IkVkMjU1MTkiLCJrdHkiOiJPS1AiLCJ1c2UiOiJzaWciLCJ4IjoiTTNodVJCZnJpU3lHemlJS3pUSE5nS1djSVhuX3IxUzYxRnZBcUQyVmhSUSJ9' )
53
+ expect ( id . did ) . toEqual (
54
+ 'did:jwk:eyJhbGciOiJFZERTQSIsImNydiI6IkVkMjU1MTkiLCJrdHkiOiJPS1AiLCJ1c2UiOiJzaWciLCJ4IjoiTTNodVJCZnJpU3lHemlJS3pUSE5nS1djSVhuX3IxUzYxRnZBcUQyVmhSUSJ9' ,
55
+ )
47
56
} )
48
57
49
58
it ( 'X25519' , async ( ) => {
50
59
const id = await agent . didManagerCreate ( {
51
60
options : {
52
61
keyType : 'X25519' ,
53
- privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d'
54
- }
62
+ privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d' ,
63
+ } ,
55
64
} )
56
- expect ( id . did ) . toEqual ( 'did:jwk:eyJhbGciOiJFQ0RILUVTIiwiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwidXNlIjoiZW5jIiwieCI6IlVuNFNEWk12R2dReENiZkRBOWpwNjlyNDdvVWdsSF93eU1aRjU2THAwbU0ifQ' )
65
+ expect ( id . did ) . toEqual (
66
+ 'did:jwk:eyJhbGciOiJFQ0RILUVTIiwiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwidXNlIjoiZW5jIiwieCI6IlVuNFNEWk12R2dReENiZkRBOWpwNjlyNDdvVWdsSF93eU1aRjU2THAwbU0ifQ' ,
67
+ )
57
68
} )
58
69
59
70
it ( 'Secp256r1' , async ( ) => {
60
71
const id = await agent . didManagerCreate ( {
61
72
options : {
62
73
keyType : 'Secp256r1' ,
63
- privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d'
64
- }
74
+ privateKeyHex : 'a5e81a8cd50cf5c31d5b87db3e153e2817f86de350a60edc2335f76d5c3b4e0d' ,
75
+ } ,
76
+ } )
77
+ expect ( id . did ) . toEqual (
78
+ 'did:jwk:eyJhbGciOiJFUzI1NiIsImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJ4IjoiejhTTlNYTVgxUjZlVEt6SkdtLUE3ZWpBZkZsdURsaUhKdW9nT2FQc0REUSIsInkiOiJLUUtBTWVwTU56dHJseTB6ODI3MTg0dDRQdkFuU0lULW1MMFFsaUg1enU0In0' ,
79
+ )
80
+ } )
81
+ } )
82
+
83
+ describe ( 'resolve did:jwk' , ( ) => {
84
+ it ( 'should resolve Secp256k1' , async ( ) => {
85
+ const did =
86
+ 'did:jwk:eyJhbGciOiJFUzI1NksiLCJjcnYiOiJzZWNwMjU2azEiLCJrdHkiOiJFQyIsInVzZSI6InNpZyIsIngiOiJVNV85NlJMQWxMeEl0a3llNXhzcnJzNGt4eEM4clN4N3JNN1dGZllLNVRrIiwieSI6IlNjM0pVM25yVUZWdEVjc0stckRscHNxTXRIWFVFN0x4SXdmTUxYOVVPTjQifQ'
87
+ const result = await agent . resolveDid ( { didUrl : did } )
88
+
89
+ expect ( result . didDocument ) . toEqual ( {
90
+ id : did ,
91
+ '@context' : [ 'https://www.w3.org/ns/did/v1' , 'https://w3id.org/security/suites/jws-2020/v1' ] ,
92
+ verificationMethod : [
93
+ {
94
+ id : `${ did } #0` ,
95
+ type : 'JsonWebKey2020' ,
96
+ controller : did ,
97
+ publicKeyJwk : {
98
+ alg : 'ES256K' ,
99
+ crv : 'secp256k1' ,
100
+ kty : 'EC' ,
101
+ use : 'sig' ,
102
+ x : 'U5_96RLAlLxItkye5xsrrs4kxxC8rSx7rM7WFfYK5Tk' ,
103
+ y : 'Sc3JU3nrUFVtEcsK-rDlpsqMtHXUE7LxIwfMLX9UON4' ,
104
+ } ,
105
+ } ,
106
+ ] ,
107
+ assertionMethod : [ `${ did } #0` ] ,
108
+ authentication : [ `${ did } #0` ] ,
109
+ capabilityInvocation : [ `${ did } #0` ] ,
110
+ capabilityDelegation : [ `${ did } #0` ] ,
111
+ } )
112
+ } )
113
+
114
+ it ( 'should resolve P-256' , async ( ) => {
115
+ const did =
116
+ 'did:jwk:eyJhbGciOiJFUzI1NiIsImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJ4IjoiejhTTlNYTVgxUjZlVEt6SkdtLUE3ZWpBZkZsdURsaUhKdW9nT2FQc0REUSIsInkiOiJLUUtBTWVwTU56dHJseTB6ODI3MTg0dDRQdkFuU0lULW1MMFFsaUg1enU0In0'
117
+ const result = await agent . resolveDid ( { didUrl : did } )
118
+
119
+ expect ( result . didDocument ) . toEqual ( {
120
+ id : did ,
121
+ '@context' : [ 'https://www.w3.org/ns/did/v1' , 'https://w3id.org/security/suites/jws-2020/v1' ] ,
122
+ verificationMethod : [
123
+ {
124
+ id : `${ did } #0` ,
125
+ type : 'JsonWebKey2020' ,
126
+ controller : did ,
127
+ publicKeyJwk : {
128
+ alg : 'ES256' ,
129
+ crv : 'P-256' ,
130
+ kty : 'EC' ,
131
+ use : 'sig' ,
132
+ x : 'z8SNSXMX1R6eTKzJGm-A7ejAfFluDliHJuogOaPsDDQ' ,
133
+ y : 'KQKAMepMNztrly0z827184t4PvAnSIT-mL0QliH5zu4' ,
134
+ } ,
135
+ } ,
136
+ ] ,
137
+ assertionMethod : [ `${ did } #0` ] ,
138
+ authentication : [ `${ did } #0` ] ,
139
+ capabilityInvocation : [ `${ did } #0` ] ,
140
+ capabilityDelegation : [ `${ did } #0` ] ,
141
+ } )
142
+ } )
143
+
144
+ it ( 'should resolve Ed25519' , async ( ) => {
145
+ const did =
146
+ 'did:jwk:eyJhbGciOiJFZERTQSIsImNydiI6IkVkMjU1MTkiLCJrdHkiOiJPS1AiLCJ1c2UiOiJzaWciLCJ4IjoiTTNodVJCZnJpU3lHemlJS3pUSE5nS1djSVhuX3IxUzYxRnZBcUQyVmhSUSJ9'
147
+ const result = await agent . resolveDid ( { didUrl : did } )
148
+
149
+ expect ( result . didDocument ) . toEqual ( {
150
+ id : did ,
151
+ '@context' : [ 'https://www.w3.org/ns/did/v1' , 'https://w3id.org/security/suites/jws-2020/v1' ] ,
152
+ verificationMethod : [
153
+ {
154
+ id : `${ did } #0` ,
155
+ type : 'JsonWebKey2020' ,
156
+ controller : did ,
157
+ publicKeyJwk : {
158
+ alg : 'EdDSA' ,
159
+ crv : 'Ed25519' ,
160
+ kty : 'OKP' ,
161
+ use : 'sig' ,
162
+ x : 'M3huRBfriSyGziIKzTHNgKWcIXn_r1S61FvAqD2VhRQ' ,
163
+ } ,
164
+ } ,
165
+ ] ,
166
+ assertionMethod : [ `${ did } #0` ] ,
167
+ authentication : [ `${ did } #0` ] ,
168
+ capabilityInvocation : [ `${ did } #0` ] ,
169
+ capabilityDelegation : [ `${ did } #0` ] ,
170
+ } )
171
+ } )
172
+
173
+ it ( 'should resolve X25519' , async ( ) => {
174
+ const did =
175
+ 'did:jwk:eyJhbGciOiJFQ0RILUVTIiwiY3J2IjoiWDI1NTE5Iiwia3R5IjoiT0tQIiwidXNlIjoiZW5jIiwieCI6IlVuNFNEWk12R2dReENiZkRBOWpwNjlyNDdvVWdsSF93eU1aRjU2THAwbU0ifQ'
176
+ const result = await agent . resolveDid ( { didUrl : did } )
177
+
178
+ expect ( result . didDocument ) . toEqual ( {
179
+ id : did ,
180
+ '@context' : [ 'https://www.w3.org/ns/did/v1' , 'https://w3id.org/security/suites/jws-2020/v1' ] ,
181
+ verificationMethod : [
182
+ {
183
+ id : `${ did } #0` ,
184
+ type : 'JsonWebKey2020' ,
185
+ controller : did ,
186
+ publicKeyJwk : {
187
+ alg : 'ECDH-ES' ,
188
+ crv : 'X25519' ,
189
+ kty : 'OKP' ,
190
+ use : 'enc' ,
191
+ x : 'Un4SDZMvGgQxCbfDA9jp69r47oUglH_wyMZF56Lp0mM' ,
192
+ } ,
193
+ } ,
194
+ ] ,
195
+ keyAgreement : [ `${ did } #0` ] ,
65
196
} )
66
- expect ( id . did ) . toEqual ( 'did:jwk:eyJhbGciOiJFUzI1NiIsImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiLCJ1c2UiOiJzaWciLCJ4IjoiejhTTlNYTVgxUjZlVEt6SkdtLUE3ZWpBZkZsdURsaUhKdW9nT2FQc0REUSIsInkiOiJLUUtBTWVwTU56dHJseTB6ODI3MTg0dDRQdkFuU0lULW1MMFFsaUg1enU0In0' )
67
197
} )
68
198
} )
0 commit comments