java.lang.Object
java.security.CodeSource
- 所有已实现的接口:
-
Serializable
此类扩展了代码库的概念,不仅封装了位置(URL),还封装了用于验证来自该位置的已签名代码的证书链。
- 自从:
- 1.2
- 参见:
-
Constructor Summary
ConstructorDescriptionCodeSource
(URL url, Certificate[] certs) 构造一个CodeSource
并将其与指定的位置和证书集关联起来。CodeSource
(URL url, CodeSigner[] signers) 构造一个CodeSource
并将其与指定的位置和代码签名者集合关联起来。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
检查指定对象与此对象之间的相等性。final Certificate[]
返回与此CodeSource
关联的证书。final CodeSigner[]
返回与此CodeSource
关联的代码签名者。final URL
返回与此CodeSource
关联的位置。int
hashCode()
返回此对象的哈希码值。boolean
implies
(CodeSource codesource) 如果此CodeSource
对象“暗示”指定的CodeSource
,则返回true。toString()
返回描述此CodeSource
的字符串,告知其URL和证书。
-
Constructor Details
-
CodeSource
构造一个CodeSource
并将其与指定的位置和证书集关联起来。- 参数:
-
url
- 位置(URL)。它可以为null
。 -
certs
- 证书。它可以为null
。数组的内容会被复制以防止后续修改。
-
CodeSource
构造一个CodeSource
并将其与指定的位置和代码签名者集合关联起来。- 参数:
-
url
- 位置(URL)。它可以为null
。 -
signers
- 代码签名者。它可以为null
。数组的内容会被复制以防止后续修改。 - 自从:
- 1.5
-
-
Method Details
-
hashCode
public int hashCode()返回此对象的哈希码值。 -
equals
检查指定对象与此对象之间的相等性。如果两个CodeSource
对象的位置值相同且签名证书链的值也相同,则它们被视为相等。不要求证书链的顺序相同。 -
getLocation
返回与此CodeSource
关联的位置。- 返回:
-
位置(URL),如果在构造过程中未提供URL,则返回
null
。
-
getCertificates
返回与此CodeSource
关联的证书。如果此
CodeSource
对象是使用CodeSource(URL url, CodeSigner[] signers)
构造函数创建的,则会提取其证书链并用于创建Certificate
对象数组。每个签名者证书后面跟着其支持的证书链(可能为空)。每个签名者证书及其支持的证书链都是自底向上排序的(即,签名者证书在前,(根)证书颁发机构在后)。- 返回:
-
证书数组的副本,如果没有则返回
null
。
-
getCodeSigners
返回与此CodeSource
关联的代码签名者。如果此
CodeSource
对象是使用CodeSource(URL url, java.security.cert.Certificate[] certs)
构造函数创建的,则会提取其证书链并用于创建CodeSigner
对象数组。请注意,仅检查X.509证书 - 所有其他证书类型都将被忽略。- 返回:
-
代码签名者数组的副本,如果没有则返回
null
。 - 自从:
- 1.5
-
implies
如果此CodeSource
对象“暗示”指定的CodeSource
,则返回true。具体来说,此方法进行以下检查。如果任何检查失败,则返回
false
。如果所有检查都成功,则返回true
。- codesource不能为空。
- 如果此对象的证书不为null,则此对象的所有证书必须存在于codesource的证书中。
- 如果此对象的位置(getLocation())不为null,则会针对此对象的位置和codesource进行以下检查:
- codesource的位置不能为空。
- 如果此对象的位置等于codesource的位置,则返回true。
- 此对象的协议(getLocation().getProtocol())必须等于codesource的协议,忽略大小写。
- 如果此对象的主机(getLocation().getHost())不为null,则使用此对象的主机构造的SocketPermission必须暗示使用codesource的主机构造的SocketPermission。
- 如果此对象的端口(getLocation().getPort())不等于-1(即,如果指定了端口),则它必须等于codesource的端口或默认端口(codesource.getLocation().getDefaultPort())。
- 如果此对象的文件(getLocation().getFile())不等于codesource的文件,则会进行以下检查:如果此对象的文件以“/-”结尾,则codesource的文件必须以此对象的文件开头(不包括尾部“-”)。如果此对象的文件以“/*”结尾,则codesource的文件必须以此对象的文件开头,并且不能有进一步的“/”分隔符。如果此对象的文件不以“/”结尾,则codesource的文件必须与此对象的文件匹配,并附加一个“/”。
- 如果此对象的引用(getLocation().getRef())不为null,则它必须等于codesource的引用。
例如,具有以下位置和
null
证书的codesource对象都暗示具有位置http://www.example.com/classes/foo.jar
和null
证书的codesource:http: http://*.example.com/classes/* http://www.example.com/classes/- http://www.example.com/classes/foo.jar
请注意,如果此CodeSource
具有null
位置和null
证书链,则它暗示所有其他CodeSource
。- 参数:
-
codesource
- 要与之比较的CodeSource
。 - 返回:
-
如果指定的codesource被此codesource暗示,则返回
true
,否则返回false
。
-
toString
返回描述此CodeSource
的字符串,告知其URL和证书。
-