From 0eae36538c28902377a40134a7e73ca930e893ff Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Mon, 30 Oct 2023 00:38:21 +0800 Subject: [PATCH] feat: updates --- .../java/me/hatter/tool/signpdf/main/SignPdfArgs.java | 2 ++ .../java/me/hatter/tool/signpdf/main/SignPdfMain.java | 7 ++++--- .../java/me/hatter/tool/signpdf/options/SignOptions.java | 9 +++++++++ .../me/hatter/tool/signpdf/sign/CreateSignature.java | 8 +++----- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/me/hatter/tool/signpdf/main/SignPdfArgs.java b/src/main/java/me/hatter/tool/signpdf/main/SignPdfArgs.java index 86b2412..a8e4172 100644 --- a/src/main/java/me/hatter/tool/signpdf/main/SignPdfArgs.java +++ b/src/main/java/me/hatter/tool/signpdf/main/SignPdfArgs.java @@ -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; diff --git a/src/main/java/me/hatter/tool/signpdf/main/SignPdfMain.java b/src/main/java/me/hatter/tool/signpdf/main/SignPdfMain.java index 8c0a31c..1bc96e2 100644 --- a/src/main/java/me/hatter/tool/signpdf/main/SignPdfMain.java +++ b/src/main/java/me/hatter/tool/signpdf/main/SignPdfMain.java @@ -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); diff --git a/src/main/java/me/hatter/tool/signpdf/options/SignOptions.java b/src/main/java/me/hatter/tool/signpdf/options/SignOptions.java index 83b2271..f54c581 100644 --- a/src/main/java/me/hatter/tool/signpdf/options/SignOptions.java +++ b/src/main/java/me/hatter/tool/signpdf/options/SignOptions.java @@ -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; } diff --git a/src/main/java/me/hatter/tool/signpdf/sign/CreateSignature.java b/src/main/java/me/hatter/tool/signpdf/sign/CreateSignature.java index 64ea9e5..087f93d 100644 --- a/src/main/java/me/hatter/tool/signpdf/sign/CreateSignature.java +++ b/src/main/java/me/hatter/tool/signpdf/sign/CreateSignature.java @@ -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());