模块 jdk.jartool

类 JarSigner.Builder

java.lang.Object
jdk.security.jarsigner.JarSigner.Builder
封闭类:
JarSigner

public static class JarSigner.Builder extends Object
一个可变的构建器类,可以从各种与签名相关的参数创建一个不可变的 JarSigner
自从:
9
  • 构造方法详细信息

    • 建设者

      public Builder(KeyStore.PrivateKeyEntry  entry)
      使用 KeyStore.PrivateKeyEntry 对象创建 JarSigner.Builder 对象。
      参数:
      entry - 签名者的 KeyStore.PrivateKeyEntry
    • 建设者

      public Builder(PrivateKey  privateKey, CertPath  certPath)
      使用私钥和证书路径创建一个 JarSigner.Builder 对象。
      参数:
      privateKey - 签名者的私钥。
      certPath - 签名者的认证路径。
      抛出:
      IllegalArgumentException - 如果 certPath 为空,或者 privateKey 算法与最终实体证书(certPath 中的第一个证书)中的 PublicKey 的算法不匹配。
  • 方法详情

    • digestAlgorithm

      public JarSigner.Builder  digestAlgorithm(String  algorithm) throws NoSuchAlgorithmException
      设置摘要算法。如果未指定摘要算法,将使用 getDefaultDigestAlgorithm() 返回的默认算法。
      参数:
      algorithm - 算法的标准名称。有关标准算法名称的信息,请参阅 Java 密码体系结构标准算法名称文档 中的 MessageDigest 部分。
      返回:
      JarSigner.Builder 本身。
      抛出:
      NoSuchAlgorithmException - 如果 algorithm 不可用。
    • digestAlgorithm

      public JarSigner.Builder  digestAlgorithm(String  algorithm, Provider  provider) throws NoSuchAlgorithmException
      设置来自指定提供程序的摘要算法。如果未指定摘要算法,将使用 getDefaultDigestAlgorithm() 返回的默认算法。
      参数:
      algorithm - 算法的标准名称。有关标准算法名称的信息,请参阅 Java 密码体系结构标准算法名称文档 中的 MessageDigest 部分。
      provider - 提供商。
      返回:
      JarSigner.Builder 本身。
      抛出:
      NoSuchAlgorithmException - 如果 algorithm 在指定的提供商中不可用。
    • signatureAlgorithm

      public JarSigner.Builder  signatureAlgorithm(String  algorithm) throws NoSuchAlgorithmException
      设置签名算法。如果不指定签名算法,将使用getDefaultSignatureAlgorithm(java.security.PrivateKey) 为私钥返回的默认签名算法。
      参数:
      algorithm - 算法的标准名称。有关标准算法名称的信息,请参阅 Java 密码体系结构标准算法名称文档 中的 Signature 部分。
      返回:
      JarSigner.Builder 本身。
      抛出:
      NoSuchAlgorithmException - 如果 algorithm 不可用。
      IllegalArgumentException - 如果 algorithm 与签名者私钥的算法不兼容。
    • signatureAlgorithm

      public JarSigner.Builder  signatureAlgorithm(String  algorithm, Provider  provider) throws NoSuchAlgorithmException
      设置来自指定提供者的签名算法。如果不指定签名算法,将使用getDefaultSignatureAlgorithm(java.security.PrivateKey) 为私钥返回的默认签名算法。
      参数:
      algorithm - 算法的标准名称。有关标准算法名称的信息,请参阅 Java 密码体系结构标准算法名称文档 中的 Signature 部分。
      provider - 提供商。
      返回:
      JarSigner.Builder 本身。
      抛出:
      NoSuchAlgorithmException - 如果 algorithm 在指定的提供商中不可用。
      IllegalArgumentException - 如果 algorithm 与签名者私钥的算法不兼容。
    • tsa

      public JarSigner.Builder  tsa(URI  uri)
      设置时间戳机构 (TSA) 的 URI。
      参数:
      uri - URI。
      返回:
      JarSigner.Builder 本身。
    • signerName

      public JarSigner.Builder  signerName(String  name)
      设置签名者姓名。该名称将用作签名文件的基本名称。签名文件名的所有小写字符都将转换为大写。如果未指定签名者姓名,将使用字符串“SIGNER”。
      参数:
      name - 签名者姓名。
      返回:
      JarSigner.Builder 本身。
      抛出:
      IllegalArgumentException - 如果 name 为空或大小大于 8,或者它包含不来自集合“a-zA-Z0-9_-”的字符。
    • eventHandler

      public JarSigner.Builder  eventHandler(BiConsumer <String ,String > handler)
      设置在签名过程中添加、签名或更新 JarEntry 时将触发的事件处理程序。

      处理程序可用于显示签名进度。处理程序的第一个参数可以是“添加”、“签名”或“更新”,第二个参数是正在处理的JarEntry 的名称。

      参数:
      handler - 事件处理程序。
      返回:
      JarSigner.Builder 本身。
    • setProperty

      public JarSigner.Builder  setProperty(String  key, String  value)
      设置由指定键指示的附加特定于实现的属性。
      实现注意事项:
      此实现支持以下属性:
      • “tsaDigestAlg”:时间戳请求中摘要数据的算法。默认值与 getDefaultDigestAlgorithm() 的结果相同。
      • “tsaPolicyId”:时间戳授权的 TSAPolicyID。没有默认值。
      • “internalsf”:如果 .SF 文件包含在签名块内,则为“true”,否则为“false”。默认“假”。
      • “sectionsonly”:如果 .SF 文件仅包含清单的每个部分而不是整个清单的哈希值,则为“true”,否则为“false”。默认“假”。
      所有属性名称都不区分大小写。
      参数:
      key - 属性的名称。
      value - 属性值。
      返回:
      JarSigner.Builder 本身。
      抛出:
      UnsupportedOperationException - 如果此实现不支持密钥。
      IllegalArgumentException - 如果该值不被接受为该键的合法值。
    • getDefaultDigestAlgorithm

      public static String  getDefaultDigestAlgorithm()
      获取默认摘要算法。
      实现注意事项:
      此实现返回“SHA-384”。该值将来可能会发生变化。
      返回:
      默认的摘要算法。
    • getDefaultSignatureAlgorithm

      public static String  getDefaultSignatureAlgorithm(PrivateKey  key)
      获取私钥的默认签名算法。例如,SHA384withRSA 用于 2048 位 RSA 密钥,SHA384withECDSA 用于 384 位 EC 密钥。
      实现注意事项:
      该实施利用了 NIST SP 800-57 第 1-Rev.5 部分的表 2 和表 3 中定义的可比强度以及 NIST 建议(视情况而定)。具体来说,如果RSA密钥大于7680位,或者EC密钥大于等于512位,签名的哈希函数将使用SHA-512。否则,将使用 SHA-384,除非密钥大小对于生成的签名算法而言太小。对于 DSA 密钥,无论密钥大小如何,都会返回 SHA256withDSA 签名算法。该值将来可能会发生变化。
      参数:
      key - 私钥。
      返回:
      默认签名算法。如果找不到默认的签名算法,则返回 null。在这种情况下,必须调用signatureAlgorithm(java.lang.String) 来指定签名算法。否则,build() 方法将抛出一个 IllegalArgumentException
    • build

      public JarSigner  build()
      根据 setter 方法设置的参数构建一个 JarSigner 对象。

      此方法不修改此 Builder 对象的内部状态,可以多次调用以生成多个 JarSigner 对象。调用此方法后,在此Builder上调用任何方法都不会影响新建的JarSigner对象。

      返回:
      JarSigner 对象。
      抛出:
      IllegalArgumentException - 如果未设置签名算法并且无法使用 getDefaultSignatureAlgorithm(java.security.PrivateKey) 方法从私钥派生。