@sphereon/ssi-sdk.data-store 0.18.2-unstable.96 → 0.18.2-unstable.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/digitalCredential/DigitalCredentialStore.d.ts.map +1 -1
- package/dist/digitalCredential/DigitalCredentialStore.js +3 -1
- package/dist/digitalCredential/DigitalCredentialStore.js.map +1 -1
- package/dist/entities/digitalCredential/DigitalCredentialEntity.d.ts +3 -3
- package/dist/entities/digitalCredential/DigitalCredentialEntity.d.ts.map +1 -1
- package/dist/entities/digitalCredential/DigitalCredentialEntity.js +4 -4
- package/dist/entities/digitalCredential/DigitalCredentialEntity.js.map +1 -1
- package/dist/migrations/postgres/1708525189001-CreateDigitalCredential.js +4 -4
- package/dist/migrations/postgres/1708525189001-CreateDigitalCredential.js.map +1 -1
- package/dist/migrations/sqlite/1708525189002-CreateDigitalCredential.js +2 -2
- package/dist/types/digitalCredential/IAbstractDigitalCredentialStore.d.ts +4 -2
- package/dist/types/digitalCredential/IAbstractDigitalCredentialStore.d.ts.map +1 -1
- package/dist/types/digitalCredential/digitalCredential.d.ts +3 -3
- package/dist/types/digitalCredential/digitalCredential.d.ts.map +1 -1
- package/dist/types/digitalCredential/digitalCredential.js +8 -8
- package/dist/types/digitalCredential/digitalCredential.js.map +1 -1
- package/dist/utils/digitalCredential/MappingUtils.d.ts.map +1 -1
- package/dist/utils/digitalCredential/MappingUtils.js +10 -17
- package/dist/utils/digitalCredential/MappingUtils.js.map +1 -1
- package/package.json +4 -4
- package/src/__tests__/digitalCredential.entities.test.ts +18 -15
- package/src/__tests__/digitalCredential.store.test.ts +18 -13
- package/src/digitalCredential/DigitalCredentialStore.ts +4 -1
- package/src/entities/digitalCredential/DigitalCredentialEntity.ts +5 -5
- package/src/migrations/postgres/1708525189001-CreateDigitalCredential.ts +4 -4
- package/src/migrations/sqlite/1708525189002-CreateDigitalCredential.ts +2 -2
- package/src/types/digitalCredential/IAbstractDigitalCredentialStore.ts +4 -2
- package/src/types/digitalCredential/digitalCredential.ts +3 -3
- package/src/utils/digitalCredential/MappingUtils.ts +12 -19
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DigitalCredentialStore.d.ts","sourceRoot":"","sources":["../../src/digitalCredential/DigitalCredentialStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4DAA4D,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAgC,MAAM,SAAS,CAAA;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAA;AAQ/F,qBAAa,sBAAuB,SAAQ,8BAA8B;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;gBAExC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC;IAK/C,aAAa,SAAgB,iBAAiB,KAAG,QAAQ,uBAAuB,CAAC,CAMhF;IAED,aAAa,SAAgB,iBAAiB,KAAG,QAAQ,uBAAuB,CAAC,CAShF;IAED,cAAc,UAAiB,kBAAkB,KAAG,QAAQ,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"DigitalCredentialStore.d.ts","sourceRoot":"","sources":["../../src/digitalCredential/DigitalCredentialStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAA;AACjF,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4DAA4D,CAAA;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAgC,MAAM,SAAS,CAAA;AAElE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAA;AAQ/F,qBAAa,sBAAuB,SAAQ,8BAA8B;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;gBAExC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC;IAK/C,aAAa,SAAgB,iBAAiB,KAAG,QAAQ,uBAAuB,CAAC,CAMhF;IAED,aAAa,SAAgB,iBAAiB,KAAG,QAAQ,uBAAuB,CAAC,CAShF;IAED,cAAc,UAAiB,kBAAkB,KAAG,QAAQ,sBAAsB,CAAC,CAgBlF;IAED,gBAAgB,SAAgB,oBAAoB,KAAG,QAAQ,OAAO,CAAC,CAsBtE;IAED,qBAAqB,SAAgB,yBAAyB,KAAG,QAAQ,uBAAuB,CAAC,CAoChG;CACF"}
|
|
@@ -41,7 +41,9 @@ class DigitalCredentialStore extends AbstractDigitalCredentialStore_1.AbstractDi
|
|
|
41
41
|
});
|
|
42
42
|
this.getCredentials = (args) => __awaiter(this, void 0, void 0, function* () {
|
|
43
43
|
const { filter = {}, offset, limit, order = 'id.asc' } = args !== null && args !== void 0 ? args : {};
|
|
44
|
-
const sortOptions =
|
|
44
|
+
const sortOptions = order && typeof order === 'string'
|
|
45
|
+
? (0, SortingUtils_1.parseAndValidateOrderOptions)(order)
|
|
46
|
+
: order;
|
|
45
47
|
const [result, total] = yield (yield this.dbConnection).getRepository(DigitalCredentialEntity_1.DigitalCredentialEntity).findAndCount({
|
|
46
48
|
where: filter,
|
|
47
49
|
skip: offset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DigitalCredentialStore.js","sourceRoot":"","sources":["../../src/digitalCredential/DigitalCredentialStore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qFAAiF;AAWjF,kDAAyB;AACzB,mGAA+F;AAC/F,0EAAwG;AAExG,oFAAoI;AACpI,wDAAoE;AAEpE,MAAM,KAAK,GAAmB,IAAA,eAAK,EAAC,mCAAmC,CAAC,CAAA;AAExE,MAAa,sBAAuB,SAAQ,+DAA8B;IAGxE,YAAY,YAAmC;QAC7C,KAAK,EAAE,CAAA;QAIT,kBAAa,GAAG,CAAO,IAAuB,EAAoC,EAAE;YAClF,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAA;YAChC,MAAM,iCAAiC,GAAwC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,iDAAuB,CAAC,CAAA;YAC/I,MAAM,gBAAgB,GAAkC,IAAA,6DAA8C,EAAC,IAAI,CAAC,CAAA;YAC5G,MAAM,aAAa,GAA4B,MAAM,iCAAiC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YAC7G,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACvC,CAAC,CAAA,CAAA;QAED,kBAAa,GAAG,CAAO,IAAuB,EAAoC,EAAE;YAClF,MAAM,MAAM,GAAmC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,iDAAuB,CAAC,CAAC,OAAO,CAAC;gBAC5H,KAAK,EAAE,IAAI;aACZ,CAAC,CAAA;YAEF,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA;aAChF;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAA,CAAA;QAED,mBAAc,GAAG,CAAO,IAAyB,EAAmC,EAAE;YACpF,MAAM,EAAE,MAAM,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,CAAA;YACnE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"DigitalCredentialStore.js","sourceRoot":"","sources":["../../src/digitalCredential/DigitalCredentialStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseEntity } from 'typeorm';
|
|
2
|
-
import { CredentialCorrelationType, CredentialDocumentFormat, CredentialStateType,
|
|
2
|
+
import { CredentialCorrelationType, CredentialDocumentFormat, CredentialStateType, DocumentType } from '../../types/digitalCredential/digitalCredential';
|
|
3
3
|
export declare class DigitalCredentialEntity extends BaseEntity {
|
|
4
4
|
id: string;
|
|
5
|
-
|
|
5
|
+
documentType: DocumentType;
|
|
6
6
|
documentFormat: CredentialDocumentFormat;
|
|
7
|
-
|
|
7
|
+
rawDocument: string;
|
|
8
8
|
uniformDocument: string;
|
|
9
9
|
hash: string;
|
|
10
10
|
issuerCorrelationType: CredentialCorrelationType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DigitalCredentialEntity.d.ts","sourceRoot":"","sources":["../../../src/entities/digitalCredential/DigitalCredentialEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8E,MAAM,SAAS,CAAA;AAChH,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"DigitalCredentialEntity.d.ts","sourceRoot":"","sources":["../../../src/entities/digitalCredential/DigitalCredentialEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA8E,MAAM,SAAS,CAAA;AAChH,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,mBAAmB,EACnB,YAAY,EACb,MAAM,iDAAiD,CAAA;AAExD,qBACa,uBAAwB,SAAQ,UAAU;IAErD,EAAE,EAAG,MAAM,CAAA;IAGX,YAAY,EAAG,YAAY,CAAA;IAG3B,cAAc,EAAG,wBAAwB,CAAA;IAGzC,WAAW,EAAG,MAAM,CAAA;IAGpB,eAAe,EAAG,MAAM,CAAA;IAGxB,IAAI,EAAG,MAAM,CAAA;IAGb,qBAAqB,EAAG,yBAAyB,CAAA;IAGjD,sBAAsB,CAAC,EAAE,yBAAyB,CAAA;IAGlD,mBAAmB,EAAG,MAAM,CAAA;IAG5B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAG7B,aAAa,CAAC,EAAE,mBAAmB,CAAA;IAGnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAGjB,SAAS,EAAG,IAAI,CAAA;IAGhB,aAAa,EAAG,IAAI,CAAA;IAGpB,UAAU,CAAC,EAAE,IAAI,CAAA;IAGjB,SAAS,CAAC,EAAE,IAAI,CAAA;IAGhB,UAAU,CAAC,EAAE,IAAI,CAAA;IAGjB,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB"}
|
|
@@ -19,17 +19,17 @@ __decorate([
|
|
|
19
19
|
__metadata("design:type", String)
|
|
20
20
|
], DigitalCredentialEntity.prototype, "id", void 0);
|
|
21
21
|
__decorate([
|
|
22
|
-
(0, typeorm_1.Column)('simple-enum', { name: '
|
|
22
|
+
(0, typeorm_1.Column)('simple-enum', { name: 'document_type', enum: digitalCredential_1.DocumentType, nullable: false }),
|
|
23
23
|
__metadata("design:type", String)
|
|
24
|
-
], DigitalCredentialEntity.prototype, "
|
|
24
|
+
], DigitalCredentialEntity.prototype, "documentType", void 0);
|
|
25
25
|
__decorate([
|
|
26
26
|
(0, typeorm_1.Column)('simple-enum', { name: 'document_format', enum: digitalCredential_1.CredentialDocumentFormat, nullable: false }),
|
|
27
27
|
__metadata("design:type", String)
|
|
28
28
|
], DigitalCredentialEntity.prototype, "documentFormat", void 0);
|
|
29
29
|
__decorate([
|
|
30
|
-
(0, typeorm_1.Column)('text', { name: '
|
|
30
|
+
(0, typeorm_1.Column)('text', { name: 'raw_document', nullable: false }),
|
|
31
31
|
__metadata("design:type", String)
|
|
32
|
-
], DigitalCredentialEntity.prototype, "
|
|
32
|
+
], DigitalCredentialEntity.prototype, "rawDocument", void 0);
|
|
33
33
|
__decorate([
|
|
34
34
|
(0, typeorm_1.Column)('text', { name: 'uniform_document', nullable: false }),
|
|
35
35
|
__metadata("design:type", String)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DigitalCredentialEntity.js","sourceRoot":"","sources":["../../../src/entities/digitalCredential/DigitalCredentialEntity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAgH;AAChH,uFAKwD;AAGjD,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,oBAAU;CAsDtD,CAAA;AArDC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;mDACpB;AAEX;IAAC,IAAA,gBAAM,EAAC,aAAa,EAAE,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"DigitalCredentialEntity.js","sourceRoot":"","sources":["../../../src/entities/digitalCredential/DigitalCredentialEntity.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,16 +16,16 @@ class CreateDigitalCredential1708525189001 {
|
|
|
16
16
|
}
|
|
17
17
|
up(queryRunner) {
|
|
18
18
|
return __awaiter(this, void 0, void 0, function* () {
|
|
19
|
-
yield queryRunner.query(`CREATE TYPE "
|
|
19
|
+
yield queryRunner.query(`CREATE TYPE "digital_document_type" AS ENUM('VC', 'VP', 'C', 'P')`);
|
|
20
20
|
yield queryRunner.query(`CREATE TYPE "digital_credential_document_format" AS ENUM('JSON_LD', 'JWT', 'SD_JWT', 'MDOC')`);
|
|
21
21
|
yield queryRunner.query(`CREATE TYPE "digital_credential_correlation_type" AS ENUM('DID')`);
|
|
22
22
|
yield queryRunner.query(`CREATE TYPE "digital_credential_state_type" AS ENUM('REVOKED', 'VERIFIED', 'EXPIRED')`);
|
|
23
23
|
yield queryRunner.query(`
|
|
24
24
|
CREATE TABLE "DigitalCredential" (
|
|
25
25
|
"id" uuid NOT NULL DEFAULT uuid_generate_v4(),
|
|
26
|
-
"
|
|
26
|
+
"document_type" "digital_document_type" NOT NULL,
|
|
27
27
|
"document_format" "digital_credential_document_format" NOT NULL,
|
|
28
|
-
"
|
|
28
|
+
"raw_document" text NOT NULL,
|
|
29
29
|
"uniform_document" text NOT NULL,
|
|
30
30
|
"hash" text NOT NULL UNIQUE,
|
|
31
31
|
"issuer_correlation_type" "digital_credential_correlation_type" NOT NULL,
|
|
@@ -51,7 +51,7 @@ class CreateDigitalCredential1708525189001 {
|
|
|
51
51
|
yield queryRunner.query(`DROP TYPE "digital_credential_state_type"`);
|
|
52
52
|
yield queryRunner.query(`DROP TYPE "digital_credential_correlation_type"`);
|
|
53
53
|
yield queryRunner.query(`DROP TYPE "digital_credential_document_format"`);
|
|
54
|
-
yield queryRunner.query(`DROP TYPE "
|
|
54
|
+
yield queryRunner.query(`DROP TYPE "digital_document_type"`);
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"1708525189001-CreateDigitalCredential.js","sourceRoot":"","sources":["../../../src/migrations/postgres/1708525189001-CreateDigitalCredential.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,MAAa,oCAAoC;IAAjD;QACE,SAAI,GAAG,sCAAsC,CAAA;IAwC/C,CAAC;IAtCc,EAAE,CAAC,WAAwB;;YACtC,MAAM,WAAW,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"1708525189001-CreateDigitalCredential.js","sourceRoot":"","sources":["../../../src/migrations/postgres/1708525189001-CreateDigitalCredential.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,MAAa,oCAAoC;IAAjD;QACE,SAAI,GAAG,sCAAsC,CAAA;IAwC/C,CAAC;IAtCc,EAAE,CAAC,WAAwB;;YACtC,MAAM,WAAW,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAA;YAC5F,MAAM,WAAW,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAA;YACvH,MAAM,WAAW,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAA;YAC3F,MAAM,WAAW,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAA;YAEhH,MAAM,WAAW,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;KAsBvB,CAAC,CAAA;QACJ,CAAC;KAAA;IAEY,IAAI,CAAC,WAAwB;;YACxC,MAAM,WAAW,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;YACzD,MAAM,WAAW,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAA;YACpE,MAAM,WAAW,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAA;YAC1E,MAAM,WAAW,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;YACzE,MAAM,WAAW,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;QAC9D,CAAC;KAAA;CACF;AAzCD,oFAyCC"}
|
|
@@ -19,9 +19,9 @@ class CreateDigitalCredential1708525189002 {
|
|
|
19
19
|
yield queryRunner.query(`
|
|
20
20
|
CREATE TABLE "DigitalCredential" (
|
|
21
21
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
22
|
-
"
|
|
22
|
+
"document_type" varchar CHECK( "document_type" IN ('VC', 'VP', 'C', 'P') ) NOT NULL,
|
|
23
23
|
"document_format" varchar CHECK( "document_format" IN ('JSON_LD', 'JWT', 'SD_JWT', 'MDOC') ) NOT NULL,
|
|
24
|
-
"
|
|
24
|
+
"raw_document" text NOT NULL,
|
|
25
25
|
"uniform_document" text NOT NULL,
|
|
26
26
|
"hash" text NOT NULL UNIQUE,
|
|
27
27
|
"issuer_correlation_type" varchar CHECK( "issuer_correlation_type" IN ('DID') ) NOT NULL,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CredentialCorrelationType, CredentialStateType, DigitalCredential } from './digitalCredential';
|
|
2
2
|
import { Hasher } from '@sphereon/ssi-types';
|
|
3
|
+
import { FindOptionsOrder } from 'typeorm';
|
|
4
|
+
import { DigitalCredentialEntity } from '../../entities/digitalCredential/DigitalCredentialEntity';
|
|
3
5
|
export type GetCredentialArgs = {
|
|
4
6
|
id: string;
|
|
5
7
|
} | {
|
|
@@ -10,14 +12,14 @@ export type GetCredentialsArgs = {
|
|
|
10
12
|
filter?: FindDigitalCredentialArgs;
|
|
11
13
|
offset?: number;
|
|
12
14
|
limit?: number;
|
|
13
|
-
order?: string
|
|
15
|
+
order?: string | FindOptionsOrder<DigitalCredentialEntity>;
|
|
14
16
|
};
|
|
15
17
|
export type GetCredentialsResponse = {
|
|
16
18
|
data: Array<DigitalCredential>;
|
|
17
19
|
total: number;
|
|
18
20
|
};
|
|
19
21
|
export type AddCredentialArgs = {
|
|
20
|
-
|
|
22
|
+
rawDocument: string;
|
|
21
23
|
issuerCorrelationType: CredentialCorrelationType;
|
|
22
24
|
subjectCorrelationType?: CredentialCorrelationType;
|
|
23
25
|
issuerCorrelationId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IAbstractDigitalCredentialStore.d.ts","sourceRoot":"","sources":["../../../src/types/digitalCredential/IAbstractDigitalCredentialStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"IAbstractDigitalCredentialStore.d.ts","sourceRoot":"","sources":["../../../src/types/digitalCredential/IAbstractDigitalCredentialStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAA;AAElG,MAAM,MAAM,iBAAiB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEjE,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,yBAAyB,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,uBAAuB,CAAC,CAAA;CAC3D,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB,EAAE,yBAAyB,CAAA;IAChD,sBAAsB,CAAC,EAAE,yBAAyB,CAAA;IAClD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,mBAAmB,CAAA;IAC3B,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACrD,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG;IAAE,aAAa,EAAE,mBAAmB,CAAC;IAAC,UAAU,CAAC,EAAE,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,IAAI,CAAA;CAAE,CAAA;AAEvI,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export type NonPersistedDigitalCredential = Omit<DigitalCredential, 'id'>;
|
|
2
2
|
export type DigitalCredential = {
|
|
3
3
|
id: string;
|
|
4
|
-
|
|
4
|
+
documentType: DocumentType;
|
|
5
5
|
documentFormat: CredentialDocumentFormat;
|
|
6
|
-
|
|
6
|
+
rawDocument: string;
|
|
7
7
|
uniformDocument: string;
|
|
8
8
|
hash: string;
|
|
9
9
|
issuerCorrelationType: CredentialCorrelationType;
|
|
@@ -19,7 +19,7 @@ export type DigitalCredential = {
|
|
|
19
19
|
verifiedAt?: Date;
|
|
20
20
|
revokedAt?: Date;
|
|
21
21
|
};
|
|
22
|
-
export declare enum
|
|
22
|
+
export declare enum DocumentType {
|
|
23
23
|
VC = "VC",
|
|
24
24
|
VP = "VP",
|
|
25
25
|
P = "P",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digitalCredential.d.ts","sourceRoot":"","sources":["../../../src/types/digitalCredential/digitalCredential.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAEzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,
|
|
1
|
+
{"version":3,"file":"digitalCredential.d.ts","sourceRoot":"","sources":["../../../src/types/digitalCredential/digitalCredential.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,6BAA6B,GAAG,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;AAEzE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,wBAAwB,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,qBAAqB,EAAE,yBAAyB,CAAA;IAChD,sBAAsB,CAAC,EAAE,yBAAyB,CAAA;IAClD,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,aAAa,CAAC,EAAE,mBAAmB,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,IAAI,CAAA;IACf,aAAa,EAAE,IAAI,CAAA;IACnB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,UAAU,CAAC,EAAE,IAAI,CAAA;IACjB,SAAS,CAAC,EAAE,IAAI,CAAA;CACjB,CAAA;AAED,oBAAY,YAAY;IACtB,EAAE,OAAO;IACT,EAAE,OAAO;IACT,CAAC,MAAM;IACP,CAAC,MAAM;CACR;AAED,oBAAY,wBAAwB;IAClC,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,oBAAY,yBAAyB;IACnC,GAAG,QAAQ;CACZ;AAED,oBAAY,mBAAmB;IAC7B,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CredentialStateType = exports.CredentialCorrelationType = exports.CredentialDocumentFormat = exports.
|
|
4
|
-
var
|
|
5
|
-
(function (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
})(
|
|
3
|
+
exports.CredentialStateType = exports.CredentialCorrelationType = exports.CredentialDocumentFormat = exports.DocumentType = void 0;
|
|
4
|
+
var DocumentType;
|
|
5
|
+
(function (DocumentType) {
|
|
6
|
+
DocumentType["VC"] = "VC";
|
|
7
|
+
DocumentType["VP"] = "VP";
|
|
8
|
+
DocumentType["P"] = "P";
|
|
9
|
+
DocumentType["C"] = "C";
|
|
10
|
+
})(DocumentType = exports.DocumentType || (exports.DocumentType = {}));
|
|
11
11
|
var CredentialDocumentFormat;
|
|
12
12
|
(function (CredentialDocumentFormat) {
|
|
13
13
|
CredentialDocumentFormat["JSON_LD"] = "JSON_LD";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digitalCredential.js","sourceRoot":"","sources":["../../../src/types/digitalCredential/digitalCredential.ts"],"names":[],"mappings":";;;AAuBA,IAAY,
|
|
1
|
+
{"version":3,"file":"digitalCredential.js","sourceRoot":"","sources":["../../../src/types/digitalCredential/digitalCredential.ts"],"names":[],"mappings":";;;AAuBA,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,yBAAS,CAAA;IACT,yBAAS,CAAA;IACT,uBAAO,CAAA;IACP,uBAAO,CAAA;AACT,CAAC,EALW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAKvB;AAED,IAAY,wBAKX;AALD,WAAY,wBAAwB;IAClC,+CAAmB,CAAA;IACnB,uCAAW,CAAA;IACX,6CAAiB,CAAA;IACjB,yCAAa,CAAA;AACf,CAAC,EALW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAKnC;AAED,IAAY,yBAEX;AAFD,WAAY,yBAAyB;IACnC,wCAAW,CAAA;AACb,CAAC,EAFW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAEpC;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,4CAAqB,CAAA;IACrB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAI9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MappingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/digitalCredential/MappingUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+DAA+D,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAA;
|
|
1
|
+
{"version":3,"file":"MappingUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/digitalCredential/MappingUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+DAA+D,CAAA;AACjG,OAAO,EAAE,uBAAuB,EAAE,MAAM,0DAA0D,CAAA;AAWlG,OAAO,EAGL,iBAAiB,EACjB,6BAA6B,EAC9B,MAAM,iDAAiD,CAAA;AAqExD,eAAO,MAAM,8CAA8C,sBAAuB,iBAAiB,KAAG,6BAyBrG,CAAA;AAED,eAAO,MAAM,qBAAqB,qBAAsB,uBAAuB,KAAG,iBAIjF,CAAA;AAED,eAAO,MAAM,sBAAsB,uBAAwB,MAAM,uBAAuB,CAAC,KAAG,iBAAiB,EAE5G,CAAA"}
|
|
@@ -4,7 +4,7 @@ exports.digitalCredentialsFrom = exports.digitalCredentialFrom = exports.nonPers
|
|
|
4
4
|
const ssi_types_1 = require("@sphereon/ssi-types");
|
|
5
5
|
const digitalCredential_1 = require("../../types/digitalCredential/digitalCredential");
|
|
6
6
|
const utils_1 = require("@veramo/utils");
|
|
7
|
-
function
|
|
7
|
+
function determineDocumentType(raw) {
|
|
8
8
|
const rawDocument = parseRawDocument(raw);
|
|
9
9
|
if (!rawDocument) {
|
|
10
10
|
throw new Error(`Couldn't parse the credential: ${raw}`);
|
|
@@ -13,10 +13,10 @@ function determineCredentialType(raw) {
|
|
|
13
13
|
const isCredential = ssi_types_1.CredentialMapper.isCredential(rawDocument);
|
|
14
14
|
const isPresentation = ssi_types_1.CredentialMapper.isPresentation(rawDocument);
|
|
15
15
|
if (isCredential) {
|
|
16
|
-
return hasProof ? digitalCredential_1.
|
|
16
|
+
return hasProof ? digitalCredential_1.DocumentType.VC : digitalCredential_1.DocumentType.C;
|
|
17
17
|
}
|
|
18
18
|
else if (isPresentation) {
|
|
19
|
-
return hasProof ? digitalCredential_1.
|
|
19
|
+
return hasProof ? digitalCredential_1.DocumentType.VP : digitalCredential_1.DocumentType.P;
|
|
20
20
|
}
|
|
21
21
|
throw new Error(`Couldn't determine the type of the credential: ${raw}`);
|
|
22
22
|
}
|
|
@@ -56,16 +56,9 @@ function getValidUntil(uniformDocument) {
|
|
|
56
56
|
return undefined;
|
|
57
57
|
}
|
|
58
58
|
function getValidFrom(uniformDocument) {
|
|
59
|
-
let proof = undefined;
|
|
60
|
-
if (uniformDocument.proof && !uniformDocument.vct) {
|
|
61
|
-
proof = Array.isArray(uniformDocument.proof) ? uniformDocument.proof[0] : uniformDocument.proof;
|
|
62
|
-
}
|
|
63
59
|
if ('issuanceDate' in uniformDocument) {
|
|
64
60
|
return new Date(uniformDocument.issuanceDate);
|
|
65
61
|
}
|
|
66
|
-
else if (proof && proof.created) {
|
|
67
|
-
return new Date(proof.created);
|
|
68
|
-
}
|
|
69
62
|
else if ('validFrom' in uniformDocument) {
|
|
70
63
|
return new Date(uniformDocument['validFrom']);
|
|
71
64
|
}
|
|
@@ -79,19 +72,19 @@ function getValidFrom(uniformDocument) {
|
|
|
79
72
|
}
|
|
80
73
|
const nonPersistedDigitalCredentialEntityFromAddArgs = (addCredentialArgs) => {
|
|
81
74
|
var _a;
|
|
82
|
-
const
|
|
83
|
-
const documentFormat = ssi_types_1.CredentialMapper.detectDocumentType(addCredentialArgs.
|
|
75
|
+
const documentType = determineDocumentType(addCredentialArgs.rawDocument);
|
|
76
|
+
const documentFormat = ssi_types_1.CredentialMapper.detectDocumentType(addCredentialArgs.rawDocument);
|
|
84
77
|
if (documentFormat === 2 /* DocumentFormat.SD_JWT_VC */ && !((_a = addCredentialArgs.opts) === null || _a === void 0 ? void 0 : _a.hasher)) {
|
|
85
78
|
throw new Error('No hasher function is provided for SD_JWT credential.');
|
|
86
79
|
}
|
|
87
80
|
const uniformDocument = documentFormat === 2 /* DocumentFormat.SD_JWT_VC */
|
|
88
|
-
? (0, ssi_types_1.decodeSdJwtVc)(addCredentialArgs.
|
|
89
|
-
:
|
|
90
|
-
? ssi_types_1.CredentialMapper.toUniformCredential(addCredentialArgs.
|
|
91
|
-
: ssi_types_1.CredentialMapper.toUniformPresentation(addCredentialArgs.
|
|
81
|
+
? (0, ssi_types_1.decodeSdJwtVc)(addCredentialArgs.rawDocument, addCredentialArgs.opts.hasher).decodedPayload
|
|
82
|
+
: documentType === digitalCredential_1.DocumentType.VC || documentType === digitalCredential_1.DocumentType.C
|
|
83
|
+
? ssi_types_1.CredentialMapper.toUniformCredential(addCredentialArgs.rawDocument)
|
|
84
|
+
: ssi_types_1.CredentialMapper.toUniformPresentation(addCredentialArgs.rawDocument);
|
|
92
85
|
const validFrom = getValidFrom(uniformDocument);
|
|
93
86
|
const validUntil = getValidUntil(uniformDocument);
|
|
94
|
-
return Object.assign(Object.assign({}, addCredentialArgs), {
|
|
87
|
+
return Object.assign(Object.assign({}, addCredentialArgs), { documentType, documentFormat: determineCredentialDocumentFormat(documentFormat), createdAt: new Date(), hash: (0, utils_1.computeEntryHash)(addCredentialArgs.rawDocument), uniformDocument: JSON.stringify(uniformDocument), validFrom,
|
|
95
88
|
validUntil, lastUpdatedAt: new Date() });
|
|
96
89
|
};
|
|
97
90
|
exports.nonPersistedDigitalCredentialEntityFromAddArgs = nonPersistedDigitalCredentialEntityFromAddArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MappingUtils.js","sourceRoot":"","sources":["../../../src/utils/digitalCredential/MappingUtils.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"MappingUtils.js","sourceRoot":"","sources":["../../../src/utils/digitalCredential/MappingUtils.ts"],"names":[],"mappings":";;;AAEA,mDAS4B;AAC5B,uFAKwD;AACxD,yCAAgD;AAEhD,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAA;IACzC,IAAI,CAAC,WAAW,EAAE;QAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAA;KACzD;IAED,MAAM,QAAQ,GAAG,4BAAgB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IACvD,MAAM,YAAY,GAAG,4BAAgB,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAC/D,MAAM,cAAc,GAAG,4BAAgB,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;IAEnE,IAAI,YAAY,EAAE;QAChB,OAAO,QAAQ,CAAC,CAAC,CAAC,gCAAY,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAY,CAAC,CAAC,CAAA;KACnD;SAAM,IAAI,cAAc,EAAE;QACzB,OAAO,QAAQ,CAAC,CAAC,CAAC,gCAAY,CAAC,EAAE,CAAC,CAAC,CAAC,gCAAY,CAAC,CAAC,CAAA;KACnD;IACD,MAAM,IAAI,KAAK,CAAC,kDAAkD,GAAG,EAAE,CAAC,CAAA;AAC1E,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,4BAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,4BAAgB,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC9E,OAAO,GAAG,CAAA;KACX;IACD,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACvB;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,EAAE,CAAC,CAAA;KAC1D;AACH,CAAC;AAED,SAAS,iCAAiC,CAAC,cAA8B;IACvE,QAAQ,cAAc,EAAE;QACtB;YACE,OAAO,4CAAwB,CAAC,OAAO,CAAA;QACzC;YACE,OAAO,4CAAwB,CAAC,GAAG,CAAA;QACrC;YACE,OAAO,4CAAwB,CAAC,MAAM,CAAA;QACxC;YACE,MAAM,IAAI,KAAK,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAA;KACtE;AACH,CAAC;AAED,SAAS,aAAa,CAAC,eAA0G;IAC/H,IAAI,gBAAgB,IAAI,eAAe,EAAE;QACvC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAA;KAChD;SAAM,IAAI,YAAY,IAAI,eAAe,EAAE;QAC1C,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAA;KAC5C;SAAM,IAAI,KAAK,IAAI,eAAe,EAAE;QACnC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;KACrC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,eAA0G;IAC9H,IAAI,cAAc,IAAI,eAAe,EAAE;QACrC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;KAC9C;SAAM,IAAI,WAAW,IAAI,eAAe,EAAE;QACzC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAA;KAC9C;SAAM,IAAI,KAAK,IAAI,eAAe,EAAE;QACnC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;KAC/C;SAAM,IAAI,KAAK,IAAI,eAAe,EAAE;QACnC,OAAO,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;KAC/C;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAEM,MAAM,8CAA8C,GAAG,CAAC,iBAAoC,EAAiC,EAAE;;IACpI,MAAM,YAAY,GAAiB,qBAAqB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;IACvF,MAAM,cAAc,GAAmB,4BAAgB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;IACzG,IAAI,cAAc,qCAA6B,IAAI,CAAC,CAAA,MAAA,iBAAiB,CAAC,IAAI,0CAAE,MAAM,CAAA,EAAE;QAClF,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;KACzE;IACD,MAAM,eAAe,GACnB,cAAc,qCAA6B;QACzC,CAAC,CAAC,IAAA,yBAAa,EAAC,iBAAiB,CAAC,WAAW,EAAE,iBAAiB,CAAC,IAAK,CAAC,MAAO,CAAC,CAAC,cAAc;QAC9F,CAAC,CAAC,YAAY,KAAK,gCAAY,CAAC,EAAE,IAAI,YAAY,KAAK,gCAAY,CAAC,CAAC;YACrE,CAAC,CAAC,4BAAgB,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,CAAC;YACrE,CAAC,CAAC,4BAAgB,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;IAC3E,MAAM,SAAS,GAAqB,YAAY,CAAC,eAAe,CAAC,CAAA;IACjE,MAAM,UAAU,GAAqB,aAAa,CAAC,eAAe,CAAC,CAAA;IACnE,uCACK,iBAAiB,KACpB,YAAY,EACZ,cAAc,EAAE,iCAAiC,CAAC,cAAc,CAAC,EACjE,SAAS,EAAE,IAAI,IAAI,EAAE,EACrB,IAAI,EAAE,IAAA,wBAAgB,EAAC,iBAAiB,CAAC,WAAW,CAAC,EACrD,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAChD,SAAS;QACT,UAAU,EACV,aAAa,EAAE,IAAI,IAAI,EAAE,IAC1B;AACH,CAAC,CAAA;AAzBY,QAAA,8CAA8C,kDAyB1D;AAEM,MAAM,qBAAqB,GAAG,CAAC,gBAAyC,EAAqB,EAAE;IACpG,yBACK,gBAAgB,EACpB;AACH,CAAC,CAAA;AAJY,QAAA,qBAAqB,yBAIjC;AAEM,MAAM,sBAAsB,GAAG,CAAC,kBAAkD,EAAuB,EAAE;IAChH,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,IAAA,6BAAqB,EAAC,gBAAgB,CAAC,CAAC,CAAA;AAC9F,CAAC,CAAA;AAFY,QAAA,sBAAsB,0BAElC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.data-store",
|
|
3
|
-
"version": "0.18.2-unstable.
|
|
3
|
+
"version": "0.18.2-unstable.98+ea3b7334",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"typeorm-postgres:migration:run": "pnpm run typeorm -- migration:run -c migration-postgres"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@sphereon/ssi-sdk.core": "0.18.2-unstable.
|
|
17
|
-
"@sphereon/ssi-types": "0.18.2-unstable.
|
|
16
|
+
"@sphereon/ssi-sdk.core": "0.18.2-unstable.98+ea3b7334",
|
|
17
|
+
"@sphereon/ssi-types": "0.18.2-unstable.98+ea3b7334",
|
|
18
18
|
"@veramo/core": "4.2.0",
|
|
19
19
|
"@veramo/utils": "4.2.0",
|
|
20
20
|
"class-validator": "^0.14.0",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"PostgreSQL",
|
|
45
45
|
"Contact Store"
|
|
46
46
|
],
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "ea3b7334f32ce03da3883c83245da29b6669a516"
|
|
48
48
|
}
|
|
@@ -5,7 +5,7 @@ import { DigitalCredentialEntity } from '../entities/digitalCredential/DigitalCr
|
|
|
5
5
|
import {
|
|
6
6
|
CredentialCorrelationType,
|
|
7
7
|
CredentialDocumentFormat,
|
|
8
|
-
|
|
8
|
+
DocumentType,
|
|
9
9
|
NonPersistedDigitalCredential,
|
|
10
10
|
} from '../types/digitalCredential/digitalCredential'
|
|
11
11
|
import { computeEntryHash } from '@veramo/utils'
|
|
@@ -38,7 +38,7 @@ describe('Database entities tests', (): void => {
|
|
|
38
38
|
const rawCredential: string =
|
|
39
39
|
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw'
|
|
40
40
|
const digitalCredential: AddCredentialArgs = {
|
|
41
|
-
|
|
41
|
+
rawDocument: rawCredential,
|
|
42
42
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
43
43
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
44
44
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -50,9 +50,9 @@ describe('Database entities tests', (): void => {
|
|
|
50
50
|
const fromDb: DigitalCredentialEntity = await dbConnection.getRepository(DigitalCredentialEntity).save(digitalCredentialEntity)
|
|
51
51
|
expect(fromDb).toBeDefined()
|
|
52
52
|
expect(fromDb?.id).not.toBeNull()
|
|
53
|
-
expect(fromDb?.
|
|
53
|
+
expect(fromDb?.documentType).toEqual(DocumentType.VC)
|
|
54
54
|
expect(fromDb?.documentFormat).toEqual(CredentialDocumentFormat.JWT)
|
|
55
|
-
expect(fromDb?.
|
|
55
|
+
expect(fromDb?.rawDocument).toEqual(rawCredential)
|
|
56
56
|
expect(fromDb?.hash).toEqual(computeEntryHash(rawCredential))
|
|
57
57
|
expect(fromDb?.issuerCorrelationType).toEqual(CredentialCorrelationType.DID)
|
|
58
58
|
expect(fromDb?.subjectCorrelationType).toEqual(CredentialCorrelationType.DID)
|
|
@@ -63,14 +63,15 @@ describe('Database entities tests', (): void => {
|
|
|
63
63
|
|
|
64
64
|
it('should assign correct values to DigitalCredential: jwt credential 1', () => {
|
|
65
65
|
const digitalCredential: NonPersistedDigitalCredential = nonPersistedDigitalCredentialEntityFromAddArgs({
|
|
66
|
-
|
|
66
|
+
rawDocument:
|
|
67
|
+
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw',
|
|
67
68
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
68
69
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
69
70
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
70
71
|
subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
71
72
|
tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
|
|
72
73
|
})
|
|
73
|
-
expect(digitalCredential.
|
|
74
|
+
expect(digitalCredential.documentType).toEqual(DocumentType.VC)
|
|
74
75
|
expect(digitalCredential.validFrom).toEqual(new Date('2024-02-20T14:53:28.000Z'))
|
|
75
76
|
expect(digitalCredential.documentFormat).toEqual(CredentialDocumentFormat.JWT)
|
|
76
77
|
expect(digitalCredential.validUntil).toEqual(undefined)
|
|
@@ -78,14 +79,15 @@ describe('Database entities tests', (): void => {
|
|
|
78
79
|
|
|
79
80
|
it('should assign correct values to DigitalCredential: jwt credential 2', () => {
|
|
80
81
|
const digitalCredential: NonPersistedDigitalCredential = nonPersistedDigitalCredentialEntityFromAddArgs({
|
|
81
|
-
|
|
82
|
+
rawDocument:
|
|
83
|
+
'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImRpZDpleGFtcGxlOmFiZmUxM2Y3MTIxMjA0MzFjMjc2ZTEyZWNhYiNrZXlzLTEifQ.eyJzdWIiOiJkaWQ6ZXhhbXBsZTplYmZlYjFmNzEyZWJjNmYxYzI3NmUxMmVjMjEiLCJqdGkiOiJodHRwOi8vZXhhbXBsZS5lZHUvY3JlZGVudGlhbHMvMzczMiIsImlzcyI6Imh0dHBzOi8vZXhhbXBsZS5jb20va2V5cy9mb28uandrIiwibmJmIjoxNTQxNDkzNzI0LCJpYXQiOjE1NDE0OTM3MjQsImV4cCI6MTU3MzAyOTcyMywibm9uY2UiOiI2NjAhNjM0NUZTZXIiLCJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL2V4YW1wbGVzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJVbml2ZXJzaXR5RGVncmVlQ3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJkZWdyZWUiOnsidHlwZSI6IkJhY2hlbG9yRGVncmVlIiwibmFtZSI6IjxzcGFuIGxhbmc9J2ZyLUNBJz5CYWNjYWxhdXLDqWF0IGVuIG11c2lxdWVzIG51bcOpcmlxdWVzPC9zcGFuPiJ9fX19.KLJo5GAyBND3LDTn9H7FQokEsUEi8jKwXhGvoN3JtRa51xrNDgXDb0cq1UTYB-rK4Ft9YVmR1NI_ZOF8oGc_7wAp8PHbF2HaWodQIoOBxxT-4WNqAxft7ET6lkH-4S6Ux3rSGAmczMohEEf8eCeN-jC8WekdPl6zKZQj0YPB1rx6X0-xlFBs7cl6Wt8rfBP_tZ9YgVWrQmUWypSioc0MUyiphmyEbLZagTyPlUyflGlEdqrZAv6eSe6RtxJy6M1-lD7a5HTzanYTWBPAUHDZGyGKXdJw-W_x0IWChBzI8t3kpG253fg6V3tPgHeKXE94fz_QpYfg--7kLsyBAfQGbg',
|
|
82
84
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
83
85
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
84
86
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
85
87
|
subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
86
88
|
tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
|
|
87
89
|
})
|
|
88
|
-
expect(digitalCredential.
|
|
90
|
+
expect(digitalCredential.documentType).toEqual(DocumentType.VC)
|
|
89
91
|
expect(digitalCredential.validFrom).toEqual(new Date('2018-11-06T08:42:04.000Z'))
|
|
90
92
|
expect(digitalCredential.documentFormat).toEqual(CredentialDocumentFormat.JWT)
|
|
91
93
|
expect(digitalCredential.validUntil).toEqual(new Date('2019-11-06T08:42:03.000Z'))
|
|
@@ -93,7 +95,7 @@ describe('Database entities tests', (): void => {
|
|
|
93
95
|
|
|
94
96
|
it('should assign correct values to DigitalCredential: signed ldb credential', () => {
|
|
95
97
|
const digitalCredential: NonPersistedDigitalCredential = nonPersistedDigitalCredentialEntityFromAddArgs({
|
|
96
|
-
|
|
98
|
+
rawDocument: JSON.stringify({
|
|
97
99
|
id: 'cred:gatc:NjMxNjc0NTA0ZjVmZmYwY2U0Y2M3NTRk',
|
|
98
100
|
type: ['VerifiableCredential', 'emailCredential'],
|
|
99
101
|
'@context': ['https://www.w3.org/2018/credentials/v1', 'https://www.w3.org/2018/credentials/examples/v1'],
|
|
@@ -127,7 +129,7 @@ describe('Database entities tests', (): void => {
|
|
|
127
129
|
subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
128
130
|
tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
|
|
129
131
|
})
|
|
130
|
-
expect(digitalCredential.
|
|
132
|
+
expect(digitalCredential.documentType).toEqual(DocumentType.VC)
|
|
131
133
|
expect(digitalCredential.validFrom).toEqual(new Date('2022-01-07T11:54:12.000Z'))
|
|
132
134
|
expect(digitalCredential.documentFormat).toEqual(CredentialDocumentFormat.JSON_LD)
|
|
133
135
|
expect(digitalCredential.validUntil).toEqual(undefined)
|
|
@@ -135,7 +137,7 @@ describe('Database entities tests', (): void => {
|
|
|
135
137
|
|
|
136
138
|
it('should assign correct values to DigitalCredential: signed ldb presentation', () => {
|
|
137
139
|
const digitalCredential: NonPersistedDigitalCredential = nonPersistedDigitalCredentialEntityFromAddArgs({
|
|
138
|
-
|
|
140
|
+
rawDocument: JSON.stringify({
|
|
139
141
|
'@context': ['https://www.w3.org/2018/credentials/v1', 'https://identity.foundation/presentation-exchange/submission/v1'],
|
|
140
142
|
type: ['VerifiablePresentation'],
|
|
141
143
|
verifiableCredential: [
|
|
@@ -225,15 +227,16 @@ describe('Database entities tests', (): void => {
|
|
|
225
227
|
subjectCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
226
228
|
tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
|
|
227
229
|
})
|
|
228
|
-
expect(digitalCredential.
|
|
229
|
-
expect(digitalCredential.validFrom).toEqual(
|
|
230
|
+
expect(digitalCredential.documentType).toEqual(DocumentType.VP)
|
|
231
|
+
expect(digitalCredential.validFrom).toEqual(undefined)
|
|
230
232
|
expect(digitalCredential.documentFormat).toEqual(CredentialDocumentFormat.JSON_LD)
|
|
231
233
|
expect(digitalCredential.validUntil).toEqual(undefined)
|
|
232
234
|
})
|
|
233
235
|
|
|
234
236
|
it('should assign correct values to DigitalCredential: signed sd_jwt credential', () => {
|
|
235
237
|
const digitalCredential: NonPersistedDigitalCredential = nonPersistedDigitalCredentialEntityFromAddArgs({
|
|
236
|
-
|
|
238
|
+
rawDocument:
|
|
239
|
+
'eyJhbGciOiJFZERTQSIsInR5cCI6InZjK3NkLWp3dCIsImtpZCI6IiN6Nk1rdHF0WE5HOENEVVk5UHJydG9TdEZ6ZUNuaHBNbWd4WUwxZ2lrY1czQnp2TlcifQ.eyJ2Y3QiOiJJZGVudGl0eUNyZWRlbnRpYWwiLCJmYW1pbHlfbmFtZSI6IkRvZSIsInBob25lX251bWJlciI6IisxLTIwMi01NTUtMDEwMSIsImFkZHJlc3MiOnsic3RyZWV0X2FkZHJlc3MiOiIxMjMgTWFpbiBTdCIsImxvY2FsaXR5IjoiQW55dG93biIsIl9zZCI6WyJOSm5tY3QwQnFCTUUxSmZCbEM2alJRVlJ1ZXZwRU9OaVl3N0E3TUh1SnlRIiwib201Wnp0WkhCLUdkMDBMRzIxQ1ZfeE00RmFFTlNvaWFPWG5UQUpOY3pCNCJdfSwiY25mIjp7Imp3ayI6eyJrdHkiOiJPS1AiLCJjcnYiOiJFZDI1NTE5IiwieCI6Im9FTlZzeE9VaUg1NFg4d0pMYVZraWNDUmswMHdCSVE0c1JnYms1NE44TW8ifX0sImlzcyI6ImRpZDprZXk6ejZNa3RxdFhORzhDRFVZOVBycnRvU3RGemVDbmhwTW1neFlMMWdpa2NXM0J6dk5XIiwiaWF0IjoxNjk4MTUxNTMyLCJfc2RfYWxnIjoic2hhLTI1NiIsIl9zZCI6WyIxQ3VyMmsyQTJvSUI1Q3NoU0lmX0FfS2ctbDI2dV9xS3VXUTc5UDBWZGFzIiwiUjF6VFV2T1lIZ2NlcGowakh5cEdIejlFSHR0VktmdDB5c3diYzlFVFBiVSIsImVEcVFwZFRYSlhiV2hmLUVzSTd6dzVYNk92WW1GTi1VWlFRTWVzWHdLUHciLCJwZERrMl9YQUtIbzdnT0Fmd0YxYjdPZENVVlRpdDJrSkhheFNFQ1E5eGZjIiwicHNhdUtVTldFaTA5bnUzQ2w4OXhLWGdtcFdFTlpsNXV5MU4xbnluX2pNayIsInNOX2dlMHBIWEY2cW1zWW5YMUE5U2R3SjhjaDhhRU5reGJPRHNUNzRZd0kiXX0.coOK8NzJmEWz4qx-qRhjo-RK7aejrSkQM9La9Cw3eWmzcja9DXrkBoQZKbIJtNoSzSPLjwK2V71W78z0miZsDQ~WyJzYWx0IiwiaXNfb3Zlcl82NSIsdHJ1ZV0~WyJzYWx0IiwiaXNfb3Zlcl8yMSIsdHJ1ZV0~WyJzYWx0IiwiZW1haWwiLCJqb2huZG9lQGV4YW1wbGUuY29tIl0~WyJzYWx0IiwiY291bnRyeSIsIlVTIl0~WyJzYWx0IiwiZ2l2ZW5fbmFtZSIsIkpvaG4iXQ~eyJhbGciOiJFZERTQSIsInR5cCI6ImtiK2p3dCJ9.eyJpYXQiOjE2OTgxNTE1MzIsIm5vbmNlIjoic2FsdCIsImF1ZCI6ImRpZDprZXk6elVDNzRWRXFxaEVIUWNndjR6YWdTUGtxRkp4dU5XdW9CUEtqSnVIRVRFVWVITG9TcVd0OTJ2aVNzbWFXank4MnkiLCJfc2RfaGFzaCI6Ii1kTUd4OGZhUnpOQm91a2EwU0R6V2JkS3JYckw1TFVmUlNQTHN2Q2xPMFkifQ.TQQLqc4ZzoKjQfAghAzC_4aaU3KCS8YqzxAJtzT124guzkv9XSHtPN8d3z181_v-ca2ATXjTRoRciozitE6wBA',
|
|
237
240
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
238
241
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
239
242
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -243,7 +246,7 @@ describe('Database entities tests', (): void => {
|
|
|
243
246
|
hasher: (data, algorithm) => createHash(algorithm).update(data).digest(),
|
|
244
247
|
},
|
|
245
248
|
})
|
|
246
|
-
expect(digitalCredential.
|
|
249
|
+
expect(digitalCredential.documentType).toEqual(DocumentType.VC)
|
|
247
250
|
expect(digitalCredential.validFrom).toEqual(new Date('2023-10-24T12:45:32.000Z'))
|
|
248
251
|
expect(digitalCredential.documentFormat).toEqual(CredentialDocumentFormat.SD_JWT)
|
|
249
252
|
expect(digitalCredential.validUntil).toEqual(undefined)
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
CredentialCorrelationType,
|
|
7
7
|
CredentialDocumentFormat,
|
|
8
8
|
CredentialStateType,
|
|
9
|
-
|
|
9
|
+
DocumentType,
|
|
10
10
|
DigitalCredential,
|
|
11
11
|
} from '../types/digitalCredential/digitalCredential'
|
|
12
12
|
import { AddCredentialArgs, GetCredentialsArgs, GetCredentialsResponse } from '../types/digitalCredential/IAbstractDigitalCredentialStore'
|
|
@@ -40,7 +40,7 @@ describe('Database entities tests', (): void => {
|
|
|
40
40
|
const rawCredential: string =
|
|
41
41
|
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw'
|
|
42
42
|
const digitalCredential: AddCredentialArgs = {
|
|
43
|
-
|
|
43
|
+
rawDocument: rawCredential,
|
|
44
44
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
45
45
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
46
46
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -54,7 +54,8 @@ describe('Database entities tests', (): void => {
|
|
|
54
54
|
|
|
55
55
|
it('should throw error on storing digital credential sd_jwt with not-provided hasher', async (): Promise<void> => {
|
|
56
56
|
const digitalCredential: AddCredentialArgs = {
|
|
57
|
-
|
|
57
|
+
rawDocument:
|
|
58
|
+
'eyJhbGciOiJFZERTQSIsInR5cCI6InZjK3NkLWp3dCIsImtpZCI6IiN6Nk1rdHF0WE5HOENEVVk5UHJydG9TdEZ6ZUNuaHBNbWd4WUwxZ2lrY1czQnp2TlcifQ.eyJ2Y3QiOiJJZGVudGl0eUNyZWRlbnRpYWwiLCJmYW1pbHlfbmFtZSI6IkRvZSIsInBob25lX251bWJlciI6IisxLTIwMi01NTUtMDEwMSIsImFkZHJlc3MiOnsic3RyZWV0X2FkZHJlc3MiOiIxMjMgTWFpbiBTdCIsImxvY2FsaXR5IjoiQW55dG93biIsIl9zZCI6WyJOSm5tY3QwQnFCTUUxSmZCbEM2alJRVlJ1ZXZwRU9OaVl3N0E3TUh1SnlRIiwib201Wnp0WkhCLUdkMDBMRzIxQ1ZfeE00RmFFTlNvaWFPWG5UQUpOY3pCNCJdfSwiY25mIjp7Imp3ayI6eyJrdHkiOiJPS1AiLCJjcnYiOiJFZDI1NTE5IiwieCI6Im9FTlZzeE9VaUg1NFg4d0pMYVZraWNDUmswMHdCSVE0c1JnYms1NE44TW8ifX0sImlzcyI6ImRpZDprZXk6ejZNa3RxdFhORzhDRFVZOVBycnRvU3RGemVDbmhwTW1neFlMMWdpa2NXM0J6dk5XIiwiaWF0IjoxNjk4MTUxNTMyLCJfc2RfYWxnIjoic2hhLTI1NiIsIl9zZCI6WyIxQ3VyMmsyQTJvSUI1Q3NoU0lmX0FfS2ctbDI2dV9xS3VXUTc5UDBWZGFzIiwiUjF6VFV2T1lIZ2NlcGowakh5cEdIejlFSHR0VktmdDB5c3diYzlFVFBiVSIsImVEcVFwZFRYSlhiV2hmLUVzSTd6dzVYNk92WW1GTi1VWlFRTWVzWHdLUHciLCJwZERrMl9YQUtIbzdnT0Fmd0YxYjdPZENVVlRpdDJrSkhheFNFQ1E5eGZjIiwicHNhdUtVTldFaTA5bnUzQ2w4OXhLWGdtcFdFTlpsNXV5MU4xbnluX2pNayIsInNOX2dlMHBIWEY2cW1zWW5YMUE5U2R3SjhjaDhhRU5reGJPRHNUNzRZd0kiXX0.coOK8NzJmEWz4qx-qRhjo-RK7aejrSkQM9La9Cw3eWmzcja9DXrkBoQZKbIJtNoSzSPLjwK2V71W78z0miZsDQ~WyJzYWx0IiwiaXNfb3Zlcl82NSIsdHJ1ZV0~WyJzYWx0IiwiaXNfb3Zlcl8yMSIsdHJ1ZV0~WyJzYWx0IiwiZW1haWwiLCJqb2huZG9lQGV4YW1wbGUuY29tIl0~WyJzYWx0IiwiY291bnRyeSIsIlVTIl0~WyJzYWx0IiwiZ2l2ZW5fbmFtZSIsIkpvaG4iXQ~eyJhbGciOiJFZERTQSIsInR5cCI6ImtiK2p3dCJ9.eyJpYXQiOjE2OTgxNTE1MzIsIm5vbmNlIjoic2FsdCIsImF1ZCI6ImRpZDprZXk6elVDNzRWRXFxaEVIUWNndjR6YWdTUGtxRkp4dU5XdW9CUEtqSnVIRVRFVWVITG9TcVd0OTJ2aVNzbWFXank4MnkiLCJfc2RfaGFzaCI6Ii1kTUd4OGZhUnpOQm91a2EwU0R6V2JkS3JYckw1TFVmUlNQTHN2Q2xPMFkifQ.TQQLqc4ZzoKjQfAghAzC_4aaU3KCS8YqzxAJtzT124guzkv9XSHtPN8d3z181_v-ca2ATXjTRoRciozitE6wBA',
|
|
58
59
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
59
60
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
60
61
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -69,7 +70,8 @@ describe('Database entities tests', (): void => {
|
|
|
69
70
|
|
|
70
71
|
it('should get all digital credentials', async (): Promise<void> => {
|
|
71
72
|
const addCredentialArgs1: AddCredentialArgs = {
|
|
72
|
-
|
|
73
|
+
rawDocument:
|
|
74
|
+
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw',
|
|
73
75
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
74
76
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
75
77
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -77,7 +79,8 @@ describe('Database entities tests', (): void => {
|
|
|
77
79
|
tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
|
|
78
80
|
}
|
|
79
81
|
const addCredentialArgs2: AddCredentialArgs = {
|
|
80
|
-
|
|
82
|
+
rawDocument:
|
|
83
|
+
'eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MDkyMTQxNzgsInZjIjp7IkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJHdWVzdENyZWRlbnRpYWwiXSwiY3JlZGVudGlhbFN1YmplY3QiOnsiZmlyc3ROYW1lIjoiUyIsImxhc3ROYW1lIjoiSyIsIkUtbWFpbCI6IiIsInR5cGUiOiJTcGhlcmVvbiBHdWVzdCIsImlkIjoiZGlkOmp3azpleUpoYkdjaU9pSkZVekkxTmtzaUxDSjFjMlVpT2lKemFXY2lMQ0pyZEhraU9pSkZReUlzSW1OeWRpSTZJbk5sWTNBeU5UWnJNU0lzSW5naU9pSldjWGhIZVhWUk5WUTBXVEpzZGpKSFkybE9TaTFEYURCVWFGVm1kVk5RWm0wdFJYVlNZbGRNWlVOM0lpd2llU0k2SW01T1FWQnBiR0V5VDBRNGRXOXBXbk5LVm1aUmFrbDJTMUZUZWxBelFqVlBXbVZSYkVoQ1VUbHliVFFpZlEifX0sIkBjb250ZXh0IjpbImh0dHBzOi8vd3d3LnczLm9yZy8yMDE4L2NyZWRlbnRpYWxzL3YxIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJHdWVzdENyZWRlbnRpYWwiXSwiZXhwaXJhdGlvbkRhdGUiOiIyMDI0LTAyLTI5VDEzOjQyOjU4LjgzNVoiLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiRS1tYWlsIjoiIiwidHlwZSI6IlNwaGVyZW9uIEd1ZXN0IiwiaWQiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOa3NpTENKMWMyVWlPaUp6YVdjaUxDSnJkSGtpT2lKRlF5SXNJbU55ZGlJNkluTmxZM0F5TlRack1TSXNJbmdpT2lKV2NYaEhlWFZSTlZRMFdUSnNkakpIWTJsT1NpMURhREJVYUZWbWRWTlFabTB0UlhWU1lsZE1aVU4zSWl3aWVTSTZJbTVPUVZCcGJHRXlUMFE0ZFc5cFduTktWbVpSYWtsMlMxRlRlbEF6UWpWUFdtVlJiRWhDVVRseWJUUWlmUSJ9LCJpc3N1ZXIiOiJkaWQ6andrOmV5SmhiR2NpT2lKRlV6STFOaUlzSW5WelpTSTZJbk5wWnlJc0ltdDBlU0k2SWtWRElpd2lZM0oySWpvaVVDMHlOVFlpTENKNElqb2lWRWN5U0RKNE1tUlhXRTR6ZFVOeFduQnhSakY1YzBGUVVWWkVTa1ZPWDBndFEwMTBZbWRxWWkxT1p5SXNJbmtpT2lJNVRUaE9lR1F3VUU0eU1rMDViRkJFZUdSd1JIQnZWRXg2TVRWM1pubGFTbk0yV21oTFNWVktNek00SW4wIiwiaXNzdWFuY2VEYXRlIjoiMjAyNC0wMi0yMlQxMzo0Mjo1OC44MzVaIiwic3ViIjoiZGlkOmp3azpleUpoYkdjaU9pSkZVekkxTmtzaUxDSjFjMlVpT2lKemFXY2lMQ0pyZEhraU9pSkZReUlzSW1OeWRpSTZJbk5sWTNBeU5UWnJNU0lzSW5naU9pSldjWGhIZVhWUk5WUTBXVEpzZGpKSFkybE9TaTFEYURCVWFGVm1kVk5RWm0wdFJYVlNZbGRNWlVOM0lpd2llU0k2SW01T1FWQnBiR0V5VDBRNGRXOXBXbk5LVm1aUmFrbDJTMUZUZWxBelFqVlBXbVZSYkVoQ1VUbHliVFFpZlEiLCJuYmYiOjE3MDg2MDkzNzgsImlzcyI6ImRpZDpqd2s6ZXlKaGJHY2lPaUpGVXpJMU5pSXNJblZ6WlNJNkluTnBaeUlzSW10MGVTSTZJa1ZESWl3aVkzSjJJam9pVUMweU5UWWlMQ0o0SWpvaVZFY3lTREo0TW1SWFdFNHpkVU54V25CeFJqRjVjMEZRVVZaRVNrVk9YMGd0UTAxMFltZHFZaTFPWnlJc0lua2lPaUk1VFRoT2VHUXdVRTR5TWswNWJGQkVlR1J3UkhCdlZFeDZNVFYzWm5sYVNuTTJXbWhMU1ZWS016TTRJbjAifQ.GgLRWHO674wu6QF_xUGbCi_2zDD8jNf_xoWNvH5K605xvBoz6qKx0ndmxLeGQWWUA-4VuAkznf3ROcp9wpgbEw',
|
|
81
84
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
82
85
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
83
86
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -96,7 +99,8 @@ describe('Database entities tests', (): void => {
|
|
|
96
99
|
|
|
97
100
|
it('should get digital credentials by filters and pagination', async (): Promise<void> => {
|
|
98
101
|
const addCredentialArgs1: AddCredentialArgs = {
|
|
99
|
-
|
|
102
|
+
rawDocument:
|
|
103
|
+
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw',
|
|
100
104
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
101
105
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
102
106
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -143,7 +147,7 @@ describe('Database entities tests', (): void => {
|
|
|
143
147
|
},
|
|
144
148
|
}
|
|
145
149
|
const addCredentialArgs2: AddCredentialArgs = {
|
|
146
|
-
|
|
150
|
+
rawDocument: JSON.stringify(sampleVP),
|
|
147
151
|
tenantId: 'urn:uuid:nnag4b43-1e7a-98f8-a32c-a48dbc5b10mj',
|
|
148
152
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
149
153
|
issuerCorrelationId: 'did:example:holder',
|
|
@@ -151,7 +155,8 @@ describe('Database entities tests', (): void => {
|
|
|
151
155
|
subjectCorrelationId: 'did:example:holder',
|
|
152
156
|
}
|
|
153
157
|
const addCredentialArgs3: AddCredentialArgs = {
|
|
154
|
-
|
|
158
|
+
rawDocument:
|
|
159
|
+
'eyJhbGciOiJFZERTQSIsInR5cCI6InZjK3NkLWp3dCIsImtpZCI6IiN6Nk1rdHF0WE5HOENEVVk5UHJydG9TdEZ6ZUNuaHBNbWd4WUwxZ2lrY1czQnp2TlcifQ.eyJ2Y3QiOiJJZGVudGl0eUNyZWRlbnRpYWwiLCJmYW1pbHlfbmFtZSI6IkRvZSIsInBob25lX251bWJlciI6IisxLTIwMi01NTUtMDEwMSIsImFkZHJlc3MiOnsic3RyZWV0X2FkZHJlc3MiOiIxMjMgTWFpbiBTdCIsImxvY2FsaXR5IjoiQW55dG93biIsIl9zZCI6WyJOSm5tY3QwQnFCTUUxSmZCbEM2alJRVlJ1ZXZwRU9OaVl3N0E3TUh1SnlRIiwib201Wnp0WkhCLUdkMDBMRzIxQ1ZfeE00RmFFTlNvaWFPWG5UQUpOY3pCNCJdfSwiY25mIjp7Imp3ayI6eyJrdHkiOiJPS1AiLCJjcnYiOiJFZDI1NTE5IiwieCI6Im9FTlZzeE9VaUg1NFg4d0pMYVZraWNDUmswMHdCSVE0c1JnYms1NE44TW8ifX0sImlzcyI6ImRpZDprZXk6ejZNa3RxdFhORzhDRFVZOVBycnRvU3RGemVDbmhwTW1neFlMMWdpa2NXM0J6dk5XIiwiaWF0IjoxNjk4MTUxNTMyLCJfc2RfYWxnIjoic2hhLTI1NiIsIl9zZCI6WyIxQ3VyMmsyQTJvSUI1Q3NoU0lmX0FfS2ctbDI2dV9xS3VXUTc5UDBWZGFzIiwiUjF6VFV2T1lIZ2NlcGowakh5cEdIejlFSHR0VktmdDB5c3diYzlFVFBiVSIsImVEcVFwZFRYSlhiV2hmLUVzSTd6dzVYNk92WW1GTi1VWlFRTWVzWHdLUHciLCJwZERrMl9YQUtIbzdnT0Fmd0YxYjdPZENVVlRpdDJrSkhheFNFQ1E5eGZjIiwicHNhdUtVTldFaTA5bnUzQ2w4OXhLWGdtcFdFTlpsNXV5MU4xbnluX2pNayIsInNOX2dlMHBIWEY2cW1zWW5YMUE5U2R3SjhjaDhhRU5reGJPRHNUNzRZd0kiXX0.coOK8NzJmEWz4qx-qRhjo-RK7aejrSkQM9La9Cw3eWmzcja9DXrkBoQZKbIJtNoSzSPLjwK2V71W78z0miZsDQ~WyJzYWx0IiwiaXNfb3Zlcl82NSIsdHJ1ZV0~WyJzYWx0IiwiaXNfb3Zlcl8yMSIsdHJ1ZV0~WyJzYWx0IiwiZW1haWwiLCJqb2huZG9lQGV4YW1wbGUuY29tIl0~WyJzYWx0IiwiY291bnRyeSIsIlVTIl0~WyJzYWx0IiwiZ2l2ZW5fbmFtZSIsIkpvaG4iXQ~eyJhbGciOiJFZERTQSIsInR5cCI6ImtiK2p3dCJ9.eyJpYXQiOjE2OTgxNTE1MzIsIm5vbmNlIjoic2FsdCIsImF1ZCI6ImRpZDprZXk6elVDNzRWRXFxaEVIUWNndjR6YWdTUGtxRkp4dU5XdW9CUEtqSnVIRVRFVWVITG9TcVd0OTJ2aVNzbWFXank4MnkiLCJfc2RfaGFzaCI6Ii1kTUd4OGZhUnpOQm91a2EwU0R6V2JkS3JYckw1TFVmUlNQTHN2Q2xPMFkifQ.TQQLqc4ZzoKjQfAghAzC_4aaU3KCS8YqzxAJtzT124guzkv9XSHtPN8d3z181_v-ca2ATXjTRoRciozitE6wBA',
|
|
155
160
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
156
161
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
157
162
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -169,7 +174,7 @@ describe('Database entities tests', (): void => {
|
|
|
169
174
|
const savedDigitalCredential3: DigitalCredential = await digitalCredentialStore.addCredential(addCredentialArgs3)
|
|
170
175
|
expect(savedDigitalCredential3).toBeDefined()
|
|
171
176
|
const args1: GetCredentialsArgs = {
|
|
172
|
-
filter: [{
|
|
177
|
+
filter: [{ documentType: DocumentType.VP }],
|
|
173
178
|
}
|
|
174
179
|
const result1: GetCredentialsResponse = await digitalCredentialStore.getCredentials(args1)
|
|
175
180
|
expect(result1.total).toEqual(1)
|
|
@@ -202,7 +207,7 @@ describe('Database entities tests', (): void => {
|
|
|
202
207
|
const rawCredential: string =
|
|
203
208
|
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw'
|
|
204
209
|
const digitalCredential: AddCredentialArgs = {
|
|
205
|
-
|
|
210
|
+
rawDocument: rawCredential,
|
|
206
211
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
207
212
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
208
213
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -224,7 +229,7 @@ describe('Database entities tests', (): void => {
|
|
|
224
229
|
const rawCredential: string =
|
|
225
230
|
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw'
|
|
226
231
|
const digitalCredential: AddCredentialArgs = {
|
|
227
|
-
|
|
232
|
+
rawDocument: rawCredential,
|
|
228
233
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
229
234
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
230
235
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -246,7 +251,7 @@ describe('Database entities tests', (): void => {
|
|
|
246
251
|
const rawCredential: string =
|
|
247
252
|
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw'
|
|
248
253
|
const digitalCredential: AddCredentialArgs = {
|
|
249
|
-
|
|
254
|
+
rawDocument: rawCredential,
|
|
250
255
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
251
256
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
252
257
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -268,7 +273,7 @@ describe('Database entities tests', (): void => {
|
|
|
268
273
|
const rawCredential: string =
|
|
269
274
|
'eyJraWQiOiJkaWQ6a2V5Ono2TWtyaGt5M3B1c20yNk1laUZhWFUzbjJuZWtyYW13RlVtZ0dyZUdHa0RWNnpRaiN6Nk1rcmhreTNwdXNtMjZNZWlGYVhVM24ybmVrcmFtd0ZVbWdHcmVHR2tEVjZ6UWoiLCJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJ2YyI6eyJAY29udGV4dCI6WyJodHRwczovL3d3dy53My5vcmcvMjAxOC9jcmVkZW50aWFscy92MSIsImh0dHBzOi8vc3BoZXJlb24tb3BlbnNvdXJjZS5naXRodWIuaW8vc3NpLW1vYmlsZS13YWxsZXQvY29udGV4dC9zcGhlcmVvbi13YWxsZXQtaWRlbnRpdHktdjEuanNvbmxkIl0sInR5cGUiOlsiVmVyaWZpYWJsZUNyZWRlbnRpYWwiLCJTcGhlcmVvbldhbGxldElkZW50aXR5Q3JlZGVudGlhbCJdLCJjcmVkZW50aWFsU3ViamVjdCI6eyJmaXJzdE5hbWUiOiJTIiwibGFzdE5hbWUiOiJLIiwiZW1haWxBZGRyZXNzIjoic0BrIn19LCJzdWIiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJqdGkiOiJ1cm46dXVpZDpkZGE3YmYyNC04ZTdhLTQxZjgtYjY2Yy1hNDhkYmM1YjEwZmEiLCJuYmYiOjE3MDg0NDA4MDgsImlzcyI6ImRpZDprZXk6ejZNa3Joa3kzcHVzbTI2TWVpRmFYVTNuMm5la3JhbXdGVW1nR3JlR0drRFY2elFqIn0.G0M84XVAxSmzGY-NQuB9NBofNrINSn6lvxW6761Vlq6ypvYgtc2xNdpiRmw8ryVNfnpzrr4Z5cB1RlrC05rJAw'
|
|
270
275
|
const digitalCredential: AddCredentialArgs = {
|
|
271
|
-
|
|
276
|
+
rawDocument: rawCredential,
|
|
272
277
|
issuerCorrelationType: CredentialCorrelationType.DID,
|
|
273
278
|
subjectCorrelationType: CredentialCorrelationType.DID,
|
|
274
279
|
issuerCorrelationId: 'did:key:z6Mkrhky3pusm26MeiFaXU3n2nekramwFUmgGreGGkDV6zQj',
|
|
@@ -47,7 +47,10 @@ export class DigitalCredentialStore extends AbstractDigitalCredentialStore {
|
|
|
47
47
|
|
|
48
48
|
getCredentials = async (args?: GetCredentialsArgs): Promise<GetCredentialsResponse> => {
|
|
49
49
|
const { filter = {}, offset, limit, order = 'id.asc' } = args ?? {}
|
|
50
|
-
const sortOptions: FindOptionsOrder<DigitalCredentialEntity> =
|
|
50
|
+
const sortOptions: FindOptionsOrder<DigitalCredentialEntity> =
|
|
51
|
+
order && typeof order === 'string'
|
|
52
|
+
? parseAndValidateOrderOptions<DigitalCredentialEntity>(order)
|
|
53
|
+
: <FindOptionsOrder<DigitalCredentialEntity>>order
|
|
51
54
|
const [result, total] = await (await this.dbConnection).getRepository(DigitalCredentialEntity).findAndCount({
|
|
52
55
|
where: filter,
|
|
53
56
|
skip: offset,
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
CredentialCorrelationType,
|
|
4
4
|
CredentialDocumentFormat,
|
|
5
5
|
CredentialStateType,
|
|
6
|
-
|
|
6
|
+
DocumentType,
|
|
7
7
|
} from '../../types/digitalCredential/digitalCredential'
|
|
8
8
|
|
|
9
9
|
@Entity('DigitalCredential')
|
|
@@ -11,14 +11,14 @@ export class DigitalCredentialEntity extends BaseEntity {
|
|
|
11
11
|
@PrimaryGeneratedColumn('uuid')
|
|
12
12
|
id!: string
|
|
13
13
|
|
|
14
|
-
@Column('simple-enum', { name: '
|
|
15
|
-
|
|
14
|
+
@Column('simple-enum', { name: 'document_type', enum: DocumentType, nullable: false })
|
|
15
|
+
documentType!: DocumentType
|
|
16
16
|
|
|
17
17
|
@Column('simple-enum', { name: 'document_format', enum: CredentialDocumentFormat, nullable: false })
|
|
18
18
|
documentFormat!: CredentialDocumentFormat
|
|
19
19
|
|
|
20
|
-
@Column('text', { name: '
|
|
21
|
-
|
|
20
|
+
@Column('text', { name: 'raw_document', nullable: false })
|
|
21
|
+
rawDocument!: string
|
|
22
22
|
|
|
23
23
|
@Column('text', { name: 'uniform_document', nullable: false })
|
|
24
24
|
uniformDocument!: string
|
|
@@ -4,7 +4,7 @@ export class CreateDigitalCredential1708525189001 implements MigrationInterface
|
|
|
4
4
|
name = 'CreateDigitalCredential1708525189001'
|
|
5
5
|
|
|
6
6
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
|
7
|
-
await queryRunner.query(`CREATE TYPE "
|
|
7
|
+
await queryRunner.query(`CREATE TYPE "digital_document_type" AS ENUM('VC', 'VP', 'C', 'P')`)
|
|
8
8
|
await queryRunner.query(`CREATE TYPE "digital_credential_document_format" AS ENUM('JSON_LD', 'JWT', 'SD_JWT', 'MDOC')`)
|
|
9
9
|
await queryRunner.query(`CREATE TYPE "digital_credential_correlation_type" AS ENUM('DID')`)
|
|
10
10
|
await queryRunner.query(`CREATE TYPE "digital_credential_state_type" AS ENUM('REVOKED', 'VERIFIED', 'EXPIRED')`)
|
|
@@ -12,9 +12,9 @@ export class CreateDigitalCredential1708525189001 implements MigrationInterface
|
|
|
12
12
|
await queryRunner.query(`
|
|
13
13
|
CREATE TABLE "DigitalCredential" (
|
|
14
14
|
"id" uuid NOT NULL DEFAULT uuid_generate_v4(),
|
|
15
|
-
"
|
|
15
|
+
"document_type" "digital_document_type" NOT NULL,
|
|
16
16
|
"document_format" "digital_credential_document_format" NOT NULL,
|
|
17
|
-
"
|
|
17
|
+
"raw_document" text NOT NULL,
|
|
18
18
|
"uniform_document" text NOT NULL,
|
|
19
19
|
"hash" text NOT NULL UNIQUE,
|
|
20
20
|
"issuer_correlation_type" "digital_credential_correlation_type" NOT NULL,
|
|
@@ -39,6 +39,6 @@ export class CreateDigitalCredential1708525189001 implements MigrationInterface
|
|
|
39
39
|
await queryRunner.query(`DROP TYPE "digital_credential_state_type"`)
|
|
40
40
|
await queryRunner.query(`DROP TYPE "digital_credential_correlation_type"`)
|
|
41
41
|
await queryRunner.query(`DROP TYPE "digital_credential_document_format"`)
|
|
42
|
-
await queryRunner.query(`DROP TYPE "
|
|
42
|
+
await queryRunner.query(`DROP TYPE "digital_document_type"`)
|
|
43
43
|
}
|
|
44
44
|
}
|
|
@@ -7,9 +7,9 @@ export class CreateDigitalCredential1708525189002 implements MigrationInterface
|
|
|
7
7
|
await queryRunner.query(`
|
|
8
8
|
CREATE TABLE "DigitalCredential" (
|
|
9
9
|
"id" varchar PRIMARY KEY NOT NULL,
|
|
10
|
-
"
|
|
10
|
+
"document_type" varchar CHECK( "document_type" IN ('VC', 'VP', 'C', 'P') ) NOT NULL,
|
|
11
11
|
"document_format" varchar CHECK( "document_format" IN ('JSON_LD', 'JWT', 'SD_JWT', 'MDOC') ) NOT NULL,
|
|
12
|
-
"
|
|
12
|
+
"raw_document" text NOT NULL,
|
|
13
13
|
"uniform_document" text NOT NULL,
|
|
14
14
|
"hash" text NOT NULL UNIQUE,
|
|
15
15
|
"issuer_correlation_type" varchar CHECK( "issuer_correlation_type" IN ('DID') ) NOT NULL,
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { CredentialCorrelationType, CredentialStateType, DigitalCredential } from './digitalCredential'
|
|
2
2
|
import { Hasher } from '@sphereon/ssi-types'
|
|
3
|
+
import { FindOptionsOrder } from 'typeorm'
|
|
4
|
+
import { DigitalCredentialEntity } from '../../entities/digitalCredential/DigitalCredentialEntity'
|
|
3
5
|
|
|
4
6
|
export type GetCredentialArgs = { id: string } | { hash: string }
|
|
5
7
|
|
|
@@ -9,7 +11,7 @@ export type GetCredentialsArgs = {
|
|
|
9
11
|
filter?: FindDigitalCredentialArgs
|
|
10
12
|
offset?: number
|
|
11
13
|
limit?: number
|
|
12
|
-
order?: string
|
|
14
|
+
order?: string | FindOptionsOrder<DigitalCredentialEntity>
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export type GetCredentialsResponse = {
|
|
@@ -18,7 +20,7 @@ export type GetCredentialsResponse = {
|
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export type AddCredentialArgs = {
|
|
21
|
-
|
|
23
|
+
rawDocument: string
|
|
22
24
|
issuerCorrelationType: CredentialCorrelationType
|
|
23
25
|
subjectCorrelationType?: CredentialCorrelationType
|
|
24
26
|
issuerCorrelationId: string
|
|
@@ -2,9 +2,9 @@ export type NonPersistedDigitalCredential = Omit<DigitalCredential, 'id'>
|
|
|
2
2
|
|
|
3
3
|
export type DigitalCredential = {
|
|
4
4
|
id: string
|
|
5
|
-
|
|
5
|
+
documentType: DocumentType
|
|
6
6
|
documentFormat: CredentialDocumentFormat
|
|
7
|
-
|
|
7
|
+
rawDocument: string
|
|
8
8
|
uniformDocument: string
|
|
9
9
|
hash: string
|
|
10
10
|
issuerCorrelationType: CredentialCorrelationType
|
|
@@ -21,7 +21,7 @@ export type DigitalCredential = {
|
|
|
21
21
|
revokedAt?: Date
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export enum
|
|
24
|
+
export enum DocumentType {
|
|
25
25
|
VC = 'VC',
|
|
26
26
|
VP = 'VP',
|
|
27
27
|
P = 'P',
|
|
@@ -4,7 +4,6 @@ import {
|
|
|
4
4
|
CredentialMapper,
|
|
5
5
|
decodeSdJwtVc,
|
|
6
6
|
DocumentFormat,
|
|
7
|
-
IProof,
|
|
8
7
|
IVerifiableCredential,
|
|
9
8
|
IVerifiablePresentation,
|
|
10
9
|
OriginalVerifiableCredential,
|
|
@@ -13,13 +12,13 @@ import {
|
|
|
13
12
|
} from '@sphereon/ssi-types'
|
|
14
13
|
import {
|
|
15
14
|
CredentialDocumentFormat,
|
|
16
|
-
|
|
15
|
+
DocumentType,
|
|
17
16
|
DigitalCredential,
|
|
18
17
|
NonPersistedDigitalCredential,
|
|
19
18
|
} from '../../types/digitalCredential/digitalCredential'
|
|
20
19
|
import { computeEntryHash } from '@veramo/utils'
|
|
21
20
|
|
|
22
|
-
function
|
|
21
|
+
function determineDocumentType(raw: string): DocumentType {
|
|
23
22
|
const rawDocument = parseRawDocument(raw)
|
|
24
23
|
if (!rawDocument) {
|
|
25
24
|
throw new Error(`Couldn't parse the credential: ${raw}`)
|
|
@@ -30,9 +29,9 @@ function determineCredentialType(raw: string): CredentialType {
|
|
|
30
29
|
const isPresentation = CredentialMapper.isPresentation(rawDocument)
|
|
31
30
|
|
|
32
31
|
if (isCredential) {
|
|
33
|
-
return hasProof ?
|
|
32
|
+
return hasProof ? DocumentType.VC : DocumentType.C
|
|
34
33
|
} else if (isPresentation) {
|
|
35
|
-
return hasProof ?
|
|
34
|
+
return hasProof ? DocumentType.VP : DocumentType.P
|
|
36
35
|
}
|
|
37
36
|
throw new Error(`Couldn't determine the type of the credential: ${raw}`)
|
|
38
37
|
}
|
|
@@ -73,14 +72,8 @@ function getValidUntil(uniformDocument: IVerifiableCredential | IVerifiablePrese
|
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
function getValidFrom(uniformDocument: IVerifiableCredential | IVerifiablePresentation | SdJwtDecodedVerifiableCredentialPayload): Date | undefined {
|
|
76
|
-
let proof: IProof | undefined = undefined
|
|
77
|
-
if (uniformDocument.proof && !uniformDocument.vct) {
|
|
78
|
-
proof = Array.isArray(uniformDocument.proof) ? <IProof>uniformDocument.proof[0] : <IProof>uniformDocument.proof
|
|
79
|
-
}
|
|
80
75
|
if ('issuanceDate' in uniformDocument) {
|
|
81
76
|
return new Date(uniformDocument.issuanceDate)
|
|
82
|
-
} else if (proof && proof.created) {
|
|
83
|
-
return new Date(proof.created)
|
|
84
77
|
} else if ('validFrom' in uniformDocument) {
|
|
85
78
|
return new Date(uniformDocument['validFrom'])
|
|
86
79
|
} else if ('nbf' in uniformDocument) {
|
|
@@ -92,25 +85,25 @@ function getValidFrom(uniformDocument: IVerifiableCredential | IVerifiablePresen
|
|
|
92
85
|
}
|
|
93
86
|
|
|
94
87
|
export const nonPersistedDigitalCredentialEntityFromAddArgs = (addCredentialArgs: AddCredentialArgs): NonPersistedDigitalCredential => {
|
|
95
|
-
const
|
|
96
|
-
const documentFormat: DocumentFormat = CredentialMapper.detectDocumentType(addCredentialArgs.
|
|
88
|
+
const documentType: DocumentType = determineDocumentType(addCredentialArgs.rawDocument)
|
|
89
|
+
const documentFormat: DocumentFormat = CredentialMapper.detectDocumentType(addCredentialArgs.rawDocument)
|
|
97
90
|
if (documentFormat === DocumentFormat.SD_JWT_VC && !addCredentialArgs.opts?.hasher) {
|
|
98
91
|
throw new Error('No hasher function is provided for SD_JWT credential.')
|
|
99
92
|
}
|
|
100
93
|
const uniformDocument =
|
|
101
94
|
documentFormat === DocumentFormat.SD_JWT_VC
|
|
102
|
-
? decodeSdJwtVc(addCredentialArgs.
|
|
103
|
-
:
|
|
104
|
-
? CredentialMapper.toUniformCredential(addCredentialArgs.
|
|
105
|
-
: CredentialMapper.toUniformPresentation(addCredentialArgs.
|
|
95
|
+
? decodeSdJwtVc(addCredentialArgs.rawDocument, addCredentialArgs.opts!.hasher!).decodedPayload
|
|
96
|
+
: documentType === DocumentType.VC || documentType === DocumentType.C
|
|
97
|
+
? CredentialMapper.toUniformCredential(addCredentialArgs.rawDocument)
|
|
98
|
+
: CredentialMapper.toUniformPresentation(addCredentialArgs.rawDocument)
|
|
106
99
|
const validFrom: Date | undefined = getValidFrom(uniformDocument)
|
|
107
100
|
const validUntil: Date | undefined = getValidUntil(uniformDocument)
|
|
108
101
|
return {
|
|
109
102
|
...addCredentialArgs,
|
|
110
|
-
|
|
103
|
+
documentType,
|
|
111
104
|
documentFormat: determineCredentialDocumentFormat(documentFormat),
|
|
112
105
|
createdAt: new Date(),
|
|
113
|
-
hash: computeEntryHash(addCredentialArgs.
|
|
106
|
+
hash: computeEntryHash(addCredentialArgs.rawDocument),
|
|
114
107
|
uniformDocument: JSON.stringify(uniformDocument),
|
|
115
108
|
validFrom,
|
|
116
109
|
validUntil,
|