@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"); } }
@Override public void engineStore(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 { KeyStore.ProtectionParameter pp = builder.protection; if (!(pp instanceof KeyStore.PasswordProtection)) { throw new KeyStoreException( new IllegalArgumentException( "ProtectionParameter" + " must be a KeyStore.PasswordProtection")); } char[] password = ((KeyStore.PasswordProtection) builder.protection).getPassword(); // Store the keystores KeyStore keystore = keystores.get(builder.name); try (FileOutputStream stream = new FileOutputStream(builder.file)) { keystore.store(stream, password); } } catch (KeyStoreException e) { throw new IOException(e); } } } else { throw new UnsupportedOperationException( "This keystore must be stored using a " + "DomainLoadStoreParameter"); } }