제목 위치 규칙의 결정 묶음을 만듭니다. 출판사가 서명하면 인쇄소는 독립적으로 검토한 소스와 입력을 기준으로 확인합니다.
네이티브와 Bash를 사용하세요. 새 디렉터리에 결정 기록 실행하고 검사하기의 house-style.lspx, heading.json, prepare-limits.json, evaluation-limits.json을 저장하세요. 개인 키는 전달할 파일 밖에 둡니다.
양쪽 준비하기
수신자는 규칙과 [2, false] 입력을 독립적으로 검토합니다. 이 실습은 양쪽 역할을 로컬에서 수행합니다. 수신자가 직접 실행한 결과에서 정책에 허용할 규칙과 평가기 식별자를 얻습니다.
lispex rule run --source house-style.lspx --input heading.json \
--prepare-limits prepare-limits.json \
--eval-limits evaluation-limits.json --out publisher-decision
lispex key generate --out-dir publisher-key
lispex key inspect --public-key publisher-key/public.spki.der
lispex rule run --source house-style.lspx --input heading.json \
--prepare-limits prepare-limits.json \
--eval-limits evaluation-limits.json --out reviewed-decision
lispex rule policy create --dir reviewed-decision \
--public-key publisher-key/public.spki.der \
--consumer-label "Print receiver" --out recipient-policy.json모든 명령의 종료 코드는 0입니다. 두 실행은 allow 결정을 출력하고 파일 다섯 개가 든 결정 디렉터리를 각각 만듭니다. 키 생성은 private.pkcs8.der와 public.spki.der를 만들고 generated를 보고합니다. 키 검사는 valid를 보고합니다. 정책 생성은 화면 출력 없이 recipient-policy.json을 만듭니다.
실제 교환에서는 인쇄소가 선택한 검토 경로로 공개키를 받습니다. 소스와 입력과 실행 파일도 들어온 묶음과 별도로 고릅니다.
저장된 파일 검사하기
출판사의 실행은 publisher-decision에 prepared.lpxembed, canonical-input.lpxvalue, result.lpxembed, receipt-core.lpxreceipt, summary.json을 만듭니다. 원래 소스와 입력도 함께 보관하세요.
lispex rule inspect --dir publisher-decision
lispex rule verify --dir publisher-decision
lispex rule replay --dir publisher-decision
lispex decision policy check --policy recipient-policy.json네 명령은 모두 종료 코드 0으로 끝나고 JSON을 출력합니다. 다음은 출력에서 고른 필드입니다.
| 명령 | 필드 | 실제 값 |
|---|---|---|
rule inspect | decision, executed | allow, false |
rule verify | status, executed | verified, false |
rule replay | status, fresh_instance | agreed, true |
decision policy check | status | valid |
조회는 저장된 기록을 읽습니다. 검증은 파일 구성과 기록 사이의 연결을 확인합니다. 재실행은 새 평가기 인스턴스를 만들어 결과와 휴대 가능한 코어를 비교합니다. 코어에는 규칙과 입력, 자원 한도, 평가기, 결과가 기록됩니다.
결정 전달하고 재실행하기
lispex decision issue --dir publisher-decision \
--private-key publisher-key/private.pkcs8.der \
--issuer-label "Publisher A" --out heading.lpxdecision
lispex decision inspect --bundle heading.lpxdecision
lispex decision authenticate --bundle heading.lpxdecision \
--policy recipient-policy.json
lispex decision replay --bundle heading.lpxdecision \
--policy recipient-policy.json네 명령은 모두 종료 코드 0으로 끝나고 JSON을 출력합니다. 발급은 heading.lpxdecision을 만들고 issued를 보고합니다. 검사는 decision이 allow, executed가 false라고 보고합니다. 인증은 signature_valid와 policy_admitted가 true, 요청 결속이 exact라고 보고합니다. 재실행은 agreed와 fresh_instance의 true를 보고합니다.
애플리케이션이 결과를 받은 뒤 제목을 배치할지 정합니다. 정확한 소스와 입력, 묶음, 수신자 정책을 작업 기록에 함께 보관하세요. 개인 키는 출판사가 보관합니다.
규칙 이미지에서 바우치 발급하기
별도 디렉터리에서 바우치 실습을 마치세요. 이 실습으로 print-handoff.lspx, input.checked.json, policy.json, 발급자 키를 준비합니다. 입력에는 검사 결과 네 값과 최종 파일 판 edition-final이 들어갑니다.
ISSUER_KEY_URI는 발급자의 개인 키 절대 경로로 설정해 둡니다. 바우치 디렉터리에서 새 출력 경로로 다음 명령을 실행하세요.
lispex image encode --source print-handoff.lspx --out print-handoff.lspx.png
lispex image inspect --image print-handoff.lspx.png
lispex vouch source-id --source-image print-handoff.lspx.png
lispex vouch issue --source-image print-handoff.lspx.png \
--input input.checked.json --profile csk.checked-profile/v1 \
--key-handle "$ISSUER_KEY_URI" --out-dir image-issued --emit-bundle
lispex vouch gate --bundle image-issued/vouch-input-bundle.json \
--trust-policy policy.json --source-image print-handoff.lspx.png \
--input input.checked.json --profile csk.checked-profile/v1 \
--require-decision approve --report-out image-gate.json다섯 명령은 모두 종료 코드 0으로 끝납니다. 인코딩은 print-handoff.lspx.png를 만들고 이미지 요약을 출력합니다. 검사는 이미지 요약을 다시 출력합니다. source-id는 텍스트 파일과 같은 소스 식별자를 출력합니다.
발급과 게이트는 화면 출력이 없습니다. image-issued에는 issue-report.json, payload.json, envelope.dsse.json, vouch-input-bundle.json이 생깁니다. 발급 보고서는 issued-native를 기록합니다. 다음 값은 image-gate.json에서 가져온 필드입니다.
| 필드 | 실제 값 |
|---|---|
authentication.status | authenticated |
comparison.current_vs_signed | agree |
reexecution.status | execution-agreed |
gate.observed_decision | approve |
gate.status | granted |
바우치는 자체 규칙과 검사 입력에서 시작합니다. 수신자는 정책을 직접 고르고 소스 이미지와 입력을 독립적으로 제공합니다. 새 게이트를 거친 뒤 앱이 인쇄 작업을 승인합니다.
특정 작업은 판단 뒤 앱이 할 일을 따르세요. 요청 ID와 행위자, 행동, 만료 시각을 더한 아홉 값 전체에 서명합니다. 요청 묶음은 다섯 값의 실습 묶음과 따로 보관하세요.
제공된 작업 공간 조회하기
네이티브는 저장소의 고정 예제 examples/refund-workspace를 조회하는 workspace status도 제공합니다. 저장소 루트에서 결과 위치를 조회할 빈 디렉터리를 따로 만드세요.
mkdir -p ../workspace-status-work
lispex workspace status --dir examples/refund-workspace \
--work-dir ../workspace-status-work두 명령의 종료 코드는 0입니다. 상태 명령은 workspace_integrity가 manifest-match인 JSON을 출력합니다. candidate_invocations 배열은 비어 있고 결과 위치 여덟 개는 모두 absent입니다.
명령은 --dir와 --work-dir로 받은 루트를 각각 한 번 실제 경로로 바꾼 뒤 엽니다. 각 루트 아래의 링크와 정규화한 경로를 열기 전에 새로 생긴 링크는 거절합니다. 상태 JSON에는 절대 루트 경로를 넣지 않습니다.
present-unchecked는 지정한 위치에 해당 파일이나 디렉터리가 있다는 뜻입니다. 앱이 행동을 승인하기 전에 기록을 인증하고 해당 요청으로 새 게이트를 실행하세요.
이 명령은 제공된 예제의 고정 매니페스트와 파일 구성을 받습니다. 새로 만든 조판 디렉터리는 workspace-manifest-invalid로 거절하며 종료 코드는 3입니다. 위 조판 파일에는 이 가이드의 rule verify, 결정 인증과 재실행, 바우치 게이트를 사용하세요.