Home | History | Annotate | Download | only in provider
      1 package org.bouncycastle.jce.provider;
      2 
      3 import org.bouncycastle.jce.ProviderConfigurationPermission;
      4 // BEGIN android-removed
      5 // import org.bouncycastle.jce.provider.asymmetric.ec.EC5Util;
      6 // END android-removed
      7 import org.bouncycastle.jce.interfaces.ConfigurableProvider;
      8 // BEGIN android-removed
      9 // import org.bouncycastle.jce.spec.ECParameterSpec;
     10 // END android-removed
     11 
     12 import java.io.ByteArrayInputStream;
     13 import java.io.IOException;
     14 import java.io.InputStream;
     15 import java.security.Permission;
     16 
     17 public class ProviderUtil
     18 {
     19     private static final long  MAX_MEMORY = Runtime.getRuntime().maxMemory();
     20 
     21     private static Permission BC_EC_LOCAL_PERMISSION = new ProviderConfigurationPermission(
     22                                                    "BC", ConfigurableProvider.THREAD_LOCAL_EC_IMPLICITLY_CA);
     23     private static Permission BC_EC_PERMISSION = new ProviderConfigurationPermission(
     24                                                    "BC", ConfigurableProvider.EC_IMPLICITLY_CA);
     25 
     26     private static ThreadLocal threadSpec = new ThreadLocal();
     27     // BEGIN android-removed
     28     // private static volatile ECParameterSpec ecImplicitCaParams;
     29     // END android-removed
     30 
     31     static void setParameter(String parameterName, Object parameter)
     32     {
     33         SecurityManager securityManager = System.getSecurityManager();
     34 
     35         // BEGIN android-removed
     36         // if (parameterName.equals(ConfigurableProvider.THREAD_LOCAL_EC_IMPLICITLY_CA))
     37         // {
     38         //     ECParameterSpec curveSpec;
     39         //
     40         //     if (securityManager != null)
     41         //     {
     42         //         securityManager.checkPermission(BC_EC_LOCAL_PERMISSION);
     43         //     }
     44         //
     45         //     if (parameter instanceof ECParameterSpec || parameter == null)
     46         //     {
     47         //         curveSpec = (ECParameterSpec)parameter;
     48         //     }
     49         //     else  // assume java.security.spec
     50         //     {
     51         //         curveSpec = EC5Util.convertSpec((java.security.spec.ECParameterSpec)parameter, false);
     52         //     }
     53         //
     54         //     if (curveSpec == null)
     55         //     {
     56         //         threadSpec.remove();
     57         //     }
     58         //     else
     59         //     {
     60         //         threadSpec.set(curveSpec);
     61         //     }
     62         // }
     63         // else if (parameterName.equals(ConfigurableProvider.EC_IMPLICITLY_CA))
     64         // {
     65         //     if (securityManager != null)
     66         //     {
     67         //         securityManager.checkPermission(BC_EC_PERMISSION);
     68         //     }
     69         //
     70         //     if (parameter instanceof ECParameterSpec || parameter == null)
     71         //     {
     72         //         ecImplicitCaParams = (ECParameterSpec)parameter;
     73         //     }
     74         //     else  // assume java.security.spec
     75         //     {
     76         //         ecImplicitCaParams = EC5Util.convertSpec((java.security.spec.ECParameterSpec)parameter, false);
     77         //     }
     78         // }
     79         // END android-removed
     80     }
     81 
     82     // BEGIN android-removed
     83     // public static ECParameterSpec getEcImplicitlyCa()
     84     // {
     85     //     ECParameterSpec spec = (ECParameterSpec)threadSpec.get();
     86     //
     87     //     if (spec != null)
     88     //     {
     89     //         return spec;
     90     //     }
     91     //
     92     //     return ecImplicitCaParams;
     93     // }
     94     // END android-removed
     95 
     96     static int getReadLimit(InputStream in)
     97         throws IOException
     98     {
     99         if (in instanceof ByteArrayInputStream)
    100         {
    101             return in.available();
    102         }
    103 
    104         if (MAX_MEMORY > Integer.MAX_VALUE)
    105         {
    106             return Integer.MAX_VALUE;
    107         }
    108 
    109         return (int)MAX_MEMORY;
    110     }
    111 }
    112