corona-warn-app/cwa-app-android

Cannot warn others after positive PCR test with QR code. Errormessage: "Es konnte keine Übermittlungs-TAN erstellt werden"

HHHartmann opened this issue · 8 comments

Avoid duplicates

  • Bug is not mentioned in the FAQ
  • Bug affects both Android and iOS, for specific issues / questions that apply only to one operating system, please raise them in the respective repositories:
  • Bug is not already reported in another issue

Technical details

  • Device name: Galaxy A51
  • iOS/Android version: Android 12
  • App version: 2.28.3

Describe the bug

After scanning and downloading my PCR est results successfully I want to warn others
When trying to warn others the error message "Es konnte keine Übermittlungs-TAN erstellt werden" appears

Steps to reproduce the issue

  • start warn others
  • Agree to send data
  • Enter symptoms
  • Yes
  • start/begin at {Date}

then the errormessage shows up.

Expected behaviour

Do not show the errormessage (and do not run into the error)

Possible Fix

Additional context

Not sure if I should attach the log here or if there are more private channels.

Part of the log:

2022-11-10T08:55:09.210Z D/AppConfigSource: nowUTC=2022-11-10T08:55:09.209Z localConfig.updatedAt=2022-11-10T08:54:37.402Z
2022-11-10T08:55:09.214Z I/SubmissionTask: Supported countries = [DE, IT, IE, LV, HR, BE, SI]
2022-11-10T08:55:09.215Z I/Playbook: [33890cfb-4745-4ee2-b832-e9448482e3df] New Submission Playbook
2022-11-10T08:55:09.215Z D/SubmissionTask: Submitting SubmissionData(registrationToken=########-####-####-####-########bd2b, authCode=########-####-####-####-########45d0, temporaryExposureKeys=[], consentToFederation=true, visitedCountries=[DE, IT, IE, LV, HR, BE, SI], unencryptedCheckIns=[], encryptedCheckIns=[], submissionType=SUBMISSION_TYPE_PCR_TEST)
2022-11-10T08:55:09.216Z V/VerificationServer: retrieveTanFake() -> START
2022-11-10T08:55:09.276Z V/VerificationServer: retrieveTanFake() -> END
2022-11-10T08:55:09.277Z D/SubmissionServer: submitPayload(data=SubmissionData(authCode=########-####-####-####-########45d0, keyList=[], consentToFederation=true, visitedCountries=[DE, IT, IE, LV, HR, BE, SI], unencryptedCheckIns=[], encryptedCheckIns=[], submissionType=SUBMISSION_TYPE_PCR_TEST))
2022-11-10T08:55:09.278Z D/SubmissionServer: Writing 0 Keys and 0 CheckIns to the Submission Payload.
2022-11-10T08:55:09.278Z V/AppConfigProvider:HD: Waiting for update.
2022-11-10T08:55:09.278Z D/AppConfigSource: getConfigData(offlineMode=false)
2022-11-10T08:55:09.279Z V/LocalAppConfigSource: retrieveConfig()
2022-11-10T08:55:09.280Z V/AppConfigStorage: get() AppConfig
2022-11-10T08:55:09.283Z V/AppConfigStorage: Json read from /data/user/0/de.rki.coronawarnapp/files/appconfig_storage/appconfig.json
2022-11-10T08:55:09.285Z V/AppConfigStorage: Loaded stored config, serverTime=2022-11-10T08:54:38Z
2022-11-10T08:55:09.286Z V/ConfigParser: Parsing config (size=1424B)
2022-11-10T08:55:09.290Z V/SurveyConfigMapper: SurveyConfig=SurveyConfigContainer(otpQueryParameterName=otp, surveyOnHighRiskEnabled=false, surveyOnHighRiskUrl=https://befragungen.rki.de/CWABasisbefragung, safetyNetRequirements=SafetyNetRequirementsContainer(requireBasicIntegrity=false, requireCTSProfileMatch=false, requireEvaluationTypeBasic=false, requireEvaluationTypeHardwareBacked=false))
2022-11-10T08:55:09.292Z D/AppConfigSource: nowUTC=2022-11-10T08:55:09.291Z localConfig.updatedAt=2022-11-10T08:54:37.402Z
2022-11-10T08:55:09.292Z D/AppConfigSource: Returning local config, still valid.
2022-11-10T08:55:09.295Z D/PaddingTool: keyPadding(keyListSize=0)
2022-11-10T08:55:09.302Z D/PaddingTool: checkInBytesSizes=[46]
2022-11-10T08:55:09.301Z D/PaddingTool: checkInPadding(plausibleParameters=PlausibleDeniabilityParametersContainer(checkInSizesInBytes=[46], probabilityToFakeCheckInsIfNoCheckIns=0.0, probabilityToFakeCheckInsIfSomeCheckIns=0.005, numberOfFakeCheckInsFunctionParameters=[# de.rki.coronawarnapp.server.protocols.internal.v2.PresenceTracingParametersOuterClass$PresenceTracingPlausibleDeniabilityParameters$NumberOfFakeCheckInsFunctionParameters@6b2430db
[ removed ]
u: 2.0]), checkInListSize=0)
2022-11-10T08:55:09.302Z D/PaddingTool: determineFakeCheckInsNumber(checkInListSize=0)
2022-11-10T08:55:09.303Z D/PaddingTool: probabilityThreshold=0.0
2022-11-10T08:55:09.303Z D/PaddingTool: randomUniformNumber=0.1591115237211297
2022-11-10T08:55:09.304Z D/SubmissionServer: keyPadding=TnlsueO1DFpZuOSFNRDAfBu.......
checkInPadding=
requestPadding=TnlsueO1DFpZuOSFNRDAfBuu9KXQJ7sxUBRzGBG......
2022-11-10T08:55:09.448Z I/SubmissionTask: Finished (isCanceled=false).
2022-11-10T08:55:09.448Z E/SubmissionTask: TEK submission failed.
de.rki.coronawarnapp.exception.TanPairingException: Invalid payload or missing header
at de.rki.coronawarnapp.playbook.Playbook.submit(Playbook.kt:192)
at de.rki.coronawarnapp.playbook.Playbook$submit$1.invokeSuspend(Unknown Source:12)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:9)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:99)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:82)
Caused by: de.rki.coronawarnapp.exception.http.BadRequestException: Error during web request: code=400 message= body='
at de.rki.coronawarnapp.http.HttpErrorParser.intercept(HttpErrorParser.kt:300)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:144)
at de.rki.coronawarnapp.http.interceptor.RetryInterceptor.intercept(RetryInterceptor.kt:3)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:144)
at okhttp3.logging.HttpLoggingInterceptor.intercept(HttpLoggingInterceptor.kt:12)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:144)
at de.rki.coronawarnapp.http.interceptor.WebSecurityVerificationInterceptor.intercept(WebSecurityVerificationInterceptor.kt:3)
at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:144)
at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:96)
at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:36)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)


