mirror of
https://github.com/morluto/rea
synced 2026-10-27 06:33:32 -04:00
60 lines
2.0 KiB
TypeScript
60 lines
2.0 KiB
TypeScript
import { canonicalDigest } from "../../domain/comparisonSemantics.js";
|
|
import type { ProviderIdentity } from "../AnalysisProvider.js";
|
|
import type { Evidence, EvidenceObservation } from "../../domain/evidence.js";
|
|
import { createEvidence } from "../../domain/evidence.js";
|
|
import type {
|
|
ElectronActiveObservationInput,
|
|
ElectronActiveObservationResult,
|
|
} from "../../domain/javascript/electronActiveObservation.js";
|
|
import { jsonValueSchema } from "../../domain/jsonValue.js";
|
|
|
|
type CanonicalElectronActiveObservationInput =
|
|
ElectronActiveObservationInput & {
|
|
readonly application_root: string;
|
|
};
|
|
|
|
/** Create Evidence without retaining arbitrary runtime argument values. */
|
|
export const createElectronActiveEvidence = (
|
|
input: CanonicalElectronActiveObservationInput,
|
|
result: ElectronActiveObservationResult,
|
|
provider: ProviderIdentity,
|
|
): Evidence =>
|
|
createEvidence(undefined, provider, {
|
|
predicateType: "rea.electron-active-scenario",
|
|
operation: "capture_electron_scenario",
|
|
parameters: parameters(input),
|
|
result: jsonValueSchema.parse(result),
|
|
confidence: "observed",
|
|
authority: "controlled-replay",
|
|
environment: {
|
|
id: `${result.application.electron_version}@unknown`,
|
|
platform: "unknown",
|
|
architecture: "unknown",
|
|
isolation: "none",
|
|
},
|
|
limitations: [
|
|
...result.limitations,
|
|
"Application host platform and architecture were not observed.",
|
|
],
|
|
});
|
|
|
|
const scenarioProjection = (
|
|
input: CanonicalElectronActiveObservationInput,
|
|
): EvidenceObservation["parameters"] => ({
|
|
executable_path: input.executable_path,
|
|
application_path: input.application_path,
|
|
application_root: input.application_root,
|
|
args: [...input.args],
|
|
actions: input.actions.map(({ step_id, kind }) => ({ step_id, kind })),
|
|
});
|
|
|
|
const parameters = (
|
|
input: CanonicalElectronActiveObservationInput,
|
|
): EvidenceObservation["parameters"] => ({
|
|
...scenarioProjection(input),
|
|
scenario_sha256: canonicalDigest(
|
|
scenarioProjection(input),
|
|
"Browser scenario",
|
|
),
|
|
});
|