feat: updates
This commit is contained in:
@@ -19,6 +19,8 @@ public class SignPdfArgs {
|
|||||||
String location;
|
String location;
|
||||||
@CommandLine.Option(names = {"--reason"}, description = "Reason")
|
@CommandLine.Option(names = {"--reason"}, description = "Reason")
|
||||||
String 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")
|
@CommandLine.Option(names = {"-h", "--help"}, usageHelp = true, description = "Display a help message")
|
||||||
boolean helpRequested = false;
|
boolean helpRequested = false;
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ public class SignPdfMain {
|
|||||||
signOptions.setName(signPdfArgs.name);
|
signOptions.setName(signPdfArgs.name);
|
||||||
signOptions.setLocation(signPdfArgs.location);
|
signOptions.setLocation(signPdfArgs.location);
|
||||||
signOptions.setReason(signPdfArgs.reason);
|
signOptions.setReason(signPdfArgs.reason);
|
||||||
|
signOptions.setContactInfo(signPdfArgs.contactInfo);
|
||||||
|
|
||||||
final File inFile = new File(signPdfArgs.in);
|
final File inFile = new File(signPdfArgs.in);
|
||||||
final File outFile = new File(signPdfArgs.out);
|
final File outFile = new File(signPdfArgs.out);
|
||||||
@@ -49,10 +50,10 @@ public class SignPdfMain {
|
|||||||
RFile.from("__priv.pem").string()
|
RFile.from("__priv.pem").string()
|
||||||
);
|
);
|
||||||
|
|
||||||
final X509Certificate[] chain = certs.toArray(new X509Certificate[0]);
|
final X509Certificate[] certificateChain = certs.toArray(new X509Certificate[0]);
|
||||||
final String signatureAlgorithm = SigUtils.getSignatureAlgorithm(chain[0]);
|
final String signatureAlgorithm = SigUtils.getSignatureAlgorithm(certificateChain[0]);
|
||||||
final ContentSigner contentSigner = new JcaContentSignerBuilder(signatureAlgorithm).build(privateKey);
|
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);
|
// signing.setExternalSigning(true);
|
||||||
|
|
||||||
final String tsaUrl = StringUtil.def(signOptions.getTsaUrl(), TSAClient.DEFAULT_TSA_URL);
|
final String tsaUrl = StringUtil.def(signOptions.getTsaUrl(), TSAClient.DEFAULT_TSA_URL);
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ public class SignOptions {
|
|||||||
private String name;
|
private String name;
|
||||||
private String location;
|
private String location;
|
||||||
private String reason;
|
private String reason;
|
||||||
|
private String contactInfo;
|
||||||
private String tsaUrl;
|
private String tsaUrl;
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@@ -30,6 +31,14 @@ public class SignOptions {
|
|||||||
this.reason = reason;
|
this.reason = reason;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getContactInfo() {
|
||||||
|
return contactInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setContactInfo(String contactInfo) {
|
||||||
|
this.contactInfo = contactInfo;
|
||||||
|
}
|
||||||
|
|
||||||
public String getTsaUrl() {
|
public String getTsaUrl() {
|
||||||
return tsaUrl;
|
return tsaUrl;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,9 +8,6 @@ import org.apache.pdfbox.pdmodel.interactive.digitalsignature.SignatureOptions;
|
|||||||
import org.bouncycastle.operator.ContentSigner;
|
import org.bouncycastle.operator.ContentSigner;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.security.KeyStoreException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.security.UnrecoverableKeyException;
|
|
||||||
import java.security.cert.CertificateException;
|
import java.security.cert.CertificateException;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
@@ -32,8 +29,8 @@ import java.util.Calendar;
|
|||||||
public class CreateSignature extends CreateSignatureBase {
|
public class CreateSignature extends CreateSignatureBase {
|
||||||
private final SignOptions signOptions;
|
private final SignOptions signOptions;
|
||||||
|
|
||||||
public CreateSignature(SignOptions signOptions, X509Certificate[] certificateChain, ContentSigner contentSigner)
|
public CreateSignature(X509Certificate[] certificateChain, ContentSigner contentSigner, SignOptions signOptions)
|
||||||
throws KeyStoreException, UnrecoverableKeyException, NoSuchAlgorithmException, CertificateException, IOException {
|
throws CertificateException {
|
||||||
super(certificateChain, contentSigner);
|
super(certificateChain, contentSigner);
|
||||||
this.signOptions = signOptions;
|
this.signOptions = signOptions;
|
||||||
}
|
}
|
||||||
@@ -68,6 +65,7 @@ public class CreateSignature extends CreateSignatureBase {
|
|||||||
signature.setName(signOptions.getName());
|
signature.setName(signOptions.getName());
|
||||||
signature.setLocation(signOptions.getLocation());
|
signature.setLocation(signOptions.getLocation());
|
||||||
signature.setReason(signOptions.getReason());
|
signature.setReason(signOptions.getReason());
|
||||||
|
signature.setContactInfo(signOptions.getContactInfo());
|
||||||
|
|
||||||
// the signing date, needed for valid signature
|
// the signing date, needed for valid signature
|
||||||
signature.setSignDate(Calendar.getInstance());
|
signature.setSignDate(Calendar.getInstance());
|
||||||
|
|||||||
Reference in New Issue
Block a user