feat: updates

This commit is contained in:
2023-10-30 00:38:21 +08:00
parent aac3d90525
commit 0eae36538c
4 changed files with 18 additions and 8 deletions

View File

@@ -19,6 +19,8 @@ public class SignPdfArgs {
String location;
@CommandLine.Option(names = {"--reason"}, description = "Reason")
String reason;
@CommandLine.Option(names = {"--contact-info"}, description = "Contact info")
String contactInfo;
@CommandLine.Option(names = {"-h", "--help"}, usageHelp = true, description = "Display a help message")
boolean helpRequested = false;

View File

@@ -31,6 +31,7 @@ public class SignPdfMain {
signOptions.setName(signPdfArgs.name);
signOptions.setLocation(signPdfArgs.location);
signOptions.setReason(signPdfArgs.reason);
signOptions.setContactInfo(signPdfArgs.contactInfo);
final File inFile = new File(signPdfArgs.in);
final File outFile = new File(signPdfArgs.out);
@@ -49,10 +50,10 @@ public class SignPdfMain {
RFile.from("__priv.pem").string()
);
final X509Certificate[] chain = certs.toArray(new X509Certificate[0]);
final String signatureAlgorithm = SigUtils.getSignatureAlgorithm(chain[0]);
final X509Certificate[] certificateChain = certs.toArray(new X509Certificate[0]);
final String signatureAlgorithm = SigUtils.getSignatureAlgorithm(certificateChain[0]);
final ContentSigner contentSigner = new JcaContentSignerBuilder(signatureAlgorithm).build(privateKey);
final CreateSignature signing = new CreateSignature(signOptions, chain, contentSigner);
final CreateSignature signing = new CreateSignature(certificateChain, contentSigner, signOptions);
// signing.setExternalSigning(true);
final String tsaUrl = StringUtil.def(signOptions.getTsaUrl(), TSAClient.DEFAULT_TSA_URL);

View File

@@ -4,6 +4,7 @@ public class SignOptions {
private String name;
private String location;
private String reason;
private String contactInfo;
private String tsaUrl;
public String getName() {
@@ -30,6 +31,14 @@ public class SignOptions {
this.reason = reason;
}
public String getContactInfo() {
return contactInfo;
}
public void setContactInfo(String contactInfo) {
this.contactInfo = contactInfo;
}
public String getTsaUrl() {
return tsaUrl;
}

View File

@@ -8,9 +8,6 @@ import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions;
import org.bouncycastle.operator.ContentSigner;
import java.io.*;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Calendar;
@@ -32,8 +29,8 @@ import java.util.Calendar;
public class CreateSignature extends CreateSignatureBase {
private final SignOptions signOptions;
public CreateSignature(SignOptions signOptions, X509Certificate[] certificateChain, ContentSigner contentSigner)
throws KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, CertificateException, IOException {
public CreateSignature(X509Certificate[] certificateChain, ContentSigner contentSigner, SignOptions signOptions)
throws CertificateException {
super(certificateChain, contentSigner);
this.signOptions = signOptions;
}
@@ -68,6 +65,7 @@ public class CreateSignature extends CreateSignatureBase {
signature.setName(signOptions.getName());
signature.setLocation(signOptions.getLocation());
signature.setReason(signOptions.getReason());
signature.setContactInfo(signOptions.getContactInfo());
// the signing date, needed for valid signature
signature.setSignDate(Calendar.getInstance());