Skip to main content

Verify an issued Verifiable Credential (VC)

Verify issued credentials using the BlockID SDK. Following the W3C Verifiable Credentials Data Model, developers can verify credentials from BlockID with 1Kosmos as the Issuer and the Driver's License data as the Identifier and Credential Subject.

The BlockID SDK allows users to verify credentials issued by 1Kosmos. Please see Request a Verifiable Credential (VC) for a Driver's License and Request a Verifiable Credential (VC) for an Employment Card for information on how to request an issued Verifiable Credential.

Prerequisites

Users first need to request a Verifiable Credential. Once a credential has been issued users can verify the credential data.

Please see the pages below for more information on how to request a verifiable credential for a Driver's License or Employment Card:

Verify an Issued Verifiable Credential (VC)

Parameters

  • dns: tenant domain as shown in the dashboard
  • communityName: tenant community as shown in the dashboard
  • licenseKey: tenant license key as shown in the dashboard

Request Format

tip

All requests are plug-and-play, not copy-paste. Please ensure that you are replacing the parameters in the request format below with the actual values

Please use the following format outlined below to verify an issued Verifiable Credential:

  • Add dependencies and set tenant info
const BIDTenant = require("blockid-nodejs-helpers/BIDTenant.js");
const BIDVerifiableCredential = require("blockid-nodejs-helpers/BIDVerifiableCredential.js");

const tenantInfo = {
dns: "<tenant dns>",
communityName: "<community name>",
licenseKey: "<user license key>",
};
  • Add issued VC
let issuedVerifiableCredential = {
<"issued verified credential">
}
  • Verify the issued VC
async function verifyCredential(issuedVerifiableCredential) {
let verifiedVCResponse = await BIDVerifiableCredential.verifyCredential(
tenantInfo,
issuedVerifiableCredential
);

console.log("verifiedVCResponse::::::", JSON.stringify(verifiedVCResponse));

return verifiedVCResponse;
}

verifyCredential(issuedVerifiableCredential);

Example Request

We've provided a complete example request below for reference:

tip

The data shown here is from the Driver's License VC response Dummy information is provided in this example

const BIDTenant = require("blockid-nodejs-helpers/BIDTenant.js");
const BIDVerifiableCredential = require("blockid-nodejs-helpers/BIDVerifiableCredential.js");

let tenantInfo = {
dns: "blockid-trial.1kosmos.net",
communityName: "devx",
licenseKey: "9b074532-845b-4c75-ba3e-2b8950000000",
};

let issuedVerifiableCredential = {
"@context": [
"https://www.w3.org/2018/credentials/v1",
{
DriversLicenseCredential: "https://schema.org#DriversLicenseCredential",
documentId: "https://schema.org#documentId",
documentType: "https://schema.org#documentType",
firstName: "https://schema.org#firstName",
lastName: "https://schema.org#lastName",
dob: "https://schema.org#dob",
doe: "https://schema.org#doe",
doi: "https://schema.org#doi",
gender: "https://schema.org#gender",
street: "https://schema.org#street",
city: "https://schema.org#city",
state: "https://schema.org#state",
country: "https://schema.org#country",
zipCode: "https://schema.org#zipCode",
publicKey: "https://schema.org#publicKey",
},
"https://w3id.org/security/suites/ed25519-2020/v1",
],
id: "did:blockid:442ac157-4fb2-4dd3-99b3-ee4306deb5d1",
type: ["VerifiableCredential", "DriversLicenseCredential"],
issuer: { id: "did:blockid:dmv:USA:WA" },
issuanceDate: "2022-12-12T05:17:50.149Z",
expirationDate: "2027-06-20T00:00:00.000Z",
credentialSubject: {
documentId: "W599Z0673B",
documentType: "DL",
firstName: "CAMEMON",
lastName: "ABBA",
dob: "1963-06-20",
doe: "2027-06-20",
doi: "2021-06-05",
gender: "1",
street: "19821 NE 185TH ST",
city: "WOODINVILLE",
state: "WA",
country: "USA",
zipCode: "980779426",
id: "did:2a651b36-c582-46cb-995c-f60380104c70",
publicKey:
"aRnlolY2VlKAgOsdB2zmry0YzfiXYDt5GrCYyZIX4ITkNpMMuoTR/rKHuzDr7hKBhwBnAm+6LGnyuPSY/WK9XQ==",
},
proof: {
type: "Ed25519Signature2020",
created: "2022-12-12T05:17:50Z",
verificationMethod:
"did:key:blockid:z6MkvFNv22WzDetLgdzYidCFQJosD5Z9pDr9cmX7RtREuoji",
proofPurpose: "assertionMethod",
proofValue:
"z3sMWYFHUZeo11jysZMX2f2dVpubJ47Li6uJHYBUYCWR8UjCp3wszbfy6ZBmy9YBj4HAw2kF6zDyagqsUh43zZrRh",
},
statusUrl:
"https://blockid-trial.1kosmos.net/vcs/tenant/63627082d0b7e36525e281aa/community/63627302d0b7e36525e2828d/vc/did:blockid:442ac157-4fb2-4dd3-99b3-ee4306deb5d1/status",
};

async function verifyCredential(issuedVerifiableCredential) {
let verifiedVCResponse = await BIDVerifiableCredential.verifyCredential(
tenantInfo,
issuedVerifiableCredential
);

console.log("verifiedVCResponse::::::", JSON.stringify(verifiedVCResponse));

return verifiedVCResponse;
}

verifyCredential(issuedVerifiableCredential);

Server Responses

Please review the responses below for expected output after verifying an issued VC. A successful request will include a "verified:true" response object.

tip

Responses include dummy data as an example of a typical response

200 Verified True
{
"verified": true,
"status": {
"subject": {
"did": "did:2a651b36-c582-46cb-995c-f60380104c70",
"publicKey": "aRnlolY2VlKAgOsdB2zmry0YzfiXYDt5GrCYyZIX4ITkNpMMuoTR/rKHuzDr7hKBhwBnAm+6LGnyuPSY/WK9XQ=="
},
"type": [
"VerifiableCredential",
"DriversLicenseCredential"
],
"_id": "6396b97e028c790013b4c144",
"vcID": "did:blockid:442ac157-4fb2-4dd3-99b3-ee4306deb5d1",
"tenantId": "63627082d0b7e36525e281aa",
"communityId": "63627302d0b7e36525e2828d",
"proof": {
"type": "Ed25519Signature2020",
"created": "2022-12-12T05:17:50Z",
"verificationMethod": "did:key:blockid:z6MkvFNv22WzDetLgdzYidCFQJosD5Z9pDr9cmX7RtREuoji",
"proofPurpose": "assertionMethod",
"proofValue": "z3sMWYFHUZeo11jysZMX2f2dVpubJ47Li6uJHYBUYCWR8UjCp3wszbfy6ZBmy9YBj4HAw2kF6zDyagqsUh43zZrRh"
},
"issueTS": 1670822270,
"expiryTS": 1813449600,
"status": "issued",
"issuer": {
"id": "did:blockid:dmv:USA:WA"
}
}
}