/**@class javax.crypto.SecretKeyFactory
@extends java.lang.Object

 This class represents a factory for secret keys.

 <P> Key factories are used to convert <I>keys</I> (opaque
 cryptographic keys of type <code>Key</code>) into <I>key specifications</I>
 (transparent representations of the underlying key material), and vice
 versa.
 Secret key factories operate only on secret (symmetric) keys.

 <P> Key factories are bi-directional, i.e., they allow to build an opaque
 key object from a given key specification (key material), or to retrieve
 the underlying key material of a key object in a suitable format.

 <P> Application developers should refer to their provider's documentation
 to find out which key specifications are supported by the
 {@link #generateSecret(java.security.spec.KeySpec) generateSecret} and
 {@link #getKeySpec(javax.crypto.SecretKey, java.lang.Class) getKeySpec}
 methods.
 For example, the DES secret-key factory supplied by the "SunJCE" provider
 supports <code>DESKeySpec</code> as a transparent representation of DES
 keys, and that provider's secret-key factory for Triple DES keys supports
 <code>DESedeKeySpec</code> as a transparent representation of Triple DES
 keys.

 <p> Android provides the following <code>SecretKeyFactory</code> algorithms:
 <table>
   <thead>
     <tr>
       <th>Algorithm</th>
       <th>Supported API Levels</th>
     </tr>
   </thead>
   <tbody>
     <tr>
       <td>AES</td>
       <td>23+</td>
     </tr>
     <tr>
       <td>DES</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>DESede</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>HmacSHA1</td>
       <td>23+</td>
     </tr>
     <tr>
       <td>HmacSHA224</td>
       <td>23+</td>
     </tr>
     <tr>
       <td>HmacSHA256</td>
       <td>23+</td>
     </tr>
     <tr>
       <td>HmacSHA384</td>
       <td>23+</td>
     </tr>
     <tr>
       <td>HmacSHA512</td>
       <td>23+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA1</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA1AndAES_128</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA1AndAES_256</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA224AndAES_128</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA224AndAES_256</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA256AndAES_128</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA256AndAES_256</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA384AndAES_128</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA384AndAES_256</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA512AndAES_128</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithHmacSHA512AndAES_256</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBEwithMD5AND128BITAES-CBC-OPENSSL</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithMD5AND192BITAES-CBC-OPENSSL</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithMD5AND256BITAES-CBC-OPENSSL</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithMD5ANDDES</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithMD5ANDRC2</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHA1ANDDES</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHA1ANDRC2</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHA256AND128BITAES-CBC-BC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHA256AND192BITAES-CBC-BC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHA256AND256BITAES-CBC-BC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND128BITAES-CBC-BC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND128BITRC2-CBC</td>
       <td>10+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND128BITRC4</td>
       <td>10+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND192BITAES-CBC-BC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND2-KEYTRIPLEDES-CBC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND256BITAES-CBC-BC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND3-KEYTRIPLEDES-CBC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND40BITRC2-CBC</td>
       <td>1+</td>
     </tr>
     <tr>
       <td>PBEwithSHAAND40BITRC4</td>
       <td>10+</td>
     </tr>
     <tr>
       <td>PBEwithSHAANDTWOFISH-CBC</td>
       <td>10+</td>
     </tr>
     <tr>
       <td>PBKDF2withHmacSHA1</td>
       <td>10+</td>
     </tr>
     <tr>
       <td>PBKDF2withHmacSHA1And8BIT</td>
       <td>19+</td>
     </tr>
     <tr>
       <td>PBKDF2withHmacSHA224</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBKDF2withHmacSHA256</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBKDF2withHmacSHA384</td>
       <td>26+</td>
     </tr>
     <tr>
       <td>PBKDF2withHmacSHA512</td>
       <td>26+</td>
     </tr>
   </tbody>
 </table>

 These algorithms are described in the <a href=
 "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
 SecretKeyFactory section</a> of the
 Java Cryptography Architecture Standard Algorithm Name Documentation.

 @author Jan Luehe

 @see SecretKey
 @see javax.crypto.spec.DESKeySpec
 @see javax.crypto.spec.DESedeKeySpec
 @see javax.crypto.spec.PBEKeySpec
 @since 1.4
*/
var SecretKeyFactory = {

/**Returns a <code>SecretKeyFactory</code> object that converts
 secret keys of the specified algorithm.

 <p> This method traverses the list of registered security Providers,
 starting with the most preferred Provider.
 A new SecretKeyFactory object encapsulating the
 SecretKeyFactorySpi implementation from the first
 Provider that supports the specified algorithm is returned.

 <p> Note that the list of registered providers may be retrieved via
 the {@link Security#getProviders() Security.getProviders()} method.
@param {String} algorithm the standard name of the requested secret-key
 algorithm.
 See the SecretKeyFactory section in the <a href=
 "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
 Java Cryptography Architecture Standard Algorithm Name Documentation</a>
 for information about standard algorithm names.
@return {Object {javax.crypto.SecretKeyFactory}} the new <code>SecretKeyFactory</code> object.
@exception NullPointerException if the specified algorithm
          is null.
@exception NoSuchAlgorithmException if no Provider supports a
          SecretKeyFactorySpi implementation for the
          specified algorithm.
@see java.security.Provider
*/
getInstance : function(  ) {},

/**Returns a <code>SecretKeyFactory</code> object that converts
 secret keys of the specified algorithm.

 <p> A new SecretKeyFactory object encapsulating the
 SecretKeyFactorySpi implementation from the specified provider
 is returned.  The specified provider must be registered
 in the security provider list.

 <p> Note that the list of registered providers may be retrieved via
 the {@link Security#getProviders() Security.getProviders()} method.
@param {String} algorithm the standard name of the requested secret-key
 algorithm.
 See the SecretKeyFactory section in the <a href=
 "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
 Java Cryptography Architecture Standard Algorithm Name Documentation</a>
 for information about standard algorithm names.
@param {String} provider the name of the provider.
@return {Object {javax.crypto.SecretKeyFactory}} the new <code>SecretKeyFactory</code> object.
@exception NoSuchAlgorithmException if a SecretKeyFactorySpi
          implementation for the specified algorithm is not
          available from the specified provider.
@exception NullPointerException if the specified algorithm
          is null.
@throws NoSuchProviderException if the specified provider is not
          registered in the security provider list.
@exception IllegalArgumentException if the <code>provider</code>
          is null or empty.
@see java.security.Provider
*/
getInstance : function(  ) {},

/**Returns a <code>SecretKeyFactory</code> object that converts
 secret keys of the specified algorithm.

 <p> A new SecretKeyFactory object encapsulating the
 SecretKeyFactorySpi implementation from the specified Provider
 object is returned.  Note that the specified Provider object
 does not have to be registered in the provider list.
@param {String} algorithm the standard name of the requested secret-key
 algorithm.
 See the SecretKeyFactory section in the <a href=
 "https://docs.oracle.com/javase/8/docs/technotes/guides/security/StandardNames.html#SecretKeyFactory">
 Java Cryptography Architecture Standard Algorithm Name Documentation</a>
 for information about standard algorithm names.
@param {Object {Provider}} provider the provider.
@return {Object {javax.crypto.SecretKeyFactory}} the new <code>SecretKeyFactory</code> object.
@exception NullPointerException if the specified algorithm
 is null.
@exception NoSuchAlgorithmException if a SecretKeyFactorySpi
          implementation for the specified algorithm is not available
          from the specified Provider object.
@exception IllegalArgumentException if the <code>provider</code>
          is null.
@see java.security.Provider
*/
getInstance : function(  ) {},

/**Returns the provider of this <code>SecretKeyFactory</code> object.
@return {Object {java.security.Provider}} the provider of this <code>SecretKeyFactory</code> object
*/
getProvider : function(  ) {},

/**Returns the algorithm name of this <code>SecretKeyFactory</code> object.

 <p>This is the same name that was specified in one of the
 <code>getInstance</code> calls that created this
 <code>SecretKeyFactory</code> object.
@return {String} the algorithm name of this <code>SecretKeyFactory</code>
 object.
*/
getAlgorithm : function(  ) {},

/**Generates a <code>SecretKey</code> object from the provided key
 specification (key material).
@param {Object {KeySpec}} keySpec the specification (key material) of the secret key
@return {Object {javax.crypto.SecretKey}} the secret key
@exception InvalidKeySpecException if the given key specification
 is inappropriate for this secret-key factory to produce a secret key.
*/
generateSecret : function(  ) {},

/**Returns a specification (key material) of the given key object
 in the requested format.
@param {Object {SecretKey}} key the key
@param {Object {java.lang.Class}} keySpec the requested format in which the key material shall be
 returned
@return {Object {java.security.spec.KeySpec}} the underlying key specification (key material) in the
 requested format
@exception InvalidKeySpecException if the requested key specification is
 inappropriate for the given key (e.g., the algorithms associated with
 <code>key</code> and <code>keySpec</code> do not match, or
 <code>key</code> references a key on a cryptographic hardware device
 whereas <code>keySpec</code> is the specification of a software-based
 key), or the given key cannot be dealt with
 (e.g., the given key has an algorithm or format not supported by this
 secret-key factory).
*/
getKeySpec : function(  ) {},

/**Translates a key object, whose provider may be unknown or potentially
 untrusted, into a corresponding key object of this secret-key factory.
@param {Object {SecretKey}} key the key whose provider is unknown or untrusted
@return {Object {javax.crypto.SecretKey}} the translated key
@exception InvalidKeyException if the given key cannot be processed
 by this secret-key factory.
*/
translateKey : function(  ) {},


};