src/share/classes/java/security/Signature.java

Print this page




 231             if (isSpi(s)) {
 232                 return new Delegate(s, t, algorithm);
 233             } else {
 234                 // must be a subclass of Signature, disable dynamic selection
 235                 try {
 236                     Instance instance =
 237                         GetInstance.getInstance(s, SignatureSpi.class);
 238                     return getInstance(instance, algorithm);
 239                 } catch (NoSuchAlgorithmException e) {
 240                     failure = e;
 241                 }
 242             }
 243         } while (t.hasNext());
 244         throw failure;
 245     }
 246 
 247     private static Signature getInstance(Instance instance, String algorithm) {
 248         Signature sig;
 249         if (instance.impl instanceof Signature) {
 250             sig = (Signature)instance.impl;

 251         } else {
 252             SignatureSpi spi = (SignatureSpi)instance.impl;
 253             sig = new Delegate(spi, algorithm);
 254         }
 255         sig.provider = instance.provider;
 256         return sig;
 257     }
 258 
 259     private final static Map<String,Boolean> signatureInfo;
 260 
 261     static {
 262         signatureInfo = new ConcurrentHashMap<String,Boolean>();
 263         Boolean TRUE = Boolean.TRUE;
 264         // pre-initialize with values for our SignatureSpi implementations
 265         signatureInfo.put("sun.security.provider.DSA$RawDSA", TRUE);
 266         signatureInfo.put("sun.security.provider.DSA$SHA1withDSA", TRUE);
 267         signatureInfo.put("sun.security.rsa.RSASignature$MD2withRSA", TRUE);
 268         signatureInfo.put("sun.security.rsa.RSASignature$MD5withRSA", TRUE);
 269         signatureInfo.put("sun.security.rsa.RSASignature$SHA1withRSA", TRUE);
 270         signatureInfo.put("sun.security.rsa.RSASignature$SHA256withRSA", TRUE);




 231             if (isSpi(s)) {
 232                 return new Delegate(s, t, algorithm);
 233             } else {
 234                 // must be a subclass of Signature, disable dynamic selection
 235                 try {
 236                     Instance instance =
 237                         GetInstance.getInstance(s, SignatureSpi.class);
 238                     return getInstance(instance, algorithm);
 239                 } catch (NoSuchAlgorithmException e) {
 240                     failure = e;
 241                 }
 242             }
 243         } while (t.hasNext());
 244         throw failure;
 245     }
 246 
 247     private static Signature getInstance(Instance instance, String algorithm) {
 248         Signature sig;
 249         if (instance.impl instanceof Signature) {
 250             sig = (Signature)instance.impl;
 251             sig.algorithm = algorithm;
 252         } else {
 253             SignatureSpi spi = (SignatureSpi)instance.impl;
 254             sig = new Delegate(spi, algorithm);
 255         }
 256         sig.provider = instance.provider;
 257         return sig;
 258     }
 259 
 260     private final static Map<String,Boolean> signatureInfo;
 261 
 262     static {
 263         signatureInfo = new ConcurrentHashMap<String,Boolean>();
 264         Boolean TRUE = Boolean.TRUE;
 265         // pre-initialize with values for our SignatureSpi implementations
 266         signatureInfo.put("sun.security.provider.DSA$RawDSA", TRUE);
 267         signatureInfo.put("sun.security.provider.DSA$SHA1withDSA", TRUE);
 268         signatureInfo.put("sun.security.rsa.RSASignature$MD2withRSA", TRUE);
 269         signatureInfo.put("sun.security.rsa.RSASignature$MD5withRSA", TRUE);
 270         signatureInfo.put("sun.security.rsa.RSASignature$SHA1withRSA", TRUE);
 271         signatureInfo.put("sun.security.rsa.RSASignature$SHA256withRSA", TRUE);