@twin.org/identity-connector-entity-storage 0.0.1-next.15 → 0.0.1-next.17

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.
@@ -136,7 +136,7 @@ class EntityStorageIdentityConnector {
136
136
  core.Guards.stringValue(this.CLASS_NAME, "controller", controller);
137
137
  try {
138
138
  const did = `did:${EntityStorageIdentityConnector.NAMESPACE}:${core.Converter.bytesToHex(core.RandomHelper.generate(32), true)}`;
139
- await this._vaultConnector.createKey(this.buildVaultKey(did, did), vaultModels.VaultKeyType.Ed25519);
139
+ await this._vaultConnector.createKey(this.buildVaultKey(did, "did"), vaultModels.VaultKeyType.Ed25519);
140
140
  const bitString = new core.BitString(EntityStorageIdentityConnector._REVOCATION_BITS_SIZE);
141
141
  const compressed = await core.Compression.compress(bitString.getBits(), core.CompressionType.Gzip);
142
142
  const didDocument = {
@@ -197,7 +197,7 @@ class EntityStorageIdentityConnector {
197
197
  }
198
198
  await this.verifyDocument(didIdentityDocument);
199
199
  const didDocument = didIdentityDocument.document;
200
- const tempKeyId = `temp-${core.Converter.bytesToBase64Url(core.RandomHelper.generate(32))}`;
200
+ const tempKeyId = `temp-vm-${core.Converter.bytesToBase64Url(core.RandomHelper.generate(16))}`;
201
201
  const verificationPublicKey = await this._vaultConnector.createKey(this.buildVaultKey(didDocument.id, tempKeyId), vaultModels.VaultKeyType.Ed25519);
202
202
  const jwkParams = {
203
203
  alg: "EdDSA",
@@ -207,7 +207,7 @@ class EntityStorageIdentityConnector {
207
207
  };
208
208
  const kid = core.Converter.bytesToBase64Url(crypto.Sha256.sum256(core.Converter.utf8ToBytes(JSON.stringify(jwkParams))));
209
209
  const methodId = `${documentId}#${verificationMethodId ?? kid}`;
210
- await this._vaultConnector.renameKey(this.buildVaultKey(didDocument.id, tempKeyId), this.buildVaultKey(didDocument.id, methodId));
210
+ await this._vaultConnector.renameKey(this.buildVaultKey(didDocument.id, tempKeyId), this.buildVaultKey(didDocument.id, verificationMethodId ?? kid));
211
211
  const methods = this.getAllMethods(didDocument);
212
212
  const existingMethodIndex = methods.findIndex(m => {
213
213
  if (core.Is.string(m.method)) {
@@ -215,7 +215,7 @@ class EntityStorageIdentityConnector {
215
215
  }
216
216
  return m.method.id === methodId;
217
217
  });
218
- if (existingMethodIndex >= 0) {
218
+ if (existingMethodIndex !== -1) {
219
219
  const methodArray = didDocument[methods[existingMethodIndex].arrayKey];
220
220
  if (core.Is.array(methodArray)) {
221
221
  methodArray.splice(existingMethodIndex, 1);
@@ -268,7 +268,7 @@ class EntityStorageIdentityConnector {
268
268
  }
269
269
  return m.method.id === verificationMethodId;
270
270
  });
271
- if (existingMethodIndex >= 0) {
271
+ if (existingMethodIndex !== -1) {
272
272
  const methodArray = didDocument[methods[existingMethodIndex].arrayKey];
273
273
  if (core.Is.array(methodArray)) {
274
274
  methodArray.splice(existingMethodIndex, 1);
@@ -312,7 +312,7 @@ class EntityStorageIdentityConnector {
312
312
  const fullServiceId = serviceId.includes("#") ? serviceId : `${documentId}#${serviceId}`;
313
313
  if (core.Is.array(didDocument.service)) {
314
314
  const existingServiceIndex = didDocument.service.findIndex(s => s.id === fullServiceId);
315
- if (existingServiceIndex >= 0) {
315
+ if (existingServiceIndex !== -1) {
316
316
  didDocument.service?.splice(existingServiceIndex, 1);
317
317
  }
318
318
  }
@@ -353,7 +353,7 @@ class EntityStorageIdentityConnector {
353
353
  const didDocument = didIdentityDocument.document;
354
354
  if (core.Is.array(didDocument.service)) {
355
355
  const existingServiceIndex = didDocument.service.findIndex(s => s.id === serviceId);
356
- if (existingServiceIndex >= 0) {
356
+ if (existingServiceIndex !== -1) {
357
357
  didDocument.service?.splice(existingServiceIndex, 1);
358
358
  if (didDocument.service?.length === 0) {
359
359
  delete didDocument.service;
@@ -405,11 +405,13 @@ class EntityStorageIdentityConnector {
405
405
  return m.method.id === verificationMethodId;
406
406
  });
407
407
  if (!methodAndArray) {
408
- throw new core.GeneralError(this.CLASS_NAME, "methodMissing");
408
+ throw new core.GeneralError(this.CLASS_NAME, "methodMissing", { method: verificationMethodId });
409
409
  }
410
410
  const verificationDidMethod = methodAndArray.method;
411
411
  if (!core.Is.stringValue(verificationDidMethod.publicKeyJwk?.x)) {
412
- throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
412
+ throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
413
+ method: verificationMethodId
414
+ });
413
415
  }
414
416
  const revocationService = issuerDidDocument.service?.find(s => s.id.endsWith("#revocation"));
415
417
  const credentialClone = core.ObjectHelper.clone(credential);
@@ -465,7 +467,7 @@ class EntityStorageIdentityConnector {
465
467
  vc: jwtVc
466
468
  };
467
469
  const signature = await web.Jwt.encodeWithSigner(jwtHeader, jwtPayload, async (alg, key, payload) => {
468
- const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, verificationMethodId), payload);
470
+ const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, idParts.hash ?? ""), payload);
469
471
  return sig;
470
472
  });
471
473
  return {
@@ -510,11 +512,11 @@ class EntityStorageIdentityConnector {
510
512
  return m.method.id === jwtHeader.kid;
511
513
  });
512
514
  if (!methodAndArray) {
513
- throw new core.GeneralError(this.CLASS_NAME, "methodMissing");
515
+ throw new core.GeneralError(this.CLASS_NAME, "methodMissing", { method: jwtHeader.kid });
514
516
  }
515
517
  const didMethod = methodAndArray.method;
516
518
  if (!core.Is.stringValue(didMethod.publicKeyJwk?.x)) {
517
- throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
519
+ throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", { method: jwtHeader.kid });
518
520
  }
519
521
  const verified = web.Jwt.verifySignature(jwtHeader, jwtPayload, jwtSignature, core.Converter.base64UrlToBytes(didMethod.publicKeyJwk.x));
520
522
  if (!verified) {
@@ -673,11 +675,13 @@ class EntityStorageIdentityConnector {
673
675
  return m.method.id === presentationMethodId;
674
676
  });
675
677
  if (!methodAndArray) {
676
- throw new core.GeneralError(this.CLASS_NAME, "methodMissing");
678
+ throw new core.GeneralError(this.CLASS_NAME, "methodMissing", { method: presentationMethodId });
677
679
  }
678
680
  const didMethod = methodAndArray.method;
679
681
  if (!core.Is.stringValue(didMethod.publicKeyJwk?.x)) {
680
- throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
682
+ throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
683
+ method: presentationMethodId
684
+ });
681
685
  }
682
686
  const finalTypes = [standardsW3cDid.DidTypes.VerifiablePresentation];
683
687
  if (core.Is.array(types)) {
@@ -713,7 +717,7 @@ class EntityStorageIdentityConnector {
713
717
  jwtPayload.exp = Math.floor(Date.now() / 1000) + expiresInSeconds;
714
718
  }
715
719
  const signature = await web.Jwt.encodeWithSigner(jwtHeader, jwtPayload, async (alg, key, payload) => {
716
- const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, presentationMethodId), payload);
720
+ const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, idParts.hash ?? ""), payload);
717
721
  return sig;
718
722
  });
719
723
  return {
@@ -824,17 +828,19 @@ class EntityStorageIdentityConnector {
824
828
  return m.method.id === verificationMethodId;
825
829
  });
826
830
  if (!methodAndArray) {
827
- throw new core.GeneralError(this.CLASS_NAME, "methodMissing");
831
+ throw new core.GeneralError(this.CLASS_NAME, "methodMissing", { method: verificationMethodId });
828
832
  }
829
833
  const didMethod = methodAndArray.method;
830
834
  if (!core.Is.stringValue(didMethod.publicKeyJwk?.x)) {
831
- throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
835
+ throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
836
+ method: verificationMethodId
837
+ });
832
838
  }
833
- const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, verificationMethodId), bytes);
839
+ const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, idParts.hash ?? ""), bytes);
834
840
  return {
835
841
  "@context": standardsW3cDid.DidContexts.ContextVCDataIntegrity,
836
842
  type: standardsW3cDid.DidTypes.DataIntegrityProof,
837
- cryptosuite: "eddsa-jcs-2022",
843
+ cryptosuite: standardsW3cDid.DidCryptoSuites.EdDSAJcs2022,
838
844
  created: new Date(Date.now()).toISOString(),
839
845
  verificationMethod: verificationMethodId,
840
846
  proofPurpose: "assertionMethod",
@@ -862,7 +868,7 @@ class EntityStorageIdentityConnector {
862
868
  if (proof.type !== standardsW3cDid.DidTypes.DataIntegrityProof) {
863
869
  throw new core.GeneralError(this.CLASS_NAME, "proofType", { proofType: proof.type });
864
870
  }
865
- if (proof.cryptosuite !== "eddsa-jcs-2022") {
871
+ if (proof.cryptosuite !== standardsW3cDid.DidCryptoSuites.EdDSAJcs2022) {
866
872
  throw new core.GeneralError(this.CLASS_NAME, "cryptoSuite", { cryptosuite: proof.cryptosuite });
867
873
  }
868
874
  const idParts = identityModels.DocumentHelper.parse(proof.verificationMethod);
@@ -883,13 +889,17 @@ class EntityStorageIdentityConnector {
883
889
  return m.method.id === proof.verificationMethod;
884
890
  });
885
891
  if (!methodAndArray) {
886
- throw new core.GeneralError(this.CLASS_NAME, "methodMissing");
892
+ throw new core.GeneralError(this.CLASS_NAME, "methodMissing", {
893
+ method: proof.verificationMethod
894
+ });
887
895
  }
888
896
  const didMethod = methodAndArray.method;
889
897
  if (!core.Is.stringValue(didMethod.publicKeyJwk?.x)) {
890
- throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
898
+ throw new core.GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
899
+ method: proof.verificationMethodId
900
+ });
891
901
  }
