Resolvé

Para resolver tu did instala el siguiente paquete:

npm install @quarkid/did-resolver

Compartir en redes

Dentro del archivo did.ts importa la siguiente dependencia:

import { DIDUniversalResolver } from "@quarkid/did-resolver"; import { DIDDocument } from "@quarkid/did-core";

 

Escribe la siguiente funcion antes de la funcion createDID.

export const resolveDid = (did: string) => new Promise<DIDDocument>((resolve, reject) => { setTimeout(async () => { const universalResolver = new DIDUniversalResolver({ universalResolverURL: QuarkIDEndpoint, }); const didDocument = await universalResolver.resolveDID(did); console.log(didDocument); return didDocument; }, 65000); });

 

Agrega a la funcion createDID el siguiente codigo:

const didDocument = await resolveDid(result.did); console.log("Did Document", didDocument);

 

Prueba tu DID

Para probar tu codigo deberás llamar a la funcion createDID.

createDID();

 

Si seguiste correctamente todos los pasos deberas tener un archivo did.ts como el siguiente:

import { FileSystemKMSSecureStorage } from "./storage"; import { KMSClient } from "@quarkid/kms-client"; import { LANG, Suite } from "@quarkid/kms-core"; import { ModenaUniversalRegistry } from "@quarkid/did-registry"; import { AssertionMethodPurpose, KeyAgreementPurpose } from "@quarkid/did-core"; import { DIDUniversalResolver } from "@quarkid/did-resolver"; import { DIDDocument } from "@quarkid/did-core"; export const QuarkIDEndpoint = "https://node-ssi.buenosaires.gob.ar"; export const resolveDid = (did: string) => new Promise<DIDDocument>((resolve, reject) => { setTimeout(async () => { const universalResolver = new DIDUniversalResolver({ universalResolverURL: QuarkIDEndpoint, }); const didDocument = await universalResolver.resolveDID(did); return didDocument; }, 65000); }); export const createDID = async () => { const kms = new KMSClient({ lang: LANG.en, storage: new FileSystemKMSSecureStorage({ filepath: "file-system-storage", }), }); const updateKey = await kms.create(Suite.ES256k); const recoveryKey = await kms.create(Suite.ES256k); const didComm = await kms.create(Suite.DIDComm); const bbsbls = await kms.create(Suite.Bbsbls2020); const registry = new ModenaUniversalRegistry(); const createDidResponse = await registry.createDID({ updateKeys: [updateKey.publicKeyJWK], recoveryKeys: [recoveryKey.publicKeyJWK], verificationMethods: [ { id: "bbsbls", type: "Bls12381G1Key2020", publicKeyJwk: bbsbls.publicKeyJWK, purpose: [new AssertionMethodPurpose()], }, { id: "didComm", type: "X25519KeyAgreementKey2019", publicKeyJwk: didComm.publicKeyJWK, purpose: [new KeyAgreementPurpose()], }, ], }); console.log(JSON.stringify(createDidResponse.longDid)); const result = await registry.publishDID({ universalResolverURL: QuarkIDEndpoint, didMethod: "did:quarkid", createDIDResponse: createDidResponse, }); console.log("result", result); const didDocument = await resolveDid(result.did); console.log("Did Document", didDocument); }; createDID();

 

El próximo paso es ejecutar la funcion createDID, para ello abre una terminal y usa ts-node/npx para ejecutar tu código.

ts-node did.ts

 

o

npx ts-node did.ts

 

Nota:

En tu terminal podrás observar el resultado de los console.log que estan en tu código. La resolución del Did Document demora unos segundos en impactar, esto se debe a que se esta publicando el did en la blockchain y este proceso puede demorar.