diff --git a/src/main/java/com/android/apksig/ApkSigner.java b/src/main/java/com/android/apksig/ApkSigner.java
index 556c0eb..6cb219a 100644
--- a/src/main/java/com/android/apksig/ApkSigner.java
+++ b/src/main/java/com/android/apksig/ApkSigner.java
@@ -44,7 +44,6 @@
 import java.security.NoSuchAlgorithmException;
 import java.security.PrivateKey;
 import java.security.SignatureException;
-import java.security.cert.CertificateEncodingException;
 import java.security.cert.X509Certificate;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -163,14 +162,12 @@
      * @throws InvalidKeyException if a signature could not be generated because a signing key is
      *     not suitable for generating the signature
      * @throws SignatureException if an error occurred while generating or verifying a signature
-     * @throws CertificateEncodingException if the certificate of the source stamp to be embedded in
-     *     the APK is invalid.
      * @throws IllegalStateException if this signer's configuration is missing required information
      *     or if the signing engine is in an invalid state.
      */
     public void sign()
             throws IOException, ApkFormatException, NoSuchAlgorithmException, InvalidKeyException,
-            SignatureException, CertificateEncodingException, IllegalStateException {
+            SignatureException, IllegalStateException {
         Closeable in = null;
         DataSource inputApk;
         try {
@@ -216,7 +213,7 @@
 
     private void sign(DataSource inputApk, DataSink outputApkOut, DataSource outputApkIn)
             throws IOException, ApkFormatException, NoSuchAlgorithmException, InvalidKeyException,
-            SignatureException, CertificateEncodingException {
+            SignatureException {
         // Step 1. Find input APK's main ZIP sections
         ApkUtils.ZipSections inputZipSections;
         try {