Internal Tracking ID: EXPOSUREAPP-14313

@HHHartmann

Not sure if I should attach the log here or if there are more private channels.

See FAQ How do I create an error report?

That would only make sense though if somebody from the Open Source Team acknowledges your issue and requests a full log.

You've already posted the log extract with the error text:

E/SubmissionTask: TEK submission failed.
de.rki.coronawarnapp.exception.TanPairingException: Invalid payload or missing header
  • This is related to #2161 which addressed #2035.

  • See also #5248 &
    #4815

  • The issue should probably be transferred to corona-warn-app/cwa-app-android since it was reported for Android and there is no information to show that it was also occurring under iOS.

Hey @HHHartmann Thank you for the bug report. And also thanks for already finding relations to older tickets @MikeMcC399!
I forwarded your feedback and created an internal ticket.

We'd glady accept an error log as suggested by Mike, already.
https://www.coronawarn.app/en/faq/results/#error_log

You can securely add the id to this ticket as described in the FAQ article.


Corona-Warn-App Open Source Team

Herre is the error log
ID 0F4CEF535D889AD97EA8
Thanks for consideration and keep up the good work

@HHHartmann Please consider to warn via tele tan. With your positive PCR test you can call the tele tan hotline and retry the submission with a tele tan

@HHHartmann , It looks like your device has very old exposure keys from June

