--- /home/fdroid/fdroiddata/tmp/at.bitfire.cadroid_8.apk +++ /home/fdroid/fdroiddata/tmp/sigcp_at.bitfire.cadroid_8.apk ├── /usr/lib/android-sdk/build-tools/debian/apksigner verify --verbose --print-certs {} │┄ error from `/usr/lib/android-sdk/build-tools/debian/apksigner verify --verbose --print-certs {}` (b): │┄ DOES NOT VERIFY │┄ ERROR: META-INF/fdroidserverid entry referenced by META-INF/MANIFEST.MF not found in the APK │┄ ERROR: META-INF/buildserverid entry referenced by META-INF/MANIFEST.MF not found in the APK │ @@ -1,20 +0,0 @@ │ -Verifies │ -Verified using v1 scheme (JAR signing): true │ -Verified using v2 scheme (APK Signature Scheme v2): false │ -Verified using v3 scheme (APK Signature Scheme v3): false │ -Verified using v4 scheme (APK Signature Scheme v4): false │ -Verified for SourceStamp: false │ -Number of signers: 1 │ -Signer #1 certificate DN: CN=FDroid, OU=FDroid, O=fdroid.org, L=ORG, ST=ORG, C=UK │ -Signer #1 certificate SHA-256 digest: e8826789423408a604a5cfa76156767fe84f378f651d551398e36d45d6abea6e │ -Signer #1 certificate SHA-1 digest: 43270739cacdfa114818f1626ed4d47373446c43 │ -Signer #1 certificate MD5 digest: 3bca260613648721e70ed59456c0723e │ -Signer #1 key algorithm: RSA │ -Signer #1 key size (bits): 2048 │ -Signer #1 public key SHA-256 digest: 439b8d9697358436e7541b455df1d2c5a130a81310f8026e9a182a5e786efd78 │ -Signer #1 public key SHA-1 digest: 1feee0942dddd42c585b8d6af078afe96db28221 │ -Signer #1 public key MD5 digest: 71a3c5e0719d8317bc6c26021235b63f │ -WARNING: META-INF/LICENSE.txt not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/. │ -WARNING: META-INF/NOTICE.txt not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/. │ -WARNING: META-INF/buildserverid not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/. │ -WARNING: META-INF/fdroidserverid not protected by signature. Unauthorized modifications to this JAR entry will not be detected. Delete or move the entry outside of META-INF/. ├── zipinfo {} │ @@ -1,57 +1,55 @@ │ -Zip file size: 102335 bytes, number of entries: 55 │ --rw---- 2.0 fat 4586 bl defN 15-May-10 07:36 META-INF/MANIFEST.MF │ --rw---- 2.0 fat 4707 bl defN 15-May-10 07:36 META-INF/CC7CAE21.SF │ --rw---- 2.0 fat 1332 bl defN 15-May-10 07:36 META-INF/CC7CAE21.RSA │ --rw---- 2.0 fat 11358 bl defN 15-May-09 23:31 META-INF/LICENSE.txt │ --rw---- 2.0 fat 301 bl defN 15-May-09 23:31 META-INF/NOTICE.txt │ --rw---- 2.0 fat 41 bl defN 15-May-09 23:31 META-INF/buildserverid │ --rw---- 2.0 fat 41 bl defN 15-May-09 23:32 META-INF/fdroidserverid │ --rw---- 2.0 fat 2176 bX defN 15-May-09 23:31 AndroidManifest.xml │ --rw---- 1.0 fat 727 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/alerts_and_states_warning.png │ --rw---- 1.0 fat 237 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/ic_action_accept.png │ --rw---- 1.0 fat 226 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/ic_action_error.png │ --rw---- 1.0 fat 350 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/ic_action_warning.png │ --rw---- 1.0 fat 710 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/ic_certificate.png │ --rw---- 1.0 fat 4732 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/ic_launcher.png │ --rw---- 1.0 fat 1531 b- stor 15-May-09 23:31 res/drawable-hdpi-v4/view_website.png │ --rw---- 1.0 fat 512 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/alerts_and_states_warning.png │ --rw---- 1.0 fat 202 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/ic_action_accept.png │ --rw---- 1.0 fat 212 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/ic_action_error.png │ --rw---- 1.0 fat 292 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/ic_action_warning.png │ --rw---- 1.0 fat 534 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/ic_certificate.png │ --rw---- 1.0 fat 2740 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/ic_launcher.png │ --rw---- 1.0 fat 1086 b- stor 15-May-09 23:31 res/drawable-mdpi-v4/view_website.png │ --rw---- 1.0 fat 815 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/alerts_and_states_warning.png │ --rw---- 1.0 fat 270 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/ic_action_accept.png │ --rw---- 1.0 fat 278 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/ic_action_error.png │ --rw---- 1.0 fat 413 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/ic_action_warning.png │ --rw---- 1.0 fat 817 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/ic_certificate.png │ --rw---- 1.0 fat 6842 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/ic_launcher.png │ --rw---- 1.0 fat 1876 b- stor 15-May-09 23:31 res/drawable-xhdpi-v4/view_website.png │ --rw---- 1.0 fat 531 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/alerts_and_states_warning.png │ --rw---- 1.0 fat 335 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/ic_action_accept.png │ --rw---- 1.0 fat 305 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/ic_action_error.png │ --rw---- 1.0 fat 531 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/ic_action_warning.png │ --rw---- 1.0 fat 707 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/ic_certificate.png │ --rw---- 1.0 fat 11844 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/ic_launcher.png │ --rw---- 1.0 fat 1258 b- stor 15-May-09 23:31 res/drawable-xxhdpi-v4/view_website.png │ --rw---- 1.0 fat 308 b- stor 15-May-09 23:31 res/drawable/bg_pattern.png │ --rw---- 2.0 fat 380 bl defN 15-May-09 23:31 res/drawable/bg_pattern_repeat.xml │ --rw---- 2.0 fat 764 bl defN 15-May-09 23:31 res/layout-sw720dp-v13/activity_main.xml │ --rw---- 2.0 fat 524 bl defN 15-May-09 23:31 res/layout/activity_main.xml │ --rw---- 2.0 fat 912 bl defN 15-May-09 23:31 res/layout/frag_export.xml │ --rw---- 2.0 fat 1536 bl defN 15-May-09 23:31 res/layout/frag_fetch.xml │ --rw---- 2.0 fat 924 bl defN 15-May-09 23:31 res/layout/frag_import.xml │ --rw---- 2.0 fat 576 bl defN 15-May-09 23:31 res/layout/frag_intro.xml │ --rw---- 2.0 fat 864 bl defN 15-May-09 23:31 res/layout/frag_query_server.xml │ --rw---- 2.0 fat 596 bl defN 15-May-09 23:31 res/layout/frag_titles.xml │ --rw---- 2.0 fat 4408 bl defN 15-May-09 23:31 res/layout/frag_verify.xml │ --rw---- 2.0 fat 672 bl defN 15-May-09 23:31 res/layout/select_already_trusted.xml │ --rw---- 2.0 fat 672 bl defN 15-May-09 23:31 res/layout/select_invalid_hostname.xml │ --rw---- 2.0 fat 416 bl defN 15-May-09 23:31 res/menu/fetch.xml │ --rw---- 2.0 fat 416 bl defN 15-May-09 23:31 res/menu/import_cert.xml │ --rw---- 2.0 fat 472 bl defN 15-May-09 23:31 res/menu/main.xml │ --rw---- 2.0 fat 416 bl defN 15-May-09 23:31 res/menu/simple_next.xml │ --rw---- 1.0 fat 17784 b- stor 15-May-09 23:31 resources.arsc │ --rw---- 2.0 fat 41784 bl defN 15-May-09 23:31 classes.dex │ -55 files, 139879 bytes uncompressed, 94043 bytes compressed: 32.8% │ +Zip file size: 101809 bytes, number of entries: 53 │ +-rw---- 2.0 fat 2176 bX defN 17-Oct-12 00:27 AndroidManifest.xml │ +-rw---- 1.0 fat 727 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/alerts_and_states_warning.png │ +-rw---- 1.0 fat 237 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/ic_action_accept.png │ +-rw---- 1.0 fat 226 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/ic_action_error.png │ +-rw---- 1.0 fat 350 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/ic_action_warning.png │ +-rw---- 1.0 fat 710 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/ic_certificate.png │ +-rw---- 1.0 fat 4732 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/ic_launcher.png │ +-rw---- 1.0 fat 1531 b- stor 17-Oct-12 00:27 res/drawable-hdpi-v4/view_website.png │ +-rw---- 1.0 fat 512 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/alerts_and_states_warning.png │ +-rw---- 1.0 fat 202 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/ic_action_accept.png │ +-rw---- 1.0 fat 212 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/ic_action_error.png │ +-rw---- 1.0 fat 292 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/ic_action_warning.png │ +-rw---- 1.0 fat 534 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/ic_certificate.png │ +-rw---- 1.0 fat 2740 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/ic_launcher.png │ +-rw---- 1.0 fat 1086 b- stor 17-Oct-12 00:27 res/drawable-mdpi-v4/view_website.png │ +-rw---- 1.0 fat 815 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/alerts_and_states_warning.png │ +-rw---- 1.0 fat 270 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/ic_action_accept.png │ +-rw---- 1.0 fat 278 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/ic_action_error.png │ +-rw---- 1.0 fat 413 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/ic_action_warning.png │ +-rw---- 1.0 fat 817 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/ic_certificate.png │ +-rw---- 1.0 fat 6842 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/ic_launcher.png │ +-rw---- 1.0 fat 1876 b- stor 17-Oct-12 00:27 res/drawable-xhdpi-v4/view_website.png │ +-rw---- 1.0 fat 531 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/alerts_and_states_warning.png │ +-rw---- 1.0 fat 335 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/ic_action_accept.png │ +-rw---- 1.0 fat 305 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/ic_action_error.png │ +-rw---- 1.0 fat 531 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/ic_action_warning.png │ +-rw---- 1.0 fat 707 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/ic_certificate.png │ +-rw---- 1.0 fat 11844 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/ic_launcher.png │ +-rw---- 1.0 fat 1258 b- stor 17-Oct-12 00:27 res/drawable-xxhdpi-v4/view_website.png │ +-rw---- 1.0 fat 308 b- stor 17-Oct-12 00:27 res/drawable/bg_pattern.png │ +-rw---- 2.0 fat 380 bl defN 17-Oct-12 00:27 res/drawable/bg_pattern_repeat.xml │ +-rw---- 2.0 fat 764 bl defN 17-Oct-12 00:27 res/layout-sw720dp-v13/activity_main.xml │ +-rw---- 2.0 fat 524 bl defN 17-Oct-12 00:27 res/layout/activity_main.xml │ +-rw---- 2.0 fat 912 bl defN 17-Oct-12 00:27 res/layout/frag_export.xml │ +-rw---- 2.0 fat 1536 bl defN 17-Oct-12 00:27 res/layout/frag_fetch.xml │ +-rw---- 2.0 fat 924 bl defN 17-Oct-12 00:27 res/layout/frag_import.xml │ +-rw---- 2.0 fat 576 bl defN 17-Oct-12 00:27 res/layout/frag_intro.xml │ +-rw---- 2.0 fat 864 bl defN 17-Oct-12 00:27 res/layout/frag_query_server.xml │ +-rw---- 2.0 fat 596 bl defN 17-Oct-12 00:27 res/layout/frag_titles.xml │ +-rw---- 2.0 fat 4408 bl defN 17-Oct-12 00:27 res/layout/frag_verify.xml │ +-rw---- 2.0 fat 672 bl defN 17-Oct-12 00:27 res/layout/select_already_trusted.xml │ +-rw---- 2.0 fat 672 bl defN 17-Oct-12 00:27 res/layout/select_invalid_hostname.xml │ +-rw---- 2.0 fat 416 bl defN 17-Oct-12 00:27 res/menu/fetch.xml │ +-rw---- 2.0 fat 416 bl defN 17-Oct-12 00:27 res/menu/import_cert.xml │ +-rw---- 2.0 fat 472 bl defN 17-Oct-12 00:27 res/menu/main.xml │ +-rw---- 2.0 fat 416 bl defN 17-Oct-12 00:27 res/menu/simple_next.xml │ +-rw---- 1.0 fat 17784 b- stor 17-Oct-12 00:27 resources.arsc │ +-rw---- 2.0 fat 41652 bl defN 17-Oct-12 00:27 classes.dex │ +-rw---- 2.0 fat 11358 bl defN 17-Oct-12 00:27 META-INF/LICENSE.txt │ +-rw---- 2.0 fat 301 bl defN 17-Oct-12 00:27 META-INF/NOTICE.txt │ +-rw---- 2.0 fat 4586 b- defN 17-Oct-12 00:27 META-INF/MANIFEST.MF │ +-rw---- 2.0 fat 4707 b- defN 17-Oct-12 00:27 META-INF/CC7CAE21.SF │ +-rw---- 2.0 fat 1332 b- defN 17-Oct-12 00:27 META-INF/CC7CAE21.RSA │ +53 files, 139665 bytes uncompressed, 93875 bytes compressed: 32.8% ├── filetype from file(1) │ @@ -1 +1 @@ │ -Zip archive data, at least v2.0 to extract │ +Java archive data (JAR) ├── classes.dex │ ├── classes.jar │ │ ├── zipinfo {} │ │ │ @@ -1,12 +1,12 @@ │ │ │ -Zip file size: 59301 bytes, number of entries: 29 │ │ │ +Zip file size: 59328 bytes, number of entries: 29 │ │ │ ?rwxrwxr-x 2.0 unx 1819 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/ASN1Decoder.class │ │ │ ?rwxrwxr-x 2.0 unx 247 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/ASN1UnexpectedTypeException.class │ │ │ ?rwxrwxr-x 2.0 unx 416 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/BuildConfig.class │ │ │ -?rwxrwxr-x 2.0 unx 5735 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/CertificateInfo.class │ │ │ +?rwxrwxr-x 2.0 unx 5751 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/CertificateInfo.class │ │ │ ?rwxrwxr-x 2.0 unx 1341 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/ConnectionInfo$1.class │ │ │ ?rwxrwxr-x 2.0 unx 5852 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/ConnectionInfo.class │ │ │ ?rwxrwxr-x 2.0 unx 3363 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/ExportFragment.class │ │ │ ?rwxrwxr-x 2.0 unx 3108 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/FetchFragment.class │ │ │ ?rwxrwxr-x 2.0 unx 1009 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/FetchingCertificateFragment$CertificateInfoLoader.class │ │ │ ?rwxrwxr-x 2.0 unx 2581 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/FetchingCertificateFragment.class │ │ │ ?rwxrwxr-x 2.0 unx 3145 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/ImportFragment.class │ │ │ @@ -19,13 +19,13 @@ │ │ │ ?rwxrwxr-x 2.0 unx 517 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/R$drawable.class │ │ │ ?rwxrwxr-x 2.0 unx 976 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/R$id.class │ │ │ ?rwxrwxr-x 2.0 unx 541 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/R$layout.class │ │ │ ?rwxrwxr-x 2.0 unx 287 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/R$menu.class │ │ │ ?rwxrwxr-x 2.0 unx 1551 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/R$string.class │ │ │ ?rwxrwxr-x 2.0 unx 135 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/R.class │ │ │ ?rwxrwxr-x 2.0 unx 814 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/SelectFragment$1.class │ │ │ -?rwxrwxr-x 2.0 unx 3041 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/SelectFragment.class │ │ │ -?rwxrwxr-x 2.0 unx 3639 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/TLSSocketFactory.class │ │ │ +?rwxrwxr-x 2.0 unx 3049 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/SelectFragment.class │ │ │ +?rwxrwxr-x 2.0 unx 3642 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/TLSSocketFactory.class │ │ │ ?rwxrwxr-x 2.0 unx 3700 b- stor 80-Jan-01 00:00 at/bitfire/cadroid/VerifyFragment.class │ │ │ ?rwxrwxr-x 2.0 unx 1802 b- stor 80-Jan-01 00:00 org/apache/commons/lang3/ArrayUtils.class │ │ │ ?rwxrwxr-x 2.0 unx 911 b- stor 80-Jan-01 00:00 org/apache/commons/lang3/StringUtils.class │ │ │ -29 files, 54795 bytes uncompressed, 54795 bytes compressed: 0.0% │ │ │ +29 files, 54822 bytes uncompressed, 54822 bytes compressed: 0.0% │ │ ├── at/bitfire/cadroid/CertificateInfo.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -315,33 +315,33 @@ │ │ │ │ } │ │ │ │ │ │ │ │ public String getSerialNumber() { │ │ │ │ return this.certificate.getSerialNumber().toString(16); │ │ │ │ } │ │ │ │ │ │ │ │ public String getSignature(final String algorithm) { │ │ │ │ + int i = 0; │ │ │ │ String s = null; │ │ │ │ try { │ │ │ │ final MessageDigest instance = MessageDigest.getInstance(algorithm); │ │ │ │ try { │ │ │ │ final X509Certificate certificate = this.certificate; │ │ │ │ try { │ │ │ │ instance.update(certificate.getEncoded()); │ │ │ │ s = ""; │ │ │ │ int n = 1; │ │ │ │ final byte[] digest = instance.digest(); │ │ │ │ try { │ │ │ │ final int length = digest.length; │ │ │ │ - int i = 0; │ │ │ │ - Label_0041: │ │ │ │ + Label_0049: │ │ │ │ while (i < length) { │ │ │ │ final byte b = digest[i]; │ │ │ │ - Label_0173: { │ │ │ │ + Label_0191: { │ │ │ │ if (n != 0) { │ │ │ │ - break Label_0173; │ │ │ │ + break Label_0191; │ │ │ │ } │ │ │ │ try { │ │ │ │ final StringBuilder sb = new StringBuilder(); │ │ │ │ try { │ │ │ │ final StringBuilder append = sb.append(s).append(":"); │ │ │ │ try { │ │ │ │ s = append.toString(); │ │ │ │ @@ -355,15 +355,15 @@ │ │ │ │ final Object[] args = { Integer.valueOf(b & 0xFF) }; │ │ │ │ final String format = s2; │ │ │ │ try { │ │ │ │ final StringBuilder append3 = append2.append(String.format(format, args)); │ │ │ │ try { │ │ │ │ s = append3.toString(); │ │ │ │ ++i; │ │ │ │ - continue Label_0041; │ │ │ │ + continue Label_0049; │ │ │ │ n = 0; │ │ │ │ } │ │ │ │ catch (Exception ex) { │ │ │ │ Log.e("cadroid.CertificateInfo", "Couldn't calculate certificate digest", (Throwable)ex); │ │ │ │ s = ex.getMessage(); │ │ │ │ } │ │ │ │ } │ │ │ │ @@ -406,29 +406,29 @@ │ │ │ │ // 8: aload_0 │ │ │ │ // 9: getfield at/bitfire/cadroid/CertificateInfo.certificate:Ljava/security/cert/X509Certificate; │ │ │ │ // 12: astore_2 │ │ │ │ // 13: aload_2 │ │ │ │ // 14: invokevirtual java/security/cert/X509Certificate.getSubjectAlternativeNames:()Ljava/util/Collection; │ │ │ │ // 17: astore_2 │ │ │ │ // 18: aload_2 │ │ │ │ - // 19: ifnull 219 │ │ │ │ + // 19: ifnull 217 │ │ │ │ // 22: aload_0 │ │ │ │ // 23: getfield at/bitfire/cadroid/CertificateInfo.certificate:Ljava/security/cert/X509Certificate; │ │ │ │ // 26: astore_2 │ │ │ │ // 27: aload_2 │ │ │ │ // 28: invokevirtual java/security/cert/X509Certificate.getSubjectAlternativeNames:()Ljava/util/Collection; │ │ │ │ // 31: astore_2 │ │ │ │ // 32: aload_2 │ │ │ │ // 33: invokeinterface java/util/Collection.iterator:()Ljava/util/Iterator; │ │ │ │ // 38: astore_3 │ │ │ │ // 39: aload_3 │ │ │ │ // 40: invokeinterface java/util/Iterator.hasNext:()Z │ │ │ │ // 45: istore 4 │ │ │ │ // 47: iload 4 │ │ │ │ - // 49: ifeq 219 │ │ │ │ + // 49: ifeq 217 │ │ │ │ // 52: aload_3 │ │ │ │ // 53: invokeinterface java/util/Iterator.next:()Ljava/lang/Object; │ │ │ │ // 58: astore 5 │ │ │ │ // 60: aload 5 │ │ │ │ // 62: checkcast Ljava/util/List; │ │ │ │ // 65: astore 5 │ │ │ │ // 67: iconst_0 │ │ │ │ @@ -484,87 +484,87 @@ │ │ │ │ // 162: aload_1 │ │ │ │ // 163: aload_2 │ │ │ │ // 164: invokevirtual java/util/LinkedList.add:(Ljava/lang/Object;)Z │ │ │ │ // 167: pop │ │ │ │ // 168: goto 39 │ │ │ │ // 171: astore 9 │ │ │ │ // 173: ldc "Couldn't parse Subject Alternative Names from certificate" │ │ │ │ - // 175: astore 8 │ │ │ │ - // 177: ldc "cadroid.CertificateInfo" │ │ │ │ - // 179: aload 8 │ │ │ │ - // 181: aload 9 │ │ │ │ - // 183: invokestatic android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ │ │ - // 186: pop │ │ │ │ - // 187: iconst_0 │ │ │ │ - // 188: istore 4 │ │ │ │ - // 190: aconst_null │ │ │ │ - // 191: astore_2 │ │ │ │ - // 192: aload_2 │ │ │ │ - // 193: areturn │ │ │ │ - // 194: astore 9 │ │ │ │ - // 196: ldc "?" │ │ │ │ - // 198: astore 7 │ │ │ │ - // 200: ldc "cadroid.CertificateInfo" │ │ │ │ - // 202: astore_2 │ │ │ │ - // 203: ldc "Couldn't cast alternative subject name to String" │ │ │ │ - // 205: astore 8 │ │ │ │ - // 207: aload_2 │ │ │ │ - // 208: aload 8 │ │ │ │ - // 210: aload 9 │ │ │ │ - // 212: invokestatic android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ │ │ - // 215: pop │ │ │ │ - // 216: goto 113 │ │ │ │ - // 219: iconst_0 │ │ │ │ - // 220: istore 4 │ │ │ │ - // 222: aconst_null │ │ │ │ - // 223: astore_2 │ │ │ │ - // 224: iconst_0 │ │ │ │ - // 225: anewarray Ljava/lang/String; │ │ │ │ - // 228: astore_2 │ │ │ │ - // 229: aload_1 │ │ │ │ - // 230: aload_2 │ │ │ │ - // 231: invokevirtual java/util/LinkedList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object; │ │ │ │ - // 234: astore_2 │ │ │ │ - // 235: aload_2 │ │ │ │ - // 236: checkcast [Ljava/lang/String; │ │ │ │ - // 239: astore_2 │ │ │ │ - // 240: goto 192 │ │ │ │ + // 175: astore_3 │ │ │ │ + // 176: ldc "cadroid.CertificateInfo" │ │ │ │ + // 178: aload_3 │ │ │ │ + // 179: aload 9 │ │ │ │ + // 181: invokestatic android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ │ │ + // 184: pop │ │ │ │ + // 185: iconst_0 │ │ │ │ + // 186: istore 4 │ │ │ │ + // 188: aconst_null │ │ │ │ + // 189: astore_2 │ │ │ │ + // 190: aload_2 │ │ │ │ + // 191: areturn │ │ │ │ + // 192: astore 9 │ │ │ │ + // 194: ldc "?" │ │ │ │ + // 196: astore 7 │ │ │ │ + // 198: ldc "cadroid.CertificateInfo" │ │ │ │ + // 200: astore_2 │ │ │ │ + // 201: ldc "Couldn't cast alternative subject name to String" │ │ │ │ + // 203: astore 8 │ │ │ │ + // 205: aload_2 │ │ │ │ + // 206: aload 8 │ │ │ │ + // 208: aload 9 │ │ │ │ + // 210: invokestatic android/util/Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ │ │ + // 213: pop │ │ │ │ + // 214: goto 113 │ │ │ │ + // 217: iconst_0 │ │ │ │ + // 218: istore 4 │ │ │ │ + // 220: aconst_null │ │ │ │ + // 221: astore_2 │ │ │ │ + // 222: iconst_0 │ │ │ │ + // 223: anewarray Ljava/lang/String; │ │ │ │ + // 226: astore_2 │ │ │ │ + // 227: aload_1 │ │ │ │ + // 228: aload_2 │ │ │ │ + // 229: invokevirtual java/util/LinkedList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object; │ │ │ │ + // 232: astore_2 │ │ │ │ + // 233: aload_2 │ │ │ │ + // 234: checkcast [Ljava/lang/String; │ │ │ │ + // 237: astore_2 │ │ │ │ + // 238: goto 190 │ │ │ │ // Exceptions: │ │ │ │ // Try Handler │ │ │ │ // Start End Start End Type │ │ │ │ // ----- ----- ----- ----- ------------------------------------------------ │ │ │ │ - // 0 3 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 4 8 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 8 12 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 13 17 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 22 26 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 27 31 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 32 38 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 39 45 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 52 58 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 60 65 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 74 80 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 81 85 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 86 90 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 97 104 194 219 Ljava/lang/Exception; │ │ │ │ - // 97 104 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 106 111 194 219 Ljava/lang/Exception; │ │ │ │ - // 106 111 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 113 116 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 117 121 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 122 127 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 133 138 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 140 145 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 151 156 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 157 161 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 163 168 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 210 216 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 224 228 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 230 234 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ - // 235 239 171 192 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 0 3 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 4 8 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 8 12 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 13 17 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 22 26 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 27 31 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 32 38 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 39 45 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 52 58 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 60 65 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 74 80 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 81 85 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 86 90 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 97 104 192 217 Ljava/lang/Exception; │ │ │ │ + // 97 104 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 106 111 192 217 Ljava/lang/Exception; │ │ │ │ + // 106 111 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 113 116 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 117 121 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 122 127 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 133 138 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 140 145 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 151 156 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 157 161 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 163 168 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 208 214 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 222 226 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 228 232 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ + // 233 237 171 190 Ljava/security/cert/CertificateParsingException; │ │ │ │ // │ │ │ │ // The error that occurred was: │ │ │ │ // │ │ │ │ // java.lang.IllegalStateException: Expression is linked from several locations: Label_0113: │ │ │ │ // at com.strobel.decompiler.ast.Error.expressionLinkedFromMultipleLocations(Error.java:27) │ │ │ │ // at com.strobel.decompiler.ast.AstOptimizer.mergeDisparateObjectInitializations(AstOptimizer.java:2596) │ │ │ │ // at com.strobel.decompiler.ast.AstOptimizer.optimize(AstOptimizer.java:235) │ │ ├── at/bitfire/cadroid/SelectFragment.class │ │ │ ├── procyon -ec {} │ │ │ │ @@ -48,39 +48,39 @@ │ │ │ │ } │ │ │ │ │ │ │ │ public void onViewCreated(final View view, final Bundle bundle) { │ │ │ │ super.onViewCreated(view, bundle); │ │ │ │ final ConnectionInfo connectionInfo = ((MainActivity)this.getActivity()).getConnectionInfo(); │ │ │ │ this.mayContinue = true; │ │ │ │ final SelectFragment$1 listAdapter; │ │ │ │ - Label_0358: { │ │ │ │ - Label_0079: { │ │ │ │ + Label_0366: { │ │ │ │ + Label_0084: { │ │ │ │ if (connectionInfo.isHostNameMatching()) { │ │ │ │ try { │ │ │ │ if (!connectionInfo.isTrusted()) { │ │ │ │ - break Label_0079; │ │ │ │ + break Label_0084; │ │ │ │ } │ │ │ │ this.mayContinue = false; │ │ │ │ final ListView listView = this.getListView(); │ │ │ │ try { │ │ │ │ final Activity activity = this.getActivity(); │ │ │ │ try { │ │ │ │ listView.addFooterView(activity.getLayoutInflater().inflate(2130903048, (ViewGroup)null), (Object)null, false); │ │ │ │ - break Label_0079; │ │ │ │ + break Label_0084; │ │ │ │ } │ │ │ │ catch (Exception ex) { │ │ │ │ Log.e("cadroid.Select", "Couldn't determine trust status of certificate", (Throwable)ex); │ │ │ │ this.mayContinue = false; │ │ │ │ - break Label_0079; │ │ │ │ + break Label_0084; │ │ │ │ } │ │ │ │ } │ │ │ │ catch (Exception ex2) {} │ │ │ │ } │ │ │ │ catch (Exception ex3) {} │ │ │ │ - break Label_0358; │ │ │ │ + break Label_0366; │ │ │ │ } │ │ │ │ this.mayContinue = false; │ │ │ │ this.getListView().addFooterView(this.getActivity().getLayoutInflater().inflate(2130903049, (ViewGroup)null), (Object)null, false); │ │ │ │ } │ │ │ │ if (this.mayContinue) { │ │ │ │ final TextView textView = new TextView(view.getContext()); │ │ │ │ textView.setTextSize(2, 20.0f); │ │ ├── at/bitfire/cadroid/TLSSocketFactory.class │ │ │ ├── javap -verbose -constants -s -l -private {} │ │ │ │ @@ -299,59 +299,61 @@ │ │ │ │ 6: putfield #65 // Field sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory; │ │ │ │ 9: return │ │ │ │ │ │ │ │ protected static java.lang.String[] getDefaultProtocols(javax.net.ssl.SSLSocket); │ │ │ │ descriptor: (Ljavax/net/ssl/SSLSocket;)[Ljava/lang/String; │ │ │ │ flags: (0x000c) ACC_PROTECTED, ACC_STATIC │ │ │ │ Code: │ │ │ │ - stack=300, locals=8, args_size=1 │ │ │ │ + stack=300, locals=9, args_size=1 │ │ │ │ 0: new #67 // class java/util/LinkedList │ │ │ │ 3: astore_1 │ │ │ │ 4: aload_1 │ │ │ │ 5: invokespecial #68 // Method java/util/LinkedList."":()V │ │ │ │ 8: aload_0 │ │ │ │ 9: invokevirtual #74 // Method javax/net/ssl/SSLSocket.getSupportedProtocols:()[Ljava/lang/String; │ │ │ │ 12: astore_2 │ │ │ │ 13: aload_2 │ │ │ │ 14: arraylength │ │ │ │ 15: istore_3 │ │ │ │ 16: iconst_0 │ │ │ │ 17: istore 4 │ │ │ │ - 19: iload 4 │ │ │ │ - 21: iload_3 │ │ │ │ - 22: if_icmpge 65 │ │ │ │ - 25: aload_2 │ │ │ │ - 26: iload 4 │ │ │ │ - 28: aaload │ │ │ │ - 29: astore 5 │ │ │ │ - 31: ldc #76 // String SSL │ │ │ │ - 33: astore 6 │ │ │ │ - 35: aload 5 │ │ │ │ - 37: aload 6 │ │ │ │ - 39: invokevirtual #80 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z │ │ │ │ - 42: istore 7 │ │ │ │ - 44: iload 7 │ │ │ │ - 46: ifne 56 │ │ │ │ - 49: aload_1 │ │ │ │ - 50: aload 5 │ │ │ │ - 52: invokevirtual #84 // Method java/util/LinkedList.add:(Ljava/lang/Object;)Z │ │ │ │ - 55: pop │ │ │ │ - 56: iload 4 │ │ │ │ - 58: iconst_1 │ │ │ │ - 59: iadd │ │ │ │ - 60: istore 4 │ │ │ │ - 62: goto 19 │ │ │ │ - 65: iconst_0 │ │ │ │ - 66: anewarray #16 // class java/lang/String │ │ │ │ - 69: astore 6 │ │ │ │ - 71: aload_1 │ │ │ │ - 72: aload 6 │ │ │ │ - 74: invokevirtual #88 // Method java/util/LinkedList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object; │ │ │ │ - 77: checkcast #89 // class "[Ljava/lang/String;" │ │ │ │ - 80: areturn │ │ │ │ + 19: aconst_null │ │ │ │ + 20: astore 5 │ │ │ │ + 22: iload 4 │ │ │ │ + 24: iload_3 │ │ │ │ + 25: if_icmpge 68 │ │ │ │ + 28: aload_2 │ │ │ │ + 29: iload 4 │ │ │ │ + 31: aaload │ │ │ │ + 32: astore 6 │ │ │ │ + 34: ldc #76 // String SSL │ │ │ │ + 36: astore 7 │ │ │ │ + 38: aload 6 │ │ │ │ + 40: aload 7 │ │ │ │ + 42: invokevirtual #80 // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z │ │ │ │ + 45: istore 8 │ │ │ │ + 47: iload 8 │ │ │ │ + 49: ifne 59 │ │ │ │ + 52: aload_1 │ │ │ │ + 53: aload 6 │ │ │ │ + 55: invokevirtual #84 // Method java/util/LinkedList.add:(Ljava/lang/Object;)Z │ │ │ │ + 58: pop │ │ │ │ + 59: iload 4 │ │ │ │ + 61: iconst_1 │ │ │ │ + 62: iadd │ │ │ │ + 63: istore 4 │ │ │ │ + 65: goto 22 │ │ │ │ + 68: iconst_0 │ │ │ │ + 69: anewarray #16 // class java/lang/String │ │ │ │ + 72: astore 5 │ │ │ │ + 74: aload_1 │ │ │ │ + 75: aload 5 │ │ │ │ + 77: invokevirtual #88 // Method java/util/LinkedList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object; │ │ │ │ + 80: checkcast #89 // class "[Ljava/lang/String;" │ │ │ │ + 83: areturn │ │ │ │ │ │ │ │ private static void log(java.lang.String, java.lang.String[]); │ │ │ │ descriptor: (Ljava/lang/String;[Ljava/lang/String;)V │ │ │ │ flags: (0x000a) ACC_PRIVATE, ACC_STATIC │ │ │ │ Code: │ │ │ │ stack=300, locals=6, args_size=2 │ │ │ │ 0: bipush 32 ├── smali/at/bitfire/cadroid/FetchingCertificateFragment.smali │ @@ -34,15 +34,14 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 17 │ invoke-direct {p0}, Landroid/app/DialogFragment;->()V │ │ - .line 66 │ return-void │ .end method │ │ │ # virtual methods │ .method public onCreate(Landroid/os/Bundle;)V │ .locals 4 │ @@ -229,22 +228,19 @@ │ invoke-virtual {v1}, Landroid/widget/Toast;->show()V │ │ goto :goto_0 │ .end method │ │ .method public bridge synthetic onLoadFinished(Landroid/content/Loader;Ljava/lang/Object;)V │ .locals 0 │ - .param p1, "x0" # Landroid/content/Loader; │ - .param p2, "x1" # Ljava/lang/Object; │ │ .prologue │ .line 17 │ check-cast p2, Lat/bitfire/cadroid/ConnectionInfo; │ │ - .end local p2 # "x1":Ljava/lang/Object; │ invoke-virtual {p0, p1, p2}, Lat/bitfire/cadroid/FetchingCertificateFragment;->onLoadFinished(Landroid/content/Loader;Lat/bitfire/cadroid/ConnectionInfo;)V │ │ return-void │ .end method │ │ .method public onLoaderReset(Landroid/content/Loader;)V │ .locals 0 ├── smali/at/bitfire/cadroid/ConnectionInfo$1.smali │ @@ -102,15 +102,14 @@ │ const/4 v1, 0x0 │ │ goto :goto_0 │ .end method │ │ .method public bridge synthetic createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; │ .locals 1 │ - .param p1, "x0" # Landroid/os/Parcel; │ │ .prologue │ .line 124 │ invoke-virtual {p0, p1}, Lat/bitfire/cadroid/ConnectionInfo$1;->createFromParcel(Landroid/os/Parcel;)Lat/bitfire/cadroid/ConnectionInfo; │ │ move-result-object v0 │ │ @@ -126,15 +125,14 @@ │ new-array v0, p1, [Lat/bitfire/cadroid/ConnectionInfo; │ │ return-object v0 │ .end method │ │ .method public bridge synthetic newArray(I)[Ljava/lang/Object; │ .locals 1 │ - .param p1, "x0" # I │ │ .prologue │ .line 124 │ invoke-virtual {p0, p1}, Lat/bitfire/cadroid/ConnectionInfo$1;->newArray(I)[Lat/bitfire/cadroid/ConnectionInfo; │ │ move-result-object v0 ├── smali/at/bitfire/cadroid/ExportFragment.smali │ @@ -105,17 +105,19 @@ │ │ move-result-object v3 │ │ if-eqz v3, :cond_0 │ │ invoke-virtual {v1}, Ljava/io/FileOutputStream;->close()V │ │ + .line 91 │ :cond_0 │ return-object v2 │ │ + .line 89 │ :catchall_0 │ move-exception v2 │ │ invoke-static {v1}, Ljava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List; │ │ move-result-object v3 ├── smali/at/bitfire/cadroid/R.smali │ @@ -21,10 +21,9 @@ │ .method public constructor ()V │ .locals 0 │ │ .prologue │ .line 10 │ invoke-direct {p0}, Ljava/lang/Object;->()V │ │ - .line 69 │ return-void │ .end method ├── smali/at/bitfire/cadroid/MainActivity.smali │ @@ -120,64 +120,70 @@ │ .line 52 │ const/4 v2, 0x6 │ │ new-array v1, v2, [Ljava/lang/String; │ │ const v2, 0x7f050012 │ │ + .line 53 │ invoke-virtual {p0, v2}, Lat/bitfire/cadroid/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v2 │ │ aput-object v2, v1, v6 │ │ const/4 v2, 0x1 │ │ const v3, 0x7f05000d │ │ + .line 54 │ invoke-virtual {p0, v3}, Lat/bitfire/cadroid/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x2 │ │ const v3, 0x7f05001c │ │ + .line 55 │ invoke-virtual {p0, v3}, Lat/bitfire/cadroid/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x3 │ │ const v3, 0x7f050023 │ │ + .line 56 │ invoke-virtual {p0, v3}, Lat/bitfire/cadroid/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x4 │ │ const v3, 0x7f05000b │ │ + .line 57 │ invoke-virtual {p0, v3}, Lat/bitfire/cadroid/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ const/4 v2, 0x5 │ │ const v3, 0x7f050010 │ │ + .line 58 │ invoke-virtual {p0, v3}, Lat/bitfire/cadroid/MainActivity;->getString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ aput-object v3, v1, v2 │ │ .line 60 │ @@ -440,31 +446,34 @@ │ :goto_0 │ invoke-virtual {v0}, Landroid/app/FragmentManager;->beginTransaction()Landroid/app/FragmentTransaction; │ │ move-result-object v3 │ │ const/high16 v4, 0x7f070000 │ │ + .line 92 │ invoke-virtual {v3, v4, v2, p1}, Landroid/app/FragmentTransaction;->replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction; │ │ move-result-object v1 │ │ .line 93 │ .local v1, "ft":Landroid/app/FragmentTransaction; │ if-eqz p2, :cond_1 │ │ .line 94 │ const/16 v3, 0x1001 │ │ + .line 95 │ invoke-virtual {v1, v3}, Landroid/app/FragmentTransaction;->setTransition(I)Landroid/app/FragmentTransaction; │ │ move-result-object v3 │ │ const/4 v4, 0x0 │ │ + .line 96 │ invoke-virtual {v3, v4}, Landroid/app/FragmentTransaction;->addToBackStack(Ljava/lang/String;)Landroid/app/FragmentTransaction; │ │ move-result-object v1 │ │ .line 97 │ :cond_1 │ invoke-virtual {v1}, Landroid/app/FragmentTransaction;->commitAllowingStateLoss()I ├── smali/at/bitfire/cadroid/VerifyFragment.smali │ @@ -131,18 +131,20 @@ │ │ array-length v8, v4 │ │ if-lez v8, :cond_0 │ │ const-string v8, ", " │ │ + .line 52 │ invoke-static {v4, v8}, Lorg/apache/commons/lang3/StringUtils;->join([Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String; │ │ move-result-object v8 │ │ + .line 51 │ :goto_0 │ invoke-virtual {v7, v8}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V │ │ .line 55 │ const v7, 0x7f07000b │ │ invoke-virtual {v6, v7}, Landroid/view/View;->findViewById(I)Landroid/view/View; │ @@ -306,15 +308,15 @@ │ .line 88 │ invoke-virtual {v5, v12}, Landroid/widget/TextView;->setVisibility(I)V │ │ .line 93 │ :goto_3 │ return-void │ │ - .line 51 │ + .line 52 │ .end local v0 # "basicConstraintsInfo":Ljava/lang/String; │ .end local v5 # "tvAlertCA":Landroid/widget/TextView; │ :cond_0 │ const-string v8, "\u2014" │ │ goto/16 :goto_0 │ │ @@ -331,34 +333,37 @@ │ if-eqz v7, :cond_3 │ │ .line 68 │ const v8, 0x7f050013 │ │ new-array v9, v11, [Ljava/lang/Object; │ │ + .line 69 │ invoke-virtual {v2}, Lat/bitfire/cadroid/CertificateInfo;->getMaxPathLength()Ljava/lang/Integer; │ │ move-result-object v7 │ │ if-eqz v7, :cond_2 │ │ invoke-virtual {v2}, Lat/bitfire/cadroid/CertificateInfo;->getMaxPathLength()Ljava/lang/Integer; │ │ move-result-object v7 │ │ :goto_4 │ aput-object v7, v9, v10 │ │ + .line 68 │ invoke-virtual {p0, v8, v9}, Lat/bitfire/cadroid/VerifyFragment;->getString(I[Ljava/lang/Object;)Ljava/lang/String; │ │ move-result-object v0 │ │ .restart local v0 # "basicConstraintsInfo":Ljava/lang/String; │ goto :goto_1 │ │ + .line 69 │ .end local v0 # "basicConstraintsInfo":Ljava/lang/String; │ :cond_2 │ const-string v7, "\u221e" │ │ goto :goto_4 │ │ .line 71 ├── smali/at/bitfire/cadroid/TLSSocketFactory.smali │ @@ -124,74 +124,71 @@ │ iput-object p1, p0, Lat/bitfire/cadroid/TLSSocketFactory;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory; │ │ .line 49 │ return-void │ .end method │ │ .method protected static getDefaultProtocols(Ljavax/net/ssl/SSLSocket;)[Ljava/lang/String; │ - .locals 6 │ + .locals 7 │ .param p0, "sslSocket" # Ljavax/net/ssl/SSLSocket; │ │ .prologue │ + const/4 v3, 0x0 │ + │ .line 107 │ - new-instance v4, Ljava/util/LinkedList; │ + new-instance v1, Ljava/util/LinkedList; │ │ - invoke-direct {v4}, Ljava/util/LinkedList;->()V │ + invoke-direct {v1}, Ljava/util/LinkedList;->()V │ │ .line 108 │ - .local v4, "protocols":Ljava/util/LinkedList;, "Ljava/util/LinkedList;" │ + .local v1, "protocols":Ljava/util/LinkedList;, "Ljava/util/LinkedList;" │ invoke-virtual {p0}, Ljavax/net/ssl/SSLSocket;->getSupportedProtocols()[Ljava/lang/String; │ │ - move-result-object v0 │ + move-result-object v4 │ │ - .local v0, "arr$":[Ljava/lang/String; │ - array-length v2, v0 │ + array-length v5, v4 │ │ - .local v2, "len$":I │ - const/4 v1, 0x0 │ + move v2, v3 │ │ - .local v1, "i$":I │ :goto_0 │ - if-ge v1, v2, :cond_1 │ + if-ge v2, v5, :cond_1 │ │ - aget-object v3, v0, v1 │ + aget-object v0, v4, v2 │ │ .line 109 │ - .local v3, "protocol":Ljava/lang/String; │ - const-string v5, "SSL" │ + .local v0, "protocol":Ljava/lang/String; │ + const-string v6, "SSL" │ │ - invoke-virtual {v3, v5}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ + invoke-virtual {v0, v6}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z │ │ - move-result v5 │ + move-result v6 │ │ - if-nez v5, :cond_0 │ + if-nez v6, :cond_0 │ │ .line 110 │ - invoke-virtual {v4, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ + invoke-virtual {v1, v0}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ │ .line 108 │ :cond_0 │ - add-int/lit8 v1, v1, 0x1 │ + add-int/lit8 v2, v2, 0x1 │ │ goto :goto_0 │ │ .line 111 │ - .end local v3 # "protocol":Ljava/lang/String; │ + .end local v0 # "protocol":Ljava/lang/String; │ :cond_1 │ - const/4 v5, 0x0 │ - │ - new-array v5, v5, [Ljava/lang/String; │ + new-array v2, v3, [Ljava/lang/String; │ │ - invoke-virtual {v4, v5}, Ljava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; │ + invoke-virtual {v1, v2}, Ljava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; │ │ - move-result-object v5 │ + move-result-object v2 │ │ - check-cast v5, [Ljava/lang/String; │ + check-cast v2, [Ljava/lang/String; │ │ - return-object v5 │ + return-object v2 │ .end method │ │ .method private static log(Ljava/lang/String;[Ljava/lang/String;)V │ .locals 5 │ .param p0, "title" # Ljava/lang/String; │ .param p1, "array" # [Ljava/lang/String; ├── smali/at/bitfire/cadroid/ConnectionInfo.smali │ @@ -454,14 +454,15 @@ │ │ move-result-object v9 │ │ if-eqz v9, :cond_7 │ │ invoke-virtual {v8}, Ljavax/net/ssl/HttpsURLConnection;->disconnect()V │ │ + .line 92 │ :cond_7 │ return-object v3 │ .end method │ │ │ # virtual methods │ .method public describeContents()I ├── smali/at/bitfire/cadroid/CertificateInfo.smali │ @@ -422,97 +422,94 @@ │ .end method │ │ .method public getSignature(Ljava/lang/String;)Ljava/lang/String; │ .locals 13 │ .param p1, "algorithm" # Ljava/lang/String; │ │ .prologue │ + const/4 v5, 0x0 │ + │ .line 86 │ :try_start_0 │ invoke-static {p1}, Ljava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest; │ │ - move-result-object v2 │ + move-result-object v1 │ │ .line 87 │ - .local v2, "digest":Ljava/security/MessageDigest; │ - iget-object v8, p0, Lat/bitfire/cadroid/CertificateInfo;->certificate:Ljava/security/cert/X509Certificate; │ + .local v1, "digest":Ljava/security/MessageDigest; │ + iget-object v6, p0, Lat/bitfire/cadroid/CertificateInfo;->certificate:Ljava/security/cert/X509Certificate; │ │ - invoke-virtual {v8}, Ljava/security/cert/X509Certificate;->getEncoded()[B │ + invoke-virtual {v6}, Ljava/security/cert/X509Certificate;->getEncoded()[B │ │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-virtual {v2, v8}, Ljava/security/MessageDigest;->update([B)V │ + invoke-virtual {v1, v6}, Ljava/security/MessageDigest;->update([B)V │ │ .line 88 │ - const-string v7, "" │ + const-string v4, "" │ │ .line 89 │ - .local v7, "sig":Ljava/lang/String; │ - const/4 v4, 0x1 │ + .local v4, "sig":Ljava/lang/String; │ + const/4 v3, 0x1 │ │ .line 90 │ - .local v4, "first":Z │ - invoke-virtual {v2}, Ljava/security/MessageDigest;->digest()[B │ + .local v3, "first":Z │ + invoke-virtual {v1}, Ljava/security/MessageDigest;->digest()[B │ │ - move-result-object v0 │ + move-result-object v6 │ │ - .local v0, "arr$":[B │ - array-length v6, v0 │ + array-length v7, v6 │ │ - .local v6, "len$":I │ - const/4 v5, 0x0 │ - │ - .local v5, "i$":I │ :goto_0 │ - if-ge v5, v6, :cond_1 │ + if-ge v5, v7, :cond_1 │ │ - aget-byte v1, v0, v5 │ + aget-byte v0, v6, v5 │ │ .line 91 │ - .local v1, "b":B │ - if-nez v4, :cond_0 │ + .local v0, "b":B │ + if-nez v3, :cond_0 │ │ .line 92 │ new-instance v8, Ljava/lang/StringBuilder; │ │ invoke-direct {v8}, Ljava/lang/StringBuilder;->()V │ │ - invoke-virtual {v8, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, ":" │ │ invoke-virtual {v8, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v7 │ + move-result-object v4 │ │ .line 95 │ :goto_1 │ new-instance v8, Ljava/lang/StringBuilder; │ │ invoke-direct {v8}, Ljava/lang/StringBuilder;->()V │ │ - invoke-virtual {v8, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v8, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v8 │ │ const-string v9, "%02X" │ │ const/4 v10, 0x1 │ │ new-array v10, v10, [Ljava/lang/Object; │ │ const/4 v11, 0x0 │ │ - and-int/lit16 v12, v1, 0xff │ + and-int/lit16 v12, v0, 0xff │ │ invoke-static {v12}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer; │ │ move-result-object v12 │ │ aput-object v12, v10, v11 │ │ @@ -524,232 +521,225 @@ │ │ move-result-object v8 │ │ invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ - move-result-object v7 │ + move-result-object v4 │ │ .line 90 │ add-int/lit8 v5, v5, 0x1 │ │ goto :goto_0 │ │ .line 94 │ :cond_0 │ - const/4 v4, 0x0 │ + const/4 v3, 0x0 │ │ goto :goto_1 │ │ .line 98 │ - .end local v0 # "arr$":[B │ - .end local v1 # "b":B │ - .end local v2 # "digest":Ljava/security/MessageDigest; │ - .end local v4 # "first":Z │ - .end local v5 # "i$":I │ - .end local v6 # "len$":I │ - .end local v7 # "sig":Ljava/lang/String; │ + .end local v0 # "b":B │ + .end local v1 # "digest":Ljava/security/MessageDigest; │ + .end local v3 # "first":Z │ + .end local v4 # "sig":Ljava/lang/String; │ :catch_0 │ - move-exception v3 │ + move-exception v2 │ │ .line 99 │ - .local v3, "e":Ljava/lang/Exception; │ - const-string v8, "cadroid.CertificateInfo" │ + .local v2, "e":Ljava/lang/Exception; │ + const-string v5, "cadroid.CertificateInfo" │ │ - const-string v9, "Couldn\'t calculate certificate digest" │ + const-string v6, "Couldn\'t calculate certificate digest" │ │ - invoke-static {v8, v9, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + invoke-static {v5, v6, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ .line 100 │ - invoke-virtual {v3}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; │ + invoke-virtual {v2}, Ljava/lang/Exception;->getMessage()Ljava/lang/String; │ │ - move-result-object v7 │ + move-result-object v4 │ │ - .end local v3 # "e":Ljava/lang/Exception; │ + .end local v2 # "e":Ljava/lang/Exception; │ :cond_1 │ - return-object v7 │ + return-object v4 │ .end method │ │ .method public getSubjectAltNames()[Ljava/lang/String; │ .locals 8 │ │ .prologue │ .line 60 │ :try_start_0 │ new-instance v0, Ljava/util/LinkedList; │ │ invoke-direct {v0}, Ljava/util/LinkedList;->()V │ │ .line 61 │ .local v0, "altNames":Ljava/util/LinkedList;, "Ljava/util/LinkedList;" │ - iget-object v6, p0, Lat/bitfire/cadroid/CertificateInfo;->certificate:Ljava/security/cert/X509Certificate; │ + iget-object v5, p0, Lat/bitfire/cadroid/CertificateInfo;->certificate:Ljava/security/cert/X509Certificate; │ │ - invoke-virtual {v6}, Ljava/security/cert/X509Certificate;->getSubjectAlternativeNames()Ljava/util/Collection; │ + invoke-virtual {v5}, Ljava/security/cert/X509Certificate;->getSubjectAlternativeNames()Ljava/util/Collection; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - if-eqz v6, :cond_0 │ + if-eqz v5, :cond_0 │ │ .line 62 │ - iget-object v6, p0, Lat/bitfire/cadroid/CertificateInfo;->certificate:Ljava/security/cert/X509Certificate; │ + iget-object v5, p0, Lat/bitfire/cadroid/CertificateInfo;->certificate:Ljava/security/cert/X509Certificate; │ │ - invoke-virtual {v6}, Ljava/security/cert/X509Certificate;->getSubjectAlternativeNames()Ljava/util/Collection; │ + invoke-virtual {v5}, Ljava/security/cert/X509Certificate;->getSubjectAlternativeNames()Ljava/util/Collection; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - invoke-interface {v6}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; │ + invoke-interface {v5}, Ljava/util/Collection;->iterator()Ljava/util/Iterator; │ │ - move-result-object v3 │ + move-result-object v6 │ │ - .local v3, "i$":Ljava/util/Iterator; │ :goto_0 │ - invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z │ + invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z │ │ - move-result v6 │ + move-result v5 │ │ - if-eqz v6, :cond_0 │ + if-eqz v5, :cond_0 │ │ - invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ + invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object; │ │ move-result-object v1 │ │ check-cast v1, Ljava/util/List; │ │ .line 63 │ .local v1, "asn1Name":Ljava/util/List;, "Ljava/util/List<*>;" │ - const/4 v6, 0x0 │ + const/4 v5, 0x0 │ │ - invoke-interface {v1, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; │ + invoke-interface {v1, v5}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - check-cast v6, Ljava/lang/Integer; │ + check-cast v5, Ljava/lang/Integer; │ │ - invoke-virtual {v6}, Ljava/lang/Integer;->intValue()I │ + invoke-virtual {v5}, Ljava/lang/Integer;->intValue()I │ :try_end_0 │ .catch Ljava/security/cert/CertificateParsingException; {:try_start_0 .. :try_end_0} :catch_0 │ │ - move-result v4 │ + move-result v3 │ │ .line 66 │ - .local v4, "type":I │ - const/4 v6, 0x1 │ + .local v3, "type":I │ + const/4 v5, 0x1 │ │ :try_start_1 │ - invoke-interface {v1, v6}, Ljava/util/List;->get(I)Ljava/lang/Object; │ + invoke-interface {v1, v5}, Ljava/util/List;->get(I)Ljava/lang/Object; │ │ - move-result-object v5 │ + move-result-object v4 │ │ - check-cast v5, Ljava/lang/String; │ + check-cast v4, Ljava/lang/String; │ :try_end_1 │ .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 │ .catch Ljava/security/cert/CertificateParsingException; {:try_start_1 .. :try_end_1} :catch_0 │ │ .line 71 │ - .local v5, "value":Ljava/lang/String; │ + .local v4, "value":Ljava/lang/String; │ :goto_1 │ :try_start_2 │ - new-instance v6, Ljava/lang/StringBuilder; │ + new-instance v5, Ljava/lang/StringBuilder; │ │ - invoke-direct {v6}, Ljava/lang/StringBuilder;->()V │ + invoke-direct {v5}, Ljava/lang/StringBuilder;->()V │ │ - invoke-virtual {v6, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v6 │ + move-result-object v5 │ │ const-string v7, " [" │ │ - invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - invoke-virtual {v6, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; │ │ - move-result-object v6 │ + move-result-object v5 │ │ const-string v7, "]" │ │ - invoke-virtual {v6, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ + invoke-virtual {v5, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - invoke-virtual {v6}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ + invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - invoke-virtual {v0, v6}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ + invoke-virtual {v0, v5}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z │ :try_end_2 │ .catch Ljava/security/cert/CertificateParsingException; {:try_start_2 .. :try_end_2} :catch_0 │ │ goto :goto_0 │ │ .line 74 │ .end local v0 # "altNames":Ljava/util/LinkedList;, "Ljava/util/LinkedList;" │ .end local v1 # "asn1Name":Ljava/util/List;, "Ljava/util/List<*>;" │ - .end local v3 # "i$":Ljava/util/Iterator; │ - .end local v4 # "type":I │ - .end local v5 # "value":Ljava/lang/String; │ + .end local v3 # "type":I │ + .end local v4 # "value":Ljava/lang/String; │ :catch_0 │ move-exception v2 │ │ .line 75 │ .local v2, "e":Ljava/security/cert/CertificateParsingException; │ - const-string v6, "cadroid.CertificateInfo" │ + const-string v5, "cadroid.CertificateInfo" │ │ - const-string v7, "Couldn\'t parse Subject Alternative Names from certificate" │ + const-string v6, "Couldn\'t parse Subject Alternative Names from certificate" │ │ - invoke-static {v6, v7, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + invoke-static {v5, v6, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ .line 76 │ - const/4 v6, 0x0 │ + const/4 v5, 0x0 │ │ .end local v2 # "e":Ljava/security/cert/CertificateParsingException; │ :goto_2 │ - return-object v6 │ + return-object v5 │ │ .line 67 │ .restart local v0 # "altNames":Ljava/util/LinkedList;, "Ljava/util/LinkedList;" │ .restart local v1 # "asn1Name":Ljava/util/List;, "Ljava/util/List<*>;" │ - .restart local v3 # "i$":Ljava/util/Iterator; │ - .restart local v4 # "type":I │ + .restart local v3 # "type":I │ :catch_1 │ move-exception v2 │ │ .line 68 │ .local v2, "e":Ljava/lang/Exception; │ :try_start_3 │ - const-string v5, "?" │ + const-string v4, "?" │ │ .line 69 │ - .restart local v5 # "value":Ljava/lang/String; │ - const-string v6, "cadroid.CertificateInfo" │ + .restart local v4 # "value":Ljava/lang/String; │ + const-string v5, "cadroid.CertificateInfo" │ │ const-string v7, "Couldn\'t cast alternative subject name to String" │ │ - invoke-static {v6, v7, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + invoke-static {v5, v7, v2}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ goto :goto_1 │ │ .line 73 │ .end local v1 # "asn1Name":Ljava/util/List;, "Ljava/util/List<*>;" │ .end local v2 # "e":Ljava/lang/Exception; │ - .end local v3 # "i$":Ljava/util/Iterator; │ - .end local v4 # "type":I │ - .end local v5 # "value":Ljava/lang/String; │ + .end local v3 # "type":I │ + .end local v4 # "value":Ljava/lang/String; │ :cond_0 │ - const/4 v6, 0x0 │ + const/4 v5, 0x0 │ │ - new-array v6, v6, [Ljava/lang/String; │ + new-array v5, v5, [Ljava/lang/String; │ │ - invoke-virtual {v0, v6}, Ljava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; │ + invoke-virtual {v0, v5}, Ljava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; │ │ - move-result-object v6 │ + move-result-object v5 │ │ - check-cast v6, [Ljava/lang/String; │ + check-cast v5, [Ljava/lang/String; │ :try_end_3 │ .catch Ljava/security/cert/CertificateParsingException; {:try_start_3 .. :try_end_3} :catch_0 │ │ goto :goto_2 │ .end method │ │ .method public getSubjectName()Ljava/lang/String; ├── smali/at/bitfire/cadroid/ASN1Decoder.smali │ @@ -93,14 +93,15 @@ │ │ const-string v3, " expected, found 0x" │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 │ │ + .line 56 │ invoke-static {v0}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String; │ │ move-result-object v3 │ │ invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; │ │ move-result-object v2 ├── smali/at/bitfire/cadroid/SelectFragment$1.smali │ @@ -26,14 +26,15 @@ │ # instance fields │ .field final synthetic this$0:Lat/bitfire/cadroid/SelectFragment; │ │ │ # direct methods │ .method constructor (Lat/bitfire/cadroid/SelectFragment;Landroid/content/Context;I)V │ .locals 0 │ + .param p1, "this$0" # Lat/bitfire/cadroid/SelectFragment; │ .param p2, "x0" # Landroid/content/Context; │ .param p3, "x1" # I │ │ .prologue │ .line 69 │ iput-object p1, p0, Lat/bitfire/cadroid/SelectFragment$1;->this$0:Lat/bitfire/cadroid/SelectFragment; ├── smali/at/bitfire/cadroid/SelectFragment.smali │ @@ -134,265 +134,240 @@ │ .line 100 │ .end local v0 # "main":Lat/bitfire/cadroid/MainActivity; │ :cond_0 │ return-void │ .end method │ │ .method public onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V │ - .locals 12 │ + .locals 11 │ .param p1, "view" # Landroid/view/View; │ .param p2, "savedInstanceState" # Landroid/os/Bundle; │ │ .prologue │ + const/4 v10, 0x0 │ + │ + const/4 v6, 0x0 │ + │ .line 37 │ invoke-super {p0, p1, p2}, Landroid/app/ListFragment;->onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V │ │ .line 39 │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getActivity()Landroid/app/Activity; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - check-cast v8, Lat/bitfire/cadroid/MainActivity; │ + check-cast v5, Lat/bitfire/cadroid/MainActivity; │ │ - invoke-virtual {v8}, Lat/bitfire/cadroid/MainActivity;->getConnectionInfo()Lat/bitfire/cadroid/ConnectionInfo; │ + invoke-virtual {v5}, Lat/bitfire/cadroid/MainActivity;->getConnectionInfo()Lat/bitfire/cadroid/ConnectionInfo; │ │ - move-result-object v3 │ + move-result-object v2 │ │ .line 42 │ - .local v3, "connectionInfo":Lat/bitfire/cadroid/ConnectionInfo; │ - const/4 v8, 0x1 │ + .local v2, "connectionInfo":Lat/bitfire/cadroid/ConnectionInfo; │ + const/4 v5, 0x1 │ │ - iput-boolean v8, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ + iput-boolean v5, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ │ .line 45 │ - invoke-virtual {v3}, Lat/bitfire/cadroid/ConnectionInfo;->isHostNameMatching()Z │ + invoke-virtual {v2}, Lat/bitfire/cadroid/ConnectionInfo;->isHostNameMatching()Z │ │ - move-result v8 │ + move-result v5 │ │ - if-nez v8, :cond_2 │ + if-nez v5, :cond_2 │ │ .line 46 │ - const/4 v8, 0x0 │ - │ - iput-boolean v8, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ + iput-boolean v6, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ │ .line 47 │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getListView()Landroid/widget/ListView; │ │ - move-result-object v8 │ + move-result-object v5 │ │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getActivity()Landroid/app/Activity; │ │ - move-result-object v9 │ - │ - invoke-virtual {v9}, Landroid/app/Activity;->getLayoutInflater()Landroid/view/LayoutInflater; │ - │ - move-result-object v9 │ + move-result-object v7 │ │ - const v10, 0x7f030009 │ + invoke-virtual {v7}, Landroid/app/Activity;->getLayoutInflater()Landroid/view/LayoutInflater; │ │ - const/4 v11, 0x0 │ + move-result-object v7 │ │ - invoke-virtual {v9, v10, v11}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; │ + const v8, 0x7f030009 │ │ - move-result-object v9 │ + invoke-virtual {v7, v8, v10}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; │ │ - const/4 v10, 0x0 │ - │ - const/4 v11, 0x0 │ + move-result-object v7 │ │ - invoke-virtual {v8, v9, v10, v11}, Landroid/widget/ListView;->addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V │ + invoke-virtual {v5, v7, v10, v6}, Landroid/widget/ListView;->addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V │ │ .line 60 │ :cond_0 │ :goto_0 │ - iget-boolean v8, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ + iget-boolean v5, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ │ - if-eqz v8, :cond_1 │ + if-eqz v5, :cond_1 │ │ .line 61 │ - new-instance v7, Landroid/widget/TextView; │ + new-instance v4, Landroid/widget/TextView; │ │ invoke-virtual {p1}, Landroid/view/View;->getContext()Landroid/content/Context; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - invoke-direct {v7, v8}, Landroid/widget/TextView;->(Landroid/content/Context;)V │ + invoke-direct {v4, v5}, Landroid/widget/TextView;->(Landroid/content/Context;)V │ │ .line 62 │ - .local v7, "tv":Landroid/widget/TextView; │ - const/4 v8, 0x2 │ + .local v4, "tv":Landroid/widget/TextView; │ + const/4 v5, 0x2 │ │ - const/high16 v9, 0x41a00000 # 20.0f │ + const/high16 v7, 0x41a00000 # 20.0f │ │ - invoke-virtual {v7, v8, v9}, Landroid/widget/TextView;->setTextSize(IF)V │ + invoke-virtual {v4, v5, v7}, Landroid/widget/TextView;->setTextSize(IF)V │ │ .line 63 │ - const v8, 0x7f05001b │ + const v5, 0x7f05001b │ │ - invoke-virtual {v7, v8}, Landroid/widget/TextView;->setText(I)V │ + invoke-virtual {v4, v5}, Landroid/widget/TextView;->setText(I)V │ │ .line 64 │ - const/4 v8, 0x0 │ - │ - const/4 v9, 0x0 │ - │ - const/4 v10, 0x0 │ + const/16 v5, 0xa │ │ - const/16 v11, 0xa │ - │ - invoke-virtual {v7, v8, v9, v10, v11}, Landroid/widget/TextView;->setPadding(IIII)V │ + invoke-virtual {v4, v6, v6, v6, v5}, Landroid/widget/TextView;->setPadding(IIII)V │ │ .line 65 │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getListView()Landroid/widget/ListView; │ │ - move-result-object v8 │ - │ - const/4 v9, 0x0 │ + move-result-object v5 │ │ - const/4 v10, 0x0 │ - │ - invoke-virtual {v8, v7, v9, v10}, Landroid/widget/ListView;->addHeaderView(Landroid/view/View;Ljava/lang/Object;Z)V │ + invoke-virtual {v5, v4, v10, v6}, Landroid/widget/ListView;->addHeaderView(Landroid/view/View;Ljava/lang/Object;Z)V │ │ .line 69 │ - .end local v7 # "tv":Landroid/widget/TextView; │ + .end local v4 # "tv":Landroid/widget/TextView; │ :cond_1 │ new-instance v0, Lat/bitfire/cadroid/SelectFragment$1; │ │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getListView()Landroid/widget/ListView; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - invoke-virtual {v8}, Landroid/widget/ListView;->getContext()Landroid/content/Context; │ + invoke-virtual {v5}, Landroid/widget/ListView;->getContext()Landroid/content/Context; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - const v9, 0x1090003 │ + const v7, 0x1090003 │ │ - invoke-direct {v0, p0, v8, v9}, Lat/bitfire/cadroid/SelectFragment$1;->(Lat/bitfire/cadroid/SelectFragment;Landroid/content/Context;I)V │ + invoke-direct {v0, p0, v5, v7}, Lat/bitfire/cadroid/SelectFragment$1;->(Lat/bitfire/cadroid/SelectFragment;Landroid/content/Context;I)V │ │ .line 82 │ .local v0, "adapter":Landroid/widget/ArrayAdapter;, "Landroid/widget/ArrayAdapter;" │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getActivity()Landroid/app/Activity; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - check-cast v8, Lat/bitfire/cadroid/MainActivity; │ + check-cast v5, Lat/bitfire/cadroid/MainActivity; │ │ - invoke-virtual {v8}, Lat/bitfire/cadroid/MainActivity;->getConnectionInfo()Lat/bitfire/cadroid/ConnectionInfo; │ + invoke-virtual {v5}, Lat/bitfire/cadroid/MainActivity;->getConnectionInfo()Lat/bitfire/cadroid/ConnectionInfo; │ │ - move-result-object v8 │ + move-result-object v5 │ │ - invoke-virtual {v8}, Lat/bitfire/cadroid/ConnectionInfo;->getCertificates()[Ljava/security/cert/X509Certificate; │ + invoke-virtual {v5}, Lat/bitfire/cadroid/ConnectionInfo;->getCertificates()[Ljava/security/cert/X509Certificate; │ │ - move-result-object v1 │ + move-result-object v7 │ │ - .local v1, "arr$":[Ljava/security/cert/X509Certificate; │ - array-length v6, v1 │ + array-length v8, v7 │ │ - .local v6, "len$":I │ - const/4 v5, 0x0 │ + move v5, v6 │ │ - .local v5, "i$":I │ :goto_1 │ - if-ge v5, v6, :cond_3 │ + if-ge v5, v8, :cond_3 │ │ - aget-object v2, v1, v5 │ + aget-object v1, v7, v5 │ │ .line 83 │ - .local v2, "cert":Ljava/security/cert/X509Certificate; │ - new-instance v8, Lat/bitfire/cadroid/CertificateInfo; │ + .local v1, "cert":Ljava/security/cert/X509Certificate; │ + new-instance v6, Lat/bitfire/cadroid/CertificateInfo; │ │ - invoke-direct {v8, v2}, Lat/bitfire/cadroid/CertificateInfo;->(Ljava/security/cert/X509Certificate;)V │ + invoke-direct {v6, v1}, Lat/bitfire/cadroid/CertificateInfo;->(Ljava/security/cert/X509Certificate;)V │ │ - invoke-virtual {v8}, Lat/bitfire/cadroid/CertificateInfo;->getSubjectName()Ljava/lang/String; │ + invoke-virtual {v6}, Lat/bitfire/cadroid/CertificateInfo;->getSubjectName()Ljava/lang/String; │ │ - move-result-object v8 │ + move-result-object v6 │ │ - invoke-virtual {v0, v8}, Landroid/widget/ArrayAdapter;->add(Ljava/lang/Object;)V │ + invoke-virtual {v0, v6}, Landroid/widget/ArrayAdapter;->add(Ljava/lang/Object;)V │ │ .line 82 │ add-int/lit8 v5, v5, 0x1 │ │ goto :goto_1 │ │ .line 50 │ .end local v0 # "adapter":Landroid/widget/ArrayAdapter;, "Landroid/widget/ArrayAdapter;" │ - .end local v1 # "arr$":[Ljava/security/cert/X509Certificate; │ - .end local v2 # "cert":Ljava/security/cert/X509Certificate; │ - .end local v5 # "i$":I │ - .end local v6 # "len$":I │ + .end local v1 # "cert":Ljava/security/cert/X509Certificate; │ :cond_2 │ :try_start_0 │ - invoke-virtual {v3}, Lat/bitfire/cadroid/ConnectionInfo;->isTrusted()Z │ + invoke-virtual {v2}, Lat/bitfire/cadroid/ConnectionInfo;->isTrusted()Z │ │ - move-result v8 │ + move-result v5 │ │ - if-eqz v8, :cond_0 │ + if-eqz v5, :cond_0 │ │ .line 51 │ - const/4 v8, 0x0 │ + const/4 v5, 0x0 │ │ - iput-boolean v8, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ + iput-boolean v5, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ │ .line 52 │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getListView()Landroid/widget/ListView; │ │ - move-result-object v8 │ + move-result-object v5 │ │ invoke-virtual {p0}, Lat/bitfire/cadroid/SelectFragment;->getActivity()Landroid/app/Activity; │ │ - move-result-object v9 │ + move-result-object v7 │ │ - invoke-virtual {v9}, Landroid/app/Activity;->getLayoutInflater()Landroid/view/LayoutInflater; │ + invoke-virtual {v7}, Landroid/app/Activity;->getLayoutInflater()Landroid/view/LayoutInflater; │ │ - move-result-object v9 │ + move-result-object v7 │ │ - const v10, 0x7f030008 │ + const v8, 0x7f030008 │ │ - const/4 v11, 0x0 │ + const/4 v9, 0x0 │ │ - invoke-virtual {v9, v10, v11}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; │ + invoke-virtual {v7, v8, v9}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; │ │ - move-result-object v9 │ + move-result-object v7 │ │ - const/4 v10, 0x0 │ + const/4 v8, 0x0 │ │ - const/4 v11, 0x0 │ + const/4 v9, 0x0 │ │ - invoke-virtual {v8, v9, v10, v11}, Landroid/widget/ListView;->addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V │ + invoke-virtual {v5, v7, v8, v9}, Landroid/widget/ListView;->addFooterView(Landroid/view/View;Ljava/lang/Object;Z)V │ :try_end_0 │ .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 │ │ goto :goto_0 │ │ .line 54 │ :catch_0 │ - move-exception v4 │ + move-exception v3 │ │ .line 55 │ - .local v4, "e":Ljava/lang/Exception; │ - const-string v8, "cadroid.Select" │ + .local v3, "e":Ljava/lang/Exception; │ + const-string v5, "cadroid.Select" │ │ - const-string v9, "Couldn\'t determine trust status of certificate" │ + const-string v7, "Couldn\'t determine trust status of certificate" │ │ - invoke-static {v8, v9, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ + invoke-static {v5, v7, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I │ │ .line 56 │ - const/4 v8, 0x0 │ - │ - iput-boolean v8, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ + iput-boolean v6, p0, Lat/bitfire/cadroid/SelectFragment;->mayContinue:Z │ │ goto/16 :goto_0 │ │ .line 84 │ - .end local v4 # "e":Ljava/lang/Exception; │ + .end local v3 # "e":Ljava/lang/Exception; │ .restart local v0 # "adapter":Landroid/widget/ArrayAdapter;, "Landroid/widget/ArrayAdapter;" │ - .restart local v1 # "arr$":[Ljava/security/cert/X509Certificate; │ - .restart local v5 # "i$":I │ - .restart local v6 # "len$":I │ :cond_3 │ invoke-virtual {p0, v0}, Lat/bitfire/cadroid/SelectFragment;->setListAdapter(Landroid/widget/ListAdapter;)V │ │ .line 85 │ return-void │ .end method