Skip to content

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"
        }
    }
}