blob: 6ff59b3b75b6a25b7f8c17e21a26845a18868e6e [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_292) on Tue Jun 15 06:01:40 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>LoadBalancingKMSClientProvider (Apache Hadoop Common 3.3.1 API)</title>
<meta name="date" content="2021-06-15">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="LoadBalancingKMSClientProvider (Apache Hadoop Common 3.3.1 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LoadBalancingKMSClientProvider.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/hadoop/crypto/key/kms/KMSDelegationToken.KMSDelegationTokenIdentifier.html" title="class in org.apache.hadoop.crypto.key.kms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/hadoop/crypto/key/kms/ValueQueue.QueueRefiller.html" title="interface in org.apache.hadoop.crypto.key.kms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html" target="_top">Frames</a></li>
<li><a href="LoadBalancingKMSClientProvider.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.crypto.key.KeyProvider">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.crypto.key.kms</div>
<h2 title="Class LoadBalancingKMSClientProvider" class="title">Class LoadBalancingKMSClientProvider</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">org.apache.hadoop.crypto.key.KeyProvider</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.crypto.key.kms.LoadBalancingKMSClientProvider</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderDelegationTokenExtension.DelegationTokenExtension</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderExtension.Extension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderExtension.Extension</a>, org.apache.hadoop.security.token.DelegationTokenIssuer</dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">LoadBalancingKMSClientProvider</span>
extends <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a>
implements <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderDelegationTokenExtension.DelegationTokenExtension</a></pre>
<div class="block">A simple LoadBalancing KMSClientProvider that round-robins requests
across a provided array of KMSClientProviders. It also retries failed
requests on the next available provider in the load balancer group. It
only retries failed requests that result in an IOException, sending back
all other Exceptions to the caller without retry.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.crypto.key.KeyProvider">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.crypto.key.<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></h3>
<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Metadata.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Metadata</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Options.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Options</a></code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Field and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static org.slf4j.Logger</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#LOG">LOG</a></span></code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.crypto.key.KeyProvider">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.hadoop.crypto.key.<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></h3>
<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#DEFAULT_BITLENGTH">DEFAULT_BITLENGTH</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#DEFAULT_BITLENGTH_NAME">DEFAULT_BITLENGTH_NAME</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#DEFAULT_CIPHER">DEFAULT_CIPHER</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#DEFAULT_CIPHER_NAME">DEFAULT_CIPHER_NAME</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#JCEKS_KEY_SERIAL_FILTER">JCEKS_KEY_SERIAL_FILTER</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#JCEKS_KEY_SERIALFILTER_DEFAULT">JCEKS_KEY_SERIALFILTER_DEFAULT</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#LoadBalancingKMSClientProvider-java.net.URI-org.apache.hadoop.crypto.key.kms.KMSClientProvider:A-org.apache.hadoop.conf.Configuration-">LoadBalancingKMSClientProvider</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a>&nbsp;providerUri,
org.apache.hadoop.crypto.key.kms.KMSClientProvider[]&nbsp;providers,
<a href="../../../../../../org/apache/hadoop/conf/Configuration.html" title="class in org.apache.hadoop.conf">Configuration</a>&nbsp;conf)</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#cancelDelegationToken-org.apache.hadoop.security.token.Token-">cancelDelegationToken</a></span>(<a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;?&gt;&nbsp;token)</code>
<div class="block">Cancels the given token.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#close--">close</a></span>()</code>
<div class="block">Can be used by implementing classes to close any resources
that require closing</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#createKey-java.lang.String-byte:A-org.apache.hadoop.crypto.key.KeyProvider.Options-">createKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
byte[]&nbsp;material,
<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Options.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Options</a>&nbsp;options)</code>
<div class="block">Create a new key.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#createKey-java.lang.String-org.apache.hadoop.crypto.key.KeyProvider.Options-">createKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Options.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Options</a>&nbsp;options)</code>
<div class="block">Create a new key generating the material for it.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#decryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">decryptEncryptedKey</a></span>(<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&nbsp;encryptedKeyVersion)</code>
<div class="block">Decrypts an encrypted byte[] key material using the given key version
name and initialization vector.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#deleteKey-java.lang.String-">deleteKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Delete the given key.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#drain-java.lang.String-">drain</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyName)</code>
<div class="block">Drains the Queue for the provided key.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#flush--">flush</a></span>()</code>
<div class="block">Ensures that any changes to the keys are written to persistent store.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#generateEncryptedKey-java.lang.String-">generateEncryptedKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encryptionKeyName)</code>
<div class="block">Generates a key material and encrypts it using the given key name.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getCanonicalServiceName--">getCanonicalServiceName</a></span>()</code>
<div class="block">The service name used as the alias for the token in the credential
token map.</div>
</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getCurrentKey-java.lang.String-">getCurrentKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Get the current version of the key, which should be used for encrypting new
data.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;?&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getDelegationToken-java.lang.String-">getDelegationToken</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;renewer)</code>
<div class="block">Unconditionally get a new token with the optional renewer.</div>
</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getKeys--">getKeys</a></span>()</code>
<div class="block">Get the key names for all keys.</div>
</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Metadata.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Metadata</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getKeysMetadata-java.lang.String...-">getKeysMetadata</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;names)</code>
<div class="block">Get key metadata in bulk.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getKeyVersion-java.lang.String-">getKeyVersion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;versionName)</code>
<div class="block">Get the key material for a specific version of the key.</div>
</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getKeyVersions-java.lang.String-">getKeyVersions</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Get the key material for all versions of a specific key name.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Metadata.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Metadata</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getMetadata-java.lang.String-">getMetadata</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Get metadata about the key.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.crypto.key.kms.KMSClientProvider[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#getProviders--">getProviders</a></span>()</code>&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#invalidateCache-java.lang.String-">invalidateCache</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyName)</code>
<div class="block">Can be used by implementing classes to invalidate the caches.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#reencryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">reencryptEncryptedKey</a></span>(<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&nbsp;ekv)</code>
<div class="block">Re-encrypts an encrypted key version, using its initialization vector
and key material, but with the latest key version name of its key name
in the key provider.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#reencryptEncryptedKeys-java.util.List-">reencryptEncryptedKeys</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&gt;&nbsp;ekvs)</code>
<div class="block">Batched version of <code>KeyProviderCryptoExtension.reencryptEncryptedKey(EncryptedKeyVersion)</code>.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>long</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#renewDelegationToken-org.apache.hadoop.security.token.Token-">renewDelegationToken</a></span>(<a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;?&gt;&nbsp;token)</code>
<div class="block">Renews the given token.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#rollNewVersion-java.lang.String-">rollNewVersion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
<div class="block">Roll a new version of the given key generating the material for it.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#rollNewVersion-java.lang.String-byte:A-">rollNewVersion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
byte[]&nbsp;material)</code>
<div class="block">Roll a new version of the given key.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/security/token/TokenIdentifier.html" title="class in org.apache.hadoop.security.token">TokenIdentifier</a>&gt;</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#selectDelegationToken-org.apache.hadoop.security.Credentials-">selectDelegationToken</a></span>(<a href="../../../../../../org/apache/hadoop/security/Credentials.html" title="class in org.apache.hadoop.security">Credentials</a>&nbsp;creds)</code>&nbsp;</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html#warmUpEncryptedKeys-java.lang.String...-">warmUpEncryptedKeys</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keyNames)</code>
<div class="block">Calls to this method allows the underlying KeyProvider to warm-up any
implementation specific caches used to store the Encrypted Keys.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.crypto.key.KeyProvider">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.hadoop.crypto.key.<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></h3>
<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#buildVersionName-java.lang.String-int-">buildVersionName</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#findProvider-java.util.List-java.lang.String-">findProvider</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#generateKey-int-java.lang.String-">generateKey</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getBaseName-java.lang.String-">getBaseName</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getConf--">getConf</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#isTransient--">isTransient</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#needsPassword--">needsPassword</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#noPasswordError--">noPasswordError</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#noPasswordWarning--">noPasswordWarning</a>, <a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#options-org.apache.hadoop.conf.Configuration-">options</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.security.token.DelegationTokenIssuer">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.hadoop.security.token.DelegationTokenIssuer</h3>
<code>addDelegationTokens, getAdditionalTokenIssuers</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a name="LOG">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LOG</h4>
<pre>public static&nbsp;org.slf4j.Logger LOG</pre>
</li>
</ul>
</li>
</ul>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="LoadBalancingKMSClientProvider-java.net.URI-org.apache.hadoop.crypto.key.kms.KMSClientProvider:A-org.apache.hadoop.conf.Configuration-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>LoadBalancingKMSClientProvider</h4>
<pre>public&nbsp;LoadBalancingKMSClientProvider(<a href="https://docs.oracle.com/javase/8/docs/api/java/net/URI.html?is-external=true" title="class or interface in java.net">URI</a>&nbsp;providerUri,
org.apache.hadoop.crypto.key.kms.KMSClientProvider[]&nbsp;providers,
<a href="../../../../../../org/apache/hadoop/conf/Configuration.html" title="class in org.apache.hadoop.conf">Configuration</a>&nbsp;conf)</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getProviders--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getProviders</h4>
<pre>public&nbsp;org.apache.hadoop.crypto.key.kms.KMSClientProvider[]&nbsp;getProviders()</pre>
</li>
</ul>
<a name="selectDelegationToken-org.apache.hadoop.security.Credentials-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>selectDelegationToken</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/security/token/TokenIdentifier.html" title="class in org.apache.hadoop.security.token">TokenIdentifier</a>&gt;&nbsp;selectDelegationToken(<a href="../../../../../../org/apache/hadoop/security/Credentials.html" title="class in org.apache.hadoop.security">Credentials</a>&nbsp;creds)</pre>
</li>
</ul>
<a name="getCanonicalServiceName--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCanonicalServiceName</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;getCanonicalServiceName()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.security.token.DelegationTokenIssuer</code></span></div>
<div class="block">The service name used as the alias for the token in the credential
token map. addDelegationTokens will use this to determine if
a token exists, and if not, add a new token with this alias.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getCanonicalServiceName</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.security.token.DelegationTokenIssuer</code></dd>
</dl>
</li>
</ul>
<a name="getDelegationToken-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getDelegationToken</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;?&gt;&nbsp;getDelegationToken(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;renewer)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.security.token.DelegationTokenIssuer</code></span></div>
<div class="block">Unconditionally get a new token with the optional renewer. Returning
null indicates the service does not issue tokens.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>getDelegationToken</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.security.token.DelegationTokenIssuer</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="renewDelegationToken-org.apache.hadoop.security.token.Token-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>renewDelegationToken</h4>
<pre>public&nbsp;long&nbsp;renewDelegationToken(<a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;?&gt;&nbsp;token)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html#renewDelegationToken-org.apache.hadoop.security.token.Token-">KeyProviderDelegationTokenExtension.DelegationTokenExtension</a></code></span></div>
<div class="block">Renews the given token.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html#renewDelegationToken-org.apache.hadoop.security.token.Token-">renewDelegationToken</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderDelegationTokenExtension.DelegationTokenExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>token</code> - The token to be renewed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The token's lifetime after renewal, or 0 if it can't be renewed.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="cancelDelegationToken-org.apache.hadoop.security.token.Token-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>cancelDelegationToken</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Void.html?is-external=true" title="class or interface in java.lang">Void</a>&nbsp;cancelDelegationToken(<a href="../../../../../../org/apache/hadoop/security/token/Token.html" title="class in org.apache.hadoop.security.token">Token</a>&lt;?&gt;&nbsp;token)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html#cancelDelegationToken-org.apache.hadoop.security.token.Token-">KeyProviderDelegationTokenExtension.DelegationTokenExtension</a></code></span></div>
<div class="block">Cancels the given token.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html#cancelDelegationToken-org.apache.hadoop.security.token.Token-">cancelDelegationToken</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderDelegationTokenExtension.DelegationTokenExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderDelegationTokenExtension.DelegationTokenExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>token</code> - The token to be cancelled.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="warmUpEncryptedKeys-java.lang.String...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>warmUpEncryptedKeys</h4>
<pre>public&nbsp;void&nbsp;warmUpEncryptedKeys(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;keyNames)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#warmUpEncryptedKeys-java.lang.String...-">KeyProviderCryptoExtension.CryptoExtension</a></code></span></div>
<div class="block">Calls to this method allows the underlying KeyProvider to warm-up any
implementation specific caches used to store the Encrypted Keys.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#warmUpEncryptedKeys-java.lang.String...-">warmUpEncryptedKeys</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keyNames</code> - Array of Key Names</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="drain-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>drain</h4>
<pre>public&nbsp;void&nbsp;drain(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyName)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#drain-java.lang.String-">KeyProviderCryptoExtension.CryptoExtension</a></code></span></div>
<div class="block">Drains the Queue for the provided key.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#drain-java.lang.String-">drain</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keyName</code> - the key to drain the Queue for</dd>
</dl>
</li>
</ul>
<a name="invalidateCache-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>invalidateCache</h4>
<pre>public&nbsp;void&nbsp;invalidateCache(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;keyName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#invalidateCache-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Can be used by implementing classes to invalidate the caches. This could be
used after rollNewVersion to provide a strong guarantee to return the new
version of the given key.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#invalidateCache-java.lang.String-">invalidateCache</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>keyName</code> - the basename of the key</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="generateEncryptedKey-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>generateEncryptedKey</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&nbsp;generateEncryptedKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;encryptionKeyName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#generateEncryptedKey-java.lang.String-">KeyProviderCryptoExtension.CryptoExtension</a></code></span></div>
<div class="block">Generates a key material and encrypts it using the given key name.
The generated key material is of the same
length as the <code>KeyVersion</code> material of the latest key version
of the key and is encrypted using the same cipher.
<p>
NOTE: The generated key is not stored by the <code>KeyProvider</code></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#generateEncryptedKey-java.lang.String-">generateEncryptedKey</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>encryptionKeyName</code> - The latest KeyVersion of this key's material will be encrypted.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>EncryptedKeyVersion with the generated key material, the version
name is 'EEK' (for Encrypted Encryption Key)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - thrown if the key material could not be generated</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></code> - thrown if the key material could not be encrypted because of a
cryptographic issue.</dd>
</dl>
</li>
</ul>
<a name="decryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>decryptEncryptedKey</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;decryptEncryptedKey(<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&nbsp;encryptedKeyVersion)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#decryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">KeyProviderCryptoExtension.CryptoExtension</a></code></span></div>
<div class="block">Decrypts an encrypted byte[] key material using the given key version
name and initialization vector.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#decryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">decryptEncryptedKey</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>encryptedKeyVersion</code> - contains keyVersionName and IV to decrypt the encrypted key
material</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>a KeyVersion with the decrypted key material, the version name is
'EK' (For Encryption Key)</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - thrown if the key material could not be decrypted</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></code> - thrown if the key material could not be decrypted because of a
cryptographic issue.</dd>
</dl>
</li>
</ul>
<a name="reencryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reencryptEncryptedKey</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&nbsp;reencryptEncryptedKey(<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&nbsp;ekv)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#reencryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">KeyProviderCryptoExtension.CryptoExtension</a></code></span></div>
<div class="block">Re-encrypts an encrypted key version, using its initialization vector
and key material, but with the latest key version name of its key name
in the key provider.
<p>
If the latest key version name in the provider is the
same as the one encrypted the passed-in encrypted key version, the same
encrypted key version is returned.
<p>
NOTE: The generated key is not stored by the <code>KeyProvider</code></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#reencryptEncryptedKey-org.apache.hadoop.crypto.key.KeyProviderCryptoExtension.EncryptedKeyVersion-">reencryptEncryptedKey</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ekv</code> - The EncryptedKeyVersion containing keyVersionName and IV.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The re-encrypted EncryptedKeyVersion.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If the key material could not be re-encrypted.</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></code> - If the key material could not be
re-encrypted because of a cryptographic issue.</dd>
</dl>
</li>
</ul>
<a name="reencryptEncryptedKeys-java.util.List-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>reencryptEncryptedKeys</h4>
<pre>public&nbsp;void&nbsp;reencryptEncryptedKeys(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.EncryptedKeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.EncryptedKeyVersion</a>&gt;&nbsp;ekvs)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#reencryptEncryptedKeys-java.util.List-">KeyProviderCryptoExtension.CryptoExtension</a></code></span></div>
<div class="block">Batched version of <code>KeyProviderCryptoExtension.reencryptEncryptedKey(EncryptedKeyVersion)</code>.
<p>
For each encrypted key version, re-encrypts an encrypted key version,
using its initialization vector and key material, but with the latest
key version name of its key name. If the latest key version name in the
provider is the same as the one encrypted the passed-in encrypted key
version, the same encrypted key version is returned.
<p>
NOTE: The generated key is not stored by the <code>KeyProvider</code></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html#reencryptEncryptedKeys-java.util.List-">reencryptEncryptedKeys</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProviderCryptoExtension.CryptoExtension.html" title="interface in org.apache.hadoop.crypto.key">KeyProviderCryptoExtension.CryptoExtension</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>ekvs</code> - List containing the EncryptedKeyVersion's</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code> - If any EncryptedKeyVersion could not be re-encrypted</dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/security/GeneralSecurityException.html?is-external=true" title="class or interface in java.security">GeneralSecurityException</a></code> - If any EncryptedKeyVersion could not be
re-encrypted because of a cryptographic issue.</dd>
</dl>
</li>
</ul>
<a name="getKeyVersion-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKeyVersion</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;getKeyVersion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;versionName)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeyVersion-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Get the key material for a specific version of the key. This method is used
when decrypting data.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeyVersion-java.lang.String-">getKeyVersion</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>versionName</code> - the name of a specific version of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the key material</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="getKeys--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKeys</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;getKeys()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeys--">KeyProvider</a></code></span></div>
<div class="block">Get the key names for all keys.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeys--">getKeys</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of key names</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="getKeysMetadata-java.lang.String...-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKeysMetadata</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Metadata.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Metadata</a>[]&nbsp;getKeysMetadata(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;names)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeysMetadata-java.lang.String...-">KeyProvider</a></code></span></div>
<div class="block">Get key metadata in bulk.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeysMetadata-java.lang.String...-">getKeysMetadata</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>names</code> - the names of the keys to get</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="getKeyVersions-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getKeyVersions</h4>
<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&gt;&nbsp;getKeyVersions(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeyVersions-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Get the key material for all versions of a specific key name.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getKeyVersions-java.lang.String-">getKeyVersions</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the list of key material</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="getCurrentKey-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getCurrentKey</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;getCurrentKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getCurrentKey-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Get the current version of the key, which should be used for encrypting new
data.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getCurrentKey-java.lang.String-">getCurrentKey</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the base name of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the version name of the current version of the key or null if the
key version doesn't exist</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="getMetadata-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getMetadata</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Metadata.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Metadata</a>&nbsp;getMetadata(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getMetadata-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Get metadata about the key.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#getMetadata-java.lang.String-">getMetadata</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the basename of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the key's metadata or null if the key doesn't exist</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="createKey-java.lang.String-byte:A-org.apache.hadoop.crypto.key.KeyProvider.Options-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createKey</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;createKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
byte[]&nbsp;material,
<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Options.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Options</a>&nbsp;options)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#createKey-java.lang.String-byte:A-org.apache.hadoop.crypto.key.KeyProvider.Options-">KeyProvider</a></code></span></div>
<div class="block">Create a new key. The given key must not already exist.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#createKey-java.lang.String-byte:A-org.apache.hadoop.crypto.key.KeyProvider.Options-">createKey</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the base name of the key</dd>
<dd><code>material</code> - the key material for the first version of the key.</dd>
<dd><code>options</code> - the options for the new key.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the version name of the first version of the key.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="createKey-java.lang.String-org.apache.hadoop.crypto.key.KeyProvider.Options-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>createKey</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;createKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.Options.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.Options</a>&nbsp;options)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security">NoSuchAlgorithmException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#createKey-java.lang.String-org.apache.hadoop.crypto.key.KeyProvider.Options-">KeyProvider</a></code></span></div>
<div class="block">Create a new key generating the material for it.
The given key must not already exist.
<p>
This implementation generates the key material and calls the
<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#createKey-java.lang.String-byte:A-org.apache.hadoop.crypto.key.KeyProvider.Options-"><code>KeyProvider.createKey(String, byte[], Options)</code></a> method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#createKey-java.lang.String-org.apache.hadoop.crypto.key.KeyProvider.Options-">createKey</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the base name of the key</dd>
<dd><code>options</code> - the options for the new key.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the version name of the first version of the key.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security">NoSuchAlgorithmException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="deleteKey-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>deleteKey</h4>
<pre>public&nbsp;void&nbsp;deleteKey(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#deleteKey-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Delete the given key.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#deleteKey-java.lang.String-">deleteKey</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the key to delete</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="rollNewVersion-java.lang.String-byte:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rollNewVersion</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;rollNewVersion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name,
byte[]&nbsp;material)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#rollNewVersion-java.lang.String-byte:A-">KeyProvider</a></code></span></div>
<div class="block">Roll a new version of the given key.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#rollNewVersion-java.lang.String-byte:A-">rollNewVersion</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the basename of the key</dd>
<dd><code>material</code> - the new key material</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the name of the new version of the key</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="rollNewVersion-java.lang.String-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>rollNewVersion</h4>
<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.KeyVersion.html" title="class in org.apache.hadoop.crypto.key">KeyProvider.KeyVersion</a>&nbsp;rollNewVersion(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security">NoSuchAlgorithmException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#rollNewVersion-java.lang.String-">KeyProvider</a></code></span></div>
<div class="block">Roll a new version of the given key generating the material for it.
<p>
This implementation generates the key material and calls the
<a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#rollNewVersion-java.lang.String-byte:A-"><code>KeyProvider.rollNewVersion(String, byte[])</code></a> method.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#rollNewVersion-java.lang.String-">rollNewVersion</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the basename of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the name of the new version of the key</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/security/NoSuchAlgorithmException.html?is-external=true" title="class or interface in java.security">NoSuchAlgorithmException</a></code></dd>
</dl>
</li>
</ul>
<a name="close--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#close--">KeyProvider</a></code></span></div>
<div class="block">Can be used by implementing classes to close any resources
that require closing</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#close--">close</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
<a name="flush--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>flush</h4>
<pre>public&nbsp;void&nbsp;flush()
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#flush--">KeyProvider</a></code></span></div>
<div class="block">Ensures that any changes to the keys are written to persistent store.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html#flush--">flush</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/crypto/key/KeyProvider.html" title="class in org.apache.hadoop.crypto.key">KeyProvider</a></code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/LoadBalancingKMSClientProvider.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/hadoop/crypto/key/kms/KMSDelegationToken.KMSDelegationTokenIdentifier.html" title="class in org.apache.hadoop.crypto.key.kms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/hadoop/crypto/key/kms/ValueQueue.QueueRefiller.html" title="interface in org.apache.hadoop.crypto.key.kms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/crypto/key/kms/LoadBalancingKMSClientProvider.html" target="_top">Frames</a></li>
<li><a href="LoadBalancingKMSClientProvider.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.crypto.key.KeyProvider">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2008&#x2013;2021 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>