DP-3T / dp3t-sdk-android

The DP3T-SDK for Android
Mozilla Public License 2.0
241 stars 94 forks source link

Settings of initalization #241

Closed v164237 closed 3 years ago

v164237 commented 3 years ago

Is the parameter "signaturePublicKey" in DP3T initialization function "public static void init(Context context, ApplicationInfo applicationInfo, PublicKey signaturePublicKey)" indicates the value of the public key which used to verify the distributed infected key record files?

We are having doubts about the parameters "signaturePublicKey" in DP3T initialization function and the "setCertificatePinner" function. Does anyone help us to recognize the correct usage of those parameters?

simonroesch commented 3 years ago

There are three kinds of protection for the download of the diagnosisKeys in the DP3T SDK:

1) With setCertificatePinner() you can configure a CertificatePinner that makes sure, only your defined Certificates are accepted to create the https connection to the backend.

2) In the init() you can specify a signaturePublicKey that is used to verify the JWS signature of the downloaded payload that is sent in the header.

3) Google will require you to have a signed payload when calling provideDiagnosisKeys() as described in https://developers.google.com/android/exposure-notifications/exposure-key-file-format#file-sig The corresponding publicKey needs to be sent to Google and added to their list of trusted publicKeys for your application.

Only step 3) is mandatory, while 1) and 2) can be disabled by 1) not calling setCertificatePinner() or 2) passing null as signaturePublicKey.

v164237 commented 3 years ago

Thank you Simon.