Browse Source

PDFTool(Android) - 1.修复签名icon显示问题 2.签名使用的证书自动添加为信任

liuxiaolong 1 year ago
parent
commit
d0d52bd82b

BIN
ComPDFKit_Repo/compdfkit-ui/ComPDFKit-UI.aar


BIN
ComPDFKit_Repo/compdfkit/ComPDFKit.aar


+ 2 - 2
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/CertificateDigitalDatas.java

@@ -58,10 +58,10 @@ public class CertificateDigitalDatas {
      * @return
      */
     @Nullable
-    public static CPDFCertInfo getCertInfo(String certFilePath, String password) {
+    public static CPDFX509 getCertInfo(String certFilePath, String password) {
         if (CPDFSignature.checkPKCS12Password(certFilePath, password)) {
             CPDFX509 x509 = CPDFSignature.getX509ByPKCS12Cert(certFilePath, password);
-            return x509.getCertInfo();
+            return x509;
         } else {
             return null;
         }

+ 14 - 3
ComPDFKit_Tools/src/main/java/com/compdfkit/tools/signature/pdfproperties/pdfsign/CDigitalSignatureWidgetImpl.java

@@ -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,

BIN
ComPDFKit_Tools/src/main/res/drawable/tools_logo.png


+ 1 - 1
ComPDFKit_Tools/src/main/res/layout/tools_sign_style_preview_view.xml

@@ -17,7 +17,7 @@
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="@id/cl_preview"
-        app:srcCompat="@drawable/tools_ic_compdfkit_logo" />
+        app:srcCompat="@drawable/tools_logo" />
 
     <androidx.constraintlayout.widget.ConstraintLayout
         android:id="@+id/cl_preview"