892
- return this._vaultConnector.verify(this.buildVaultKey(didIdentityDocument.id, proof.verificationMethod), bytes, core.Converter.base58ToBytes(proof.proofValue));
902
+ return this._vaultConnector.verify(this.buildVaultKey(didIdentityDocument.id, idParts.hash), bytes, core.Converter.base58ToBytes(proof.proofValue));
893
903
  }
894
904
  catch (error) {
895
905
  throw new core.GeneralError(this.CLASS_NAME, "verifyProofFailed", undefined, error);
@@ -950,7 +960,7 @@ class EntityStorageIdentityConnector {
950
960
  async verifyDocument(didDocument) {
951
961
  const stringifiedDocument = core.JsonHelper.canonicalize(didDocument.document);
952
962
  const docBytes = core.Converter.utf8ToBytes(stringifiedDocument);
953
- const verified = await this._vaultConnector.verify(this.buildVaultKey(didDocument.id, didDocument.id), docBytes, core.Converter.base64ToBytes(didDocument.signature));
963
+ const verified = await this._vaultConnector.verify(this.buildVaultKey(didDocument.id, "did"), docBytes, core.Converter.base64ToBytes(didDocument.signature));
954
964
  if (!verified) {
955
965
  throw new core.GeneralError(this.CLASS_NAME, "signatureVerificationFailed");
956
966
  }
@@ -964,7 +974,7 @@ class EntityStorageIdentityConnector {
964
974
  async updateDocument(controller, didDocument) {
965
975
  const stringifiedDocument = core.JsonHelper.canonicalize(didDocument);
966
976
  const docBytes = core.Converter.utf8ToBytes(stringifiedDocument);
967
- const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, didDocument.id), docBytes);
977
+ const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, "did"), docBytes);
968
978
  await this._didDocumentEntityStorage.set({
969
979
  id: didDocument.id,
970
980
  document: didDocument,
@@ -4,7 +4,7 @@ import { Sha256 } from '@twin.org/crypto';
4
4
  import { JsonLdProcessor } from '@twin.org/data-json-ld';
5
5
  import { EntityStorageConnectorFactory } from '@twin.org/entity-storage-models';
6
6
  import { DocumentHelper } from '@twin.org/identity-models';
7
- import { DidVerificationMethodType, DidTypes, DidContexts } from '@twin.org/standards-w3c-did';
7
+ import { DidVerificationMethodType, DidTypes, DidContexts, DidCryptoSuites } from '@twin.org/standards-w3c-did';
8
8
  import { VaultConnectorFactory, VaultKeyType } from '@twin.org/vault-models';
9
9
  import { Jwt } from '@twin.org/web';
10
10
 
@@ -134,7 +134,7 @@ class EntityStorageIdentityConnector {
134
134
  Guards.stringValue(this.CLASS_NAME, "controller", controller);
135
135
  try {
136
136
  const did = `did:${EntityStorageIdentityConnector.NAMESPACE}:${Converter.bytesToHex(RandomHelper.generate(32), true)}`;
137
- await this._vaultConnector.createKey(this.buildVaultKey(did, did), VaultKeyType.Ed25519);
137
+ await this._vaultConnector.createKey(this.buildVaultKey(did, "did"), VaultKeyType.Ed25519);
138
138
  const bitString = new BitString(EntityStorageIdentityConnector._REVOCATION_BITS_SIZE);
139
139
  const compressed = await Compression.compress(bitString.getBits(), CompressionType.Gzip);
140
140
  const didDocument = {
@@ -195,7 +195,7 @@ class EntityStorageIdentityConnector {
195
195
  }
196
196
  await this.verifyDocument(didIdentityDocument);
197
197
  const didDocument = didIdentityDocument.document;
198
- const tempKeyId = `temp-${Converter.bytesToBase64Url(RandomHelper.generate(32))}`;
198
+ const tempKeyId = `temp-vm-${Converter.bytesToBase64Url(RandomHelper.generate(16))}`;
199
199
  const verificationPublicKey = await this._vaultConnector.createKey(this.buildVaultKey(didDocument.id, tempKeyId), VaultKeyType.Ed25519);
200
200
  const jwkParams = {
201
201
  alg: "EdDSA",
@@ -205,7 +205,7 @@ class EntityStorageIdentityConnector {
205
205
  };
206
206
  const kid = Converter.bytesToBase64Url(Sha256.sum256(Converter.utf8ToBytes(JSON.stringify(jwkParams))));
207
207
  const methodId = `${documentId}#${verificationMethodId ?? kid}`;
208
- await this._vaultConnector.renameKey(this.buildVaultKey(didDocument.id, tempKeyId), this.buildVaultKey(didDocument.id, methodId));
208
+ await this._vaultConnector.renameKey(this.buildVaultKey(didDocument.id, tempKeyId), this.buildVaultKey(didDocument.id, verificationMethodId ?? kid));
209
209
  const methods = this.getAllMethods(didDocument);
210
210
  const existingMethodIndex = methods.findIndex(m => {
211
211
  if (Is.string(m.method)) {
@@ -213,7 +213,7 @@ class EntityStorageIdentityConnector {
213
213
  }
214
214
  return m.method.id === methodId;
215
215
  });
216
- if (existingMethodIndex >= 0) {
216
+ if (existingMethodIndex !== -1) {
217
217
  const methodArray = didDocument[methods[existingMethodIndex].arrayKey];
218
218
  if (Is.array(methodArray)) {
219
219
  methodArray.splice(existingMethodIndex, 1);
@@ -266,7 +266,7 @@ class EntityStorageIdentityConnector {
266
266
  }
267
267
  return m.method.id === verificationMethodId;
268
268
  });
269
- if (existingMethodIndex >= 0) {
269
+ if (existingMethodIndex !== -1) {
270
270
  const methodArray = didDocument[methods[existingMethodIndex].arrayKey];
271
271
  if (Is.array(methodArray)) {
272
272
  methodArray.splice(existingMethodIndex, 1);
@@ -310,7 +310,7 @@ class EntityStorageIdentityConnector {
310
310
  const fullServiceId = serviceId.includes("#") ? serviceId : `${documentId}#${serviceId}`;
311
311
  if (Is.array(didDocument.service)) {
312
312
  const existingServiceIndex = didDocument.service.findIndex(s => s.id === fullServiceId);
313
- if (existingServiceIndex >= 0) {
313
+ if (existingServiceIndex !== -1) {
314
314
  didDocument.service?.splice(existingServiceIndex, 1);
315
315
  }
316
316
  }
@@ -351,7 +351,7 @@ class EntityStorageIdentityConnector {
351
351
  const didDocument = didIdentityDocument.document;
352
352
  if (Is.array(didDocument.service)) {
353
353
  const existingServiceIndex = didDocument.service.findIndex(s => s.id === serviceId);
354
- if (existingServiceIndex >= 0) {
354
+ if (existingServiceIndex !== -1) {
355
355
  didDocument.service?.splice(existingServiceIndex, 1);
356
356
  if (didDocument.service?.length === 0) {
357
357
  delete didDocument.service;
@@ -403,11 +403,13 @@ class EntityStorageIdentityConnector {
403
403
  return m.method.id === verificationMethodId;
404
404
  });
405
405
  if (!methodAndArray) {
406
- throw new GeneralError(this.CLASS_NAME, "methodMissing");
406
+ throw new GeneralError(this.CLASS_NAME, "methodMissing", { method: verificationMethodId });
407
407
  }
408
408
  const verificationDidMethod = methodAndArray.method;
409
409
  if (!Is.stringValue(verificationDidMethod.publicKeyJwk?.x)) {
410
- throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
410
+ throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
411
+ method: verificationMethodId
412
+ });
411
413
  }
412
414
  const revocationService = issuerDidDocument.service?.find(s => s.id.endsWith("#revocation"));
413
415
  const credentialClone = ObjectHelper.clone(credential);
@@ -463,7 +465,7 @@ class EntityStorageIdentityConnector {
463
465
  vc: jwtVc
464
466
  };
465
467
  const signature = await Jwt.encodeWithSigner(jwtHeader, jwtPayload, async (alg, key, payload) => {
466
- const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, verificationMethodId), payload);
468
+ const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, idParts.hash ?? ""), payload);
467
469
  return sig;
468
470
  });
469
471
  return {
@@ -508,11 +510,11 @@ class EntityStorageIdentityConnector {
508
510
  return m.method.id === jwtHeader.kid;
509
511
  });
510
512
  if (!methodAndArray) {
511
- throw new GeneralError(this.CLASS_NAME, "methodMissing");
513
+ throw new GeneralError(this.CLASS_NAME, "methodMissing", { method: jwtHeader.kid });
512
514
  }
513
515
  const didMethod = methodAndArray.method;
514
516
  if (!Is.stringValue(didMethod.publicKeyJwk?.x)) {
515
- throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
517
+ throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", { method: jwtHeader.kid });
516
518
  }
517
519
  const verified = Jwt.verifySignature(jwtHeader, jwtPayload, jwtSignature, Converter.base64UrlToBytes(didMethod.publicKeyJwk.x));
518
520
  if (!verified) {
@@ -671,11 +673,13 @@ class EntityStorageIdentityConnector {
671
673
  return m.method.id === presentationMethodId;
672
674
  });
673
675
  if (!methodAndArray) {
674
- throw new GeneralError(this.CLASS_NAME, "methodMissing");
676
+ throw new GeneralError(this.CLASS_NAME, "methodMissing", { method: presentationMethodId });
675
677
  }
676
678
  const didMethod = methodAndArray.method;
677
679
  if (!Is.stringValue(didMethod.publicKeyJwk?.x)) {
678
- throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
680
+ throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
681
+ method: presentationMethodId
682
+ });
679
683
  }
680
684
  const finalTypes = [DidTypes.VerifiablePresentation];
681
685
  if (Is.array(types)) {
@@ -711,7 +715,7 @@ class EntityStorageIdentityConnector {
711
715
  jwtPayload.exp = Math.floor(Date.now() / 1000) + expiresInSeconds;
712
716
  }
713
717
  const signature = await Jwt.encodeWithSigner(jwtHeader, jwtPayload, async (alg, key, payload) => {
714
- const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, presentationMethodId), payload);
718
+ const sig = await this._vaultConnector.sign(this.buildVaultKey(idParts.id, idParts.hash ?? ""), payload);
715
719
  return sig;
716
720
  });
717
721
  return {
@@ -822,17 +826,19 @@ class EntityStorageIdentityConnector {
822
826
  return m.method.id === verificationMethodId;
823
827
  });
824
828
  if (!methodAndArray) {
825
- throw new GeneralError(this.CLASS_NAME, "methodMissing");
829
+ throw new GeneralError(this.CLASS_NAME, "methodMissing", { method: verificationMethodId });
826
830
  }
827
831
  const didMethod = methodAndArray.method;
828
832
  if (!Is.stringValue(didMethod.publicKeyJwk?.x)) {
829
- throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
833
+ throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
834
+ method: verificationMethodId
835
+ });
830
836
  }
831
- const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, verificationMethodId), bytes);
837
+ const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, idParts.hash ?? ""), bytes);
832
838
  return {
833
839
  "@context": DidContexts.ContextVCDataIntegrity,
834
840
  type: DidTypes.DataIntegrityProof,
835
- cryptosuite: "eddsa-jcs-2022",
841
+ cryptosuite: DidCryptoSuites.EdDSAJcs2022,
836
842
  created: new Date(Date.now()).toISOString(),
837
843
  verificationMethod: verificationMethodId,
838
844
  proofPurpose: "assertionMethod",
@@ -860,7 +866,7 @@ class EntityStorageIdentityConnector {
860
866
  if (proof.type !== DidTypes.DataIntegrityProof) {
861
867
  throw new GeneralError(this.CLASS_NAME, "proofType", { proofType: proof.type });
862
868
  }
863
- if (proof.cryptosuite !== "eddsa-jcs-2022") {
869
+ if (proof.cryptosuite !== DidCryptoSuites.EdDSAJcs2022) {
864
870
  throw new GeneralError(this.CLASS_NAME, "cryptoSuite", { cryptosuite: proof.cryptosuite });
865
871
  }
866
872
  const idParts = DocumentHelper.parse(proof.verificationMethod);
@@ -881,13 +887,17 @@ class EntityStorageIdentityConnector {
881
887
  return m.method.id === proof.verificationMethod;
882
888
  });
883
889
  if (!methodAndArray) {
884
- throw new GeneralError(this.CLASS_NAME, "methodMissing");
890
+ throw new GeneralError(this.CLASS_NAME, "methodMissing", {
891
+ method: proof.verificationMethod
892
+ });
885
893
  }
886
894
  const didMethod = methodAndArray.method;
887
895
  if (!Is.stringValue(didMethod.publicKeyJwk?.x)) {
888
- throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing");
896
+ throw new GeneralError(this.CLASS_NAME, "publicKeyJwkMissing", {
897
+ method: proof.verificationMethodId
898
+ });
889
899
  }
890
- return this._vaultConnector.verify(this.buildVaultKey(didIdentityDocument.id, proof.verificationMethod), bytes, Converter.base58ToBytes(proof.proofValue));
900
+ return this._vaultConnector.verify(this.buildVaultKey(didIdentityDocument.id, idParts.hash), bytes, Converter.base58ToBytes(proof.proofValue));
891
901
  }
892
902
  catch (error) {
893
903
  throw new GeneralError(this.CLASS_NAME, "verifyProofFailed", undefined, error);
@@ -948,7 +958,7 @@ class EntityStorageIdentityConnector {
948
958
  async verifyDocument(didDocument) {
949
959
  const stringifiedDocument = JsonHelper.canonicalize(didDocument.document);
950
960
  const docBytes = Converter.utf8ToBytes(stringifiedDocument);
951
- const verified = await this._vaultConnector.verify(this.buildVaultKey(didDocument.id, didDocument.id), docBytes, Converter.base64ToBytes(didDocument.signature));
961
+ const verified = await this._vaultConnector.verify(this.buildVaultKey(didDocument.id, "did"), docBytes, Converter.base64ToBytes(didDocument.signature));
952
962
  if (!verified) {
953
963
  throw new GeneralError(this.CLASS_NAME, "signatureVerificationFailed");
954
964
  }
@@ -962,7 +972,7 @@ class EntityStorageIdentityConnector {
962
972
  async updateDocument(controller, didDocument) {
963
973
  const stringifiedDocument = JsonHelper.canonicalize(didDocument);
964
974
  const docBytes = Converter.utf8ToBytes(stringifiedDocument);
965
- const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, didDocument.id), docBytes);
975
+ const signature = await this._vaultConnector.sign(this.buildVaultKey(didDocument.id, "did"), docBytes);
966
976
  await this._didDocumentEntityStorage.set({
967
977
  id: didDocument.id,
968
978
  document: didDocument,
package/docs/changelog.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # @twin.org/identity-connector-entity-storage- Changelog
2
2
 
3
- ## v0.0.1-next.15
3
+ ## v0.0.1-next.17
4
4
 
5
5
  - Initial Release
package/locales/en.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "verificationMethodNotFound": "The verification method could not be found",
15
15
  "verificationPrivateKeyNotFound": "The private key for the verification method could not be found in the vault",
16
16
  "serviceNotFound": "The service could not be found",
17
- "publicKeyJwkMissing": "The verification method contains no publicKeyJwk",
17
+ "publicKeyJwkMissing": "The verification method contains no publicKeyJwk in method \"{method}\"",
18
18
  "jwkSignatureFailed": "The signature on the JWK failed verification",
19
19
  "createVerifiableCredentialFailed": "Creating the verifiable credential failed",
20
20
  "checkingVerifiableCredentialFailed": "Checking the verifiable credential failed",
@@ -23,10 +23,12 @@
23
23
  "expectingJwtCredential": "Expecting JWT credential in the presentation",
24
24
  "keyIndexOutOfRange": "The supplied keyIndex is not in the range of the key list",
25
25
  "createProofFailed": "Creating the signature for the data failed",
26
- "methodMissing": "The verification method specified does not exist",
26
+ "methodMissing": "The verification method specified does not exist \"{method}\"",
27
27
  "verifyProofFailed": "Verifying the signature for the data failed",
28
28
  "revokeVerifiableCredentialsFailed": "Revoking verifiable credentials failed",
29
- "unrevokeVerifiableCredentialsFailed": "Unrevoking verifiable credentials failed"
29
+ "unrevokeVerifiableCredentialsFailed": "Unrevoking verifiable credentials failed",
30
+ "proofType": "The proof type must be DataIntegrityProof, it is currently {proofType}",
31
+ "cryptosuite": "The proof cryptosuite must be eddsa-jcs-2022, it is currently {cryptosuite}"
30
32
  },
31
33
  "entityStorageIdentityProfileConnector": {
32
34
  "alreadyExists": "The identity profile already exists for the identity \"{existingId}\"",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@twin.org/identity-connector-entity-storage",
3
- "version": "0.0.1-next.15",
3
+ "version": "0.0.1-next.17",
4
4
  "description": "Identity connector implementation using entity storage",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  "@twin.org/data-core": "next",
20
20
  "@twin.org/data-json-ld": "next",
21
21
  "@twin.org/entity": "next",
22
- "@twin.org/identity-models": "0.0.1-next.15",
22
+ "@twin.org/identity-models": "0.0.1-next.17",
23
23
  "@twin.org/nameof": "next",
24
24
  "@twin.org/standards-w3c-did": "next",
25
25
  "@twin.org/vault-models": "next",