44 * <li>Algorithms (such as DSA, RSA, or SHA-256). 45 * 46 * <li>Key generation, conversion, and management facilities (such as for 47 * algorithm-specific keys). 48 * 49 * </ul> 50 * 51 * <p>Some provider implementations may encounter unrecoverable internal 52 * errors during their operation, for example a failure to communicate with a 53 * security token. A {@link ProviderException} should be used to indicate 54 * such errors. 55 * 56 * <p>Please note that a provider can be used to implement any security 57 * service in Java that uses a pluggable architecture with a choice 58 * of implementations that fit underneath. 59 * 60 * <p>The service type {@code Provider} is reserved for use by the 61 * security framework. Services of this type cannot be added, removed, 62 * or modified by applications. 63 * The following attributes are automatically placed in each Provider object: 64 * <table cellspacing=4> 65 * <caption><b>Attributes Automatically Placed in a Provider Object</b></caption> 66 * <tr><th>Name</th><th>Value</th> 67 * <tr><td>{@code Provider.id name}</td> 68 * <td>{@code String.valueOf(provider.getName())}</td> 69 * <tr><td>{@code Provider.id version}</td> 70 * <td>{@code String.valueOf(provider.getVersionStr())}</td> 71 * <tr><td>{@code Provider.id info}</td> 72 <td>{@code String.valueOf(provider.getInfo())}</td> 73 * <tr><td>{@code Provider.id className}</td> 74 * <td>{@code provider.getClass().getName()}</td> 75 * </table> 76 * 77 * <p>Each provider has a name and a version string. A provider normally 78 * identifies itself with a file named {@code java.security.Provider} 79 * in the resource directory {@code META-INF/services}. 80 * Security providers are looked up via the {@link ServiceLoader} mechanism 81 * using the {@link ClassLoader#getSystemClassLoader application class loader}. 82 * 83 * <p>Providers may be configured such that they are automatically 84 * installed and made available at runtime via the 85 * {@link Security#getProviders() Security.getProviders()} method. 86 * The mechanism for configuring and installing security providers is 87 * implementation-specific. 88 * 89 * @implNote 90 * The JDK implementation supports static registration of the security 91 * providers via the {@code conf/security/java.security} file in the Java 92 * installation directory. These providers are automatically installed by 93 * the JDK runtime, see <a href = 94 * "../../../technotes/guides/security/crypto/CryptoSpec.html#Provider">The Provider Class</a> | 44 * <li>Algorithms (such as DSA, RSA, or SHA-256). 45 * 46 * <li>Key generation, conversion, and management facilities (such as for 47 * algorithm-specific keys). 48 * 49 * </ul> 50 * 51 * <p>Some provider implementations may encounter unrecoverable internal 52 * errors during their operation, for example a failure to communicate with a 53 * security token. A {@link ProviderException} should be used to indicate 54 * such errors. 55 * 56 * <p>Please note that a provider can be used to implement any security 57 * service in Java that uses a pluggable architecture with a choice 58 * of implementations that fit underneath. 59 * 60 * <p>The service type {@code Provider} is reserved for use by the 61 * security framework. Services of this type cannot be added, removed, 62 * or modified by applications. 63 * The following attributes are automatically placed in each Provider object: 64 * <table class="plain"> 65 * <caption><b>Attributes Automatically Placed in a Provider Object</b></caption> 66 * <thead> 67 * <tr><th>Name</th><th>Value</th> 68 * </thead> 69 * <tbody> 70 * <tr><td>{@code Provider.id name}</td> 71 * <td>{@code String.valueOf(provider.getName())}</td> 72 * <tr><td>{@code Provider.id version}</td> 73 * <td>{@code String.valueOf(provider.getVersionStr())}</td> 74 * <tr><td>{@code Provider.id info}</td> 75 * <td>{@code String.valueOf(provider.getInfo())}</td> 76 * <tr><td>{@code Provider.id className}</td> 77 * <td>{@code provider.getClass().getName()}</td> 78 * </tbody> 79 * </table> 80 * 81 * <p>Each provider has a name and a version string. A provider normally 82 * identifies itself with a file named {@code java.security.Provider} 83 * in the resource directory {@code META-INF/services}. 84 * Security providers are looked up via the {@link ServiceLoader} mechanism 85 * using the {@link ClassLoader#getSystemClassLoader application class loader}. 86 * 87 * <p>Providers may be configured such that they are automatically 88 * installed and made available at runtime via the 89 * {@link Security#getProviders() Security.getProviders()} method. 90 * The mechanism for configuring and installing security providers is 91 * implementation-specific. 92 * 93 * @implNote 94 * The JDK implementation supports static registration of the security 95 * providers via the {@code conf/security/java.security} file in the Java 96 * installation directory. These providers are automatically installed by 97 * the JDK runtime, see <a href = 98 * "../../../technotes/guides/security/crypto/CryptoSpec.html#Provider">The Provider Class</a> |