C2PA
Document Rails embeds a signed C2PA manifest into the resulting PDF during the recipe printing process.
C2PA manifests feature W3C output credentials, generated OID4VCI credential offer URLs, and a cryptographic signature that ensures no document or manifest modifications were performed.
Embedded credentials
Only W3C credentials are embedded into C2PA manifests.
Example manifest
{
"active_manifest": "vaultie:urn:uuid:de2d61d2-4db9-494c-904a-36b602199065",
"manifests": {
"vaultie:urn:uuid:de2d61d2-4db9-494c-904a-36b602199065": {
"claim_generator": "Impressum/0.1.0 c2pa-rs/0.35.1",
"title": "Signed Impressum document",
"format": "application/pdf",
"instance_id": "xmp:iid:7a2c4d05-61b8-4024-8d68-3547b32ab1a4",
"ingredients": [],
"credentials": [
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://example.com/context"
],
"id": "https://example.com/92862b4a-5bd9-43c8-b504-59c4c81c0430",
"type": [
"VerifiableCredential",
"IdentityCredential"
],
"credentialSubject": {
"name": "John",
"surname": "Doe",
"id": "https://example.com/remotelyFetchedSubject"
},
"issuer": "did:key:z6MknjRCmmamb7roMP4dVsKT8LzaDACmXtCwvvUxEnzfaLSN",
"validFrom": "2025-03-06T15:10:11Z",
"validUntil": "2026-03-06T15:10:11Z",
"credentialStatus": {
"type": "BitstringStatusListEntry",
"id": "http://127.0.0.1:12311/TestStatusListW3C#56404",
"statusPurpose": "revocation",
"statusListCredential": "http://127.0.0.1:12311/TestStatusListW3C",
"statusListIndex": "56404"
},
"proof": {
"@context": "https://w3id.org/security/suites/ed25519-2020/v1",
"type": "Ed25519Signature2020",
"created": "2025-03-06T15:10:12.03Z",
"verificationMethod": "did:key:z6MknjRCmmamb7roMP4dVsKT8LzaDACmXtCwvvUxEnzfaLSN#z6MknjRCmmamb7roMP4dVsKT8LzaDACmXtCwvvUxEnzfaLSN",
"proofPurpose": "assertionMethod",
"proofValue": "z5MDeuJxQD1NoYVcz5jffLjwXik59o29UD29oUFQwzk9NVkVfhPyewEQGDMFzgme6jj2qdx3u6AZ8yAw5AmhhTihX"
}
},
{
"@context": [
"https://www.w3.org/ns/credentials/v2",
"https://example.com/context"
],
"id": "https://example.com/7af193a1-3b65-4b8d-b00e-186cadccf82e",
"type": [
"VerifiableCredential",
"DocumentCredential"
],
"credentialSubject": {
"documentNumber": "123-123-123",
"id": "https://example.com/remotelyFetchedSubject"
},
"issuer": "did:key:z6MknjRCmmamb7roMP4dVsKT8LzaDACmXtCwvvUxEnzfaLSN",
"validFrom": "2025-03-06T15:10:12Z",
"validUntil": "2026-03-06T15:10:12Z",
"credentialStatus": {
"type": "BitstringStatusListEntry",
"id": "http://127.0.0.1:12311/TestStatusListW3C#88244",
"statusPurpose": "revocation",
"statusListCredential": "http://127.0.0.1:12311/TestStatusListW3C",
"statusListIndex": "88244"
},
"proof": {
"@context": "https://w3id.org/security/suites/ed25519-2020/v1",
"type": "Ed25519Signature2020",
"created": "2025-03-06T15:10:12.127Z",
"verificationMethod": "did:key:z6MknjRCmmamb7roMP4dVsKT8LzaDACmXtCwvvUxEnzfaLSN#z6MknjRCmmamb7roMP4dVsKT8LzaDACmXtCwvvUxEnzfaLSN",
"proofPurpose": "assertionMethod",
"proofValue": "z254QxFx4RKviumSGgSX2wT32EhrXhjzhESxPbrhNWNfU6w1d1uRg3JSkwR7jMQWD28WvA5khWCwKvCGKe4XJPj3e"
}
}
],
"assertions": [],
"signature_info": {
"alg": "Es256",
"issuer": "Test",
"cert_serial_number": "608410276101712311327286874723622692738907580939"
},
"label": "vaultie:urn:uuid:de2d61d2-4db9-494c-904a-36b602199065"
}
}
}