Skip to content

Commit

Permalink
feat: Support for credentialStatus.
Browse files Browse the repository at this point in the history
Signed-off-by: Markus Sabadello <[email protected]>
  • Loading branch information
peacekeeper committed Oct 15, 2020
1 parent 5d1f439 commit 4e27901
Show file tree
Hide file tree
Showing 7 changed files with 399 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.danubetech.verifiablecredentials;

import com.apicatalog.jsonld.loader.DocumentLoader;
import com.danubetech.verifiablecredentials.credentialstatus.CredentialStatus;
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialContexts;
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
import com.fasterxml.jackson.annotation.JsonCreator;
Expand Down Expand Up @@ -39,6 +40,7 @@ public static class Builder<B extends Builder<B>> extends JsonLDObject.Builder<B
private Date issuanceDate;
private Date expirationDate;
private CredentialSubject credentialSubject;
private CredentialStatus credentialStatus;
private LdProof ldProof;

public Builder(VerifiableCredential jsonLDObject) {
Expand All @@ -57,6 +59,7 @@ public VerifiableCredential build() {
if (this.issuanceDate != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_ISSUANCEDATE, JsonLDUtils.dateToString(this.issuanceDate));
if (this.expirationDate != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_EXPIRATIONDATE, JsonLDUtils.dateToString(this.expirationDate));
if (this.credentialSubject != null) this.credentialSubject.addToJsonLDObject(this.jsonLDObject);
if (this.credentialStatus != null) this.credentialStatus.addToJsonLDObject(this.jsonLDObject);
if (this.ldProof != null) this.ldProof.addToJsonLDObject(this.jsonLDObject);

return (VerifiableCredential) this.jsonLDObject;
Expand All @@ -82,6 +85,11 @@ public B credentialSubject(CredentialSubject credentialSubject) {
return (B) this;
}

public B credentialStatus(CredentialStatus credentialStatus) {
this.credentialStatus = credentialStatus;
return (B) this;
}

public B ldProof(LdProof ldProof) {
this.ldProof = ldProof;
return (B) this;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package com.danubetech.verifiablecredentials.credentialstatus;

import com.apicatalog.jsonld.loader.DocumentLoader;
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialContexts;
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
import com.fasterxml.jackson.annotation.JsonCreator;
import foundation.identity.jsonld.JsonLDObject;
import foundation.identity.jsonld.JsonLDUtils;

import java.io.Reader;
import java.net.URI;
import java.util.Map;

public class CredentialStatus extends JsonLDObject {

public static final URI[] DEFAULT_JSONLD_CONTEXTS = { VerifiableCredentialContexts.JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 };
public static final String[] DEFAULT_JSONLD_TYPES = { };
public static final String DEFAULT_JSONLD_PREDICATE = VerifiableCredentialKeywords.JSONLD_TERM_CREDENTIALSTATUS;
public static final DocumentLoader DEFAULT_DOCUMENT_LOADER = VerifiableCredentialContexts.DOCUMENT_LOADER;

@JsonCreator
public CredentialStatus() {
super();
}

protected CredentialStatus(Map<String, Object> jsonObject) {
super(jsonObject);
}

/*
* Factory methods
*/

public static class Builder<B extends Builder<B>> extends JsonLDObject.Builder<B> {

public Builder(CredentialStatus jsonLDObject) {
super(jsonLDObject);
}

@Override
public CredentialStatus build() {

super.build();

return (CredentialStatus) this.jsonLDObject;
}
}

public static Builder<? extends Builder<?>> builder() {
return new Builder(new CredentialStatus());
}

public static CredentialStatus fromJsonObject(Map<String, Object> jsonObject) {
return new CredentialStatus(jsonObject);
}

public static CredentialStatus fromJson(Reader reader) {
return new CredentialStatus(readJson(reader));
}

public static CredentialStatus fromJson(String json) {
return new CredentialStatus(readJson(json));
}

/*
* Adding, getting, and removing the JSON-LD object
*/

public static CredentialStatus getFromJsonLDObject(JsonLDObject jsonLdObject) {
return JsonLDObject.getFromJsonLDObject(CredentialStatus.class, jsonLdObject);
}

public static void removeFromJsonLdObject(JsonLDObject jsonLdObject) {
JsonLDObject.removeFromJsonLdObject(CredentialStatus.class, jsonLdObject);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
package com.danubetech.verifiablecredentials.credentialstatus;

import com.apicatalog.jsonld.loader.DocumentLoader;
import com.danubetech.verifiablecredentials.CredentialSubject;
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialContexts;
import com.danubetech.verifiablecredentials.jsonld.VerifiableCredentialKeywords;
import com.fasterxml.jackson.annotation.JsonCreator;
import foundation.identity.jsonld.JsonLDObject;
import foundation.identity.jsonld.JsonLDUtils;

import java.io.Reader;
import java.net.URI;
import java.util.Map;

public class RevocationList2020Status extends CredentialStatus {

public static final URI[] DEFAULT_JSONLD_CONTEXTS = { VerifiableCredentialContexts.JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 };
public static final String[] DEFAULT_JSONLD_TYPES = { VerifiableCredentialKeywords.JSONLD_TERM_REVOCATION_LIST_2020_STATUS };
public static final String DEFAULT_JSONLD_PREDICATE = VerifiableCredentialKeywords.JSONLD_TERM_CREDENTIALSTATUS;
public static final DocumentLoader DEFAULT_DOCUMENT_LOADER = VerifiableCredentialContexts.DOCUMENT_LOADER;

@JsonCreator
public RevocationList2020Status() {
super();
}

protected RevocationList2020Status(Map<String, Object> jsonObject) {
super(jsonObject);
}

/*
* Factory methods
*/

public static class Builder<B extends Builder<B>> extends CredentialStatus.Builder<B> {

private String revocationListIndex;
private URI revocationListCredential;

public Builder(RevocationList2020Status jsonLDObject) {
super(jsonLDObject);
}

@Override
public RevocationList2020Status build() {

super.build();

// add JSON-LD properties
if (this.revocationListIndex != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTINDEX, this.revocationListIndex);
if (this.revocationListCredential != null) JsonLDUtils.jsonLdAdd(this.jsonLDObject, VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTCREDENTIAL, JsonLDUtils.uriToString(this.revocationListCredential));

return (RevocationList2020Status) this.jsonLDObject;
}

public B revocationListIndex(String revocationListIndex) {
this.revocationListIndex = revocationListIndex;
return (B) this;
}

public B revocationListCredential(URI revocationListCredential) {
this.revocationListCredential = revocationListCredential;
return (B) this;
}
}

public static Builder<? extends Builder<?>> builder() {
return new Builder(new RevocationList2020Status());
}

public static RevocationList2020Status fromJsonObject(Map<String, Object> jsonObject) {
return new RevocationList2020Status(jsonObject);
}

public static RevocationList2020Status fromJson(Reader reader) {
return new RevocationList2020Status(readJson(reader));
}

public static RevocationList2020Status fromJson(String json) {
return new RevocationList2020Status(readJson(json));
}

/*
* Adding, getting, and removing the JSON-LD object
*/

public static RevocationList2020Status getFromJsonLDObject(JsonLDObject jsonLdObject) {
return JsonLDObject.getFromJsonLDObject(RevocationList2020Status.class, jsonLdObject);
}

public static void removeFromJsonLdObject(JsonLDObject jsonLdObject) {
JsonLDObject.removeFromJsonLdObject(RevocationList2020Status.class, jsonLdObject);
}

/*
* Getters
*/

public String getRevocationListIndex() {
return JsonLDUtils.jsonLdGetString(this.getJsonObject(), VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTINDEX);
}

public URI getRevocationListCredential() {
return JsonLDUtils.stringToUri(JsonLDUtils.jsonLdGetString(this.getJsonObject(), VerifiableCredentialKeywords.JSONLD_TERM_REVOCATIONLISTCREDENTIAL));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
import java.net.URI;
import java.util.Map;

public class RevocationQuery2020Status extends JsonLDObject {
public class RevocationQuery2020Status extends CredentialStatus {

public static final URI[] DEFAULT_JSONLD_CONTEXTS = { VerifiableCredentialContexts.JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 };
public static final String[] DEFAULT_JSONLD_TYPES = { VerifiableCredentialKeywords.JSONLD_TERM_REVOCATION_QUERY_2020_STATUS };
Expand All @@ -33,7 +33,7 @@ protected RevocationQuery2020Status(Map<String, Object> jsonObject) {
* Factory methods
*/

public static class Builder<B extends Builder<B>> extends JsonLDObject.Builder<B> {
public static class Builder<B extends Builder<B>> extends CredentialStatus.Builder<B> {

private String credentialReference;
private String revocationService;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public class VerifiableCredentialContexts {

public static final URI JSONLD_CONTEXT_W3C_2018_CREDENTIALS_V1 = URI.create("https://www.w3.org/2018/credentials/v1");
public static final URI JSONLD_CONTEXT_W3C_2018_CREDENTIALS_EXAMPLES_V1 = URI.create("https://www.w3.org/2018/credentials/examples/v1");
public static final URI JSONLD_CONTEXT_W3C_NS_ODRL = URI.create("https://www.w3.org/ns/odrl.jsonld");
public static final URI JSONLD_CONTEXT_DANUBETECH_2020_CREDENTIALS_V1 = URI.create("https://danubetech.com/2020/credentials/v1");

public static final Map<URI, JsonDocument> CONTEXTS;
Expand All @@ -32,6 +33,8 @@ public class VerifiableCredentialContexts {
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("credentials-v1.jsonld")));
CONTEXTS.put(JSONLD_CONTEXT_W3C_2018_CREDENTIALS_EXAMPLES_V1,
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("credentials-examples-v1.jsonld")));
CONTEXTS.put(JSONLD_CONTEXT_W3C_NS_ODRL,
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("odrl.jsonld")));
CONTEXTS.put(JSONLD_CONTEXT_DANUBETECH_2020_CREDENTIALS_V1,
JsonDocument.of(MediaType.JSON_LD, VerifiableCredentialContexts.class.getResourceAsStream("danubetech-v1.jsonld")));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,9 @@ public class VerifiableCredentialKeywords {
public static final String JSONLD_TERM_CREDENTIALREFERENCE = "credentialReference";
public static final String JSONLD_TERM_REVOCATIONSERVICE = "revocationService";

public static final String JSONLD_TERM_REVOCATION_LIST_2020_STATUS = "RevocationList2020Status";
public static final String JSONLD_TERM_REVOCATIONLISTINDEX = "revocationListIndex";
public static final String JSONLD_TERM_REVOCATIONLISTCREDENTIAL = "revocationListCredential";

public static final String JSONLD_TERM_BLOCKCHAIN_HASH_PROOF_2020 = "BlockchainHashProof2020";
}
Loading

0 comments on commit 4e27901

Please sign in to comment.