Initial curated chimera source from a8ae5b1db07fb49926c94585e2718e5130330974
This commit is contained in:
commit
c737a37f71
531 files changed
+119270
No files matched your search
@@ -0,0 +1,111 @@
|
||||
'use strict';
|
||||
|
||||
const assert = require('node:assert/strict');
|
||||
const test = require('node:test');
|
||||
const {
|
||||
ARTIFACT_SHA256,
|
||||
KSTUFF_REVISION,
|
||||
LIBPROSPERO_REVISION,
|
||||
OBSERVER_ENGINE_SHA256,
|
||||
OBSERVER_PAYLOAD_SHA256,
|
||||
OBSERVER_SCHEDULE_MS,
|
||||
PS5UPLOAD_REVISION,
|
||||
assessP15R1LaunchReadiness,
|
||||
createP15R1PpsaProfile,
|
||||
verifyP15R1Profile,
|
||||
} = require('../../src/services/ps5-p15-r1-profile');
|
||||
|
||||
function completeInstalledContent() {
|
||||
return {
|
||||
installedObserved: true,
|
||||
titleIdExact: true,
|
||||
contentIdExact: true,
|
||||
versionExact: true,
|
||||
applicationDrmTypeExpected: true,
|
||||
sonyManagedInstallation: true,
|
||||
manifestCoverageComplete: true,
|
||||
manifestMatchesReference: true,
|
||||
paramJsonPresent: true,
|
||||
paramJsonMatchesReference: true,
|
||||
ebootPresent: true,
|
||||
ebootMatchesReference: true,
|
||||
materiallyComplete: true,
|
||||
};
|
||||
}
|
||||
|
||||
function input(overrides = {}) {
|
||||
return {
|
||||
libProsperoRevision: LIBPROSPERO_REVISION,
|
||||
repository: { commit: 'a'.repeat(40), workingTreeDigest: 'b'.repeat(64) },
|
||||
runtime: {
|
||||
firmware: '9.60',
|
||||
ps5uploadRevision: PS5UPLOAD_REVISION,
|
||||
engineSha256: OBSERVER_ENGINE_SHA256,
|
||||
payloadSha256: OBSERVER_PAYLOAD_SHA256,
|
||||
kstuffRevision: KSTUFF_REVISION,
|
||||
identityExact: true,
|
||||
kstuffIdentityExact: true,
|
||||
dpiRuntimeActive: false,
|
||||
},
|
||||
observer: {
|
||||
engineSha256: OBSERVER_ENGINE_SHA256,
|
||||
payloadSha256: OBSERVER_PAYLOAD_SHA256,
|
||||
scheduleMs: [...OBSERVER_SCHEDULE_MS],
|
||||
shellUiObservation: true,
|
||||
bigAppObservation: true,
|
||||
processObservation: true,
|
||||
},
|
||||
installedContent: completeInstalledContent(),
|
||||
...overrides,
|
||||
};
|
||||
}
|
||||
|
||||
test('R1 freezes exact PPSA and observer identity into a tamper-evident profile', () => {
|
||||
const profile = createP15R1PpsaProfile(input());
|
||||
assert.equal(profile.id, 'P15-R1-PPSA99099');
|
||||
assert.equal(profile.artifactSha256, ARTIFACT_SHA256);
|
||||
assert.equal(Object.isFrozen(profile), true);
|
||||
assert.equal(verifyP15R1Profile(profile), profile);
|
||||
const tampered = structuredClone(profile);
|
||||
tampered.runtime.identityExact = false;
|
||||
assert.throws(() => verifyP15R1Profile(tampered), { code: 'P15_R1_PROFILE_CORRUPT' });
|
||||
});
|
||||
|
||||
test('R1 readiness fails closed on historical installed-title visibility', () => {
|
||||
const profile = createP15R1PpsaProfile(input({
|
||||
installedContent: { installedObserved: true },
|
||||
runtime: { ...input().runtime, identityExact: false, kstuffIdentityExact: false },
|
||||
}));
|
||||
const readiness = assessP15R1LaunchReadiness(profile);
|
||||
assert.equal(readiness.launchEligible, false);
|
||||
assert.deepEqual(readiness.reasons, ['installed_content_integrity_unproven', 'active_runtime_identity_unproven']);
|
||||
assert.equal(readiness.launchBudget.used, 0);
|
||||
assert.equal(readiness.confirmation, null);
|
||||
});
|
||||
|
||||
test('R1 readiness exposes exactly one launch only after every read-only gate passes', () => {
|
||||
const profile = createP15R1PpsaProfile(input());
|
||||
const ready = assessP15R1LaunchReadiness(profile);
|
||||
assert.equal(ready.launchEligible, true);
|
||||
assert.deepEqual(ready.launchBudget, { used: 0, total: 1, remaining: 1 });
|
||||
assert.equal(ready.confirmation, 'LAUNCH VERIFY PPSA99099');
|
||||
assert.equal(ready.installAuthorized, false);
|
||||
const consumed = assessP15R1LaunchReadiness(profile, { launchRequestsUsed: 1 });
|
||||
assert.equal(consumed.launchEligible, false);
|
||||
assert.deepEqual(consumed.reasons, ['one_run_budget_consumed']);
|
||||
});
|
||||
|
||||
test('R1 readiness rejects an exact production runtime when the A10 observer is not active', () => {
|
||||
const profile = createP15R1PpsaProfile(input({
|
||||
runtime: {
|
||||
...input().runtime,
|
||||
engineSha256: 'd4055f43a57b36d1d2dec3e70ec03f73c9c47bc311d2b2f87145509ed53c8ba5',
|
||||
payloadSha256: '33665dd87ede0dd020522222e9240405bac5036157132ba5fa92624378f94c7c',
|
||||
},
|
||||
}));
|
||||
assert.deepEqual(assessP15R1LaunchReadiness(profile).reasons, ['active_runtime_identity_unproven']);
|
||||
});
|
||||
|
||||
test('R1 profile rejects host and secret-bearing fields', () => {
|
||||
assert.throws(() => createP15R1PpsaProfile({ ...input(), consoleHost: 'private' }), { code: 'P15_R1_PROFILE_SECRET' });
|
||||
});
|
||||
Reference in new issue
Block a user