import { type PassProblem } from './rules'; /** * The conformance check: a finished `.pkpass`, opened and held against the rules. * * This is what stands in for a phone. It reads the archive back from its bytes * — not from whatever the builder thought it wrote — re-derives every hash, * verifies the signature cryptographically, and applies {@link RULES} to the * `pass.json` that is actually in the file. * * What it cannot tell anyone is whether a lock screen renders the result as * intended, or whether Apple's servers accept the certificate. Those are named * in the plan as unprovable here rather than quietly implied by a green check. */ export interface VerifyOptions { /** * Trust anchors the signing certificate must chain to. * * For a real pass that is Apple's root. Omitted, the signature is still * verified — the bytes were signed by the key in the container — but nothing * says whose key it is, which is the situation every test with a generated * certificate is in, and is why the verdict reports the two separately. */ trustedRoots?: readonly (Buffer | string)[]; } export interface PassVerdict { valid: boolean; problems: PassProblem[]; /** The archive's contents, by name, for a caller that wants to look further. */ files: string[]; passJson?: Record; signature: { present: boolean; verified: boolean; /** Whether a chain was actually checked, rather than assumed. */ chainChecked: boolean; signer?: string; reason?: string; }; } export declare function verifyPkPass(archive: Uint8Array, options?: VerifyOptions): Promise; //# sourceMappingURL=verify.d.ts.map