diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 7401d8b09f..4af04df543 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -869,6 +869,26 @@ public class Helper { return true; } + static boolean isSingleScript(String s) { + // https://en.wikipedia.org/wiki/IDN_homograph_attack + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) + return true; + + Character.UnicodeScript script = null; + for (int i = 0; i < s.length(); ) { + int codepoint = s.codePointAt(i); + i += Character.charCount(codepoint); + Character.UnicodeScript us = Character.UnicodeScript.of(codepoint); + if (us.equals(Character.UnicodeScript.COMMON)) + continue; + if (script == null) + script = us; + else if (!us.equals(script)) + return false; + } + return true; + } + // Files static String sanitizeFilename(String name) {