diff options
author | Parménides GV <parmegv@sdf.org> | 2015-06-08 19:56:43 +0200 |
---|---|---|
committer | Parménides GV <parmegv@sdf.org> | 2015-06-08 20:04:03 +0200 |
commit | b0a0805ab81aaa4e204ecfc77d3a6a7f7ed66b2f (patch) | |
tree | 7ebeb40d0c74a8c431b7845e403cb1add5e63be4 /app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java | |
parent | 8d39fbdb4980c95268249f21f3c6b8e36b22cf90 (diff) |
s/buildtype/flavor, changed riseup's pin
Riseup's EE certificate expired (EE = End-Entity, the commercial
certificate signed by the issuer), and we weren't able to fetch
provider.json because the pin wasn't valid.
This problem needs to be avoided in the future, using
HKPK (https://tools.ietf.org/html/rfc7469), which Micah's implementing
on Riseup.
Switching from build types from flavors enables us to run tests against
production apk, not just debug. I didn't detect this pinning problem
because tests were run only against the debug apk, which trusted
preseeded providers by default (thus bypassing pinning issue).
Diffstat (limited to 'app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java')
-rw-r--r-- | app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java b/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java new file mode 100644 index 00000000..6466e769 --- /dev/null +++ b/app/src/production/java/se/leap/bitmaskclient/ProviderListContent.java @@ -0,0 +1,81 @@ +/** + * Copyright (c) 2013 LEAP Encryption Access Project and contributers + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package se.leap.bitmaskclient; + +import java.util.*; +import java.net.*; + +/** + * Models the provider list shown in the ConfigurationWizard. + * + * @author parmegv + */ +public class ProviderListContent { + + public static List<ProviderItem> ITEMS = new ArrayList<ProviderItem>(); + + public static Map<String, ProviderItem> ITEM_MAP = new HashMap<String, ProviderItem>(); + + /** + * Adds a new provider item to the end of the items map, and to the items list. + * + * @param item + */ + public static void addItem(ProviderItem item) { + ITEMS.add(item); + ITEM_MAP.put(String.valueOf(ITEMS.size()), item); + } + + public static void removeItem(ProviderItem item) { + ITEMS.remove(item); + ITEM_MAP.remove(item); + } + + /** + * A provider item. + */ + public static class ProviderItem { + final public static String CUSTOM = "custom"; + private String provider_main_url; + private String name; + + /** + * @param name of the provider + * @param provider_main_url used to download provider.json file of the provider + */ + public ProviderItem(String name, String provider_main_url) { + this.name = name; + this.provider_main_url = provider_main_url; + } + + public String name() { + return name; + } + + public String providerMainUrl() { + return provider_main_url; + } + + public String domain() { + try { + return new URL(provider_main_url).getHost(); + } catch (MalformedURLException e) { + return provider_main_url.replaceFirst("http[s]?://", "").replaceFirst("/.*", ""); + } + } + } +} |