|
1 | 1 | package com.danubetech.verifiablecredentials; |
2 | 2 |
|
3 | | -import com.danubetech.verifiablecredentials.jwt.JwtVerifiableCredential; |
4 | | -import org.junit.jupiter.api.Test; |
| 3 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
| 4 | +import static org.junit.jupiter.api.Assertions.assertNotNull; |
| 5 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
5 | 6 |
|
6 | 7 | import java.security.GeneralSecurityException; |
7 | 8 | import java.util.LinkedHashMap; |
8 | 9 |
|
9 | | -import static org.junit.jupiter.api.Assertions.*; |
| 10 | +import org.junit.jupiter.api.Test; |
| 11 | + |
| 12 | +import com.danubetech.verifiablecredentials.jwt.JwtVerifiableCredential; |
| 13 | +import com.nimbusds.jose.jwk.RSAKey; |
10 | 14 |
|
11 | 15 | class JwtTest { |
12 | 16 |
|
13 | | - @Test |
14 | | - void testSign() throws Exception { |
| 17 | + static RSAKey rsaKey; |
| 18 | + |
| 19 | + static { |
| 20 | + |
| 21 | + rsaKey = new RSAKey.Builder(TestUtil.testRSAPublicKey).privateKey(TestUtil.testRSAPrivateKey).build(); |
| 22 | + } |
| 23 | + |
| 24 | + @Test |
| 25 | + void testSign() throws Exception { |
15 | 26 |
|
16 | | - VerifiableCredential verifiableCredential = new VerifiableCredential(); |
17 | | - verifiableCredential.getContext().add("https://trafi.fi/credentials/v1"); |
18 | | - verifiableCredential.getType().add("DriversLicenseCredential"); |
19 | | - verifiableCredential.setId("urn:uuid:a87bdfb8-a7df-4bd9-ae0d-d883133538fe"); |
20 | | - verifiableCredential.setIssuer("did:sov:1yvXbmgPoUm4dl66D7KhyD"); |
21 | | - verifiableCredential.setIssuanceDate(VerifiableCredential.DATE_FORMAT.parse("2019-06-16T18:56:59Z")); |
22 | | - verifiableCredential.setExpirationDate(VerifiableCredential.DATE_FORMAT.parse("2019-06-17T18:56:59Z")); |
| 27 | + VerifiableCredential verifiableCredential = new VerifiableCredential(); |
| 28 | + verifiableCredential.getContext().add("https://trafi.fi/credentials/v1"); |
| 29 | + verifiableCredential.getType().add("DriversLicenseCredential"); |
| 30 | + verifiableCredential.setId("urn:uuid:a87bdfb8-a7df-4bd9-ae0d-d883133538fe"); |
| 31 | + verifiableCredential.setIssuer("did:sov:1yvXbmgPoUm4dl66D7KhyD"); |
| 32 | + verifiableCredential.setIssuanceDate(VerifiableCredential.DATE_FORMAT.parse("2019-06-16T18:56:59Z")); |
| 33 | + verifiableCredential.setExpirationDate(VerifiableCredential.DATE_FORMAT.parse("2019-06-17T18:56:59Z")); |
23 | 34 |
|
24 | | - verifiableCredential.setCredentialSubject("did:sov:21tDAKCERh95uGgKbJNHYp"); |
25 | | - LinkedHashMap<String, Object> jsonLdCredentialSubject = verifiableCredential.getJsonLdCredentialSubject(); |
26 | | - LinkedHashMap<String, Object> jsonLdDriversLicenseObject = new LinkedHashMap<>(); |
27 | | - jsonLdDriversLicenseObject.put("licenseClass", "trucks"); |
28 | | - jsonLdCredentialSubject.put("driversLicense", jsonLdDriversLicenseObject); |
| 35 | + verifiableCredential.setCredentialSubject("did:sov:21tDAKCERh95uGgKbJNHYp"); |
| 36 | + LinkedHashMap<String, Object> jsonLdCredentialSubject = verifiableCredential.getJsonLdCredentialSubject(); |
| 37 | + LinkedHashMap<String, Object> jsonLdDriversLicenseObject = new LinkedHashMap<>(); |
| 38 | + jsonLdDriversLicenseObject.put("licenseClass", "trucks"); |
| 39 | + jsonLdCredentialSubject.put("driversLicense", jsonLdDriversLicenseObject); |
29 | 40 |
|
30 | | - JwtVerifiableCredential jwtVerifiableCredential = JwtVerifiableCredential.fromVerifiableCredential(verifiableCredential); |
31 | | - String jwtString = jwtVerifiableCredential.sign_RSA_RS256(TestUtil.rsaKey); |
32 | | - String jwtPayload = jwtVerifiableCredential.getJwsObject().getPayload().toString(); |
| 41 | + JwtVerifiableCredential jwtVerifiableCredential = JwtVerifiableCredential.fromVerifiableCredential(verifiableCredential); |
| 42 | + String jwtString = jwtVerifiableCredential.sign_RSA_RS256(rsaKey); |
| 43 | + String jwtPayload = jwtVerifiableCredential.getJwsObject().getPayload().toString(); |
33 | 44 |
|
34 | | - assertNotNull(jwtString); |
35 | | - assertNotNull(jwtPayload); |
| 45 | + assertNotNull(jwtString); |
| 46 | + assertNotNull(jwtPayload); |
36 | 47 |
|
37 | | - assertEquals(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.jsonld")).trim(), jwtString.trim()); |
38 | | - assertEquals(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.payload.jsonld")).trim(), jwtPayload.trim()); |
39 | | - } |
| 48 | + assertEquals(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.jsonld")).trim(), jwtString.trim()); |
| 49 | + assertEquals(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.payload.jsonld")).trim(), jwtPayload.trim()); |
| 50 | + } |
40 | 51 |
|
41 | | - @Test |
42 | | - void testVerify() throws Exception { |
| 52 | + @Test |
| 53 | + void testVerify() throws Exception { |
43 | 54 |
|
44 | | - JwtVerifiableCredential jwtVerifiableCredential = JwtVerifiableCredential.fromCompactSerialization(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.jsonld"))); |
45 | | - if (!jwtVerifiableCredential.verify_RSA_RS256(TestUtil.testRSAPublicKey)) |
46 | | - throw new GeneralSecurityException("Invalid signature."); |
| 55 | + JwtVerifiableCredential jwtVerifiableCredential = JwtVerifiableCredential.fromCompactSerialization(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.jsonld"))); |
| 56 | + if (!jwtVerifiableCredential.verify_RSA_RS256(TestUtil.testRSAPublicKey)) |
| 57 | + throw new GeneralSecurityException("Invalid signature."); |
47 | 58 |
|
48 | | - String jwtPayload = jwtVerifiableCredential.getJwsObject().getPayload().toString(); |
49 | | - String jwtPayloadVerifiableCredential = jwtVerifiableCredential.getPayloadObject().toJsonString(); |
| 59 | + String jwtPayload = jwtVerifiableCredential.getJwsObject().getPayload().toString(); |
| 60 | + String jwtPayloadVerifiableCredential = jwtVerifiableCredential.getPayloadObject().toJsonString(); |
50 | 61 |
|
51 | | - assertNotNull(jwtPayload); |
52 | | - assertNotNull(jwtPayloadVerifiableCredential); |
| 62 | + assertNotNull(jwtPayload); |
| 63 | + assertNotNull(jwtPayloadVerifiableCredential); |
53 | 64 |
|
54 | | - assertEquals(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.payload.jsonld")).trim(), jwtPayload.trim()); |
| 65 | + assertEquals(TestUtil.read(VerifyTest.class.getResourceAsStream("verifiable-credential.jwt.payload.jsonld")).trim(), jwtPayload.trim()); |
55 | 66 |
|
56 | | - VerifiableCredential verifiableCredential = jwtVerifiableCredential.toVerifiableCredential(); |
| 67 | + VerifiableCredential verifiableCredential = jwtVerifiableCredential.toVerifiableCredential(); |
57 | 68 |
|
58 | | - assertNotNull(verifiableCredential); |
| 69 | + assertNotNull(verifiableCredential); |
59 | 70 |
|
60 | | - assertTrue(verifiableCredential.getType().contains("DriversLicenseCredential")); |
61 | | - assertEquals("urn:uuid:a87bdfb8-a7df-4bd9-ae0d-d883133538fe", verifiableCredential.getId()); |
62 | | - assertEquals("did:sov:1yvXbmgPoUm4dl66D7KhyD", verifiableCredential.getIssuer()); |
63 | | - assertEquals(VerifiableCredential.DATE_FORMAT.parse("2019-06-16T18:56:59Z"), verifiableCredential.getIssuanceDate()); |
64 | | - assertEquals(VerifiableCredential.DATE_FORMAT.parse("2019-06-17T18:56:59Z"), verifiableCredential.getExpirationDate()); |
| 71 | + assertTrue(verifiableCredential.getType().contains("DriversLicenseCredential")); |
| 72 | + assertEquals("urn:uuid:a87bdfb8-a7df-4bd9-ae0d-d883133538fe", verifiableCredential.getId()); |
| 73 | + assertEquals("did:sov:1yvXbmgPoUm4dl66D7KhyD", verifiableCredential.getIssuer()); |
| 74 | + assertEquals(VerifiableCredential.DATE_FORMAT.parse("2019-06-16T18:56:59Z"), verifiableCredential.getIssuanceDate()); |
| 75 | + assertEquals(VerifiableCredential.DATE_FORMAT.parse("2019-06-17T18:56:59Z"), verifiableCredential.getExpirationDate()); |
65 | 76 |
|
66 | | - assertEquals("did:sov:21tDAKCERh95uGgKbJNHYp", verifiableCredential.getCredentialSubject()); |
67 | | - LinkedHashMap<String, Object> jsonLdCredentialSubject = verifiableCredential.getJsonLdCredentialSubject(); |
68 | | - LinkedHashMap<String, Object> jsonLdDriversLicenseObject = (LinkedHashMap<String, Object>) jsonLdCredentialSubject.get("driversLicense"); |
69 | | - assertEquals("trucks", jsonLdDriversLicenseObject.get("licenseClass")); |
70 | | - } |
| 77 | + assertEquals("did:sov:21tDAKCERh95uGgKbJNHYp", verifiableCredential.getCredentialSubject()); |
| 78 | + LinkedHashMap<String, Object> jsonLdCredentialSubject = verifiableCredential.getJsonLdCredentialSubject(); |
| 79 | + LinkedHashMap<String, Object> jsonLdDriversLicenseObject = (LinkedHashMap<String, Object>) jsonLdCredentialSubject.get("driversLicense"); |
| 80 | + assertEquals("trucks", jsonLdDriversLicenseObject.get("licenseClass")); |
| 81 | + } |
71 | 82 | } |
0 commit comments