- java.lang.Object
-
- java.util.Dictionary<K,V>
-
- java.util.Hashtable<Object,Object>
-
- java.util.Properties
-
- java.security.Provider
-
- 实现的所有接口
-
Serializable,Cloneable,Map<Object,Object>
- 已知直接子类:
-
AuthProvider
public abstract class Provider extends Properties
此类表示Java安全API的“提供者”,其中提供者实现Java安全性的部分或全部部分。 提供商可以实施的服务包括:- 算法(例如DSA,RSA或SHA-256)。
- 密钥生成,转换和管理工具(例如特定于算法的密钥)。
某些提供程序实现在其操作期间可能会遇到不可恢复的内部错误,例如无法与安全令牌通信。 应使用
ProviderException来指示此类错误。请注意,提供程序可用于实现Java中的任何安全服务,该服务使用可插入体系结构,并且可以选择适合下面的实现。
服务类型
Attributes Automatically Placed in a Provider Object Name ValueProvider保留供安全框架使用。 应用程序无法添加,删除或修改此类服务。 以下属性自动放置在每个Provider对象中:Provider.id nameString.valueOf(provider.getName())Provider.id versionString.valueOf(provider.getVersionStr())Provider.id infoString.valueOf(provider.getInfo())Provider.id classNameprovider.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 classProvider.Service安全服务的描述。
-
字段汇总
-
声明的属性在类 java.util.Properties
defaults
-
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 voidclear()清除此提供程序,使其不再包含用于查找提供程序实现的工具的属性。Objectcompute(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)尝试计算指定键及其当前映射值的映射(如果没有当前映射,null)。ObjectcomputeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)如果指定的键尚未与值关联(或映射到null),则尝试使用给定的映射函数计算其值并将其输入此映射,除非null。ObjectcomputeIfPresent(Object key, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)如果指定键的值存在且为非null,则尝试在给定键及其当前映射值的情况下计算新映射。Providerconfigure(String configArg)将提供的配置参数应用于此提供程序实例,并返回配置的提供程序。Set<Map.Entry<Object,Object>>entrySet()返回此Provider中包含的属性条目的不可修改的Set视图。voidforEach(BiConsumer<? super Object,? super Object> action)对此映射中的每个条目执行给定操作,直到处理完所有条目或操作引发异常。StringgetInfo()返回提供程序及其服务的可读描述。StringgetName()返回此提供程序的名称。ObjectgetOrDefault(Object key, Object defaultValue)返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue。Provider.ServicegetService(String type, String algorithm)获取描述此Provider的此算法或别名的指定类型的实现的服务。Set<Provider.Service>getServices()获取此提供商支持的所有服务的不可修改的集合。doublegetVersion()已过时。请改用getVersionStr()。StringgetVersionStr()返回此提供程序的版本字符串。booleanisConfigured()检查是否已配置此提供程序实例。Set<Object>keySet()返回此提供程序中包含的属性键的不可修改的Set视图。voidload(InputStream inStream)从输入流中读取属性列表(键和元素对)。Objectmerge(Object key, Object value, BiFunction<? super Object,? super Object,? extends Object> remappingFunction)如果指定的键尚未与值关联或与null关联,则将其与给定值相关联。Objectput(Object key, Object value)将key属性设置为具有指定的value。voidputAll(Map<?,?> t)将指定Map中的所有映射复制到此提供程序。ObjectputIfAbsent(Object key, Object value)如果指定的键尚未与值关联(或映射到null),null其与给定值关联并返回null,否则返回当前值。protected voidputService(Provider.Service s)添加服务。Objectremove(Object key)删除key属性(及其对应的value)。booleanremove(Object key, Object value)仅当指定键当前映射到指定值时才删除该条目的条目。protected voidremoveService(Provider.Service s)删除以前使用putService()添加的服务。Objectreplace(Object key, Object value)仅当指定键当前映射到某个值时,才替换该条目的条目。booleanreplace(Object key, Object oldValue, Object newValue)仅当前映射到指定值时,才替换指定键的条目。voidreplaceAll(BiFunction<? super Object,? super Object,? extends Object> function)将每个条目的值替换为在该条目上调用给定函数的结果,在条目集迭代器返回的顺序条目中,直到所有条目都已处理或函数抛出异常。StringtoString()返回一个字符串,其中包含此提供程序的名称和版本字符串。Collection<Object>values()返回此提供程序中包含的属性值的不可修改的Collection视图。-
声明方法的类 java.util.Properties
getProperty, getProperty, list, list, load, loadFromXML, propertyNames, save, setProperty, store, store, storeToXML, storeToXML, storeToXML, stringPropertyNames
-
-
-
-
构造方法详细信息
-
Provider
@Deprecated(since="9") protected Provider(String name, double version, String info)
Deprecated.useProvider(String, String, String)instead.构造具有指定名称,版本号和信息的提供程序。 调用此构造相当于拨打Provider(String, String, String)与name名,Double.toString(version)和info。- 参数
-
name- 提供者名称。 -
version- 提供者版本号。 -
info- 提供商及其服务的描述。
-
Provider
protected Provider(String name, String versionStr, String info)
构造具有指定名称,版本字符串和信息的提供程序。版本字符串包含一个版本号,可选地后跟由“+”,“ - ”之一分隔的其他信息。 版本号的格式为:
^[0-9]+(\.[0-9]+)*为了在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.usegetVersionStr()instead.返回此提供程序的版本号。- 结果
- 此提供程序的版本号。
-
getVersionStr
public String getVersionStr()
返回此提供程序的版本字符串。- 结果
- 此提供程序的版本字符串。
- 从以下版本开始:
- 9
-
getInfo
public String getInfo()
返回提供程序及其服务的可读描述。 这可能会返回带有相关链接的HTML页面。- 结果
- 提供者及其服务的描述。
-
toString
public String toString()
返回一个字符串,其中包含此提供程序的名称和版本字符串。
-
clear
public void clear()
清除此提供程序,使其不再包含用于查找提供程序实现的工具的属性。如果启用了安全管理器,则使用字符串
"clearProviderProperties."+name(其中name是提供程序名称)调用其checkSecurityAccess方法,以查看是否可以清除此提供程序。- Specified by:
-
clear在界面Map<Object,Object> - 重写:
-
clear在类Hashtable<Object,Object> - 异常
-
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中的任何键的所有属性。
-
values
public Collection<Object> values()
返回此提供程序中包含的属性值的不可修改的Collection视图。
-
put
public Object put(Object key, Object value)
将key属性设置为具有指定的value。如果启用了安全管理器,则使用字符串
"putProviderProperty."+name调用其checkSecurityAccess方法,其中name是提供程序名称,以查看是否可以设置此提供程序的属性值。- Specified by:
-
put接口Map<Object,Object> - 重写:
-
put在课程Hashtable<Object,Object> - 参数
-
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<Object,Object> - 重写:
-
removein classHashtable<Object,Object> - 参数
-
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<Object,Object> - 重写:
-
compute在课程Hashtable<Object,Object> - 参数
-
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:
-
computeIfAbsentin interfaceMap<Object,Object> - 重写:
-
computeIfAbsent在课程Hashtable<Object,Object> - 参数
-
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:
-
computeIfPresentin interfaceMap<Object,Object> - 重写:
-
computeIfPresent在课程Hashtable<Object,Object> - 参数
-
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<Object,Object> - 重写:
-
merge在课程Hashtable<Object,Object> - 参数
-
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<Provider.Service> getServices()
获取此提供商支持的所有服务的不可修改的集合。- 结果
- 此提供商支持的所有服务的不可修改的集合
- 从以下版本开始:
- 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
-
-