/* Ċ Ġ* Ġ Ġ--- license - start Ċ Ġ* Ġ Ġeu - digital - green - certificates Ġ/ Ġdg ca - wallet - app - android Ċ Ġ* Ġ Ġ--- Ċ Ġ* Ġ ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠT - Systems ĠInternational ĠGmbH Ġand Ġall Ġother Ġcontributors Ċ Ġ* Ġ Ġ--- Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ġ Ġ--- license - end Ċ Ġ* Ċ Ġ* Ġ ĠCreated Ġby Ġos ar ap ulo v Ġon Ġ 8 / 2 6 / 2 1 Ġ 1 0 : 3 6 ĠAM Ċ Ġ*/ Ċ Ċ package Ġdg ca . wallet . app . android . certificate Ċ Ċ import Ġdg ca . verifier . app . decoder . base 4 5 . Base 4 5 Service Ċ import Ġdg ca . verifier . app . decoder . cb or . Cb or Service Ċ import Ġdg ca . verifier . app . decoder . compression . Compressor Service Ċ import Ġdg ca . verifier . app . decoder . co se . Co se Service Ċ import Ġdg ca . verifier . app . decoder . model . Green Certificate Ċ import Ġdg ca . verifier . app . decoder . model . Verification Result Ċ import Ġdg ca . verifier . app . decoder . prefix validation . Prefix Validation Service Ċ import Ġdg ca . verifier . app . decoder . schema . Schema Validator Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠDefault Green Certificate Fetcher ( ĊĠĠĠ Ġprivate Ġval Ġprefix Validation Service : ĠPrefix Validation Service , ĊĠĠĠ Ġprivate Ġval Ġbase 4 5 Service : ĠBase 4 5 Service , ĊĠĠĠ Ġprivate Ġval Ġcompress or Service : ĠCompress or Service , ĊĠĠĠ Ġprivate Ġval Ġco se Service : ĠC ose Service , ĊĠĠĠ Ġprivate Ġval Ġschema Validator : ĠSchema Validator , ĊĠĠĠ Ġprivate Ġval Ġcb or Service : ĠC bor Service , Ċ ) Ġ: ĠGreen Certificate Fetcher Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Data From Qr String ( qr String : ĠString ): ĠPair < ByteArray ?, ĠGreen Certificate ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġverification Result Ġ= ĠVerification Result () ĊĠĠĠĠĠĠĠ Ġval Ġplain Input Ġ= Ġprefix Validation Service . decode ( qr String , Ġverification Result ) ĊĠĠĠĠĠĠĠ Ġval Ġcompressed Co se Ġ= Ġbase 4 5 Service . decode ( plain Input , Ġverification Result ) ĊĠĠĠĠĠĠĠ Ġif Ġ( verification Result . base 4 5 Decoded . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Verification Ġfailed : Ġbase 4 5 Ġnot Ġdecoded ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( null , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġco se Result : ĠByteArray ? Ġ= Ġcompress or Service . decode ( compressed Co se , Ġverification Result ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( co se Result Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Verification Ġfailed : ĠToo Ġmany Ġbytes Ġread ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( null , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġco se : ĠByteArray Ġ= Ġco se Result ĊĠĠĠĠĠĠĠ Ġval Ġco se Data Ġ= Ġco se Service . decode ( co se , Ġverification Result ) ĊĠĠĠĠĠĠĠ Ġif Ġ( co se Data Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Verification Ġfailed : ĠCO SE Ġnot Ġdecoded ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPair ( co se , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġschema Validator . validate ( co se Data . cb or , Ġverification Result ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( co se , Ġcb or Service . decode ( co se Data . cb or , Ġverification Result )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfetch Green Certificate From Qr String ( qr String : ĠString ): ĠGreen Certificate ? Ġ= Ġfetch Data From Qr String ( qr String ). second Ċ }