# Class KeyStore.PasswordProtection

java.lang.Object
java.security.KeyStore.PasswordProtection

All Implemented Interfaces:
  `KeyStore.ProtectionParameter, Destroyable`

Enclosing class:
  `KeyStore`

public static class KeyStore.PasswordProtection extends Object implements KeyStore.ProtectionParameter, Destroyable
A password-based implementation of `ProtectionParameter`.

Since:
  1.5

## Constructor Summary

Constructors
Constructor
Description
`PasswordProtection(char[] password)`
Creates a password parameter.
`PasswordProtection(char[] password, String protectionAlgorithm, AlgorithmParameterSpec protectionParameters)`
Creates a password parameter and specifies the protection algorithm and associated parameters to use when encrypting a keystore entry.

## Method Summary

Modifier and Type
Method
Description
`void`
`destroy()`
Clears the password.
`char[]`
`getPassword()`
Gets the password.
`String`
`getProtectionAlgorithm()`
Gets the name of the protection algorithm.
`AlgorithmParameterSpec`
`getProtectionParameters()`
Gets the parameters supplied for the protection algorithm.
`boolean`
`isDestroyed()`
Determines if password has been cleared.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### PasswordProtection

public PasswordProtection(char[] password)
Creates a password parameter.

The specified `password` is cloned before it is stored in the new `PasswordProtection` object.

Parameters:
  `password` - the password, which may be `null`

### PasswordProtection

public PasswordProtection(char[] password, String protectionAlgorithm, AlgorithmParameterSpec protectionParameters)
Creates a password parameter and specifies the protection algorithm and associated parameters to use when encrypting a keystore entry.

The specified `password` is cloned before it is stored in the new `PasswordProtection` object.

Parameters:
  `password` - the password, which may be `null`
  `protectionAlgorithm` - the encryption algorithm name, for example, `PBEWithHmacSHA256AndAES_256`. See the Cipher section in the Java Security Standard Algorithm Names Specification for information about standard encryption algorithm names.
  `protectionParameters` - the encryption algorithm parameter specification, which may be `null`
Throws:
  `NullPointerException` - if `protectionAlgorithm` is `null`
Since:
  1.8
External Specifications
  - Java Security Standard Algorithm Names

## Method Details

### getProtectionAlgorithm

public String getProtectionAlgorithm()
Gets the name of the protection algorithm. If none was set then the keystore provider will use its default protection algorithm.

Returns:
  the algorithm name, or `null` if none was set
Since:
  1.8

### getProtectionParameters

public AlgorithmParameterSpec getProtectionParameters()
Gets the parameters supplied for the protection algorithm.

Returns:
  the algorithm parameter specification, or `null`, if none was set
Since:
  1.8

### getPassword

public char[] getPassword()
Gets the password.

Note that this method returns a reference to the password. If a clone of the array is created it is the caller's responsibility to zero out the password information after it is no longer needed.

Returns:
  the password, which may be `null`
Throws:
  `IllegalStateException` - if the password has been cleared (destroyed)
See Also:
  - `destroy()`

### destroy

public void destroy() throws DestroyFailedException
Clears the password.

Specified by:
  `destroy` in interface `Destroyable`
Throws:
  `DestroyFailedException` - if this method was unable to clear the password

### isDestroyed

public boolean isDestroyed()
Determines if password has been cleared.

Specified by:
  `isDestroyed` in interface `Destroyable`
Returns:
  `true` if the password has been cleared, `false` otherwise