java.lang.Object
java.util.Dictionary
java.util.Hashtable
请注意,提供程序可用于实现Java中的任何安全服务,该服务使用可插入体系结构,并且可以选择适合下面的实现。
服务类型Provider保留供安全框架使用。 应用程序无法添加,删除或修改此类服务。 以下属性自动放置在每个Provider对象中:
Attributes Automatically Placed in a Provider Object Name Value Provider.id name String.valueOf(provider.getName()) Provider.id version String.valueOf(provider.getVersionStr()) Provider.id info String.valueOf(provider.getInfo()) Provider.id className provider.getClass().getName()
每个提供者都有一个名称和一个版本字符串。 提供程序通常使用资源目录META-INF/services名为java.security.Provider的文件标识自己。 使用application class loader通过ServiceLoader机制查找安全提供程序。
可以对提供程序进行配置,使其自动安装并在运行时通过Security.getProviders()方法提供。 配置和安装安全提供程序的机制是特定于实现的。
Implementation Note:
JDK实现支持通过Java安装目录中的conf/security/java.security文件对安全提供程序进行静态注册。 这些提供程序由JDK运行时自动安装,请参阅Java加密体系结构(JCA)参考指南中的The Provider Class ,以获取有关特定类型的提供程序,加密服务提供程序如何工作和安装的信息。
从以下版本开始:
1.1
另请参见:
Serialized Form
嵌套类汇总
嵌套类
变量和类型 类 描述
static class Provider.Service
安全服务的描述。
字段汇总
声明的属性在类 java.util.Properties
defaults
构造方法摘要
构造方法
变量 构造器 描述
protected Provider(String name, double version, String info)
已过时。
请改用Provider(String, String, String) 。
protected Provider(String name, String versionStr, String info)
构造具有指定名称,版本字符串和信息的提供程序。
方法摘要
所有方法实例方法具体的方法弃用的方法
变量和类型 方法 描述
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) 如果指定键的值存在且为非null,则尝试在给定键及其当前映射值的情况下计算新映射。 Provider configure(String configArg) 将提供的配置参数应用于此提供程序实例,并返回配置的提供程序。 Set
为了在double中返回版本号,当有两个以上的组件(由上面定义的’。'分隔)时,只保留前两个组件。 然后将生成的字符串传递给Double.valueOf(String)以生成版本号,即getVersion() 。
如果转换失败,将使用值0。
参数
name - 提供者名称。
versionStr - 提供程序版本字符串。
info - 提供者及其服务的描述。
从以下版本开始:
9
方法详细信息
configure
public Provider configure(String configArg)
将提供的配置参数应用于此提供程序实例,并返回配置的提供程序。 请注意,如果无法就地配置此提供程序,则将创建并返回新的提供程序。 因此,调用者应始终使用返回的提供者。
实现要求:
默认实现抛出UnsupportedOperationException 。 仅当支持配置参数时,子类才应覆盖此方法。
参数
configArg - 用于配置此提供程序的配置信息。
结果
使用提供的配置参数配置的提供程序。
异常
UnsupportedOperationException - 如果不支持配置参数。
NullPointerException - 如果提供的配置参数为null。
InvalidParameterException - 如果提供的配置参数无效。
从以下版本开始:
9
isConfigured
public boolean isConfigured()
检查是否已配置此提供程序实例。
实现要求:
默认实现返回true。 如果提供程序实例在构造后需要显式调用configure则子类应重写此方法。
结果
如果不需要进一步配置,则为true,否则为false。
从以下版本开始:
9
getName
public String getName()
返回此提供程序的名称。
结果
此提供商的名称。
getVersion
@Deprecated(since=“9”) public double getVersion()
Deprecated.
use getVersionStr() instead.
返回此提供程序的版本号。
结果
此提供程序的版本号。
getVersionStr
public String getVersionStr()
返回此提供程序的版本字符串。
结果
此提供程序的版本字符串。
从以下版本开始:
9
getInfo
public String getInfo()
返回提供程序及其服务的可读描述。 这可能会返回带有相关链接的HTML页面。
结果
提供者及其服务的描述。
toString
public String toString()
返回一个字符串,其中包含此提供程序的名称和版本字符串。
重写:
toString在课程 Hashtable
结果
包含该提供程序的名称和版本字符串的字符串。
clear
public void clear()
清除此提供程序,使其不再包含用于查找提供程序实现的工具的属性。
如果启用了安全管理器,则使用字符串"clearProviderProperties."+name (其中name是提供程序名称)调用其checkSecurityAccess方法,以查看是否可以清除此提供程序。
Specified by:
clear在界面 Map
重写:
clear在类 Hashtable
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以清除此提供程序
从以下版本开始:
1.2
load
public void load(InputStream inStream) throws IOException
从输入流中读取属性列表(键和元素对)。
重写:
load在课程 Properties
参数
inStream - 输入流。
异常
IOException - 如果从输入流中读取时发生错误。
另请参见:
Properties.load(java.io.Reader)
putAll
public void putAll(Map,?> t)
将指定Map中的所有映射复制到此提供程序。 这些映射将替换此提供程序对当前位于指定Map中的任何键的所有属性。
Specified by:
putAll in interface Map
重写:
putAll在课程 Hashtable
参数
t - 要存储在此映射中的映射
从以下版本开始:
1.2
entrySet
public Set
返回此Provider中包含的属性条目的不可修改的Set视图。
Specified by:
entrySet ,界面 Map
重写:
entrySet在课程 Hashtable
结果
此映射中包含的映射的set视图
从以下版本开始:
1.2
另请参见:
Map.Entry
keySet
public Set keySet()
返回此提供程序中包含的属性键的不可修改的Set视图。
Specified by:
keySet ,界面 Map
重写:
keySet在课程 Hashtable
结果
此映射中包含的键的设置视图
从以下版本开始:
1.2
values
public Collection values()
返回此提供程序中包含的属性值的不可修改的Collection视图。
Specified by:
values ,界面 Map
重写:
values在课程 Hashtable
结果
此映射中包含的值的集合视图
从以下版本开始:
1.2
put
public Object put(Object key, Object value)
将key属性设置为具有指定的value 。
如果启用了安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
Specified by:
put接口 Map
重写:
put在课程 Hashtable
参数
key - 哈希表键
value - 该值
结果
此哈希表中指定键的先前值,如果没有, null
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值。
从以下版本开始:
1.2
另请参见:
Object.equals(Object) , Hashtable.get(Object)
putIfAbsent
public Object putIfAbsent(Object key, Object value)
如果指定的键尚未与值关联(或映射到null ), null其与给定值关联并返回null ,否则返回当前值。
如果启用了安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
参数
key - 与指定值关联的键
value - 要与指定键关联的值
结果
与指定键关联的先前值,如果没有键的映射, null 。 (返回null也可以指示先前与关键字相关的地图null ,如果实现支持空值。)
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值。
从以下版本开始:
1.8
remove
public Object remove(Object key)
删除key属性(及其对应的value )。
如果启用了安全管理器,则使用字符串"removeProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以删除此提供程序的属性。
Specified by:
remove在界面 Map
重写:
remove in class Hashtable
参数
key - 需要删除的密钥
结果
密钥已在此哈希表中映射到的值,如果密钥没有映射, null
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。
从以下版本开始:
1.2
remove
public boolean remove(Object key, Object value)
仅当指定键当前映射到指定值时才删除该条目的条目。
如果启用了安全管理器,则使用字符串"removeProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以删除此提供程序的属性。
参数
key - 与指定值关联的键
value - 期望与指定密钥关联的值
结果
true如果值已被删除
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。
从以下版本开始:
1.8
replace
public boolean replace(Object key, Object oldValue, Object newValue)
仅当前映射到指定值时,才替换指定键的条目。
如果启用了安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
参数
key - 与指定值关联的键
oldValue - 期望与指定键关联的值
newValue - 与指定键关联的值
结果
true如果值已被替换
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值。
从以下版本开始:
1.8
replace
public Object replace(Object key, Object value)
仅当指定键当前映射到某个值时,才替换该条目的条目。
如果启用了安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
参数
key - 与指定值关联的键
value - 要与指定键关联的值
结果
与指定键关联的先前值,如果没有键的映射, null 。 (返回null也可以指示先前与关键字相关的地图null ,如果实现支持空值。)
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值。
从以下版本开始:
1.8
replaceAll
public void replaceAll(BiFunction super Object,? super Object,? extends Object> function)
将每个条目的值替换为在该条目上调用给定函数的结果,在条目集迭代器返回的顺序条目中,直到所有条目都已处理或函数抛出异常。
如果启用了安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。
参数
function - 要应用于每个条目的功能
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值。
从以下版本开始:
1.8
compute
public Object compute(Object key, BiFunction super Object,? super Object,? extends Object> remappingFunction)
尝试计算指定键及其当前映射值的映射(如果没有当前映射, null )。
如果启用了安全管理器,则使用字符串"putProviderProperty.“+name和"removeProviderProperty.”+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
Specified by:
compute接口 Map
重写:
compute在课程 Hashtable
参数
key - 与指定值关联的键
remappingFunction - 用于计算值的重映射函数
结果
与指定键关联的新值,如果没有,则返回null
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值或删除属性。
从以下版本开始:
1.8
computeIfAbsent
public Object computeIfAbsent(Object key, Function super Object,? extends Object> mappingFunction)
如果指定的键尚未与值关联(或映射到null ),则尝试使用给定的映射函数计算其值并将其输入此映射,除非null 。
如果启用了安全管理器,则使用字符串"putProviderProperty.“+name和"removeProviderProperty.”+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
Specified by:
computeIfAbsent in interface Map
重写:
computeIfAbsent在课程 Hashtable
参数
key - 与指定值关联的键
mappingFunction - 计算值的映射函数
结果
与指定键关联的当前(现有或已计算)值,如果计算值为null,则为null
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值并删除属性。
从以下版本开始:
1.8
computeIfPresent
public Object computeIfPresent(Object key, BiFunction super Object,? super Object,? extends Object> remappingFunction)
如果指定键的值存在且为非null,则尝试在给定键及其当前映射值的情况下计算新映射。
如果启用了安全管理器,则使用字符串"putProviderProperty.“+name和"removeProviderProperty.”+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
Specified by:
computeIfPresent in interface Map
重写:
computeIfPresent在课程 Hashtable
参数
key - 与指定值关联的键
remappingFunction - 用于计算值的重映射函数
结果
与指定键关联的新值,如果没有,则返回null
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问设置属性值或删除属性。
从以下版本开始:
1.8
merge
public Object merge(Object key, Object value, BiFunction super Object,? super Object,? extends Object> remappingFunction)
如果指定的键尚未与值关联或与null关联,则将其与给定值相关联。 否则,将值替换为给定重映射函数的结果,或者如果结果为null则删除。 当组合密钥的多个映射值时,该方法可以是有用的。
如果启用了安全管理器,则使用字符串"putProviderProperty.“+name和"removeProviderProperty.”+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值并删除此提供程序的属性。
Specified by:
merge接口 Map
重写:
merge在课程 Hashtable
参数
key - 与结果值关联的键
value - 要与与键关联的现有值合并的非空值,或者,如果没有现有值或与键关联的空值,则与键关联
remappingFunction - 重新计算值的重新映射函数(如果存在)
结果
与指定键关联的新值,如果没有值与键关联,则返回null
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值或删除属性。
从以下版本开始:
1.8
getOrDefault
public Object getOrDefault(Object key, Object defaultValue)
从界面复制的说明: Map
返回指定键映射到的值,如果此映射不包含键的映射,则返回 defaultValue 。
参数
key - 要返回其关联值的键
defaultValue - 密钥的默认映射
结果
指定键映射到的值,如果此映射不包含键的映射, defaultValue
从以下版本开始:
1.8
forEach
public void forEach(BiConsumer super Object,? super Object> action)
从界面复制的说明: Map
对此映射中的每个条目执行给定操作,直到处理完所有条目或操作引发异常。 除非实现类另有指定,否则将按入口集迭代的顺序执行操作(如果指定了迭代顺序。)操作抛出的异常将中继到调用方。
参数
action - 要为每个条目执行的操作
从以下版本开始:
1.8
getService
public Provider.Service getService(String type, String algorithm)
获取描述此Provider的此算法或别名的指定类型的实现的服务。 如果不存在此类实现,则此方法返回null。 如果有两个匹配服务,一个使用putService()添加到此提供程序,另一个通过put()添加,则返回通过putService()添加的服务。
参数
type - 请求的类型service (例如, MessageDigest )
algorithm - 请求的服务的不区分大小写的算法名称(或备用别名)(例如, SHA-1 )
结果
描述此Provider的匹配服务的服务,如果不存在此类服务,则为null
异常
NullPointerException - 如果类型或算法为null
从以下版本开始:
1.5
getServices
public Set
获取此提供商支持的所有服务的不可修改的集合。
结果
此提供商支持的所有服务的不可修改的集合
从以下版本开始:
1.5
putService
protected void putService(Provider.Service s)
添加服务。 如果存在具有相同算法名称的相同类型的服务并且使用putService()添加它,则它将被新服务替换。 此方法还以Java Cryptography Architecture (JCA) Reference Guide中描述的格式将有关此服务的信息放在提供程序的Hashtable值中。
此外,如果有安全管理器,则使用字符串"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。 如果使用默认实现checkSecurityAccess (即,该方法未被覆盖),则会导致使用SecurityPermission(“putProviderProperty.”+name)权限调用安全管理器的checkPermission方法。
参数
s - 要添加的服务
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问set属性值。
NullPointerException - 如果s为null
从以下版本开始:
1.5
removeService
protected void removeService(Provider.Service s)
删除以前使用putService()添加的服务。 将从此提供程序中删除指定的服务。 它将不再由getService()返回,其信息将从该提供商的Hashtable中删除。
此外,如果有安全管理器,则使用字符串"removeProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以删除此提供程序的属性。 如果使用默认实现checkSecurityAccess (即,该方法未被覆盖),则会导致调用具有SecurityPermission(“removeProviderProperty.”+name)权限的安全管理器checkPermission方法。
参数
s - 要删除的服务
异常
SecurityException - 如果存在安全管理器且其 SecurityManager.checkSecurityAccess(java.lang.String)方法拒绝访问以删除此提供程序的属性。
NullPointerException - 如果s为null
从以下版本开始:
1.5