BIMI: added option to require valid VMC

master
M66B 4 days ago
parent 148fa30a5d
commit ccbea18943

@ -20,12 +20,15 @@ package eu.faircode.email;
*/
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.text.TextUtils;
import android.util.Pair;
import androidx.preference.PreferenceManager;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.ASN1TaggedObject;
import org.bouncycastle.asn1.DERIA5String;
@ -366,8 +369,13 @@ public class Bimi {
}
}
if (bitmap != null && !verified)
if (bitmap != null && !verified) {
Log.i("BIMI unverified");
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean bimi_vmc = prefs.getBoolean("bimi_vmc", false);
if (bimi_vmc)
bitmap = null;
}
return (bitmap == null ? null : new Pair<>(bitmap, verified));
}

@ -118,6 +118,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
private TextView tvBimiHint;
private TextView tvBimiUnverified;
private SwitchCompat swBimi;
private SwitchCompat swBimiVmc;
private SwitchCompat swGravatars;
private TextView tvGravatarPrivacy;
private SwitchCompat swLibravatars;
@ -216,7 +217,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
"hide_toolbar", "edge_to_edge", "nav_options", "nav_categories", "nav_last_sync", "nav_count", "nav_unseen_drafts", "nav_count_pinned", "show_unexposed",
"threading", "threading_unread", "indentation", "seekbar", "actionbar", "actionbar_swap", "actionbar_color",
"highlight_unread", "highlight_color", "color_stripe", "color_stripe_wide",
"avatars", "bimi", "gravatars", "libravatars", "favicons", "favicons_partial", "favicons_manifest", "generated_icons", "identicons",
"avatars", "bimi", "bimi_vmc", "gravatars", "libravatars", "favicons", "favicons_partial", "favicons_manifest", "generated_icons", "identicons",
"circular", "saturation", "brightness", "threshold",
"email_format", "prefer_contact", "only_contact", "distinguish_contacts", "show_recipients", "reverse_addresses",
"font_size_sender", "sender_ellipsize",
@ -293,6 +294,7 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
swColorStripeWide = view.findViewById(R.id.swColorStripeWide);
swAvatars = view.findViewById(R.id.swAvatars);
swBimi = view.findViewById(R.id.swBimi);
swBimiVmc = view.findViewById(R.id.swBimiVmc);
tvBimiHint = view.findViewById(R.id.tvBimiHint);
tvBimiUnverified = view.findViewById(R.id.tvBimiUnverified);
ibBimi = view.findViewById(R.id.ibBimi);
@ -820,6 +822,15 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("bimi", checked).apply();
swBimiVmc.setEnabled(checked);
ContactInfo.clearCache(compoundButton.getContext());
}
});
swBimiVmc.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
prefs.edit().putBoolean("bimi_vmc", checked).apply();
ContactInfo.clearCache(compoundButton.getContext());
}
});
@ -1595,6 +1606,8 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer
//swColorStripeWide.setEnabled(swColorStripe.isChecked());
swAvatars.setChecked(prefs.getBoolean("avatars", true));
swBimi.setChecked(prefs.getBoolean("bimi", false));
swBimiVmc.setChecked(prefs.getBoolean("bimi_vmc", false));
swBimiVmc.setEnabled(swBimi.isChecked());
swGravatars.setChecked(prefs.getBoolean("gravatars", false));
swLibravatars.setChecked(prefs.getBoolean("libravatars", false));
swFavicons.setChecked(prefs.getBoolean("favicons", false));

@ -927,6 +927,19 @@
app:layout_constraintTop_toBottomOf="@id/swAvatars"
app:switchPadding="12dp" />
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/swBimiVmc"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="12dp"
android:tag="nosuggest"
android:text="@string/title_advanced_bimi_vmc"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swBimi"
app:switchPadding="12dp" />
<TextView
android:id="@+id/tvBimiHint"
android:layout_width="wrap_content"
@ -941,7 +954,7 @@
android:textColor="?attr/colorWarning"
app:drawableTint="?attr/colorWarning"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/swBimi" />
app:layout_constraintTop_toBottomOf="@id/swBimiVmc" />
<TextView
android:id="@+id/tvBimiUnverified"
@ -1688,7 +1701,7 @@
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="
swBimi,tvBimiHint,tvBimiVerified,ibBimi,
swBimi,swBimiVmc,BtvBimiHint,tvBimiVerified,ibBimi,
swGravatars,tvGravatarsHint,tvGravatarPrivacy,
swLibravatars,tvLibravatarsHint,tvLibravatarPrivacy" />
</androidx.constraintlayout.widget.ConstraintLayout>

@ -609,7 +609,8 @@
<string name="title_advanced_color_stripe">Show color stripe</string>
<string name="title_advanced_color_stripe_wide">Use wide color stripe</string>
<string name="title_advanced_avatars">Show contact photos</string>
<string name="title_advanced_bimi" translatable="false">Show Brand Indicators for Message Identification (BIMI)</string>
<string name="title_advanced_bimi">Show Brand Indicators for Message Identification (BIMI)</string>
<string name="title_advanced_bimi_vmc">Require a valid VMC certificate</string>
<string name="title_advanced_bimi_unverified">Unverified sender</string>
<string name="title_advanced_bimi_verified">Verified sender</string>
<string name="title_advanced_gravatars">Show Gravatars</string>

Loading…
Cancel
Save