Skip to content

Commit

Permalink
Merge branch 'next' into feat/seed-test-identifier
Browse files Browse the repository at this point in the history
  • Loading branch information
namhoang1604 authored Oct 11, 2024
2 parents 5f99a85 + 2adb515 commit 74dc25a
Show file tree
Hide file tree
Showing 21 changed files with 1,732 additions and 120 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"scripts": {
"postinstall": "mkdir .tmp_npm; cd .tmp_npm; mkdir veramo; cd veramo; git init; git remote add -f origin https://github.com/gs-gs/veramo.git; git pull --depth=1 origin vc-v2; pnpm install; pnpm build;",
"build": "pnpm build:agent && pnpm build:explorer",
"build:agent": "cross-env NODE_OPTIONS=\"--experimental-vm-modules --experimental-json-modules\" pnpm build:js && pnpm build:api && pnpm build:schema",
"build:agent": "cross-env NODE_OPTIONS=\"--experimental-vm-modules --experimental-json-modules\" pnpm --ignore-scripts build:js && pnpm --ignore-scripts build:api && pnpm --ignore-scripts build:schema",
"build:js": "pnpm -r --stream --filter !./packages/vckit-oa-renderers/ --filter !./packages/credential-oa/ --filter !./packages/demo-explorer/ build",
"build:api": "pnpm --package=@vckit/cli -c dlx \"pnpm -r --stream --filter !./packages/vckit-oa-renderers/ --filter !./packages/credential-oa/ --filter !./packages/demo-explorer/ extract-api\"",
"build:schema": "pnpm --package=@vckit/cli -c dlx \"pnpm -r --stream generate-plugin-schema\"",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { DataSource, EntityManager } from 'typeorm';
import { OrPromise } from '@veramo/utils';
import { BitstringStatusList } from '../src/bitstring-status-list';

describe('bitstring status list', () => {
describe.skip('bitstring status list', () => {
let bitstringStatusList: BitstringStatusList;
beforeEach(() => {
bitstringStatusList = new BitstringStatusList({
Expand Down
33 changes: 26 additions & 7 deletions packages/bitstringStatusList/src/bitstring-status-list-status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import { DocumentLoader } from '@transmute/vc-status-rl-2020/dist/types';
import * as didKey from '@transmute/did-key.js';
import * as didWeb from '@transmute/did-web';
import {
CredentialStatusIssuerObject,
EnvelopedVerifiableCredential,
ICredentialRouter,
IVerifiableCredentialJSONOrJWT,
IssuerType,
Expand Down Expand Up @@ -85,9 +87,17 @@ export async function checkStatus(credential: IVerifiableCredentialJSONOrJWT) {
if (typeof credential === 'string') {
({ statusEntry, issuer } =
_getCredentialSubjectStatusEntryAndIssuerFromJWT(credential));
}
if (
(<EnvelopedVerifiableCredential>credential).type ===
'EnvelopedVerifiableCredential'
) {
const jwt = (<EnvelopedVerifiableCredential>credential).id.split(',')[1];
({ statusEntry, issuer } =
_getCredentialSubjectStatusEntryAndIssuerFromJWT(jwt));
} else {
statusEntry = credential.credentialStatus;
issuer = credential.issuer;
statusEntry = (<CredentialStatusIssuerObject>credential).credentialStatus;
issuer = (<CredentialStatusIssuerObject>credential).issuer;
}

if (!statusEntry) {
Expand Down Expand Up @@ -189,7 +199,7 @@ const _checkStatuses = async (
};

const verifyBitstringStatusListCredential = (
credential: W3CVerifiableCredential,
credential: W3CVerifiableCredential | EnvelopedVerifiableCredential,
) => {
const agent = createAgent<ICredentialRouter>({
plugins: [
Expand Down Expand Up @@ -225,10 +235,10 @@ const _checkStatus = async (
const { statusListIndex } = statusEntry;
const index = parseInt(statusListIndex, 10);
// retrieve SL VC
let slCredential: W3CVerifiableCredential;
let slCredential: W3CVerifiableCredential | EnvelopedVerifiableCredential;
try {
const { document } = await documentLoader(statusEntry.statusListCredential);
slCredential = document as W3CVerifiableCredential;
slCredential = document as any;
} catch (e) {
return {
revoked: true,
Expand Down Expand Up @@ -263,9 +273,18 @@ const _checkStatus = async (
if (typeof slCredential === 'string') {
({ credentialSubject: slCredentialSubject, issuer: slIssuer } =
_getCredentialSubjectStatusEntryAndIssuerFromJWT(slCredential));
}
if (
(<EnvelopedVerifiableCredential>slCredential).type ===
'EnvelopedVerifiableCredential'
) {
const jwt = (<EnvelopedVerifiableCredential>slCredential).id.split(',')[1];
({ credentialSubject: slCredentialSubject, issuer: slIssuer } =
_getCredentialSubjectStatusEntryAndIssuerFromJWT(jwt));
} else {
slCredentialSubject = slCredential.credentialSubject;
slIssuer = slCredential.issuer;
slCredentialSubject = (<VerifiableCredential>slCredential)
.credentialSubject;
slIssuer = (<VerifiableCredential>slCredential).issuer;
}

const { statusPurpose: credentialStatusPurpose } = statusEntry;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ import {
IBitstringStatusListArgs,
IBitstringStatusListEntry,
ISetBitstringStatusArgs,
W3CVerifiableCredential,
CredentialSubject,
UnsignedCredential,
EnvelopedVerifiableCredential,
VerifiableCredential,
} from '@vckit/core-types';
import { OrPromise } from '@veramo/utils';
import {
Expand All @@ -21,6 +26,7 @@ import {
} from 'typeorm';
import { BitstringStatusListEntry } from '../entities/bitstring-status-list-entry-data.js';
import { getConnectedDb } from '../utils.js';
import { decodeJWT } from 'did-jwt';

const DB_ERRORS = ['serialize', 'deadlock'];

Expand Down Expand Up @@ -165,22 +171,52 @@ export class BitstringStatusListEntryStore {
throw new Error('Bitstring Status List not found');
}

const vc = JSON.parse(bitstringStatusList.verifiableCredential!);
const vc: W3CVerifiableCredential | EnvelopedVerifiableCredential =
JSON.parse(bitstringStatusList.verifiableCredential!);
let unsignedVC: UnsignedCredential;
let credentialSubject: CredentialSubject;
const getUnsignedVCAndCredentialSubjectFromJWT = (vc: string) => {
const decoded = decodeJWT(vc);
const unsignedVC = decoded?.payload as UnsignedCredential;

return {
unsignedVC,
credentialSubject:
decoded?.payload?.vc?.credentialSubject ||
decoded?.payload?.credentialSubject,
};
};

if (typeof vc === 'string') {
({ unsignedVC, credentialSubject } =
getUnsignedVCAndCredentialSubjectFromJWT(vc));
}
if (
(<EnvelopedVerifiableCredential>vc).type ===
'EnvelopedVerifiableCredential'
) {
const jwt = (<EnvelopedVerifiableCredential>vc).id.split(',')[1];
({ unsignedVC, credentialSubject } =
getUnsignedVCAndCredentialSubjectFromJWT(jwt));
} else {
credentialSubject = (<VerifiableCredential>vc).credentialSubject;
unsignedVC = { ...(<VerifiableCredential>vc) };
delete unsignedVC.proof;
}

const list = await decodeList({
encodedList: vc.credentialSubject.encodedList,
encodedList: credentialSubject.encodedList,
});

list.setStatus(args.index, args.status);

vc.credentialSubject.encodedList = await list.encode();
delete vc.proof;
delete vc.issuanceDate;
credentialSubject.encodedList = await list.encode();

const bitstringStatusListVC = await args.context.agent.execute(
'createVerifiableCredential',
{
credential: vc,
proofFormat: 'lds',
credential: unsignedVC,
proofFormat: 'EnvelopingProofJose',
fetchRemoteContexts: true,
},
);
Expand Down
2 changes: 2 additions & 0 deletions packages/cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@
"@veramo/url-handler": "5.5.3",
"@veramo/utils": "5.5.3",
"blessed": "^0.1.81",
"body-parser": "^1.20.3",
"commander": "^11.1.0",
"console-table-printer": "^2.12.0",
"cors": "^2.8.5",
Expand Down Expand Up @@ -110,6 +111,7 @@
"yaml": "^2.3.4"
},
"devDependencies": {
"@types/body-parser": "^1.19.5",
"@types/debug": "4.1.12",
"@types/express": "4.17.21",
"@types/inquirer": "9.0.7",
Expand Down
3 changes: 3 additions & 0 deletions packages/cli/src/server.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import express from 'express'
import { Command } from 'commander'
import bodyParser from 'body-parser'
import { getConfig } from './setup.js'
import { createObjects } from './lib/objectCreator.js'

Expand All @@ -8,6 +9,8 @@ const server = new Command('server')
.option('-p, --port <number>', 'Optionally set port to override config')
.action(async (opts: { port: number }, cmd: Command) => {
const app = express()
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

let server: any

Expand Down
Loading

0 comments on commit 74dc25a

Please sign in to comment.