@twin.org/immutable-proof-service 0.0.1-next.22 → 0.0.1-next.24

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.
@@ -502,7 +502,7 @@ class ImmutableProofService {
502
502
  }
503
503
  try {
504
504
  const { immutableProof } = await this.internalGet(id, false);
505
- return dataJsonLd.JsonLdProcessor.compact(immutableProof);
505
+ return dataJsonLd.JsonLdProcessor.compact(immutableProof, immutableProof["@context"]);
506
506
  }
507
507
  catch (error) {
508
508
  throw new core.GeneralError(this.CLASS_NAME, "getFailed", undefined, error);
@@ -621,7 +621,7 @@ class ImmutableProofService {
621
621
  if (core.Is.stringValue(immutableProof.proof.created)) {
622
622
  proofEntity.dateCreated = immutableProof.proof.created;
623
623
  }
624
- const compacted = await dataJsonLd.JsonLdProcessor.compact(immutableProof);
624
+ const compacted = await dataJsonLd.JsonLdProcessor.compact(immutableProof, immutableProof["@context"]);
625
625
  const immutableStoreResult = await this._immutableStorage.store(proofEntity.nodeIdentity, core.ObjectHelper.toBytes(compacted));
626
626
  proofEntity.immutableStorageId = immutableStoreResult.id;
627
627
  await this._proofStorage.set(proofEntity);
@@ -644,29 +644,30 @@ class ImmutableProofService {
644
644
  if (core.Is.empty(proofEntity)) {
645
645
  throw new core.NotFoundError(this.CLASS_NAME, "proofNotFound", id);
646
646
  }
647
- let proofModel = await this.proofEntityToJsonLd(proofEntity);
647
+ let proofJsonLd = await this.proofEntityToJsonLd(proofEntity);
648
648
  let verified = false;
649
649
  let failure = immutableProofModels.ImmutableProofFailure.NotIssued;
650
650
  if (core.Is.stringValue(proofEntity.immutableStorageId)) {
651
651
  failure = immutableProofModels.ImmutableProofFailure.ProofMissing;
652
652
  const immutableResult = await this._immutableStorage.get(proofEntity.immutableStorageId);
653
653
  if (core.Is.uint8Array(immutableResult.data)) {
654
- proofModel = core.ObjectHelper.fromBytes(immutableResult.data);
655
- proofModel.immutableReceipt = immutableResult.receipt;
656
- // As we are adding the receipt to the data we update its context
657
- if (core.Is.array(proofModel["@context"])) {
658
- proofModel["@context"].push(immutableStorageModels.ImmutableStorageTypes.ContextRoot);
654
+ proofJsonLd = core.ObjectHelper.fromBytes(immutableResult.data);
655
+ proofJsonLd.immutableReceipt = immutableResult.receipt;
656
+ // As we are adding the receipt to the data we update the JSON-LD context
657
+ const receiptContext = immutableResult.receipt["@context"];
658
+ if (!core.Is.empty(receiptContext)) {
659
+ proofJsonLd["@context"] = dataJsonLd.JsonLdProcessor.combineContexts(proofJsonLd["@context"], receiptContext);
659
660
  }
660
- if (verify && core.Is.object(proofModel.proof)) {
661
- if (proofModel.proof.cryptosuite !== standardsW3cDid.DidCryptoSuites.EdDSAJcs2022) {
661
+ if (verify && core.Is.object(proofJsonLd.proof)) {
662
+ if (proofJsonLd.proof.cryptosuite !== standardsW3cDid.DidCryptoSuites.EdDSAJcs2022) {
662
663
  failure = immutableProofModels.ImmutableProofFailure.CryptoSuiteMismatch;
663
664
  }
664
- else if (proofModel.proof.type !== standardsW3cDid.DidTypes.DataIntegrityProof) {
665
+ else if (proofJsonLd.proof.type !== standardsW3cDid.DidTypes.DataIntegrityProof) {
665
666
  failure = immutableProofModels.ImmutableProofFailure.ProofTypeMismatch;
666
667
  }
667
668
  else {
668
- const hashData = await this.generateHashData(proofEntity.nodeIdentity, proofModel);
669
- const isVerified = await this._identityConnector.verifyProof(hashData, proofModel.proof);
669
+ const hashData = await this.generateHashData(proofEntity.nodeIdentity, proofJsonLd);
670
+ const isVerified = await this._identityConnector.verifyProof(hashData, proofJsonLd.proof);
670
671
  if (isVerified) {
671
672
  verified = true;
672
673
  failure = undefined;
@@ -679,7 +680,7 @@ class ImmutableProofService {
679
680
  }
680
681
  }
681
682
  return {
682
- immutableProof: proofModel,
683
+ immutableProof: proofJsonLd,
683
684
  verified,
684
685
  failure
685
686
  };
@@ -8,7 +8,7 @@ import { Blake2b, Sha256 } from '@twin.org/crypto';
8
8
  import { JsonLdHelper, JsonLdProcessor } from '@twin.org/data-json-ld';
9
9
  import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
10
10
  import { IdentityConnectorFactory } from '@twin.org/identity-models';
11
- import { ImmutableStorageConnectorFactory, ImmutableStorageTypes } from '@twin.org/immutable-storage-models';
11
+ import { ImmutableStorageConnectorFactory } from '@twin.org/immutable-storage-models';
12
12
  import { VaultConnectorFactory } from '@twin.org/vault-models';
13
13
 
14
14
  // Copyright 2024 IOTA Stiftung.
@@ -500,7 +500,7 @@ class ImmutableProofService {
500
500
  }
501
501
  try {
502
502
  const { immutableProof } = await this.internalGet(id, false);
503
- return JsonLdProcessor.compact(immutableProof);
503
+ return JsonLdProcessor.compact(immutableProof, immutableProof["@context"]);
504
504
  }
505
505
  catch (error) {
506
506
  throw new GeneralError(this.CLASS_NAME, "getFailed", undefined, error);
@@ -619,7 +619,7 @@ class ImmutableProofService {
619
619
  if (Is.stringValue(immutableProof.proof.created)) {
620
620
  proofEntity.dateCreated = immutableProof.proof.created;
621
621
  }
622
- const compacted = await JsonLdProcessor.compact(immutableProof);
622
+ const compacted = await JsonLdProcessor.compact(immutableProof, immutableProof["@context"]);
623
623
  const immutableStoreResult = await this._immutableStorage.store(proofEntity.nodeIdentity, ObjectHelper.toBytes(compacted));
624
624
  proofEntity.immutableStorageId = immutableStoreResult.id;
625
625
  await this._proofStorage.set(proofEntity);
@@ -642,29 +642,30 @@ class ImmutableProofService {
642
642
  if (Is.empty(proofEntity)) {
643
643
  throw new NotFoundError(this.CLASS_NAME, "proofNotFound", id);
644
644
  }
645
- let proofModel = await this.proofEntityToJsonLd(proofEntity);
645
+ let proofJsonLd = await this.proofEntityToJsonLd(proofEntity);
646
646
  let verified = false;
647
647
  let failure = ImmutableProofFailure.NotIssued;
648
648
  if (Is.stringValue(proofEntity.immutableStorageId)) {
649
649
  failure = ImmutableProofFailure.ProofMissing;
650
650
  const immutableResult = await this._immutableStorage.get(proofEntity.immutableStorageId);
651
651
  if (Is.uint8Array(immutableResult.data)) {
652
- proofModel = ObjectHelper.fromBytes(immutableResult.data);
653
- proofModel.immutableReceipt = immutableResult.receipt;
654
- // As we are adding the receipt to the data we update its context
655
- if (Is.array(proofModel["@context"])) {
656
- proofModel["@context"].push(ImmutableStorageTypes.ContextRoot);
652
+ proofJsonLd = ObjectHelper.fromBytes(immutableResult.data);
653
+ proofJsonLd.immutableReceipt = immutableResult.receipt;
654
+ // As we are adding the receipt to the data we update the JSON-LD context
655
+ const receiptContext = immutableResult.receipt["@context"];
656
+ if (!Is.empty(receiptContext)) {
657
+ proofJsonLd["@context"] = JsonLdProcessor.combineContexts(proofJsonLd["@context"], receiptContext);
657
658
  }
658
- if (verify && Is.object(proofModel.proof)) {
659
- if (proofModel.proof.cryptosuite !== DidCryptoSuites.EdDSAJcs2022) {
659
+ if (verify && Is.object(proofJsonLd.proof)) {
660
+ if (proofJsonLd.proof.cryptosuite !== DidCryptoSuites.EdDSAJcs2022) {
660
661
  failure = ImmutableProofFailure.CryptoSuiteMismatch;
661
662
  }
662
- else if (proofModel.proof.type !== DidTypes.DataIntegrityProof) {
663
+ else if (proofJsonLd.proof.type !== DidTypes.DataIntegrityProof) {
663
664
  failure = ImmutableProofFailure.ProofTypeMismatch;
664
665
  }
665
666
  else {
666
- const hashData = await this.generateHashData(proofEntity.nodeIdentity, proofModel);
667
- const isVerified = await this._identityConnector.verifyProof(hashData, proofModel.proof);
667
+ const hashData = await this.generateHashData(proofEntity.nodeIdentity, proofJsonLd);
668
+ const isVerified = await this._identityConnector.verifyProof(hashData, proofJsonLd.proof);
668
669
  if (isVerified) {
669
670
  verified = true;
670
671
  failure = undefined;
@@ -677,7 +678,7 @@ class ImmutableProofService {
677
678
  }
678
679
  }
679
680
  return {
680
- immutableProof: proofModel,
681
+ immutableProof: proofJsonLd,
681
682
  verified,
682
683
  failure
683
684
  };
package/docs/changelog.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # @twin.org/immutable-proof-service - Changelog
2
2
 
3
- ## v0.0.1-next.22
3
+ ## v0.0.1-next.24
4
4
 
5
5
  - Initial Release
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/immutable-proof-service",
3
- "version": "0.0.1-next.22",
3
+ "version": "0.0.1-next.24",
4
4
  "description": "Immutable proof contract implementation and REST endpoint definitions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,8 +23,8 @@
23
23
  "@twin.org/entity-storage-models": "next",
24
24
  "@twin.org/event-bus-models": "next",
25
25
  "@twin.org/identity-models": "next",
26
- "@twin.org/immutable-proof-models": "0.0.1-next.22",
27
- "@twin.org/immutable-proof-task": "0.0.1-next.22",
26
+ "@twin.org/immutable-proof-models": "0.0.1-next.24",
27
+ "@twin.org/immutable-proof-task": "0.0.1-next.24",
28
28
  "@twin.org/immutable-storage-models": "next",
29
29
  "@twin.org/nameof": "next",
30
30
  "@twin.org/standards-w3c-did": "next",