java.security

接口
异常
java.lang.Object
  继承者 java.security.CodeSource
所有已实现的接口:
Serializable

public class CodeSource
     
extends Object
implements Serializable

此类扩展 codebase 的概念,不仅可以封装位置 (URL) 而且可以封装用于验证起源于该位置的签名代码的证书链。

另请参见:
序列化表格

构造方法摘要
CodeSource(URL url, Certificate[] certs)
          构造一个 CodeSource 并将其与指定位置和证书集合相关联。
CodeSource(URL url, CodeSigner[] signers)
          构造一个 CodeSource 并将其与指定位置和代码签名者集合相关联。
 
方法摘要
 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 和证书。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

CodeSource

public CodeSource(URL url,
                  Certificate[] certs)
构造一个 CodeSource 并将其与指定位置和证书集合相关联。

参数:
url - 位置 (URL)。
certs - 证书。它可以为 null。复制数组的内容,以防随后进行修改。

CodeSource

public CodeSource(URL url,
                  CodeSigner[] signers)
构造一个 CodeSource 并将其与指定位置和代码签名者集合相关联。

参数:
url - 位置 (URL)。
signers - 代码签名者。它可以为 null。复制数组的内容,以防随后进行修改。
从以下版本开始:
1.5
方法详细信息

hashCode

public int hashCode()
返回此对象的哈希码值。

覆盖:
Object 中的 hashCode
返回:
此对象的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
测试指定对象与此对象之间的相等性。如果两个 CodeSource 对象的位置具有相同值并且其签名者证书链也具有相同值,则认为这两个对象相等。不要求证书链具有相同的顺序。

覆盖:
Object 中的 equals
参数:
obj - 要与此对象进行相等性测试的对象。
返回:
如果对象被视为相等,则返回 true;否则返回 false。
另请参见:
Object.hashCode(), Hashtable

getLocation

public final URL getLocation()
返回与此 CodeSource 关联的位置。

返回:
位置 (URL)。

getCertificates

public final Certificate[] getCertificates()
返回与此 CodeSource 关联的证书。

如果此 CodeSource 对象是使用 CodeSource(URL url, CodeSigner[] signers) 构造方法创建的,则提取其证书链并使用它们来创建一个 Certificate 对象数组。每个签名证书后面跟着其支持证书链(可能为空)。每个签名证书及其支持证书链按从底到顶进行排序(即签名证书排在首位置,(根)证书授权排在末位置)。

返回:
证书数组的副本;如果不存在副本,则返回 null。

getCodeSigners

public final CodeSigner[] getCodeSigners()
返回与此 CodeSource 关联的代码签名者。

如果此 CodeSource 对象是使用 CodeSource(URL url, Certificate[] certs) 构造方法创建的,则提取其证书链并使用它们来创建一个 CodeSigner 对象数组。注意,仅检查 X.509 证书,所有其他证书类型都将被忽略。

返回:
代码签名者数组的副本;如果不存在副本,则返回 null。
从以下版本开始:
1.5

implies

public boolean implies(CodeSource codesource)
如果此 CodeSource 对象“暗含”指定的 CodeSource,则返回 true。

更确切地说,此方法将按顺序进行以下检查。如果任何一项检查失败,它都返回 false。如果所有检查都成功了,它将返回 true。

  1. codesource 一定不能为 null。
  2. 如果此对象的证书不为 null,则此对象的所有证书一定都存在于 codesource 的证书中。
  3. 如果此对象的位置 (getLocation()) 不为 null,则针对此对象的位置和 codesource 的位置进行以下检查:

    1. codesource 的位置一定不能为 null。
    2. 如果此对象的位置等于 codesource 的位置,则返回 true。
    3. 此对象的协议 (getLocation().getProtocol()) 一定等于 codesource 的协议。
    4. 如果此对象的主机 (getLocation().getHost()) 不为 null,则使用此对象的主机构造的 SocketPermission 一定暗含使用 codesource 的主机构造的 SocketPermission。
    5. 如果此对象的端口 (getLocation().getPort()) 不等于 -1(即如果端口是指定的),则它必须等于 codesource 的端口。
    6. 如果此对象的文件 (getLocation().getFile()) 不等于 codesource 的文件,则进行以下检查:如果此对象的文件以 "/-" 结尾,则 codesource 的文件必须使用此对象的文件(不包括尾部 "-")开头。如果此对象的文件以 "/*" 结尾,则 codesource 的文件必须使用此对象的文件开头并且一定不能再有 "/" 分隔符。如果此对象的文件不以 "/" 结尾,则 codesource 的文件必须使用追加的一个 '/'来匹配此对象的文件。
    7. 如果此对象的引用 (getLocation().getRef()) 不为 null,则它必须等于 codesource 的引用。

例如,具有以下位置和 null 证书的 codesource 对象都暗含具有 "http://java.sun.com/classes/foo.jar" 位置和 null 证书的 codesource。

     http:
     http://*.sun.com/classes/*
     http://java.sun.com/classes/-
     http://java.sun.com/classes/foo.jar
 
注意,如果此 CodeSource 具有 null 位置和 null 证书链,则其暗含所有其他的 CodeSource。

参数:
codesource - 用于比较的 CodeSource。
返回:
如果此 codesource 暗含指定的 codesource,则返回 true;否则返回 false。

toString

public String toString()
返回描述此 CodeSource 的字符串,告知其 URL 和证书。

覆盖:
Object 中的 toString
返回:
关于此 CodeSource 的信息。