2022-11-10T18:08:02.318Z D/SubmissionTask: Transformed keys with symptoms Symptoms(startOfSymptoms=Date(date=2022-11-06), symptomIndication=POSITIVE) from [TemporaryExposureKey<keyData: b0946bbddb306bc252164f9f12c5107d, rollingStartIntervalNumber: Tue Jun 14 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 46a37b167a70daa29fd1f3d9633d51f3, rollingStartIntervalNumber: Wed Jun 15 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 068054a6b94d509ed729010130d7d3f2, rollingStartIntervalNumber: Thu Jun 16 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 839a34cb1718e8e926ab9bcc94a3c197, rollingStartIntervalNumber: Fri Jun 17 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: ca3e45f7def4e56d2cd35c77f3138f90, rollingStartIntervalNumber: Sat Jun 18 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: e93bf45e8046f10777300502cec82b67, rollingStartIntervalNumber: Sun Jun 19 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 8e1c7ef03425b2c7adfacc02889750a4, rollingStartIntervalNumber: Mon Jun 20 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 96092165507be6732b9f792878c345a9, rollingStartIntervalNumber: Tue Jun 21 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 2b17c8ccff843144d7a2cb1f7339a430, rollingStartIntervalNumber: Wed Jun 22 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: d523f63a4fd3fb3f838e611cc7ee466c, rollingStartIntervalNumber: Thu Jun 23 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 3a799b75fa682f14fafddda2cab19b7b, rollingStartIntervalNumber: Fri Jun 24 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 4696542a6c5e7df4f13e29752bc3cf8f, rollingStartIntervalNumber: Sat Jun 25 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: 7f1a131f67d5d18509f5dc0836616068, rollingStartIntervalNumber: Sun Jun 26 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: e7c34096527d4666a7e8d0db2451fbf7, rollingStartIntervalNumber: Mon Jun 27 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 144, reportType: 0, daysSinceOnsetOfSymptoms: unknown>, TemporaryExposureKey<keyData: c092dc8a6b865676b3740ea52bb1a51a, rollingStartIntervalNumber: Tue Jun 28 02:00:00 GMT+02:00 2022, transmissionRiskLevel: 0, rollingPeriod: 65, reportType: 0, daysSinceOnsetOfSymptoms: unknown>] to [] 

These keys are filtered out before warning and because of that you end up with no keys or CheckIns to warn about. Server will consider this as invalid Warning.

2022-11-10T08:55:09.215Z D/SubmissionTask: Submitting SubmissionData(registrationToken=########-####-####-####-########bd2b, authCode=########-####-####-####-########45d0, temporaryExposureKeys=[], consentToFederation=true, visitedCountries=[DE, IT, IE, LV, HR, BE, SI], unencryptedCheckIns=[], encryptedCheckIns=[], submissionType=SUBMISSION_TYPE_PCR_TEST)
  • When did you actually give the OS consent ? was it the first time you tried to register the TAN?
  • Are you using this device usually?
    I'm just trying to understand how come you have very old exposure keys.

@mtwalli this is the phone I am usually using and it gave me a red alert about two weeks ago. So in principle the app seems to work.

I gave consent to be part of the BT based proximity scanning with exchanging RPIs when I first installed the app short after it became available (so AKAIR well before June).

I can also not find any annomalities in usage of the app during that 2 Week timeframe the ExposureKeys above are dated from.

Not sure about the old exposure keys. Might it be that it came with the QR code I scanned to get the PCR result? But as I read the general overview how the app works that is not related.

@HHHartmann Submission by TAN has been removed in v3.0.1, You can try the new SRS submission provided in the latest version which is not caching the keys (will always provide what OS has)