模块  java.base
软件包  java.security

Class CodeSource

  • 实现的所有接口
    Serializable

    public class CodeSource
    extends Object
    implements Serializable

    此类扩展了代码库的概念,不仅封装了位置(URL),还封装了用于验证源自该位置的签名代码的证书链。

    从以下版本开始:
    1.2
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • 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
    • 方法详细信息

      • equals

        public boolean equals​(Object obj)
        测试指定对象与此对象之间的相等性。 如果两个CodeSource对象的位置具有相同的值并且其签名者证书链具有相同的值,则认为它们是相等的。 证书链不需要具有相同的顺序。
        重写:
        equals在课堂 Object
        参数
        obj - 要测试与此对象是否相等的对象。
        结果
        如果对象被认为是相等的则为true,否则为false。
        另请参见:
        Object.hashCode()HashMap
      • getLocation

        public final URL getLocation()
        返回与此CodeSource关联的位置。
        结果
        位置(URL),如果在构造期间未提供URL, null
      • getCertificates

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

        如果使用CodeSource(URL url, CodeSigner[] signers)构造函数创建此CodeSource对象,则会提取其证书链并用于创建Certificate对象的数组。 每个签名者证书后面都有其支持证书链(可能为空)。 每个签署者证书及其支持证书链从下到上排序(即,首先签署者证书,最后签署(根)证书颁发机构)。

        结果
        证书数组的副本,如果没有, null
      • getCodeSigners

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

        如果使用CodeSource(URL url, java.security.cert.Certificate[] certs)构造函数创建此CodeSource对象,则会提取其证书链并用于创建CodeSigner对象数组。 请注意,仅检查X.509证书 - 忽略所有其他证书类型。

        结果
        代码签名者数组的副本,如果没有, null
        从以下版本开始:
        1.5
      • implies

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

        更具体地说,该方法进行以下检查。 如果有任何失败,则返回false。 如果它们都成功,则返回true。

        • codesource不能为null。
        • 如果此对象的证书不为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的引用。

        例如,具有以下位置和空证书的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具有空位置和空证书链,则它意味着每隔一个CodeSource。
        参数
        codesource - 要与之比较的CodeSource。
        结果
        如果此codesource隐含指定的codesource,则返回true,否则返回false。
      • toString

        public String toString()
        返回描述此CodeSource的字符串,告知其URL和证书。
        重写:
        toString in class Object
        结果
        有关此CodeSource的信息。