Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Study existing non-GMS GAEN APIs #1

Closed
2 tasks done
ineiti opened this issue Aug 31, 2020 · 2 comments
Closed
2 tasks done

Study existing non-GMS GAEN APIs #1

ineiti opened this issue Aug 31, 2020 · 2 comments
Assignees

Comments

@ineiti
Copy link
Collaborator

ineiti commented Aug 31, 2020

Existing implementations

microG

Open-source project aiming to provide a free implementation of Google Play Services.

  • Requires an OS with a "Signature Spoofing" patch applied (or microG preinstalled, such as LineageOS for microG).
  • Provides a transparent "drop-in" replacement, allowing original apps to run unmodified on non-GMS phones. The app is linked with the GMS client library, and the "Signature Spoofing" allows to redirect to microG.
  • Appears to be 1 main developer (microG's author) + some others.
  • The GAEN implementation (gms.nearby) started about 1-2 months ago. It targets "v1 mode" only so far (as it seems to be what all existing apps use, including the current version of SwissCovid).
  • GAEN is fairly advanced, able to run existing corona apps (Germany's Corona-Warn-App, Italy's Immuni).
  • Without installing microG, there is a possibility for an "almost transparent" approach by bundling the EN-relevant part as a library, along with a client library, and packaging all together with an existing app. However, such an app would likely not be accepted on Google Play due to it not using the official lib, but it could possibly be made to be accepted on F-Droid. The client library has been started but is not yet complete and requires further work.

Interesting issue with discussion regarding EN.

CoraLibre

Open-souce project aiming to provide a free implementation of an EN SDK for corona contact-tracing apps

  • Started with a pre-GAEN version of the DP3T SDK, and is working to adapt it.
  • Wishes to also produce a fork of Germany's Corona-Warn-App using the SDK.
  • Aims to provide an API as close as possible to GAEN. It targets "v1 mode" only so far.
  • Applications will require some (hopefully minor) changes to adapt to the library.
  • Crypto and Bluetooth parts are fairly advanced, client API (along with some implementation of the Tasks API) is just at the beginning.

Matrix channel for CoraLibre discussion. The microG main developer is also connected and participates to the discussion.

Google libraries

Contains a snapshot of code from Google Play Services' Exposure Notifications module.

  • This is not a usable product, but is provided as a reference that can be used with the GAEN specs.
  • Doesn't build (issue opened) (fixed now).
  • Some parts (key matching) are implemented in C++ via JNI for performance reasons.

TODO

  • is it possible to have an android device for @cgrigis ?
  • update README.md with this information
@ineiti
Copy link
Collaborator Author

ineiti commented Sep 9, 2020

Check which of CoraLibre and microG give a good minimum of a combined:

  • minimum amount of dependencies
  • smallest amount of changes to SwissCovid
  • being able to implement 1.6

@cgrigis
Copy link
Collaborator

cgrigis commented Sep 18, 2020

First prototype using microG as libraries (see microg/GmsCore#1179).
This uses 10 packages from microG with minimal changes, as well as minimal changes to the app, mostly packaging and dependencies configuration.
Tests on the phones provided by the lab look functional as far as I can determine by examining the debug logs and scanning beacons. The next step is to test on a phone that does not have GMS (unlike the lab phones), to ensure it is really using nothing from GMS.

@ineiti ineiti changed the title Implement GAEN API Study existing non-GMS GAEN APIs Sep 28, 2020
@cgrigis cgrigis closed this as completed Sep 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants