You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Renamed by #23. This issue was written while the project was called Android Data
Collector. Its terminology has been updated to the Particeps identity now in force. The
old spellings are rejected inputs, not an earlier dialect.
Summary
Implement a standalone Swift package for the final Particeps Protocol v1 and add explicit Android/iOS targeting to researcher authoring.
Android and iOS may share an experiment_id, but they must use separately signed artifacts with unique configuration_id values, platform-specific collector scope, consent, access requirements, and minimum client version. Do not use silent capability negotiation or make a Kotlin Multiplatform rewrite a prerequisite.
Requirements
Swift Protocol v1 package
Implement strict Protocol v1 configuration and export types without importing Kotlin/JVM or Tink wire representations.
Use CryptoKit for:
Ed25519 signing and verification through Curve25519.Signing;
Expose typed APIs for configuration verification, bundle encryption/decryption, receipt validation, registry/capability lookup, and stable error classification.
Avoid library-default algorithm identifiers or contexts that could diverge from the normative wire contract.
Cross-language conformance
Verify every shared canonicalization, signature, digest, HPKE, framing, receipt, and hostile-input vector.
Add Android/Kotlin → Swift decrypt/verify tests.
Add Swift → Kotlin and Swift → Python decrypt/verify tests.
Include wrong-key, wrong-context, wrong-configuration, malformed-frame, trailing-byte, Unicode, numeric-bound, and old-artifact rejection cases.
Make these cross-language tests required CI gates.
Platform-specific researcher authoring
Require the researcher to choose Android or iOS when creating a configuration.
Permit a research project to reuse an experiment_id across platforms, but generate a fresh configuration_id and signature for every platform artifact.
Bind the selected platform, minimum client version, collector availability, access requirements, intervention scope, data disclosure, and consent text into the signed artifact.
Summary
Implement a standalone Swift package for the final Particeps Protocol v1 and add explicit Android/iOS targeting to researcher authoring.
Android and iOS may share an
experiment_id, but they must use separately signed artifacts with uniqueconfiguration_idvalues, platform-specific collector scope, consent, access requirements, and minimum client version. Do not use silent capability negotiation or make a Kotlin Multiplatform rewrite a prerequisite.Requirements
Swift Protocol v1 package
Curve25519.Signing;Cross-language conformance
Platform-specific researcher authoring
experiment_idacross platforms, but generate a freshconfiguration_idand signature for every platform artifact.Acceptance criteria
Documentation
Add Swift package/API documentation, CryptoKit mapping, cross-language conformance instructions, platform-authoring guide, parity matrix, key-handling guidance, error taxonomy, and Protocol v1 implementation notes.
Reference: CryptoKit HPKE.
Dependencies
Blocked by #8 (Protocol v1), #9 (final exact-replay upload/receipt contract), and #10 (collector/event registry).