- java.lang.Object
-
- java.util.Dictionary<K,V>
-
- java.util.Hashtable<Object,Object>
-
- java.util.Properties
-
- java.security.Provider
-
- All Implemented Interfaces:
- Serializable, Cloneable, Map<Object,Object>
- Direct Known Subclasses:
- AuthProvider
public abstract class Provider extends Properties
This class represents a "provider" for the Java Security API, where a provider implements some or all parts of Java Security. Services that a provider may implement include:- Algorithms (such as DSA, RSA, MD5 or SHA-1).
- Key generation, conversion, and management facilities (such as for algorithm-specific keys).
Each provider has a name and a version number, and is configured in each runtime it is installed in.
See The Provider Class in the "Java Cryptography Architecture API Specification & Reference" for information about how a particular type of provider, the cryptographic service provider, works and is installed. However, please note that a provider can be used to implement any security service in Java that uses a pluggable architecture with a choice of implementations that fit underneath.
Some provider implementations may encounter unrecoverable internal errors during their operation, for example a failure to communicate with a security token. A
ProviderException
should be used to indicate such errors.The service type
Provider
is reserved for use by the security framework. Services of this type cannot be added, removed, or modified by applications. The following attributes are automatically placed in each Provider object:Name Value Provider.id name
String.valueOf(provider.getName())
Provider.id version
String.valueOf(provider.getVersion())
Provider.id info
String.valueOf(provider.getInfo())
Provider.id className
provider.getClass().getName()
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class and Description static class
Provider.Service
The description of a security service.
-
Field Summary
-
Fields inherited from class java.util.Properties
defaults
-
-
Constructor Summary
Constructors Modifier Constructor and Description protected
Provider(String name, double version, String info)
Constructs a provider with the specified name, version number, and information.
-
Method Summary
Methods Modifier and Type Method and Description void
clear()
Clears this provider so that it no longer contains the properties used to look up facilities implemented by the provider.Enumeration<Object>
elements()
Returns an enumeration of the values in this hashtable.Set<Map.Entry<Object,Object>>
entrySet()
Returns an unmodifiable Set view of the property entries contained in this Provider.Object
get(Object key)
Returns the value to which the specified key is mapped, ornull
if this map contains no mapping for the key.String
getInfo()
Returns a human-readable description of the provider and its services.String
getName()
Returns the name of this provider.String
getProperty(String key)
Searches for the property with the specified key in this property list.Provider.Service
getService(String type, String algorithm)
Get the service describing this Provider's implementation of the specified type of this algorithm or alias.Set<Provider.Service>
getServices()
Get an unmodifiable Set of all services supported by this Provider.double
getVersion()
Returns the version number for this provider.Enumeration<Object>
keys()
Returns an enumeration of the keys in this hashtable.Set<Object>
keySet()
Returns an unmodifiable Set view of the property keys contained in this provider.void
load(InputStream inStream)
Reads a property list (key and element pairs) from the input stream.Object
put(Object key, Object value)
Sets thekey
property to have the specifiedvalue
.void
putAll(Map<?,?> t)
Copies all of the mappings from the specified Map to this provider.protected void
putService(Provider.Service s)
Add a service.Object
remove(Object key)
Removes thekey
property (and its correspondingvalue
).protected void
removeService(Provider.Service s)
Remove a service previously added usingputService()
.String
toString()
Returns a string with the name and the version number of this provider.Collection<Object>
values()
Returns an unmodifiable Collection view of the property values contained in this provider.-
Methods inherited from class java.util.Properties
getProperty, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, stringPropertyNames
-
Methods inherited from class java.util.Hashtable
clone, contains, containsKey, containsValue, equals, hashCode, isEmpty, rehash, size
-
-
-
-
Method Detail
-
getName
public String getName()
Returns the name of this provider.- Returns:
- the name of this provider.
-
getVersion
public double getVersion()
Returns the version number for this provider.- Returns:
- the version number for this provider.
-
getInfo
public String getInfo()
Returns a human-readable description of the provider and its services. This may return an HTML page, with relevant links.- Returns:
- a description of the provider and its services.
-
toString
public String toString()
Returns a string with the name and the version number of this provider.
-
clear
public void clear()
Clears this provider so that it no longer contains the properties used to look up facilities implemented by the provider.First, if there is a security manager, its
checkSecurityAccess
method is called with the string"clearProviderProperties."+name
(wherename
is the provider name) to see if it's ok to clear this provider. If the default implementation ofcheckSecurityAccess
is used (that is, that method is not overriden), then this results in a call to the security manager'scheckPermission
method with aSecurityPermission("clearProviderProperties."+name)
permission.- Specified by:
clear
in interfaceMap<Object,Object>
- Overrides:
clear
in classHashtable<Object,Object>
- Throws:
SecurityException
- if a security manager exists and its
method denies access to clear this providerSecurityManager.checkSecurityAccess(java.lang.String)
- Since:
- 1.2
-
load
public void load(InputStream inStream) throws IOException
Reads a property list (key and element pairs) from the input stream.- Overrides:
load
in classProperties
- Parameters:
inStream
- the input stream.- Throws:
IOException
- if an error occurred when reading from the input stream.- See Also:
Properties.load(java.io.Reader)
-
putAll
public void putAll(Map<?,?> t)
Copies all of the mappings from the specified Map to this provider. These mappings will replace any properties that this provider had for any of the keys currently in the specified Map.
-
entrySet
public Set<Map.Entry<Object,Object>> entrySet()
Returns an unmodifiable Set view of the property entries contained in this Provider.
-
keySet
public Set<Object> keySet()
Returns an unmodifiable Set view of the property keys contained in this provider.
-
values
public Collection<Object> values()
Returns an unmodifiable Collection view of the property values contained in this provider.
-
put
public Object put(Object key, Object value)
Sets thekey
property to have the specifiedvalue
.First, if there is a security manager, its
checkSecurityAccess
method is called with the string"putProviderProperty."+name
, wherename
is the provider name, to see if it's ok to set this provider's property values. If the default implementation ofcheckSecurityAccess
is used (that is, that method is not overriden), then this results in a call to the security manager'scheckPermission
method with aSecurityPermission("putProviderProperty."+name)
permission.- Specified by:
put
in interfaceMap<Object,Object>
- Overrides:
put
in classHashtable<Object,Object>
- Parameters:
key
- the property key.value
- the property value.- Returns:
- the previous value of the specified property
(
key
), or null if it did not have one. - Throws:
SecurityException
- if a security manager exists and its
method denies access to set property values.SecurityManager.checkSecurityAccess(java.lang.String)
- Since:
- 1.2
- See Also:
Object.equals(Object)
,Hashtable.get(Object)
-
remove
public Object remove(Object key)
Removes thekey
property (and its correspondingvalue
).First, if there is a security manager, its
checkSecurityAccess
method is called with the string"removeProviderProperty."+name
, wherename
is the provider name, to see if it's ok to remove this provider's properties. If the default implementation ofcheckSecurityAccess
is used (that is, that method is not overriden), then this results in a call to the security manager'scheckPermission
method with aSecurityPermission("removeProviderProperty."+name)
permission.- Specified by:
remove
in interfaceMap<Object,Object>
- Overrides:
remove
in classHashtable<Object,Object>
- Parameters:
key
- the key for the property to be removed.- Returns:
- the value to which the key had been mapped, or null if the key did not have a mapping.
- Throws:
SecurityException
- if a security manager exists and its
method denies access to remove this provider's properties.SecurityManager.checkSecurityAccess(java.lang.String)
- Since:
- 1.2
-
get
public Object get(Object key)
Description copied from class:Hashtable
Returns the value to which the specified key is mapped, ornull
if this map contains no mapping for the key.More formally, if this map contains a mapping from a key
k
to a valuev
such that(key.equals(k))
, then this method returnsv
; otherwise it returnsnull
. (There can be at most one such mapping.)- Specified by:
get
in interfaceMap<Object,Object>
- Overrides:
get
in classHashtable<Object,Object>
- Parameters:
key
- the key whose associated value is to be returned- Returns:
- the value to which the specified key is mapped, or
null
if this map contains no mapping for the key - See Also:
Hashtable.put(Object, Object)
-
keys
public Enumeration<Object> keys()
Description copied from class:Hashtable
Returns an enumeration of the keys in this hashtable.- Overrides:
keys
in classHashtable<Object,Object>
- Returns:
- an enumeration of the keys in this hashtable.
- See Also:
Enumeration
,Hashtable.elements()
,Hashtable.keySet()
,Map
-
elements
public Enumeration<Object> elements()
Description copied from class:Hashtable
Returns an enumeration of the values in this hashtable. Use the Enumeration methods on the returned object to fetch the elements sequentially.- Overrides:
elements
in classHashtable<Object,Object>
- Returns:
- an enumeration of the values in this hashtable.
- See Also:
Enumeration
,Hashtable.keys()
,Hashtable.values()
,Map
-
getProperty
public String getProperty(String key)
Description copied from class:Properties
Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returnsnull
if the property is not found.- Overrides:
getProperty
in classProperties
- Parameters:
key
- the property key.- Returns:
- the value in this property list with the specified key value.
- See Also:
Properties.setProperty(java.lang.String, java.lang.String)
,Properties.defaults
-
getService
public Provider.Service getService(String type, String algorithm)
Get the service describing this Provider's implementation of the specified type of this algorithm or alias. If no such implementation exists, this method returns null. If there are two matching services, one added to this provider usingputService()
and one added viaput()
, the service added viaputService()
is returned.- Parameters:
type
- the type ofservice
requested (for example,MessageDigest
)algorithm
- the case insensitive algorithm name (or alternate alias) of the service requested (for example,SHA-1
)- Returns:
- the service describing this Provider's matching service or null if no such service exists
- Throws:
NullPointerException
- if type or algorithm is null- Since:
- 1.5
-
getServices
public Set<Provider.Service> getServices()
Get an unmodifiable Set of all services supported by this Provider.- Returns:
- an unmodifiable Set of all services supported by this Provider
- Since:
- 1.5
-
putService
protected void putService(Provider.Service s)
Add a service. If a service of the same type with the same algorithm name exists and it was added usingputService()
, it is replaced by the new service. This method also places information about this service in the provider's Hashtable values in the format described in the Java Cryptography Architecture API Specification & Reference .Also, if there is a security manager, its
checkSecurityAccess
method is called with the string"putProviderProperty."+name
, wherename
is the provider name, to see if it's ok to set this provider's property values. If the default implementation ofcheckSecurityAccess
is used (that is, that method is not overriden), then this results in a call to the security manager'scheckPermission
method with aSecurityPermission("putProviderProperty."+name)
permission.- Parameters:
s
- the Service to add- Throws:
SecurityException
- if a security manager exists and its
method denies access to set property values.SecurityManager.checkSecurityAccess(java.lang.String)
NullPointerException
- if s is null- Since:
- 1.5
-
removeService
protected void removeService(Provider.Service s)
Remove a service previously added usingputService()
. The specified service is removed from this provider. It will no longer be returned bygetService()
and its information will be removed from this provider's Hashtable.Also, if there is a security manager, its
checkSecurityAccess
method is called with the string"removeProviderProperty."+name
, wherename
is the provider name, to see if it's ok to remove this provider's properties. If the default implementation ofcheckSecurityAccess
is used (that is, that method is not overriden), then this results in a call to the security manager'scheckPermission
method with aSecurityPermission("removeProviderProperty."+name)
permission.- Parameters:
s
- the Service to be removed- Throws:
SecurityException
- if a security manager exists and its
method denies access to remove this provider's properties.SecurityManager.checkSecurityAccess(java.lang.String)
NullPointerException
- if s is null- Since:
- 1.5
-
-
Document created the 11/06/2005, last modified the 04/03/2020
Source of the printed document:https://www.gaudry.be/en/java-api-rf-java/security/provider.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.