java.lang.Object
jdk.security.jarsigner.JarSigner.Builder
- 封装类:
-
JarSigner
一个可变的构建器类,可以根据各种与签名相关的参数创建一个不可变的
JarSigner
。
- 自JDK版本:
- 9
-
Constructor Summary
ConstructorDescriptionBuilder
(KeyStore.PrivateKeyEntry entry) 使用一个KeyStore.PrivateKeyEntry
对象创建一个JarSigner.Builder
对象。Builder
(PrivateKey privateKey, CertPath certPath) 使用私钥和证书路径创建一个JarSigner.Builder
对象。 -
Method Summary
Modifier and TypeMethodDescriptionbuild()
通过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。
-
Constructor Details
-
Builder
使用一个KeyStore.PrivateKeyEntry
对象创建一个JarSigner.Builder
对象。- 参数:
-
entry
- 签名者的KeyStore.PrivateKeyEntry
。
-
Builder
使用私钥和证书路径创建一个JarSigner.Builder
对象。- 参数:
-
privateKey
- 签名者的私钥。 -
certPath
- 签名者的证书路径。 - 抛出:
-
IllegalArgumentException
- 如果certPath
为空,或privateKey
的算法与certPath
中的终端实体证书(certPath
中的第一个证书)的算法不匹配。
-
-
Method Details
-
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
时将触发该处理程序。处理程序可用于显示签名进度。处理程序的第一个参数可以是"adding"、"signing"或"updating",第二个参数是正在处理的
JarEntry
的名称。- 参数:
-
handler
- 事件处理程序。 - 返回:
-
JarSigner.Builder
本身。
-
setProperty
设置由指定键指示的额外特定于实现的属性。- 实现说明:
-
该实现支持以下属性:
- "tsaDigestAlg": 时间戳请求中摘要数据的算法。默认值与
getDefaultDigestAlgorithm()
的结果相同。 - "tsaPolicyId": 时间戳授权机构的TSAPolicyID。无默认值。
- "internalsf": 如果.SF文件包含在签名块内,则为"true",否则为"false"。默认为"false"。
- "sectionsonly": 如果.SF文件仅包含清单的每个部分的哈希值而不是整个清单的哈希值,则为"true",否则为"false"。默认为"false"。
- "tsaDigestAlg": 时间戳请求中摘要数据的算法。默认值与
- 参数:
-
key
- 属性的名称。 -
value
- 属性的值。 - 返回:
-
JarSigner.Builder
本身。 - 抛出:
-
UnsupportedOperationException
- 如果此实现不支持该键。 -
IllegalArgumentException
- 如果值不被视为此键的合法值。
-
getDefaultDigestAlgorithm
获取默认摘要算法。- 实现说明:
- 该实现返回"SHA-384"。该值可能会在将来更改。
- 返回:
- 默认摘要算法。
-
getDefaultSignatureAlgorithm
获取私钥的默认签名算法。例如,2048位RSA密钥的SHA384withRSA,384位EC密钥的SHA384withECDSA。- 实现注意事项:
- 此实现利用了NIST SP 800-57 Part 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
对象。调用此方法后,在新构建的JarSigner
对象上调用此Builder
的任何方法都不会产生影响。- 返回:
-
JarSigner
对象。 - 抛出:
-
IllegalArgumentException
- 如果未设置签名算法且无法使用getDefaultSignatureAlgorithm(java.security.PrivateKey)
从私钥派生签名算法。
-