고정 워크스페이스 선택하기
다운로드에 나온 실용 결정
워크스페이스를 받거나 리스펙스 저장소의 examples/refund-workspace를
사용하세요. 아카이브와 저장소 디렉터리는 같은 고정 구성원 목록을 가집니다.
모든 키와 생성 산출물은 변경하지 않는 워크스페이스 밖에 두세요.
워크스페이스에는 서로 다른 환불 규칙 두 개가 있습니다.
| 경로 | 소스 | 입력 형태 | 결과 |
|---|---|---|---|
| 결정 교환 | generated/exchange/refund-window.lspx | 일반 JSON 레코드 | allow 또는 deny |
| 바우치 | generated/vouch/refund-window-native.lspx.png | 검사 입력 값 | approve 또는 deny |
결정 교환 결과는 바우치 근거가 아닙니다. 바우치 결과도 결정 교환 결과가 아닙니다. 두 경로는 같은 업무 예제를 쓸 뿐 식별자, 영수증, 정책, 권한을 공유하지 않습니다.
일을 시작하기 전에 워크스페이스 검사하기
압축을 푼 워크스페이스 루트나 저장소 디렉터리로 들어가세요. 호출자가 소유한 별도 작업 루트를 만든 뒤 네이티브가 고정 구성원을 검사하게 합니다.
mkdir -p ../refund-work
lispex workspace status --dir . --work-dir ../refund-workworkspace status는 작업 슬롯을 보여주기 전에 정확한 워크스페이스 구성원을
검사합니다. present-unchecked로 나온 슬롯은 존재할 뿐입니다. 검증됨, 신뢰함,
신선함, 허가됨을 뜻하지 않습니다.
제한 결정 교환 실행하기
결정 교환 경로는 준비 한도와 평가 한도를 분리해서 사용합니다. 원시 규칙 소스를 저장하지 않고 다섯 구성원 결정 디렉터리를 씁니다.
mkdir -p ../refund-work/exchange
lispex rule run \
--source ./generated/exchange/refund-window.lspx \
--input ./generated/exchange/inputs/day-14-unopened.json \
--prepare-limits ./generated/exchange/prepare-limits.json \
--eval-limits ./generated/exchange/evaluation-limits.json \
--out ../refund-work/exchange/decision
lispex rule inspect --dir ../refund-work/exchange/decision
lispex rule verify --dir ../refund-work/exchange/decision
lispex rule replay --dir ../refund-work/exchange/decision검사와 검증은 규칙을 실행하지 않습니다. 재실행은 새로운 내장 평가기 인스턴스
하나를 만들고 같은 결과를 요구합니다. 이식 가능한 결과는 계속
vouch_eligible false입니다.
로컬 발급자와 독립된 수신자 준비하기
개인 키는 워크스페이스와 작업 루트 바깥에서 호출자가 소유하는 디렉터리에 만드세요.
mkdir -p ../refund-issuer ../refund-recipient
lispex key generate --out-dir ../refund-issuer/key
lispex key inspect --public-key ../refund-issuer/key/public.spki.der한 컴퓨터에서 따라 하는 이 연습에서는 검토한 공개 SPKI만 수신자 디렉터리로 복사하고 복사된 바이트를 다시 검사합니다.
cp ../refund-issuer/key/public.spki.der \
../refund-recipient/reviewed-issuer.spki.der
lispex key inspect \
--public-key ../refund-recipient/reviewed-issuer.spki.der실제 발급자와 수신자는 별도로 고른 전달 및 검토 채널이 필요합니다. 로컬
복사는 따라 하기 위한 편의일 뿐 신뢰 절차가 아닙니다. private.pkcs8.der를
워크스페이스, 작업 루트, 수신자 디렉터리, 소스 관리, 묶음에 넣지 마세요.
수신자는 독립적으로 검토한 사실 네 개로 결정 정책을 만듭니다. 앞으로 인증할 묶음에서 어느 값도 가져오지 않습니다.
lispex decision policy create \
--public-key ../refund-recipient/reviewed-issuer.spki.der \
--semantic-rule-sha256 14bb6f2e43cee011aedbeafc71d3716789bea8117e8331cd6a7feb1858d7418f \
--semantic-profile-id lispex/r7rs-rule-embedded-core/1 \
--engine-artifact-sha256 fa6e52559e1f5a43e50a3b7ac0cc5add6930cff0aed8aaff462cff4609362870 \
--portable-core-schema lispex.embed-receipt-core/v1 \
--consumer-label refund-recipient \
--out ../refund-recipient/decision-policy.json
lispex decision policy check \
--policy ../refund-recipient/decision-policy.json정책 생성은 설정을 기록합니다. 발급자 조직을 인증하지 않으며 반복 사용이나 행동 권한도 주지 않습니다.
이식 가능한 결정 발행하고 인증하기
발급자는 이미 검증한 이식 가능 코어에 서명하고 크기가 제한된
.lpxdecision 파일 하나를 씁니다.
lispex decision issue \
--dir ../refund-work/exchange/decision \
--private-key ../refund-issuer/key/private.pkcs8.der \
--issuer-label refund-issuer \
--out ../refund-work/exchange/refund.lpxdecision수신자는 자기 정책을 사용하고 받은 묶음을 명시합니다.
lispex decision inspect \
--bundle ../refund-work/exchange/refund.lpxdecision
lispex decision authenticate \
--bundle ../refund-work/exchange/refund.lpxdecision \
--policy ../refund-recipient/decision-policy.json
lispex decision replay \
--bundle ../refund-work/exchange/refund.lpxdecision \
--policy ../refund-recipient/decision-policy.json인증은 허용된 정확한 키가 정확한 결정 재료에 서명했음을 확인합니다. 재실행은 새로운 평가를 더합니다. 어느 쪽도 신선도, 재전송 방지, 조직 신원, 외부 행동 허가를 제공하지 않습니다.
samples/recipient 아래 파일에는 sample-do-not-trust가 영구적으로
표시되어 있습니다. 명령을 연습할 때만 유용하며 실제 수신자 정책이나 신뢰
기반으로 삼으면 안 됩니다.
별도 리스펙스 이미지 기반 바우치 경로 시작하기
이 경로는 검사 입력과 정확한 리스펙스 이미지에서 다시 시작합니다. 결정 교환
결과, 결정 디렉터리, 결정 정책, .lpxdecision 묶음을 소비하지 않습니다.
바우치 식별자 입력 네 개를 먼저 검사하세요.
mkdir -p ../refund-work/vouch
lispex vouch source-id \
--source-image ./generated/vouch/refund-window-native.lspx.png
lispex vouch input-id \
--input ./generated/vouch/inputs/day-14-unopened.checked.json
lispex vouch key-id \
--public-key ../refund-recipient/reviewed-issuer.spki.der
lispex vouch engine-id \
--executable /absolute/path/to/lispex정확한 엔진 출력을 검토한 뒤 출력된 전체 값을 ENGINE_ID에 넣으세요. 같은
검토 공개 키를 가리키더라도 바우치 정책은 결정 정책과 별개입니다.
ENGINE_ID="sha256:<reviewed-native-engine-digest>"
lispex vouch policy create \
--public-key ../refund-recipient/reviewed-issuer.spki.der \
--engine-sha256 "$ENGINE_ID" \
--source-image ./generated/vouch/refund-window-native.lspx.png \
--out ../refund-work/vouch/policy.json
lispex vouch policy check \
--trust-policy ../refund-work/vouch/policy.json정확한 이미지에서 보존된 따라 하기 입력을 발행합니다.
ISSUER_KEY_URI="pkcs8-file:///absolute/path/outside-workspace/refund-issuer/key/private.pkcs8.der"
lispex vouch issue \
--source-image ./generated/vouch/refund-window-native.lspx.png \
--input ./generated/vouch/inputs/day-14-unopened.checked.json \
--profile csk.checked-profile/v1 \
--key-handle "$ISSUER_KEY_URI" \
--out-dir ../refund-work/vouch/issued \
--emit-bundle보존된 검사 입력에는 [14, false]만 들어 있습니다. 여기서 발행한 묶음은
따라 하기 전용입니다. 요청 ID, 행위자, 행동, 만료를 묶지 않으므로
애플리케이션 인수인계에서 다시 쓸 수 없습니다.
현재 요청 값 여섯 개를 묶는 전용 묶음 발행하기
다음과 정확히 같은 정규 바이트와 마지막 줄바꿈 하나를 가진 호출자 소유 파일을 만드세요.
{
"input": "csk.checked-input/v1",
"value": [
14,
false,
"request-123",
"operator-7",
"refund",
1785600000
]
}파일을 ../refund-work/app/current-request.checked.json에 두세요. 여섯 값을
모두 묶는 새 묶음을 발행합니다.
mkdir -p ../refund-work/app
lispex vouch issue \
--source-image ./generated/vouch/refund-window-native.lspx.png \
--input ../refund-work/app/current-request.checked.json \
--profile csk.checked-profile/v1 \
--key-handle "$ISSUER_KEY_URI" \
--out-dir ../refund-work/app/current-request-issued \
--emit-bundle환불 규칙은 앞의 두 값만 읽습니다. 바우치 입력 식별자와 서명 문맥은 여섯 값을 정확히 모두 묶습니다. 값을 더 묶었다고 해서 행위자 인증이나 요청의 유일성이 증명되지는 않습니다. 바깥 애플리케이션이 자기 신뢰 상태에서 그 사실을 세워야 합니다.
정확한 현재 요청으로 새 게이트 실행하기
수신자는 전용 묶음, 자기 정책, 정확한 이미지, 같은 여섯 값 검사 입력을 서로
독립적으로 제공합니다. 게이트는 새로운 로컬 실행을 관측하고 approve를
요구합니다.
lispex vouch gate \
--bundle ../refund-work/app/current-request-issued/vouch-input-bundle.json \
--trust-policy ../refund-work/vouch/policy.json \
--source-image ./generated/vouch/refund-window-native.lspx.png \
--input ../refund-work/app/current-request.checked.json \
--profile csk.checked-profile/v1 \
--require-decision approve \
--report-out ../refund-work/app/current-request-gate.json저장된 검증 보고서나 게이트 보고서는 진단 출력입니다. 다른 요청의 새로운 게이트를 대신할 수 없고 이후 게이트의 근거 입력이 될 수도 없습니다.
권한 경계에서 멈추기
종료값 0인 게이트는 살아 있는 인증된 현재 실행과 요구 결정이 로컬에서 한 번 일치했음을 세웁니다. 애플리케이션 호출자를 인증하거나 행위자와 행동을 허가하거나 서버 시각을 검사하거나 요청 ID를 예약하지 않습니다. 환불을 실행하지 않고 외부 트랜잭션을 정확히 한 번 수행하도록 만들지도 않습니다.
애플리케이션 인수인계 예제는 바깥 애플리케이션이 그 서버 소유 사실을 묶고
덮어쓰지 않는 정보성 would_act 레코드 하나를 공개하는 방법을 보여 줍니다.
그 예제도 외부 행동을 수행하지 않습니다.