From 4ed6312fac7c10287e50fb7f1b22cf8e812158ff Mon Sep 17 00:00:00 2001 From: Erfan Abdi Date: Mon, 7 Oct 2019 23:49:01 +0330 Subject: [PATCH] Use java.util.Base64 * This fixes java9+ * Error: Exception in thread "main" java.lang.NoClassDefFoundError: sun/misc/BASE64Encoder --- src/orig/SignApk.java | 16 ++++++++-------- src/s/Sign.java | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/orig/SignApk.java b/src/orig/SignApk.java index 4c0e662..378e963 100644 --- a/src/orig/SignApk.java +++ b/src/orig/SignApk.java @@ -59,7 +59,7 @@ import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; -import sun.misc.BASE64Encoder; +import java.util.Base64; import sun.security.pkcs.ContentInfo; import sun.security.pkcs.PKCS7; import sun.security.pkcs.SignerInfo; @@ -179,7 +179,7 @@ private static Manifest addDigestsToManifest(JarFile jar) main.putValue("Manifest-Version", "1.0"); } - BASE64Encoder base64 = new BASE64Encoder(); + Base64.Encoder base64 = Base64.getEncoder().withoutPadding(); MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] buffer = new byte[4096]; int num; @@ -210,7 +210,7 @@ private static Manifest addDigestsToManifest(JarFile jar) Attributes attr = null; if (input != null) attr = input.getAttributes(name); attr = attr != null ? new Attributes(attr) : new Attributes(); - attr.putValue("SHA1-Digest", base64.encode(md.digest())); + attr.putValue("SHA1-Digest", base64.encodeToString(md.digest())); output.getEntries().put(name, attr); } } @@ -230,7 +230,7 @@ private static void addOtacert(JarOutputStream outputJar, long timestamp, Manifest manifest) throws IOException, GeneralSecurityException { - BASE64Encoder base64 = new BASE64Encoder(); + Base64.Encoder base64 = Base64.getEncoder().withoutPadding(); MessageDigest md = MessageDigest.getInstance("SHA1"); JarEntry je = new JarEntry(OTACERT_NAME); @@ -246,7 +246,7 @@ private static void addOtacert(JarOutputStream outputJar, input.close(); Attributes attr = new Attributes(); - attr.putValue("SHA1-Digest", base64.encode(md.digest())); + attr.putValue("SHA1-Digest", base64.encodeToString(md.digest())); manifest.getEntries().put(OTACERT_NAME, attr); } @@ -296,7 +296,7 @@ private static void writeSignatureFile(Manifest manifest, SignatureOutputStream Attributes main = sf.getMainAttributes(); main.putValue("Signature-Version", "1.0"); - BASE64Encoder base64 = new BASE64Encoder(); + Base64.Encoder base64 = Base64.getEncoder().withoutPadding(); MessageDigest md = MessageDigest.getInstance("SHA1"); PrintStream print = new PrintStream( new DigestOutputStream(new ByteArrayOutputStream(), md), @@ -305,7 +305,7 @@ private static void writeSignatureFile(Manifest manifest, SignatureOutputStream // Digest of the entire manifest manifest.write(print); print.flush(); - main.putValue("SHA1-Digest-Manifest", base64.encode(md.digest())); + main.putValue("SHA1-Digest-Manifest", base64.encodeToString(md.digest())); Map entries = manifest.getEntries(); for (Map.Entry entry : entries.entrySet()) { @@ -318,7 +318,7 @@ private static void writeSignatureFile(Manifest manifest, SignatureOutputStream print.flush(); Attributes sfAttr = new Attributes(); - sfAttr.putValue("SHA1-Digest", base64.encode(md.digest())); + sfAttr.putValue("SHA1-Digest", base64.encodeToString(md.digest())); sf.getEntries().put(entry.getKey(), sfAttr); } diff --git a/src/s/Sign.java b/src/s/Sign.java index dfb188f..0eb0a46 100644 --- a/src/s/Sign.java +++ b/src/s/Sign.java @@ -51,7 +51,7 @@ import java.util.jar.Manifest; import java.util.regex.Pattern; -import sun.misc.BASE64Encoder; +import java.util.Base64; import sun.security.pkcs.ContentInfo; import sun.security.pkcs.PKCS7; import sun.security.pkcs.SignerInfo; @@ -105,7 +105,7 @@ private static Manifest addDigestsToManifest(JarFile jar) throws IOException, main.putValue("Manifest-Version", "1.0"); } - BASE64Encoder base64 = new BASE64Encoder(); + Base64.Encoder base64 = Base64.getEncoder().withoutPadding(); MessageDigest md = MessageDigest.getInstance("SHA1"); byte[] buffer = new byte[4096]; int num; @@ -136,7 +136,7 @@ private static Manifest addDigestsToManifest(JarFile jar) throws IOException, if (input != null) attr = input.getAttributes(name); attr = attr != null ? new Attributes(attr) : new Attributes(); - attr.putValue("SHA1-Digest", base64.encode(md.digest())); + attr.putValue("SHA1-Digest", base64.encodeToString(md.digest())); output.getEntries().put(name, attr); } } @@ -154,7 +154,7 @@ private static void addOtacert(JarOutputStream outputJar, long timestamp, Manifest manifest) throws IOException, GeneralSecurityException { final InputStream input = new ByteArrayInputStream(publicBytes); - BASE64Encoder base64 = new BASE64Encoder(); + Base64.Encoder base64 = Base64.getEncoder().withoutPadding(); MessageDigest md = MessageDigest.getInstance("SHA1"); JarEntry je = new JarEntry(OTACERT_NAME); @@ -170,7 +170,7 @@ private static void addOtacert(JarOutputStream outputJar, long timestamp, input.close(); Attributes attr = new Attributes(); - attr.putValue("SHA1-Digest", base64.encode(md.digest())); + attr.putValue("SHA1-Digest", base64.encodeToString(md.digest())); manifest.getEntries().put(OTACERT_NAME, attr); } @@ -219,7 +219,7 @@ private static void writeSignatureFile(Manifest manifest, Attributes main = sf.getMainAttributes(); main.putValue("Signature-Version", "1.0"); - BASE64Encoder base64 = new BASE64Encoder(); + Base64.Encoder base64 = Base64.getEncoder().withoutPadding(); MessageDigest md = MessageDigest.getInstance("SHA1"); PrintStream print = new PrintStream(new DigestOutputStream( new ByteArrayOutputStream(), md), true, "UTF-8"); @@ -227,7 +227,7 @@ private static void writeSignatureFile(Manifest manifest, // Digest of the entire manifest manifest.write(print); print.flush(); - main.putValue("SHA1-Digest-Manifest", base64.encode(md.digest())); + main.putValue("SHA1-Digest-Manifest", base64.encodeToString(md.digest())); Map entries = manifest.getEntries(); for (Map.Entry entry : entries.entrySet()) { @@ -240,7 +240,7 @@ private static void writeSignatureFile(Manifest manifest, print.flush(); Attributes sfAttr = new Attributes(); - sfAttr.putValue("SHA1-Digest", base64.encode(md.digest())); + sfAttr.putValue("SHA1-Digest", base64.encodeToString(md.digest())); sf.getEntries().put(entry.getKey(), sfAttr); }