17
17
import com .apicatalog .jsonld .loader .SchemeRouter ;
18
18
import com .apicatalog .ld .DocumentError ;
19
19
import com .apicatalog .ld .signature .SigningError ;
20
- import com .apicatalog .ld .signature .VerificationError ;
21
20
import com .apicatalog .vc .verifier .Verifier ;
21
+ import com .fasterxml .jackson .core .JsonProcessingException ;
22
22
import com .fasterxml .jackson .databind .ObjectMapper ;
23
23
import com .nimbusds .jose .JOSEException ;
24
24
import com .nimbusds .jose .jwk .Curve ;
25
- import com .nimbusds .jose .jwk .JWK ;
25
+ import com .nimbusds .jose .jwk .ECKey ;
26
26
import com .nimbusds .jose .jwk .KeyUse ;
27
27
import com .nimbusds .jose .jwk .RSAKey ;
28
28
import com .nimbusds .jose .jwk .gen .ECKeyGenerator ;
41
41
import java .security .NoSuchAlgorithmException ;
42
42
import java .security .interfaces .RSAPrivateKey ;
43
43
import java .security .interfaces .RSAPublicKey ;
44
+ import java .text .ParseException ;
44
45
import java .time .Instant ;
45
46
import java .util .Date ;
46
47
import java .util .UUID ;
@@ -195,7 +196,7 @@ void signEmbeddedVerificationMethod() throws SigningError, DocumentError {
195
196
@ Test
196
197
void signVerificationDidKey () throws SigningError , DocumentError {
197
198
var vc = readResourceAsJson ("jws2020/issuing/0001_vc.json" );
198
- var eckey = ( JWK ) CryptoConverter .create ("""
199
+ var eckey = CryptoConverter .create ("""
199
200
{
200
201
"kty": "EC",
201
202
"d": "UEUJVbKZC3vR-y65gXx8NZVnE0QD5xe6qOk4eiObj-qVOg5zqt9zc0d6fdu4mUuu",
@@ -257,7 +258,7 @@ void signCompactedPresentation() throws SigningError, DocumentError {
257
258
}
258
259
259
260
@ Test
260
- void signAndVerify () throws JOSEException , SigningError , DocumentError , VerificationError {
261
+ void signAndVerify () throws JOSEException , SigningError , DocumentError {
261
262
var vc = readResourceAsJson ("jws2020/issuing/0001_vc.json" );
262
263
263
264
var ecKey = new ECKeyGenerator (Curve .P_256 ).keyID ("test-foo" ).generate ();
@@ -278,4 +279,55 @@ void signAndVerify() throws JOSEException, SigningError, DocumentError, Verifica
278
279
//verify
279
280
assertThatNoException ().isThrownBy (() -> Verifier .with (suite ).loader (loader ).verify (signedCredential ).validate ());
280
281
}
282
+
283
+ @ Test
284
+ void sign () throws ParseException , JsonProcessingException , SigningError , DocumentError {
285
+ var content = """
286
+ {
287
+ "issuanceDate": "2023-06-12T13:13:30Z",
288
+ "credentialSubject": {
289
+ "http://schema.org/identifier": "member0123456789",
290
+ "id": "did:web:localhost:member0123456789",
291
+ "type": "https://org.eclipse.edc/linkedCredentialData#MembershipCredential"
292
+ },
293
+ "id": "https://org.eclipse.edc/testcases/t0001",
294
+ "type": [
295
+ "VerifiableCredential",
296
+ "MembershipCredential"
297
+ ],
298
+ "issuer": "did:web:localhost:member0123456789",
299
+ "expirationDate": "2099-12-31T23:00:00Z",
300
+ "@context": [
301
+ "https://www.w3.org/ns/did/v1",
302
+ "https://www.w3.org/2018/credentials/v1",
303
+ "https://w3id.org/security/suites/jws-2020/v1",
304
+ "https://www.w3.org/ns/did/v1"
305
+ ]
306
+ }
307
+ """ ;
308
+ var key = ECKey .parse ("""
309
+ {
310
+ "kty": "EC",
311
+ "d": "RQenh0DD80AULwMqtTgYrihOft-kUGXGxL3prdtINDE9rp2ta3_CT1IcNUnDuG0F",
312
+ "crv": "P-384",
313
+ "x": "AqMfyYAh2SMf8bMoLbE6mOCbVyz8hukpBqrVheAFP4Anz2_cfzLEKKROD5EaAxSo",
314
+ "y": "P4KceKXv31JasLqvBPZWA9t1S2cMiHIQQ8ttAl5cFX3xBuzIPlgTRWPOVaNPWNFl"
315
+ }""" );
316
+
317
+ var keypair = createKeyPair (key );
318
+
319
+ var proofDraft = Jws2020ProofDraft .Builder .newInstance ()
320
+ .mapper (objectMapper )
321
+ .created (Instant .now ())
322
+ .verificationMethod (keypair )
323
+ .proofPurpose (URI .create ("https://w3id.org/security#assertionMethod" ))
324
+ .build ();
325
+ var vc = objectMapper .readValue (content , JsonObject .class );
326
+ var signedCredential = suite .createIssuer (keypair )
327
+ .loader (loader )
328
+ .sign (vc , proofDraft )
329
+ .compacted ();
330
+
331
+ System .out .println (signedCredential .toString ());
332
+ }
281
333
}
0 commit comments