The Provider Class

A Provider is a package or set of packages that supplies a concrete implementation of a subset of the Java™ 2 SDK Security API cryptography features. The Provider class is the interface to such a package or set of packages. It has methods for accessing the provider name, version number, and other information. In addition to registering implementations of cryptographic services, the Provider class can also be used to register implementations of other security services that might get defined as part of the Java 2 SDK Security API or one of its extensions.

To supply implementations of cryptographic services, an entity (such as a development group) writes the implementation code and creates a subclass of the Provider class. The constructor of the Provider subclass sets the values of various properties; the Java 2 SDK Security API uses these values to look up the services that the provider implements. In other words, the subclass specifies the names of the classes that are implementing the services.

There are several types of services that can be implemented by provider packages; for more information, see Engine Classes and Algorithms.

The different implementations might have different characteristics. Some might be software-based, while others might be hardware-based. Some might be platform-independent, while others might be platform-specific. Some provider source code might be available for review and evaluation, while some might not. The Java Cryptography Architecture (JCA) lets both end-users and developers decide what their needs are.