Песочница

Что делает приложение после решения

Свяжите запрос окончательного файла с новой проверкой Ваучера и разрешите печать в приложении.

Проверьте передачу окончательного файла и прочитайте текущее решение approve. Затем приложение решает, отправлять ли задание в печать.

Используйте Native и Bash. Сначала пройдите руководство по Ваучеру. Сохраните его print-handoff.lspx, policy.json и ключ издателя. Типография независимо выбирает допустимые исходник, открытый ключ, исполняемый файл и ввод.

Свяжите запрос печати

Сохраните весь файл как current-request.checked.json в UTF-8 с переводами строк LF и завершающим переводом строки.

JSON
{
  "input": "csk.checked-input/v1",
  "value": [
    true,
    true,
    true,
    true,
    "edition-final",
    "print-request-123",
    "operator-7",
    "print",
    1785600000
  ]
}

Первые четыре значения описывают формат страницы, поля, встроенные шрифты и число страниц. Пятое обозначает редакцию окончательного файла. Остальные связывают идентификатор запроса, исполнителя, действие и срок действия с подписанным вводом.

Срок действия задан для упражнения. Для реального задания приложение передаёт доверенные факты, аутентифицирует исполнителя и проверяет срок по серверному времени. Правило читает только первые четыре значения. Подписанный ввод связывает все девять.

Выпустите запрос и проверьте его снова

Задайте в ISSUER_KEY_URI тот же абсолютный путь закрытого ключа, что и в руководстве по Ваучеру. Для каждого запроса используйте новые пути вывода.

SH
lispex vouch issue --source print-handoff.lspx \
  --input current-request.checked.json --profile csk.checked-profile/v1 \
  --key-handle "$ISSUER_KEY_URI" --out-dir current-request-issued --emit-bundle
lispex vouch gate --bundle current-request-issued/vouch-input-bundle.json \
  --trust-policy policy.json --source print-handoff.lspx \
  --input current-request.checked.json --profile csk.checked-profile/v1 \
  --require-decision approve --report-out current-request-gate.json

Обе команды завершаются с кодом 0 без вывода. Выпуск создаёт issue-report.json, payload.json, envelope.dsse.json и vouch-input-bundle.json в current-request-issued. Отчёт выпуска содержит состояние issued-native. Проверка создаёт current-request-gate.json со следующим результатом.

JSON
{
  "basis": "csk.current-native-agreement/v0",
  "observed_decision": "approve",
  "reason": null,
  "required_decision": "approve",
  "status": "granted"
}

Проверка аутентифицирует запись, связывает независимо переданные исходник и ввод и повторяет правило в текущем вызове Native. Ваучер проверяет совпадение записи и повторного выполнения. Фактическое действие определяет приложение.

Прочитайте отчёт gate как запись запроса

Сохраните current-request-gate.json вместе с точным проверяемым вводом и подписанным пакетом. Следующие поля определяют, что проверил этот вызов.

ПолеЗначение
context.input_sha256Идентификатор Ваучера для точных байтов проверяемого ввода
context.source_sha256Идентификатор принятого исходника правила
context.envelope_sha256Подписанный конверт, использованный этим вызовом
authentication.statusauthenticated для этого запроса
comparison.current_vs_signedagree для полных записей выполнения
reexecution.statusexecution-agreed для нового выполнения
gate.statusgranted, когда текущее решение соответствует требованию

Приложение добавляет в журнал идентификатор запроса, аутентифицированного исполнителя, действие, срок, редакцию файла, идентификатор транзакции типографии и итоговое состояние. Сохраните вместе с записью точные байты ввода и отчёта gate. Идентификатор ввода Ваучера использует собственный домен хеширования и отличается от обычного SHA-256 файла.

Полученный пакет решения и транзакция приложения имеют отдельные записи. Атомарно зарезервируйте идентификатор запроса до отправки задания. Следуйте правилам идемпотентности сервиса печати и сохраняйте его ответ. При тайм-ауте выясните состояние транзакции до повторной попытки.

Обработайте отказ

Эти результаты получены с файлами данного упражнения и предыдущего руководства по Ваучеру.

ИзменениеПолученный результатДействие приложения
Передать запрос с девятью значениями пакету issued с пятью значениямиКод 1, native-request-input-mismatch, gate not-evaluatedВыпустить отдельный пакет запроса
Передать исходник без --inputОшибка использования и код 2 до выполненияПередать исходник вместе с вводом
Потребовать deny для одобренного вводаКод 10, gate denied, причина required-decision-mismatchОстановиться и проверить решение
Проверки исполнителя, действия, срока или повторного запроса в приложении не пройденыОтказ приложенияОстановиться до отправки задания

При несовпадении ввода gate записывает диагностический отчёт по указанному пути. Ошибка использования не создаёт отчёт. Несовпадение требуемого решения создаёт отчёт об отказе и оставляет стандартный вывод пустым. Храните отказы отдельно от завершённых транзакций печати.

Отправьте задание из приложения

  1. Аутентифицируйте оператора и прочитайте окончательный файл и доверенные результаты проверок.
  2. Проверьте действие, срок и связь редакции файла с его точными байтами.
  3. Передайте точные исходник и ввод новой проверке Ваучера, требующей approve.
  4. Атомарно зарезервируйте идентификатор запроса в хранилище приложения.
  5. Отправьте файл через подключение приложения к типографии.
  6. Сохраните ответ типографии и отметьте запрос завершённым.
  7. При неизвестном исходе выясните состояние перед повторной попыткой.

Команды выше заканчиваются отчётом проверки. Резервирование, печать и восстановление реализует приложение. Сохраните окончательный файл, подписанный ввод, пакет, политику, отчёт проверки и ответ типографии для совместного разбора проблемы с печатью.

Если аутентификация, привязка ввода, выполнение или требуемое решение не проходят проверку, остановите запрос и прочитайте диагностику. Сохранённый отчёт описывает прошлый вызов. Для текущего запроса выполните новую проверку.

Рабочее пространство правил вёрстки · Записи и отчёты