public abstract class Provider extends Properties
每个提供者都有一个名称和一个版本号,并在每个运行时安装它。
见The Provider Class在“Java加密体系结构API规范与参考”关于特定类型的供应商,加密服务提供程序,如何工作和安装信息。 但是,请注意,可以使用提供程序来实现Java中使用可插拔架构的任何安全服务,并可选择适合的实现。
一些提供者实现在其操作期间可能会遇到不可恢复的内部错误,例如无法与安全令牌进行通信。 A ProviderException
应用于指示此类错误。
服务类型Provider
保留供安全框架使用。 这种类型的服务不能被应用程序添加,删除或修改。 以下属性将自动放置在每个Provider对象中:
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()
Modifier and Type | Class and Description |
---|---|
static class |
Provider.Service
安全服务的描述。
|
defaults
Modifier | Constructor and Description |
---|---|
protected |
Provider(String name, double version, String info)
构造具有指定名称,版本号和信息的提供程序。
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
清除此提供程序,使其不再包含用于查找由提供程序实施的设施的属性。
|
Object |
compute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
尝试计算用于指定键和其当前映射的值的映射(或
null 如果没有当前映射)。
|
Object |
computeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)
如果指定的键尚未与值相关联(或映射到
null ),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非
null 。
|
Object |
computeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果指定的密钥的值存在且非空,则尝试计算给定密钥及其当前映射值的新映射。
|
Enumeration<Object> |
elements()
返回此散列表中值的枚举。
|
Set<Map.Entry<Object,Object>> |
entrySet()
返回此提供程序中包含的属性条目的不可修改的Set视图。
|
void |
forEach(BiConsumer<? super Object,? super Object> action)
对此映射中的每个条目执行给定的操作,直到所有条目都被处理或操作引发异常。
|
Object |
get(Object key)
返回到指定键所映射的值,或
null 如果此映射包含该键的映射。
|
String |
getInfo()
返回提供商及其服务的可读描述。
|
String |
getName()
返回此提供程序的名称。
|
Object |
getOrDefault(Object key, Object defaultValue)
返回到指定键所映射的值,或
defaultValue 如果此映射包含该键的映射。
|
String |
getProperty(String key)
使用此属性列表中指定的键搜索属性。
|
Provider.Service |
getService(String type, String algorithm)
获取描述此提供程序实现该算法或别名的指定类型的服务。
|
Set<Provider.Service> |
getServices()
获取不可修改的此提供程序支持的所有服务的集合。
|
double |
getVersion()
返回此提供商的版本号。
|
Enumeration<Object> |
keys()
返回此散列表中键的枚举。
|
Set<Object> |
keySet()
返回此提供程序中包含的属性键的不可修改的Set视图。
|
void |
load(InputStream inStream)
从输入流读取属性列表(键和元素对)。
|
Object |
merge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果指定的键尚未与值相关联或与null关联,则将其与给定值相关联。
|
Object |
put(Object key, Object value)
将
key 属性设置为具有指定的
value 。
|
void |
putAll(Map<?,?> t)
将指定地图中的所有映射复制到此提供程序。
|
Object |
putIfAbsent(Object key, Object value)
如果指定的键尚未与值相关联(或映射到
null ),则将其与给定值相关联并返回
null ,否则返回当前值。
|
protected void |
putService(Provider.Service s)
添加服务。
|
Object |
remove(Object key)
删除
key 属性(及其对应的
value )。
|
boolean |
remove(Object key, Object value)
仅当指定的密钥当前映射到指定的值时删除该条目。
|
protected void |
removeService(Provider.Service s)
删除以前使用
putService() 添加的服务。
|
Object |
replace(Object key, Object value)
只有当目标映射到某个值时,才能替换指定键的条目。
|
boolean |
replace(Object key, Object oldValue, Object newValue)
仅当当前映射到指定的值时,才能替换指定键的条目。
|
void |
replaceAll(BiFunction<? super Object,? super Object,? extends Object> function)
用条目集迭代器返回的顺序,直到所有的条目都被处理或函数抛出一个异常,替换每个条目的值,结果是对该条目调用给定的函数。
|
String |
toString()
返回带有此提供程序的名称和版本号的字符串。
|
Collection<Object> |
values()
返回此提供程序中包含的属性值的不可修改的集合视图。
|
getProperty, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, stringPropertyNames
clone, contains, containsKey, containsValue, equals, hashCode, isEmpty, rehash, size
public String getName()
public double getVersion()
public String getInfo()
public String toString()
public void clear()
如果启用安全管理器,则使用字符串"clearProviderProperties."+name
(其中name
是提供程序名称)调用其checkSecurityAccess
方法,以查看是否可以清除此提供程序。
clear
在界面
Map<Object,Object>
clear
在类别
Hashtable<Object,Object>
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以清除此提供者
public void load(InputStream inStream) throws IOException
load
在类别
Properties
inStream
- 输入流。
IOException
- 从输入流读取时发生错误。
Properties.load(java.io.Reader)
public void putAll(Map<?,?> t)
public Collection<Object> values()
public Object put(Object key, Object value)
key
属性设置为具有指定的value
。
如果启用安全管理器,则使用字符串"putProviderProperty."+name
调用其checkSecurityAccess
方法,其中name
是提供程序名称,以查看是否可以设置此提供程序的属性值。
put
在界面
Map<Object,Object>
put
在类别
Hashtable<Object,Object>
key
- 哈希表键
value
- 值
null
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝对设置属性值的访问。
Object.equals(Object)
,
Hashtable.get(Object)
public Object putIfAbsent(Object key, Object value)
null
)将其与给定值相关联并返回null
,否则返回当前值。
如果安全管理器被启用,其checkSecurityAccess
方法调用带有字符串"putProviderProperty."+name
,其中name
是供应商的名字,看它是否可以设置此provider的属性值。
putIfAbsent
在界面
Map<Object,Object>
putIfAbsent
在类别
Hashtable<Object,Object>
key
- 指定值与之关联的键
value
- 与指定键相关联的值
null
。
(A null
返回也可以指示以前关联的映射关系为null
,如果实现支持空值)。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问设置属性值。
public Object remove(Object key)
key
属性(及其对应的value
)。
如果启用了安全管理器,则使用字符串"removeProviderProperty."+name
调用其checkSecurityAccess
方法,其中name
是提供程序名称,以查看是否可以删除此提供程序的属性。
remove
在界面
Map<Object,Object>
remove
在类别
Hashtable<Object,Object>
key
- 需要删除的关键
null
如果该键没有映射
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以删除此提供程序的属性。
public boolean remove(Object key, Object value)
如果安全管理器已启用,则其checkSecurityAccess
方法将使用字符串"removeProviderProperty."+name
(其中name
是提供程序名称)来调用,以查看是否可以删除此提供程序的属性。
remove
在界面
Map<Object,Object>
remove
在类别
Hashtable<Object,Object>
key
- 与指定值相关联的键
value
- 预期与指定键相关联的值
true
如果该值被删除
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以删除此提供程序的属性。
public boolean replace(Object key, Object oldValue, Object newValue)
如果启用了安全管理器,则使用字符串"putProviderProperty."+name
调用其checkSecurityAccess
方法,其中name
是提供程序名称,以查看是否可以设置此提供程序的属性值。
replace
在界面
Map<Object,Object>
replace
在类别
Hashtable<Object,Object>
key
- 与指定值相关联的键
oldValue
- 预期与指定键相关联的值
newValue
- 与指定键相关联的值
true
如果值被替换
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝对设置属性值的访问。
public Object replace(Object key, Object value)
如果安全管理器被启用,其checkSecurityAccess
方法调用带有字符串"putProviderProperty."+name
,其中name
是供应商的名字,看它是否可以设置此provider的属性值。
replace
在界面
Map<Object,Object>
replace
在类别
Hashtable<Object,Object>
key
- 与指定值相关联的键
value
- 与指定键相关联的值
null
。
(A null
返回也可以指示映射以前关联的是null
的关键字,如果实现支持空值)。
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问设置属性值。
public void replaceAll(BiFunction<? super Object,? super Object,? extends Object> function)
如果安全管理器已启用,则其checkSecurityAccess
方法将使用字符串"putProviderProperty."+name
(其中name
是提供程序名称)进行调用,以查看是否可以设置此提供程序的属性值。
replaceAll
在界面
Map<Object,Object>
replaceAll
在类别
Hashtable<Object,Object>
function
- 应用于每个条目的功能
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝对设置属性值的访问。
public Object compute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
null
如果没有当前映射)。
如果启用安全管理器,则使用字符串"putProviderProperty."+name
和"removeProviderProperty."+name
调用其checkSecurityAccess
方法,其中name
是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
compute
在界面
Map<Object,Object>
compute
在类别
Hashtable<Object,Object>
key
- 要与其关联的指定值的键
remappingFunction
- 计算值的函数
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问设置属性值或删除属性。
public Object computeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)
null
),则尝试使用给定的映射函数计算其值,并将其输入到此映射中,除非null
。
如果启用安全管理器,则使用字符串"putProviderProperty."+name
和"removeProviderProperty."+name
(其中name
是提供程序名称)调用其checkSecurityAccess
方法,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
computeIfAbsent
在界面
Map<Object,Object>
computeIfAbsent
在类别
Hashtable<Object,Object>
key
- 要与其关联的指定值的键
mappingFunction
- 计算值的函数
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问设置属性值并删除属性。
public Object computeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果启用安全管理器,则使用字符串"putProviderProperty."+name
和"removeProviderProperty."+name
调用其checkSecurityAccess
方法,其中name
是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
computeIfPresent
在界面
Map<Object,Object>
computeIfPresent
在类别
Hashtable<Object,Object>
key
- 要与其关联的指定值的键
remappingFunction
- 计算值的函数
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问设置属性值或删除属性。
public Object merge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)
如果启用安全管理器,则使用字符串"putProviderProperty."+name
和"removeProviderProperty."+name
(其中name
是提供程序名称)调用其checkSecurityAccess
方法,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
merge
在界面
Map<Object,Object>
merge
在类别
Hashtable<Object,Object>
key
- 与结果值相关联的键
value
- 要与与密钥相关联的现有值合并的非空值,或者如果没有现有值或空值与密钥相关联,则与该密钥相关联
remappingFunction
- 重新计算值(如果存在)的功能
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问设置属性值或删除属性。
public Object get(Object key)
Hashtable
复制
null
如果此映射包含该键的映射。
更正式地,如果该地图包含从键k
到值v
,使得(key.equals(k))
,则该方法返回v
; 否则返回null
。 (最多可以有一个这样的映射。)
public Object getOrDefault(Object key, Object defaultValue)
Map
复制
defaultValue
如果此映射包含该键的映射。
getOrDefault
在界面
Map<Object,Object>
getOrDefault
在类别
Hashtable<Object,Object>
key
- 要返回其关联值的键
defaultValue
- 键的默认映射
defaultValue
public void forEach(BiConsumer<? super Object,? super Object> action)
Map
复制
public Enumeration<Object> keys()
Hashtable
复制
keys
在类别
Hashtable<Object,Object>
Enumeration
, Hashtable.elements()
, Hashtable.keySet()
, Map
public Enumeration<Object> elements()
Hashtable
复制
elements
在类别
Hashtable<Object,Object>
Enumeration
, Hashtable.keys()
, Hashtable.values()
, Map
public String getProperty(String key)
Properties
复制
null
。
getProperty
在类别
Properties
key
- 属性键。
Properties.setProperty(java.lang.String, java.lang.String)
,
Properties.defaults
public Provider.Service getService(String type, String algorithm)
putService()
和一个通过put()
添加,通过putService()
添加的服务被返回。
type
-的类型service
请求(例如, MessageDigest
)
algorithm
-
algorithm
服务的不区分大小写的算法名称(或替代别名)(例如,
SHA-1
)
NullPointerException
- 如果类型或算法为空
public Set<Provider.Service> getServices()
protected void putService(Provider.Service s)
putService()
添加该服务,则将被新服务替换。
此方法还放置有关供应商的哈希表值这个服务在描述的格式信息Java Cryptography Architecture API Specification & Reference 。
另外,如果有一个安全管理器,它的checkSecurityAccess
方法被调用与字符串"putProviderProperty."+name
,其中name
是提供者名称,看看是否可以设置此提供程序的属性值。 如果默认实现checkSecurityAccess
被使用(即,未重写此方法),那么这会导致对安全管理器的一个电话checkPermission
方法有SecurityPermission("putProviderProperty."+name)
许可。
s
- 要添加的服务
SecurityException
- 如果安全管理器存在,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝对设置属性值的访问。
NullPointerException
- 如果s为空
protected void removeService(Provider.Service s)
putService()
添加的服务。
指定的服务将从此提供程序中删除。
它将不再由getService()
返回,其信息将从此提供商的Hashtable中删除。
另外,如果有一个安全管理器,它的checkSecurityAccess
方法被调用与字符串"removeProviderProperty."+name
,其中name
是提供程序的名称,看看是否可以删除此提供程序的属性。 如果默认实现checkSecurityAccess
被使用(即,未重写此方法),那么这会导致对安全管理器的一个电话checkPermission
方法有SecurityPermission("removeProviderProperty."+name)
许可。
s
- 要删除的服务
SecurityException
- 如果存在安全管理员,并且其
SecurityManager.checkSecurityAccess(java.lang.String)
方法拒绝访问以删除此提供程序的属性。
NullPointerException
- 如果s为空