Module java.base
Package javax.security.auth

## Interface Destroyable

- All Known Subinterfaces:
    `DHPrivateKey`, `DSAPrivateKey`, `ECPrivateKey`, `PBEKey`, `PrivateKey`, `RSAMultiPrimePrivateCrtKey`, `RSAPrivateCrtKey`, `RSAPrivateKey`, `SecretKey`, `XECPrivateKey`
  All Known Implementing Classes:
    `EncryptionKey`, `KerberosCredMessage`, `KerberosKey`, `KerberosTicket`, `KeyStore.PasswordProtection`, `SecretKeySpec`, `X500PrivateCredential`

      public interface Destroyable

  Objects such as credentials may optionally implement this interface to provide the capability to destroy its contents.
  Since:
    1.4
  See Also:
    `Subject`

- - ### Method Summary

    Modifier and Type | Method | Description
    --- | --- | ---
    `default void` | `destroy()` | Destroy this `Object`.
    `default boolean` | `isDestroyed()` | Determine if this `Object` has been destroyed.

- - ### Method Detail

    - #### destroy

          default void destroy()
                        throws DestroyFailedException

      Destroy this `Object`.

      Sensitive information associated with this `Object` is destroyed or cleared. Subsequent calls to certain methods on this `Object` will result in an `IllegalStateException` being thrown.

      Implementation Requirements:
        The default implementation throws `DestroyFailedException`.
      Throws:
        `DestroyFailedException` - if the destroy operation fails.
        `SecurityException` - if the caller does not have permission to destroy this `Object`.

    - #### isDestroyed

          default boolean isDestroyed()

      Determine if this `Object` has been destroyed.
      Implementation Requirements:
        The default implementation returns false.
      Returns:
        true if this `Object` has been destroyed, false otherwise.