Puente DCP-AI ↔ W3C DID/VC¶
Traducción informativa de la versión en inglés, actualizada el 26/10/2026. Si difieren, prevalece la versión en inglés. Los identificadores, comandos y bloques de código se conservan sin traducir.
Convierte entre artefactos de DCP y los identificadores descentralizados (DID) y credenciales verificables (VC) del W3C.
Instalación¶
La 2.0.1 de npm (26/10/2026) tiene el mismo index.js que el código fuente de main. Se ejecuta en Node.js (usa Buffer) y no tiene dependencias.
Límites (25/10/2026)¶
Léelos antes de confiar en la salida; están comprobados contra index.js:
- Claves.
rprToDIDDocumentlee las claves derpr.keys. Un RPR V2 que sigue el esquema las lleva enbinding_keys, que no lee, así que su DID Document no tiene métodos de verificación. - Codificación.
publicKeyMultibaseeszseguido de base64url. En Multibase,zsignifica base58btc: esto etiqueta mal la codificación y puede producir un error de decodificación o bytes de clave distintos en otras herramientas. EldidDocumentToRPRde este paquete usa el decodificador base64url correspondiente, no un decodificador multibase conforme. - Sin pruebas. Las credenciales y presentaciones verificables que construye no llevan
proof: no están firmadas.passportToVCcopia campos seleccionados del pasaporte y no conserva una firma de DCP.bundleToVPconserva el bundle firmado recibido endcpBundle, que debe comprobarse aparte con un verificador de DCP; esa comprobación no autentica elholder, elcreatedni los campos copiados de la credencial de la VP que lo rodea. - URL de contexto. Los DID Documents que produce enumeran
https://w3id.org/security/suites/ed2519-2020/v1en@context, una URL mal escrita de la suite Ed25519-2020 (index.js). Hasta que se corrija en otro cambio, no trates la salida como JSON-LD de DID del W3C conforme. - Espacios de nombres. Este repositorio usa
did:dcp:yPostQuantumVerificationKey2024como identificadores propios. No aporta ningún resolvedor de DID ni evidencia de registro para ellos; no supongas que las herramientas externas de DID/VC los reconocen.
Especificaciones de DCP admitidas¶
De DCP-01 a DCP-09, como correspondencias parciales de los campos enumerados abajo y con los límites anteriores; no es una implementación completa de esas especificaciones.
Descripción general¶
Este puente permite la interoperabilidad entre la capa de identidad de DCP-AI y el ecosistema de identidad descentralizada del W3C. Admite la conversión en ambos sentidos de:
- Responsible Principal Records ↔ DID Documents — asigna las identidades humanas de DCP a DID del método
did:dcp:con métodos de verificación derivados de las claves del RPR. - Agent Passports ↔ Verifiable Credentials — representa las certificaciones de agentes de DCP como VC del W3C, con las capacidades, el modo de responsabilidad y la jurisdicción.
- Signed Bundles → Verifiable Presentations — envuelve Citizenship Bundles de DCP completos como VP del W3C para presentarlos a verificadores externos.
Funciones¶
| Función | Sentido | Descripción |
|---|---|---|
rprToDIDDocument(rpr) |
DCP → W3C | Convierte un Responsible Principal Record en un DID Document |
didDocumentToRPR(didDoc) |
W3C → DCP | Convierte un DID Document de vuelta en un esqueleto de RPR |
passportToVC(passport, issuerDid) |
DCP → W3C | Convierte un Agent Passport en una Verifiable Credential |
vcToPassport(vc) |
W3C → DCP | Convierte una Verifiable Credential de vuelta en un esqueleto de pasaporte |
bundleToVP(signedBundle, holderDid) |
DCP → W3C | Envuelve un bundle firmado como Verifiable Presentation |
rightsToServiceEndpoints(rightsDeclaration) |
DCP → W3C | Convierte una declaración de derechos en endpoints de servicio del DID (DCP-08) |
Método DID¶
Este puente usa el espacio de nombres del método did:dcp:. Los identificadores DID se derivan directamente de los ID humanos del RPR:
Los métodos de verificación admiten tanto Ed25519 (clásico) como tipos de clave poscuánticos.
Uso¶
// Fragment: myRpr, myPassport and signedBundle come from your application
import { rprToDIDDocument, passportToVC, bundleToVP } from '@dcp-ai/w3c-did';
// Convert an RPR to a DID Document
const didDoc = rprToDIDDocument(myRpr);
// Issue a Verifiable Credential for an agent
const vc = passportToVC(myPassport, 'did:dcp:issuer-id');
// Wrap a full bundle as a Verifiable Presentation
const vp = bundleToVP(signedBundle, 'did:dcp:holder-id');
Notas¶
- Las conversiones a esqueleto (W3C → DCP) producen registros parciales que requieren un procesamiento adicional (recálculo de los ID de clave, firma, etc.) antes de ser artefactos de DCP válidos.
- El valor de
publicKeyMultibaseetiqueta base64url como base58btc y no codifica correctamente la clave original para los consumidores de multibase (véanse los límites).