Module  java.base
软件包  java.security

Class CodeSource

  • All Implemented Interfaces:
    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对象的位置具有相同的值,并且其签名者证书链的值是相同的,则认为它们是相等的。 不要求证书链的顺序相同。
        重写:
        equalsObject
        参数
        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。
      • toString

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