-
public final class Kaidn.ReportWhat one collection found, and whether it reached us.
-
-
Field Summary
Fields Modifier and Type Field Description private final StringdeviceIdprivate final StringmediaDrmIdprivate final StringgsfIdprivate final StringhardwareProfileprivate final DeviceSignalssignalsprivate final DeviceAttributesattributesprivate final List<String>evidenceprivate final Booleanattestedprivate final Booleandeliveredprivate final Stringerrorprivate final IntegerhttpStatus
-
Constructor Summary
Constructors Constructor Description Kaidn.Report(String deviceId, String mediaDrmId, String gsfId, String hardwareProfile, DeviceSignals signals, DeviceAttributes attributes, List<String> evidence, Boolean attested, Boolean delivered, String error, Integer httpStatus)
-
Method Summary
Modifier and Type Method Description final StringgetDeviceId()sha256(ssaid + publishable key), or null when no usable SSAID existedfinal StringgetMediaDrmId()The other two anchors, hashed the same way. final StringgetGsfId()final StringgetHardwareProfile()Rung 3: a cohort key over the stable hardware components, or null when too little was readable. final DeviceSignalsgetSignals()final DeviceAttributesgetAttributes()final List<String>getEvidence()why each signal fired, e.g. final BooleangetAttested()a Google-signed integrity verdict was obtained and sent final BooleangetDelivered()the beacon was accepted by the API final StringgetError()why it was not delivered, when it was not final IntegergetHttpStatus()HTTP status the API answered with, or 0 if the request never got that far (DNS, TLS, timeout, cleartext refusal). -
-
Method Detail
-
getDeviceId
final String getDeviceId()
sha256(ssaid + publishable key), or null when no usable SSAID existed
-
getMediaDrmId
final String getMediaDrmId()
The other two anchors, hashed the same way. Sent alongside
deviceIdrather than collapsed into it: which anchors agree and which differ is itself evidence (a fresh SSAID against a stable Media DRM id is a factory reset), and that is lost the moment they are merged on device.
-
getHardwareProfile
final String getHardwareProfile()
Rung 3: a cohort key over the stable hardware components, or null when too little was readable. ⚠️ NOT an identity. Identical hardware hashes identically by design, so a shared profile means "the same model", not "the same device". See Hardware.kt.
-
getSignals
final DeviceSignals getSignals()
-
getAttributes
final DeviceAttributes getAttributes()
-
getEvidence
final List<String> getEvidence()
why each signal fired, e.g.
emulator/hardware:cancro
-
getAttested
final Boolean getAttested()
a Google-signed integrity verdict was obtained and sent
-
getDelivered
final Boolean getDelivered()
the beacon was accepted by the API
-
getHttpStatus
final Integer getHttpStatus()
HTTP status the API answered with, or 0 if the request never got that far (DNS, TLS, timeout, cleartext refusal).
Carried because during integration the status IS the diagnosis and the error string alone is not: 401 means the publishable key is wrong, 403 means the tracker does not list this package, 400 means the payload no longer matches the server schema. Those need three different fixes and they are indistinguishable without this.
-
-
-
-