@Override public void engineLoad(KeyStore.LoadStoreParameter param) throws IOException, NoSuchAlgorithmException, CertificateException { if (param instanceof DomainLoadStoreParameter) { DomainLoadStoreParameter domainParameter = (DomainLoadStoreParameter) param; List<KeyStoreBuilderComponents> builders = getBuilders(domainParameter.getConfiguration(), domainParameter.getProtectionParams()); for (KeyStoreBuilderComponents builder : builders) { try { // Load the keystores (file-based and non-file-based) if (builder.file != null) { keystores.put( builder.name, KeyStore.Builder.newInstance( builder.type, builder.provider, builder.file, builder.protection) .getKeyStore()); } else { keystores.put( builder.name, KeyStore.Builder.newInstance(builder.type, builder.provider, builder.protection) .getKeyStore()); } } catch (KeyStoreException e) { throw new IOException(e); } } } else { throw new UnsupportedOperationException( "This keystore must be loaded using a " + "DomainLoadStoreParameter"); } }
/** * Loads the keystore from the given input stream. * * <p>If a password is given, it is used to check the integrity of the keystore data. Otherwise, * the integrity of the keystore is not checked. * * @param stream the input stream from which the keystore is loaded * @param password the (optional) password used to check the integrity of the keystore. * @exception IOException if there is an I/O or format problem with the keystore data * @exception NoSuchAlgorithmException if the algorithm used to check the integrity of the * keystore cannot be found * @exception CertificateException if any of the certificates in the keystore could not be loaded */ public void engineLoad(InputStream stream, char[] password) throws IOException, NoSuchAlgorithmException, CertificateException { // Support loading from a stream only for a JKS or default type keystore try { KeyStore keystore = null; try { keystore = KeyStore.getInstance("JKS"); keystore.load(stream, password); } catch (Exception e) { // Retry if (!"JKS".equalsIgnoreCase(DEFAULT_KEYSTORE_TYPE)) { keystore = KeyStore.getInstance(DEFAULT_KEYSTORE_TYPE); keystore.load(stream, password); } else { throw e; } } String keystoreName = DEFAULT_STREAM_PREFIX + streamCounter++; keystores.put(keystoreName, keystore); } catch (Exception e) { throw new UnsupportedOperationException( "This keystore must be loaded using a " + "DomainLoadStoreParameter"); } }