- java.lang.Object
-
- java.security.CodeSource
-
- All Implemented Interfaces:
-
Serializable
public class CodeSource extends Object implements Serializable
该类扩展了代码库的概念,不仅封装了位置(URL),还封装了用于验证源自该位置的签名代码的证书链。
- 从以下版本开始:
- 1.2
- 另请参见:
- Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 CodeSource(URL url, Certificate[] certs)
构造一个CodeSource并将其与指定的位置和证书集合相关联。CodeSource(URL url, CodeSigner[] signers)
构造CodeSource并将其与指定的位置和代码签名者集合相关联。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object obj)
测试指定对象和此对象之间的相等性。Certificate[]
getCertificates()
返回与此CodeSource相关联的证书。CodeSigner[]
getCodeSigners()
返回与此CodeSource相关联的代码签名者。URL
getLocation()
返回与此CodeSource关联的位置。int
hashCode()
返回此对象的哈希码值。boolean
implies(CodeSource codesource)
如果此CodeSource对象“暗示”指定的CodeSource,则返回true。String
toString()
返回描述此CodeSource的字符串,告知其URL和证书。
-
-
-
构造方法详细信息
-
CodeSource
public CodeSource(URL url, Certificate[] certs)
构造一个CodeSource并将其与指定的位置和证书集合相关联。- 参数
-
url
- 位置(URL)。 它可能是null
。 -
certs
- 证书。 它可能是null
。 复制数组的内容以防止后续修改。
-
CodeSource
public CodeSource(URL url, CodeSigner[] signers)
构造CodeSource并将其与指定的位置和代码签名者集合相关联。- 参数
-
url
- 位置(URL)。 它可能是null
。 -
signers
- 代码签名者。 它可能是null
。 复制数组的内容以防止后续修改。 - 从以下版本开始:
- 1.5
-
-
方法详细信息
-
hashCode
public int hashCode()
返回此对象的哈希码值。- 重写:
-
hashCode
在Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
测试指定对象和此对象之间的相等性。 如果两个CodeSource对象的位置具有相同的值,并且其签名者证书链的值是相同的,则认为它们是相等的。 不要求证书链的顺序相同。- 重写:
-
equals
在Object
- 参数
-
obj
- 要测试与此对象相等的对象。 - 结果
- 如果对象被视为相等,则为true,否则为false。
- 另请参见:
-
Object.hashCode()
,HashMap
-
getLocation
public final URL getLocation()
返回与此CodeSource关联的位置。- 结果
-
位置(URL),或
null
如果在施工期间没有提供URL)。
-
getCertificates
public final Certificate[] getCertificates()
返回与此CodeSource相关联的证书。如果此CodeSource对象是使用
CodeSource(URL url, CodeSigner[] signers)
构造函数创建的,那么它的证书链将被提取并用于创建一个证书对象数组。 每个签名者证书后面都有其支持证书链(可能为空)。 每个签名者证书及其支持证书链从底部到顶部订购(即,首先签名者证书和(根)证书颁发机构的最后)。- 结果
-
证书阵列的副本,如果没有,
null
。
-
getCodeSigners
public final CodeSigner[] getCodeSigners()
返回与此CodeSource相关联的代码签名者。如果此CodeSource对象是使用
CodeSource(URL url, java.security.cert.Certificate[] certs)
构造函数创建的,那么它的证书链将被提取并用于创建一个CodeSigner对象数组。 请注意,只检查X.509证书 - 所有其他证书类型都将被忽略。- 结果
-
代码签名者数组的副本,如果没有,
null
。 - 从以下版本开始:
- 1.5
-
implies
public boolean implies(CodeSource codesource)
如果此CodeSource对象“暗示”指定的CodeSource,则返回true。更具体地说,该方法进行以下检查。 如果有任何失败,则返回false。 如果他们都成功,它将返回真实。
- 代码不能为空。
- 如果此对象的证书不为空,那么所有这些对象的证书必须都存在于codesource的证书。
- 如果此对象的位置(的getLocation())不为空,然后进行以下检查针对此对象的位置和codesource的的制作:
- codeource的位置不能为空。
- 如果此对象的位置等于codeource的位置,则返回true。
- 这个对象的协议(getLocation()。getProtocol())必须等于codeource的协议,忽略大小写。
- 如果此对象的主机(getLocation()。getHost())不为空,则使用此对象的主机构建的SocketPermission必须意味着使用codesource主机构建的SocketPermission。
- 如果此对象的端口(getLocation()。getPort())不等于-1(即,如果指定了端口),则它必须等于codeource的端口或默认端口(codesource.getLocation()。getDefaultPort() )。
- 如果此对象的文件(的getLocation()的GetFile())不等于codesource的的文件,然后进行以下检查:如果此对象的文件以‘/ - ’结尾,则codesource的文件必须使用此对象的开始文件(尾随“ - ”)。 如果此对象的文件以“/ *”,则codesource的文件必须使用此对象的文件开始结束,不能再有‘/’分隔符。 如果此对象的文件不以“/”,则codesource结束/‘附加的文件必须此对象的文件以匹配’。
- 如果这个对象的引用(getLocation()。getRef())不为null,它必须等于codeource的引用。
例如,具有以下位置的代码源对象和空证书都表示代码源位置为“http://java.sun.com/classes/foo.jar”和空证书:
http: http://*.sun.com/classes/* http://java.sun.com/classes/- http://java.sun.com/classes/foo.jar
请注意,如果此CodeSource具有空位置和空证书链,则它意味着每个其他CodeSource。- 参数
-
codesource
- CodeSource进行比较。 - 结果
- 如果代码源隐含指定的代码源,则为true,否则为false。
-
-