@Override public long renewDelegationToken(final Token<?> token) throws IOException { return doOp(new ProviderCallable<Long>() { @Override public Long call(KMSClientProvider provider) throws IOException { return provider.renewDelegationToken(token); } }, nextIdx(), false); }
@Override public Void cancelDelegationToken(final Token<?> token) throws IOException { return doOp(new ProviderCallable<Void>() { @Override public Void call(KMSClientProvider provider) throws IOException { provider.cancelDelegationToken(token); return null; } }, nextIdx(), false); }
@Override public KeyVersion getKeyVersion(final String versionName) throws IOException { return doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException { return provider.getKeyVersion(versionName); } }, nextIdx(), true); }
@Override public Metadata[] getKeysMetadata(final String... names) throws IOException { return doOp(new ProviderCallable<Metadata[]>() { @Override public Metadata[] call(KMSClientProvider provider) throws IOException { return provider.getKeysMetadata(names); } }, nextIdx(), true); }
@Override public Metadata getMetadata(final String name) throws IOException { return doOp(new ProviderCallable<Metadata>() { @Override public Metadata call(KMSClientProvider provider) throws IOException { return provider.getMetadata(name); } }, nextIdx(), true); }
@Override public void deleteKey(final String name) throws IOException { doOp(new ProviderCallable<Void>() { @Override public Void call(KMSClientProvider provider) throws IOException { provider.deleteKey(name); return null; } }, nextIdx(), false); }
@Override public List<String> getKeys() throws IOException { return doOp(new ProviderCallable<List<String>>() { @Override public List<String> call(KMSClientProvider provider) throws IOException { return provider.getKeys(); } }, nextIdx(), true); }
@Override public List<KeyVersion> getKeyVersions(final String name) throws IOException { return doOp(new ProviderCallable<List<KeyVersion>>() { @Override public List<KeyVersion> call(KMSClientProvider provider) throws IOException { return provider.getKeyVersions(name); } }, nextIdx(), true); }
@Override public KeyVersion getCurrentKey(final String name) throws IOException { return doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException { return provider.getCurrentKey(name); } }, nextIdx(), true); }
@Override public KeyVersion createKey(final String name, final byte[] material, final Options options) throws IOException { return doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException { return provider.createKey(name, material, options); } }, nextIdx(), false); }
@Override public Token<?> getDelegationToken(String renewer) throws IOException { return doOp(new ProviderCallable<Token<?>>() { @Override public Token<?> call(KMSClientProvider provider) throws IOException { Token<?> token = provider.getDelegationToken(renewer); // override sub-providers service with our own so it can be used // across all providers. token.setService(dtService); LOG.debug("New token service set. Token: ({})", token); return token; } }, nextIdx(), false); }
@Override public KeyVersion rollNewVersion(final String name, final byte[] material) throws IOException { final KeyVersion newVersion = doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException { return provider.rollNewVersion(name, material); } }, nextIdx(), false); invalidateCache(name); return newVersion; }
@Override public KeyVersion createKey(final String name, final Options options) throws NoSuchAlgorithmException, IOException { try { return doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException, NoSuchAlgorithmException { return provider.createKey(name, options); } }, nextIdx(), false); } catch (WrapperException e) { if (e.getCause() instanceof GeneralSecurityException) { throw (NoSuchAlgorithmException) e.getCause(); } throw new IOException(e.getCause()); } }
@Override public void reencryptEncryptedKeys(final List<EncryptedKeyVersion> ekvs) throws IOException, GeneralSecurityException { try { doOp(new ProviderCallable<Void>() { @Override public Void call(KMSClientProvider provider) throws IOException, GeneralSecurityException { provider.reencryptEncryptedKeys(ekvs); return null; } }, nextIdx(), true); } catch (WrapperException we) { if (we.getCause() instanceof GeneralSecurityException) { throw (GeneralSecurityException) we.getCause(); } throw new IOException(we.getCause()); } }
@Override public EncryptedKeyVersion generateEncryptedKey(final String encryptionKeyName) throws IOException, GeneralSecurityException { try { return doOp(new ProviderCallable<EncryptedKeyVersion>() { @Override public EncryptedKeyVersion call(KMSClientProvider provider) throws IOException, GeneralSecurityException { return provider.generateEncryptedKey(encryptionKeyName); } }, nextIdx(), true); } catch (WrapperException we) { if (we.getCause() instanceof GeneralSecurityException) { throw (GeneralSecurityException) we.getCause(); } throw new IOException(we.getCause()); } }
@Override public EncryptedKeyVersion reencryptEncryptedKey( final EncryptedKeyVersion ekv) throws IOException, GeneralSecurityException { try { return doOp(new ProviderCallable<EncryptedKeyVersion>() { @Override public EncryptedKeyVersion call(KMSClientProvider provider) throws IOException, GeneralSecurityException { return provider.reencryptEncryptedKey(ekv); } }, nextIdx(), true); } catch (WrapperException we) { if (we.getCause() instanceof GeneralSecurityException) { throw (GeneralSecurityException) we.getCause(); } throw new IOException(we.getCause()); } }
@Override public KeyVersion decryptEncryptedKey(final EncryptedKeyVersion encryptedKeyVersion) throws IOException, GeneralSecurityException { try { return doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException, GeneralSecurityException { return provider.decryptEncryptedKey(encryptedKeyVersion); } }, nextIdx(), true); } catch (WrapperException we) { if (we.getCause() instanceof GeneralSecurityException) { throw (GeneralSecurityException) we.getCause(); } throw new IOException(we.getCause()); } }
@Override public KeyVersion rollNewVersion(final String name) throws NoSuchAlgorithmException, IOException { try { final KeyVersion newVersion = doOp(new ProviderCallable<KeyVersion>() { @Override public KeyVersion call(KMSClientProvider provider) throws IOException, NoSuchAlgorithmException { return provider.rollNewVersion(name); } }, nextIdx(), false); invalidateCache(name); return newVersion; } catch (WrapperException e) { if (e.getCause() instanceof GeneralSecurityException) { throw (NoSuchAlgorithmException) e.getCause(); } throw new IOException(e.getCause()); } }
@Override public Metadata[] getKeysMetadata(final String... names) throws IOException { return doOp(new ProviderCallable<Metadata[]>() { @Override public Metadata[] call(KMSClientProvider provider) throws IOException { return provider.getKeysMetadata(names); } }, nextIdx()); }
@Override public Metadata getMetadata(final String name) throws IOException { return doOp(new ProviderCallable<Metadata>() { @Override public Metadata call(KMSClientProvider provider) throws IOException { return provider.getMetadata(name); } }, nextIdx()); }