summaryrefslogtreecommitdiff
path: root/repackaged_platform/bcprov/src/main/java/com/android/internal/org/bouncycastle/util/Properties.java
diff options
context:
space:
mode:
Diffstat (limited to 'repackaged_platform/bcprov/src/main/java/com/android/internal/org/bouncycastle/util/Properties.java')
-rw-r--r--repackaged_platform/bcprov/src/main/java/com/android/internal/org/bouncycastle/util/Properties.java209
1 files changed, 209 insertions, 0 deletions
diff --git a/repackaged_platform/bcprov/src/main/java/com/android/internal/org/bouncycastle/util/Properties.java b/repackaged_platform/bcprov/src/main/java/com/android/internal/org/bouncycastle/util/Properties.java
new file mode 100644
index 00000000..4817548e
--- /dev/null
+++ b/repackaged_platform/bcprov/src/main/java/com/android/internal/org/bouncycastle/util/Properties.java
@@ -0,0 +1,209 @@
+/* GENERATED SOURCE. DO NOT MODIFY. */
+package com.android.internal.org.bouncycastle.util;
+
+import java.math.BigInteger;
+import java.security.AccessControlException;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.Security;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+/**
+ * Utility method for accessing system properties.
+ * @hide This class is not part of the Android public SDK API
+ */
+public class Properties
+{
+ private Properties()
+ {
+ }
+
+ private static final ThreadLocal threadProperties = new ThreadLocal();
+
+ /**
+ * Return whether a particular override has been set to true.
+ *
+ * @param propertyName the property name for the override.
+ * @return true if the property is set to "true", false otherwise.
+ */
+ public static boolean isOverrideSet(String propertyName)
+ {
+ try
+ {
+ return isSetTrue(getPropertyValue(propertyName));
+ }
+ catch (AccessControlException e)
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Return whether a particular override has been set to false.
+ *
+ * @param propertyName the property name for the override.
+ * @param isTrue true if the override should be true, false otherwise.
+ * @return true if the property is set to the value of isTrue, false otherwise.
+ */
+ public static boolean isOverrideSetTo(String propertyName, boolean isTrue)
+ {
+ try
+ {
+ String propertyValue = getPropertyValue(propertyName);
+ if (isTrue)
+ {
+ return isSetTrue(propertyValue);
+ }
+ return isSetFalse(propertyValue);
+ }
+ catch (AccessControlException e)
+ {
+ return false;
+ }
+ }
+
+ /**
+ * Enable the specified override property for the current thread only.
+ *
+ * @param propertyName the property name for the override.
+ * @param enable true if the override should be enabled, false if it should be disabled.
+ * @return true if the override was already set true, false otherwise.
+ */
+ public static boolean setThreadOverride(String propertyName, boolean enable)
+ {
+ boolean isSet = isOverrideSet(propertyName);
+
+ Map localProps = (Map)threadProperties.get();
+ if (localProps == null)
+ {
+ localProps = new HashMap();
+
+ threadProperties.set(localProps);
+ }
+
+ localProps.put(propertyName, enable ? "true" : "false");
+
+ return isSet;
+ }
+
+ /**
+ * Remove any value for the specified override property for the current thread only.
+ *
+ * @param propertyName the property name for the override.
+ * @return true if the override was already set true in thread local, false otherwise.
+ */
+ public static boolean removeThreadOverride(String propertyName)
+ {
+ Map localProps = (Map)threadProperties.get();
+ if (localProps != null)
+ {
+ String p = (String)localProps.remove(propertyName);
+ if (p != null)
+ {
+ if (localProps.isEmpty())
+ {
+ threadProperties.remove();
+ }
+
+ return "true".equals(Strings.toLowerCase(p));
+ }
+ }
+
+ return false;
+ }
+
+ public static BigInteger asBigInteger(String propertyName)
+ {
+ String p = getPropertyValue(propertyName);
+
+ if (p != null)
+ {
+ return new BigInteger(p);
+ }
+
+ return null;
+ }
+
+ public static Set<String> asKeySet(String propertyName)
+ {
+ Set<String> set = new HashSet<String>();
+
+ String p = getPropertyValue(propertyName);
+
+ if (p != null)
+ {
+ StringTokenizer sTok = new StringTokenizer(p, ",");
+ while (sTok.hasMoreElements())
+ {
+ set.add(Strings.toLowerCase(sTok.nextToken()).trim());
+ }
+ }
+
+ return Collections.unmodifiableSet(set);
+ }
+
+ public static String getPropertyValue(final String propertyName)
+ {
+ String val = (String)AccessController.doPrivileged(new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return Security.getProperty(propertyName);
+ }
+ });
+ if (val != null)
+ {
+ return val;
+ }
+
+ Map localProps = (Map)threadProperties.get();
+ if (localProps != null)
+ {
+ String p = (String)localProps.get(propertyName);
+ if (p != null)
+ {
+ return p;
+ }
+ }
+
+ return (String)AccessController.doPrivileged(new PrivilegedAction()
+ {
+ public Object run()
+ {
+ return System.getProperty(propertyName);
+ }
+ });
+ }
+
+ private static boolean isSetFalse(String p)
+ {
+ if (p == null || p.length() != 5)
+ {
+ return false;
+ }
+
+ return (p.charAt(0) == 'f' || p.charAt(0) == 'F')
+ && (p.charAt(1) == 'a' || p.charAt(1) == 'A')
+ && (p.charAt(2) == 'l' || p.charAt(2) == 'L')
+ && (p.charAt(3) == 's' || p.charAt(3) == 'S')
+ && (p.charAt(4) == 'e' || p.charAt(4) == 'E');
+ }
+
+ private static boolean isSetTrue(String p)
+ {
+ if (p == null || p.length() != 4)
+ {
+ return false;
+ }
+
+ return (p.charAt(0) == 't' || p.charAt(0) == 'T')
+ && (p.charAt(1) == 'r' || p.charAt(1) == 'R')
+ && (p.charAt(2) == 'u' || p.charAt(2) == 'U')
+ && (p.charAt(3) == 'e' || p.charAt(3) == 'E');
+ }
+}