انتقل إلى المحتوى الرئيسي

Variable: EntityStatementPreview

const EntityStatementPreview: TObject<{ nameConfusable: TOptional<TWith<TArray<TString>, { description: "A warning, present only when it applies: the entities whose name reads the same as this entity's once case, width, invisible characters and spacing are set aside. Each is an entity identifier, and each is the entity's superior, an entity above that, or another entity under the same superior. Admission refuses such a name, so a statement that carries this was admitted beside one the check could not see: two admissions decided at the same moment, or an entity admitted before the check existed. Compare the names before approving publication. Only entities inside the scope the caller acts for are compared, so its absence is not proof that no such entity exists."; }>>; payload: TString; payloadDigest: TWith<TString, { description: "SHA-256 of the decoded payload bytes, in lowercase hex. It is what a preview receipt records as `previewedDigest`."; }>; protectedHeader: TString; servedAt: TArray<TString>; statement: TObject<{ accreditationId: TWith<TString, { description: "The accreditation the statement was prepared for."; }>; expiresAt: TOptional<TWith<TString, { description: "The statement's `exp` claim, present once the statement is published."; }>>; id: TWith<TString, { description: "The statement. The `{id}` of the preview route."; }>; issuedAt: TOptional<TWith<TString, { description: "The statement's `iat` claim, present once the statement is published. It is the time the signed bytes were rendered."; }>>; issuer: TWith<TString, { description: "The `iss` claim: the entity itself for an entity configuration, its superior for a subordinate statement."; }>; keyId: TWith<TString, { description: "The key that signs or signed it: the `kid` of the JWS header, which is the RFC 7638 thumbprint of the public key."; }>; kind: TWith<TUnsafe<"entity-configuration" | "subordinate-statement">, { description: "Which statement it is. `entity-configuration`: the entity's statement about itself, signed by its own key. `subordinate-statement`: its superior's statement about it, signed by the superior's key."; }>; previewedAt: TOptional<TWith<TString, { description: "When the statement was last previewed. Present whenever a preview receipt exists, a stale one included: a render after the preview leaves the receipt in place, so this alone does not say the current bytes were seen. Compare `previewedDigest`. Absent only if the statement was never previewed."; }>>; previewedBy: TOptional<TWith<TString, { description: "Who last previewed it: a subject id. Present exactly when `previewedAt` is. Publication is signed only when the person who approves it is this person."; }>>; previewedDigest: TOptional<TWith<TString, { description: "SHA-256 of the payload bytes that preview showed. The receipt covers the statement only while this equals the `payloadDigest` a preview returns now. Present exactly when `previewedAt` is."; }>>; publishedAt: TOptional<TWith<TString, { description: "When the signed statement was written out. Absent until then."; }>>; renderedAt: TWith<TString, { description: "When these bytes were rendered. A statement is rendered again when it has waited past half its lifetime, and a preview older than this no longer counts."; }>; status: TWith<TUnsafe<"prepared" | "published" | "superseded" | "expired">, { description: "Where it stands. `prepared`: rendered and unsigned, waiting for publication to be approved. `published`: signed and served. `superseded`: replaced by a renewal. `expired`: reserved; nothing in this release sets it."; }>; subject: TWith<TString, { description: "The `sub` claim: the entity the statement is about."; }>; }>; }>

Defined in: packages/contracts/src/schemas/trust.ts:251

request.*.trust.entity-statement.preview.v1 reply data: exactly what will be signed, where it will be served, and by which key (04's publication preview).

nameConfusable is the one field that is not about the bytes. It is here because the preview is the last thing a person reads before a name goes out under the anchor's signature, and it is optional on this closed schema as recordedBy and fourEyes were on theirs: a reader that predates it sees nothing new.

The header and payload travel base64url-encoded, as they will appear in the JWS, so protectedHeader + "." + payload is the signing input, byte for byte. Text would invite a JSON round trip somewhere between trust and the reader, and the preview's whole worth is that nothing re-serialises what is shown.