Module java.base
Package java.security

Class CodeSource

java.lang.Object
java.security.CodeSource
所有已实现的接口:
Serializable

public class CodeSource extends Object implements Serializable

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

自从:
1.2
参见:
  • Constructor Details

    • 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
  • Method Details

    • hashCode

      public int hashCode()
      返回此对象的哈希码值。
      覆盖:
      hashCode 在类 Object
      返回:
      此对象的哈希码值。
      参见:
    • equals

      public boolean equals(Object obj)
      检查指定对象与此对象之间的相等性。如果两个CodeSource对象的位置值相同且签名证书链的值也相同,则它们被视为相等。不要求证书链的顺序相同。
      覆盖:
      equals 在类 Object
      参数:
      obj - 用于与此对象进行相等性测试的对象。
      返回:
      如果对象被视为相等,则返回true,否则返回false
      参见:
    • getLocation

      public final URL getLocation()
      返回与此CodeSource关联的位置。
      返回:
      位置(URL),如果在构造过程中未提供URL,则返回null
    • getCertificates

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

      如果此CodeSource对象是使用CodeSource(URL url, CodeSigner[] signers)构造函数创建的,则会提取其证书链并用于创建Certificate对象数组。每个签名者证书后面跟着其支持的证书链(可能为空)。每个签名者证书及其支持的证书链都是自底向上排序的(即,签名者证书在前,(根)证书颁发机构在后)。

      返回:
      证书数组的副本,如果没有则返回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。如果所有检查都成功,则返回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.jarnull证书的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

      public String toString()
      返回描述此CodeSource的字符串,告知其URL和证书。
      覆盖:
      toString 在类 Object
      返回:
      关于此CodeSource的信息。