java.lang.Object
jdk.security.jarsigner.JarSigner.Builder
- 封闭类:
JarSigner
一个可变的构建器类,可以从各种与签名相关的参数创建一个不可变的
JarSigner。
- 自从:
- 9
-
构造方法总结
构造方法构造方法描述Builder(KeyStore.PrivateKeyEntry entry) 使用KeyStore.PrivateKeyEntry对象创建JarSigner.Builder对象。Builder(PrivateKey privateKey, CertPath certPath) 使用私钥和证书路径创建一个JarSigner.Builder对象。 -
方法总结
修饰符和类型方法描述build()根据 setter 方法设置的参数构建一个JarSigner对象。digestAlgorithm(String algorithm) 设置摘要算法。digestAlgorithm(String algorithm, Provider provider) 设置来自指定提供程序的摘要算法。eventHandler(BiConsumer<String, String> handler) 设置在签名过程中添加、签名或更新JarEntry时将触发的事件处理程序。static String获取默认摘要算法。static String获取私钥的默认签名算法。setProperty(String key, String value) 设置由指定键指示的附加特定于实现的属性。signatureAlgorithm(String algorithm) 设置签名算法。signatureAlgorithm(String algorithm, Provider provider) 设置来自指定提供者的签名算法。signerName(String name) 设置签名者姓名。设置时间戳机构 (TSA) 的 URI。
-
构造方法详细信息
-
建设者
使用KeyStore.PrivateKeyEntry对象创建JarSigner.Builder对象。- 参数:
entry- 签名者的KeyStore.PrivateKeyEntry。
-
建设者
使用私钥和证书路径创建一个JarSigner.Builder对象。- 参数:
privateKey- 签名者的私钥。certPath- 签名者的认证路径。- 抛出:
IllegalArgumentException- 如果certPath为空,或者privateKey算法与最终实体证书(certPath中的第一个证书)中的PublicKey的算法不匹配。
-
-
方法详情
-
digestAlgorithm
设置摘要算法。如果未指定摘要算法,将使用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
设置签名算法。如果不指定签名算法,将使用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
设置时间戳机构 (TSA) 的 URI。- 参数:
uri- URI。- 返回:
JarSigner.Builder本身。
-
signerName
设置签名者姓名。该名称将用作签名文件的基本名称。签名文件名的所有小写字符都将转换为大写。如果未指定签名者姓名,将使用字符串“SIGNER”。- 参数:
name- 签名者姓名。- 返回:
JarSigner.Builder本身。- 抛出:
IllegalArgumentException- 如果name为空或大小大于 8,或者它包含不来自集合“a-zA-Z0-9_-”的字符。
-
eventHandler
设置在签名过程中添加、签名或更新JarEntry时将触发的事件处理程序。处理程序可用于显示签名进度。处理程序的第一个参数可以是“添加”、“签名”或“更新”,第二个参数是正在处理的
JarEntry的名称。- 参数:
handler- 事件处理程序。- 返回:
JarSigner.Builder本身。
-
setProperty
设置由指定键指示的附加特定于实现的属性。- 实现注意事项:
-
此实现支持以下属性:
- “tsaDigestAlg”:时间戳请求中摘要数据的算法。默认值与
getDefaultDigestAlgorithm()的结果相同。 - “tsaPolicyId”:时间戳授权的 TSAPolicyID。没有默认值。
- “internalsf”:如果 .SF 文件包含在签名块内,则为“true”,否则为“false”。默认“假”。
- “sectionsonly”:如果 .SF 文件仅包含清单的每个部分而不是整个清单的哈希值,则为“true”,否则为“false”。默认“假”。
- “tsaDigestAlg”:时间戳请求中摘要数据的算法。默认值与
- 参数:
key- 属性的名称。value- 属性值。- 返回:
JarSigner.Builder本身。- 抛出:
UnsupportedOperationException- 如果此实现不支持密钥。IllegalArgumentException- 如果该值不被接受为该键的合法值。
-
getDefaultDigestAlgorithm
获取默认摘要算法。- 实现注意事项:
- 此实现返回“SHA-384”。该值将来可能会发生变化。
- 返回:
- 默认的摘要算法。
-
getDefaultSignatureAlgorithm
获取私钥的默认签名算法。例如,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
根据 setter 方法设置的参数构建一个JarSigner对象。此方法不修改此
Builder对象的内部状态,可以多次调用以生成多个JarSigner对象。调用此方法后,在此Builder上调用任何方法都不会影响新建的JarSigner对象。- 返回:
JarSigner对象。- 抛出:
IllegalArgumentException- 如果未设置签名算法并且无法使用getDefaultSignatureAlgorithm(java.security.PrivateKey)方法从私钥派生。
-