|
@@ -20,6 +20,7 @@ import com.compdfkit.core.annotation.form.CPDFSignatureWidget;
|
|
|
import com.compdfkit.core.signature.CPDFCertInfo;
|
|
|
import com.compdfkit.core.signature.CPDFDigitalSigConfig;
|
|
|
import com.compdfkit.core.signature.CPDFSignature;
|
|
|
+import com.compdfkit.core.signature.CPDFX509;
|
|
|
import com.compdfkit.tools.R;
|
|
|
import com.compdfkit.tools.common.utils.CLog;
|
|
|
import com.compdfkit.tools.common.utils.CToastUtil;
|
|
@@ -54,9 +55,12 @@ public class CDigitalSignatureWidgetImpl extends CPDFSignatureWidgetImpl {
|
|
|
}
|
|
|
CPDFSelectDigitalSignatureDialog dialog = CPDFSelectDigitalSignatureDialog.newInstance();
|
|
|
dialog.setCertDigitalSignListener((certFilePath, certPassword, signImagePath) -> {
|
|
|
- CPDFCertInfo certInfo = CertificateDigitalDatas.getCertInfo(certFilePath, certPassword);
|
|
|
- String dn = CertificateDigitalDatas.getOwnerContent(certInfo.getSubject(), ",");
|
|
|
- CDigitalSignStylePreviewDialog previewDialog = CDigitalSignStylePreviewDialog.newInstance(signImagePath, certInfo.getSubject().getCommonName(), dn);
|
|
|
+ CPDFX509 cpdfx509 = CertificateDigitalDatas.getCertInfo(certFilePath, certPassword);
|
|
|
+ if (cpdfx509 == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ String dn = CertificateDigitalDatas.getOwnerContent(cpdfx509.getCertInfo().getSubject(), ",");
|
|
|
+ CDigitalSignStylePreviewDialog previewDialog = CDigitalSignStylePreviewDialog.newInstance(signImagePath, cpdfx509.getCertInfo().getSubject().getCommonName(), dn);
|
|
|
previewDialog.setResultDigitalSignListener((imagePath, config, location, reason) -> {
|
|
|
try {
|
|
|
Context context = readerView.getContext();
|
|
@@ -103,6 +107,13 @@ public class CDigitalSignatureWidgetImpl extends CPDFSignatureWidgetImpl {
|
|
|
if (!updateSignApResult){
|
|
|
return;
|
|
|
}
|
|
|
+ CPDFX509 cpdfx509 = CertificateDigitalDatas.getCertInfo(certFilePath, certPassword);
|
|
|
+ if (cpdfx509 != null) {
|
|
|
+ if (!cpdfx509.checkCertificateIsTrusted(readerView.getContext())) {
|
|
|
+ cpdfx509.addToTrustedCertificates(readerView.getContext());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
// sign this pdf document
|
|
|
boolean result = CertificateDigitalDatas.writeSignature(readerView.getPDFDocument(),
|
|
|
cpdfSignatureWidget, location, reason,
|