) listeners.clone();
list.remove(l);
listeners = list;
- }
+ }
}
diff --git a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ProgressListener.java b/app/src/main/java/kellinwood/security/zipsigner/ProgressListener.java
similarity index 80%
rename from extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ProgressListener.java
rename to app/src/main/java/kellinwood/security/zipsigner/ProgressListener.java
index 5bd0b5670..3cb62060a 100644
--- a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ProgressListener.java
+++ b/app/src/main/java/kellinwood/security/zipsigner/ProgressListener.java
@@ -13,12 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package kellinwood.security.zipsigner;
public interface ProgressListener {
- /** Called to notify the listener that progress has been made during
- the zip signing operation.
+ /**
+ * Called to notify the listener that progress has been made during
+ * the zip signing operation.
*/
- public void onProgress( ProgressEvent event);
+ public void onProgress(ProgressEvent event);
}
\ No newline at end of file
diff --git a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ResourceAdapter.java b/app/src/main/java/kellinwood/security/zipsigner/ResourceAdapter.java
similarity index 86%
rename from extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ResourceAdapter.java
rename to app/src/main/java/kellinwood/security/zipsigner/ResourceAdapter.java
index a347cf0db..4377b7813 100644
--- a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ResourceAdapter.java
+++ b/app/src/main/java/kellinwood/security/zipsigner/ResourceAdapter.java
@@ -1,3 +1,4 @@
+
package kellinwood.security.zipsigner;
/**
@@ -14,7 +15,9 @@ public interface ResourceAdapter {
GENERATING_SIGNATURE_FILE,
GENERATING_SIGNATURE_BLOCK,
COPYING_ZIP_ENTRY
- };
+ }
- public String getString( Item item, Object... args);
+ ;
+
+ public String getString(Item item, Object... args);
}
diff --git a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ZipSignature.java b/app/src/main/java/kellinwood/security/zipsigner/ZipSignature.java
similarity index 72%
rename from extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ZipSignature.java
rename to app/src/main/java/kellinwood/security/zipsigner/ZipSignature.java
index ac03a53b6..93698a2c7 100644
--- a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ZipSignature.java
+++ b/app/src/main/java/kellinwood/security/zipsigner/ZipSignature.java
@@ -13,59 +13,56 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package kellinwood.security.zipsigner;
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.PrivateKey;
-import javax.crypto.BadPaddingException;
-import javax.crypto.Cipher;
-import javax.crypto.IllegalBlockSizeException;
-
@SuppressWarnings("restriction")
public class ZipSignature {
- byte[] beforeAlgorithmIdBytes = { 0x30, 0x21 };
+ byte[] beforeAlgorithmIdBytes = {0x30, 0x21};
// byte[] algorithmIdBytes;
// algorithmIdBytes = sun.security.x509.AlgorithmId.get("SHA1").encode();
- byte[] algorithmIdBytes = {0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00 };
+ byte[] algorithmIdBytes = {0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00};
- byte[] afterAlgorithmIdBytes = { 0x04, 0x14 };
+ byte[] afterAlgorithmIdBytes = {0x04, 0x14};
Cipher cipher;
MessageDigest md;
- public ZipSignature() throws IOException, GeneralSecurityException
- {
+ public ZipSignature() throws IOException, GeneralSecurityException {
md = MessageDigest.getInstance("SHA1");
cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
}
- public void initSign( PrivateKey privateKey) throws InvalidKeyException
- {
+ public void initSign(PrivateKey privateKey) throws InvalidKeyException {
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
}
- public void update( byte[] data) {
- md.update( data);
+ public void update(byte[] data) {
+ md.update(data);
}
- public void update( byte[] data, int offset, int count) {
- md.update( data, offset, count);
+ public void update(byte[] data, int offset, int count) {
+ md.update(data, offset, count);
}
- public byte[] sign() throws BadPaddingException, IllegalBlockSizeException
- {
- cipher.update( beforeAlgorithmIdBytes);
- cipher.update( algorithmIdBytes);
- cipher.update( afterAlgorithmIdBytes);
- cipher.update( md.digest());
+ public byte[] sign() throws BadPaddingException, IllegalBlockSizeException {
+ cipher.update(beforeAlgorithmIdBytes);
+ cipher.update(algorithmIdBytes);
+ cipher.update(afterAlgorithmIdBytes);
+ cipher.update(md.digest());
return cipher.doFinal();
}
}
diff --git a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ZipSigner.java b/app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java
similarity index 62%
rename from extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ZipSigner.java
rename to app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java
index 8bc9aea5c..ca73c8d59 100644
--- a/extern/zipsigner/src/main/java/kellinwood/security/zipsigner/ZipSigner.java
+++ b/app/src/main/java/kellinwood/security/zipsigner/ZipSigner.java
@@ -26,6 +26,7 @@
* using signature block template files.
*/
+
package kellinwood.security.zipsigner;
import kellinwood.logging.LoggerInterface;
@@ -38,17 +39,40 @@ import javax.crypto.Cipher;
import javax.crypto.EncryptedPrivateKeyInfo;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.PrintStream;
import java.lang.reflect.Method;
import java.net.URL;
-import java.security.*;
+import java.security.DigestOutputStream;
+import java.security.GeneralSecurityException;
+import java.security.Key;
+import java.security.KeyFactory;
+import java.security.KeyStore;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.Provider;
+import java.security.Security;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.KeySpec;
import java.security.spec.PKCS8EncodedKeySpec;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.TreeMap;
import java.util.jar.Attributes;
import java.util.jar.JarFile;
import java.util.jar.Manifest;
@@ -58,17 +82,16 @@ import java.util.regex.Pattern;
* This is a modified copy of com.android.signapk.SignApk.java. It provides an
* API to sign JAR files (including APKs and Zip/OTA updates) in
* a way compatible with the mincrypt verifier, using SHA1 and RSA keys.
- *
+ *
* Please see the README.txt file in the root of this project for usage instructions.
*/
-public class ZipSigner
-{
+public class ZipSigner {
private boolean canceled = false;
private ProgressHelper progressHelper = new ProgressHelper();
private ResourceAdapter resourceAdapter = new DefaultResourceAdapter();
-
+
static LoggerInterface log = null;
private static final String CERT_SF_NAME = "META-INF/CERT.SF";
@@ -76,13 +99,13 @@ public class ZipSigner
// Files matching this pattern are not copied to the output.
private static Pattern stripPattern =
- Pattern.compile("^META-INF/(.*)[.](SF|RSA|DSA)$");
+ Pattern.compile("^META-INF/(.*)[.](SF|RSA|DSA)$");
- Map loadedKeys = new HashMap();
+ Map loadedKeys = new HashMap();
KeySet keySet = null;
-
+
public static LoggerInterface getLogger() {
- if (log == null) log = LoggerManager.getLogger( ZipSigner.class.getName());
+ if (log == null) log = LoggerManager.getLogger(ZipSigner.class.getName());
return log;
}
@@ -91,25 +114,24 @@ public class ZipSigner
public static final String MODE_AUTO = "auto";
public static final String KEY_NONE = "none";
public static final String KEY_TESTKEY = "testkey";
-
+
// Allowable key modes.
public static final String[] SUPPORTED_KEY_MODES =
- new String[] { MODE_AUTO_TESTKEY, MODE_AUTO, MODE_AUTO_NONE, "media", "platform", "shared", KEY_TESTKEY, KEY_NONE};
-
+ new String[]{MODE_AUTO_TESTKEY, MODE_AUTO, MODE_AUTO_NONE, "media", "platform", "shared", KEY_TESTKEY, KEY_NONE};
+
String keymode = KEY_TESTKEY; // backwards compatible with versions that only signed with this key
-
- Map autoKeyDetect = new HashMap();
-
+
+ Map autoKeyDetect = new HashMap();
+
AutoKeyObservable autoKeyObservable = new AutoKeyObservable();
-
- public ZipSigner() throws ClassNotFoundException, IllegalAccessException, InstantiationException
- {
+
+ public ZipSigner() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
// MD5 of the first 1458 bytes of the signature block generated by the key, mapped to the key name
- autoKeyDetect.put( "aa9852bc5a53272ac8031d49b65e4b0e", "media");
- autoKeyDetect.put( "e60418c4b638f20d0721e115674ca11f", "platform");
- autoKeyDetect.put( "3e24e49741b60c215c010dc6048fca7d", "shared");
- autoKeyDetect.put( "dab2cead827ef5313f28e22b6fa8479f", "testkey");
-
+ autoKeyDetect.put("aa9852bc5a53272ac8031d49b65e4b0e", "media");
+ autoKeyDetect.put("e60418c4b638f20d0721e115674ca11f", "platform");
+ autoKeyDetect.put("3e24e49741b60c215c010dc6048fca7d", "shared");
+ autoKeyDetect.put("dab2cead827ef5313f28e22b6fa8479f", "testkey");
+
}
public ResourceAdapter getResourceAdapter() {
@@ -121,24 +143,22 @@ public class ZipSigner
}
// when the key mode is automatic, the observers are called when the key is determined
- public void addAutoKeyObserver( Observer o) {
+ public void addAutoKeyObserver(Observer o) {
autoKeyObservable.addObserver(o);
}
-
+
public String getKeymode() {
return keymode;
}
- public void setKeymode(String km) throws IOException, GeneralSecurityException
- {
+ public void setKeymode(String km) throws IOException, GeneralSecurityException {
if (getLogger().isDebugEnabled()) getLogger().debug("setKeymode: " + km);
keymode = km;
if (keymode.startsWith(MODE_AUTO)) {
keySet = null;
- }
- else {
- progressHelper.initProgress();
- loadKeys( keymode);
+ } else {
+ progressHelper.initProgress();
+ loadKeys(keymode);
}
}
@@ -146,41 +166,40 @@ public class ZipSigner
return SUPPORTED_KEY_MODES;
}
-
- protected String autoDetectKey( String mode, Map zioEntries)
- throws NoSuchAlgorithmException, IOException
- {
+
+ protected String autoDetectKey(String mode, Map zioEntries)
+ throws NoSuchAlgorithmException, IOException {
boolean debug = getLogger().isDebugEnabled();
-
+
if (!mode.startsWith(MODE_AUTO)) return mode;
-
+
// Auto-determine which keys to use
String keyName = null;
// Start by finding the signature block file in the input.
- for (Map.Entry entry : zioEntries.entrySet()) {
+ for (Map.Entry entry : zioEntries.entrySet()) {
String entryName = entry.getKey();
if (entryName.startsWith("META-INF/") && entryName.endsWith(".RSA")) {
-
+
// Compute MD5 of the first 1458 bytes, which is the size of our signature block templates --
// e.g., the portion of the sig block file that is the same for a given certificate.
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] entryData = entry.getValue().getData();
if (entryData.length < 1458) break; // sig block too short to be a supported key
- md5.update( entryData, 0, 1458);
+ md5.update(entryData, 0, 1458);
byte[] rawDigest = md5.digest();
-
+
// Create the hex representation of the digest value
StringBuilder builder = new StringBuilder();
- for( byte b : rawDigest) {
- builder.append( String.format("%02x", b));
+ for (byte b : rawDigest) {
+ builder.append(String.format("%02x", b));
}
-
+
String md5String = builder.toString();
// Lookup the key name
- keyName = autoKeyDetect.get( md5String);
-
-
+ keyName = autoKeyDetect.get(md5String);
+
+
if (debug) {
if (keyName != null) {
getLogger().debug(String.format("Auto-determined key=%s using md5=%s", keyName, md5String));
@@ -191,19 +210,18 @@ public class ZipSigner
if (keyName != null) return keyName;
}
}
-
- if (mode.equals( MODE_AUTO_TESTKEY)) {
+
+ if (mode.equals(MODE_AUTO_TESTKEY)) {
// in auto-testkey mode, fallback to the testkey if it couldn't be determined
- if (debug) getLogger().debug("Falling back to key="+ keyName);
+ if (debug) getLogger().debug("Falling back to key=" + keyName);
return KEY_TESTKEY;
-
- }
- else if (mode.equals(MODE_AUTO_NONE)) {
+
+ } else if (mode.equals(MODE_AUTO_NONE)) {
// in auto-node mode, simply copy the input to the output when the key can't be determined.
if (debug) getLogger().debug("Unable to determine key, returning: " + KEY_NONE);
return KEY_NONE;
}
-
+
return null;
}
@@ -212,55 +230,52 @@ public class ZipSigner
}
// Loads one of the built-in keys (media, platform, shared, testkey)
- public void loadKeys( String name)
- throws IOException, GeneralSecurityException
- {
-
+ public void loadKeys(String name)
+ throws IOException, GeneralSecurityException {
+
keySet = loadedKeys.get(name);
if (keySet != null) return;
-
+
keySet = new KeySet();
keySet.setName(name);
- loadedKeys.put( name, keySet);
-
+ loadedKeys.put(name, keySet);
+
if (KEY_NONE.equals(name)) return;
issueLoadingCertAndKeysProgressEvent();
// load the private key
- URL privateKeyUrl = getClass().getResource("/keys/"+name+".pk8");
+ URL privateKeyUrl = getClass().getResource("/keys/" + name + ".pk8");
keySet.setPrivateKey(readPrivateKey(privateKeyUrl, null));
// load the certificate
- URL publicKeyUrl = getClass().getResource("/keys/"+name+".x509.pem");
+ URL publicKeyUrl = getClass().getResource("/keys/" + name + ".x509.pem");
keySet.setPublicKey(readPublicKey(publicKeyUrl));
// load the signature block template
- URL sigBlockTemplateUrl = getClass().getResource("/keys/"+name+".sbt");
+ URL sigBlockTemplateUrl = getClass().getResource("/keys/" + name + ".sbt");
if (sigBlockTemplateUrl != null) {
keySet.setSigBlockTemplate(readContentAsBytes(sigBlockTemplateUrl));
}
}
-
- public void setKeys( String name, X509Certificate publicKey, PrivateKey privateKey, byte[] signatureBlockTemplate)
- {
- keySet = new KeySet( name, publicKey, privateKey, signatureBlockTemplate);
+
+ public void setKeys(String name, X509Certificate publicKey, PrivateKey privateKey, byte[] signatureBlockTemplate) {
+ keySet = new KeySet(name, publicKey, privateKey, signatureBlockTemplate);
}
- public void setKeys( String name, X509Certificate publicKey, PrivateKey privateKey, String signatureAlgorithm, byte[] signatureBlockTemplate)
- {
- keySet = new KeySet( name, publicKey, privateKey, signatureAlgorithm, signatureBlockTemplate);
+ public void setKeys(String name, X509Certificate publicKey, PrivateKey privateKey, String signatureAlgorithm, byte[] signatureBlockTemplate) {
+ keySet = new KeySet(name, publicKey, privateKey, signatureAlgorithm, signatureBlockTemplate);
}
public KeySet getKeySet() {
return keySet;
}
-
+
// Allow the operation to be canceled.
public void cancel() {
canceled = true;
}
-
+
// Allow the instance to sign again if previously canceled.
public void resetCanceled() {
canceled = false;
@@ -271,17 +286,16 @@ public class ZipSigner
}
@SuppressWarnings("unchecked")
- public void loadProvider( String providerClassName)
- throws ClassNotFoundException, IllegalAccessException, InstantiationException
- {
+ public void loadProvider(String providerClassName)
+ throws ClassNotFoundException, IllegalAccessException, InstantiationException {
Class providerClass = Class.forName(providerClassName);
- Provider provider = (Provider)providerClass.newInstance();
+ Provider provider = (Provider) providerClass.newInstance();
Security.insertProviderAt(provider, 1);
}
public X509Certificate readPublicKey(URL publicKeyUrl)
- throws IOException, GeneralSecurityException {
+ throws IOException, GeneralSecurityException {
InputStream input = publicKeyUrl.openStream();
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
@@ -293,15 +307,15 @@ public class ZipSigner
/**
* Decrypt an encrypted PKCS 8 format private key.
- *
+ *
* Based on ghstark's post on Aug 6, 2006 at
* http://forums.sun.com/thread.jspa?threadID=758133&messageID=4330949
*
* @param encryptedPrivateKey The raw data of the private key
- * @param keyPassword the key password
+ * @param keyPassword the key password
*/
private KeySpec decryptPrivateKey(byte[] encryptedPrivateKey, String keyPassword)
- throws GeneralSecurityException {
+ throws GeneralSecurityException {
EncryptedPrivateKeyInfo epkInfo;
try {
epkInfo = new EncryptedPrivateKeyInfo(encryptedPrivateKey);
@@ -326,35 +340,39 @@ public class ZipSigner
}
}
- /** Fetch the content at the specified URL and return it as a byte array. */
- public byte[] readContentAsBytes( URL contentUrl) throws IOException
- {
- return readContentAsBytes( contentUrl.openStream());
+ /**
+ * Fetch the content at the specified URL and return it as a byte array.
+ */
+ public byte[] readContentAsBytes(URL contentUrl) throws IOException {
+ return readContentAsBytes(contentUrl.openStream());
}
- /** Fetch the content from the given stream and return it as a byte array. */
- public byte[] readContentAsBytes( InputStream input) throws IOException
- {
+ /**
+ * Fetch the content from the given stream and return it as a byte array.
+ */
+ public byte[] readContentAsBytes(InputStream input) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
- int numRead = input.read( buffer);
+ int numRead = input.read(buffer);
while (numRead != -1) {
- baos.write( buffer, 0, numRead);
- numRead = input.read( buffer);
+ baos.write(buffer, 0, numRead);
+ numRead = input.read(buffer);
}
byte[] bytes = baos.toByteArray();
return bytes;
}
- /** Read a PKCS 8 format private key. */
+ /**
+ * Read a PKCS 8 format private key.
+ */
public PrivateKey readPrivateKey(URL privateKeyUrl, String keyPassword)
- throws IOException, GeneralSecurityException {
- DataInputStream input = new DataInputStream( privateKeyUrl.openStream());
+ throws IOException, GeneralSecurityException {
+ DataInputStream input = new DataInputStream(privateKeyUrl.openStream());
try {
- byte[] bytes = readContentAsBytes( input);
+ byte[] bytes = readContentAsBytes(input);
KeySpec spec = decryptPrivateKey(bytes, keyPassword);
if (spec == null) {
@@ -371,17 +389,16 @@ public class ZipSigner
}
}
- /** Add the SHA1 of every file to the manifest, creating it if necessary. */
- private Manifest addDigestsToManifest(Map entries)
- throws IOException, GeneralSecurityException
- {
+ /**
+ * Add the SHA1 of every file to the manifest, creating it if necessary.
+ */
+ private Manifest addDigestsToManifest(Map entries)
+ throws IOException, GeneralSecurityException {
Manifest input = null;
ZioEntry manifestEntry = entries.get(JarFile.MANIFEST_NAME);
if (manifestEntry != null) {
- InputStream is = manifestEntry.getInputStream();
input = new Manifest();
- input.read(is);
- is.close();
+ input.read(manifestEntry.getInputStream());
}
Manifest output = new Manifest();
Attributes main = output.getMainAttributes();
@@ -402,30 +419,29 @@ public class ZipSigner
// map will be deterministic.
TreeMap byName = new TreeMap();
- byName.putAll( entries);
+ byName.putAll(entries);
boolean debug = getLogger().isDebugEnabled();
if (debug) getLogger().debug("Manifest entries:");
- for (ZioEntry entry: byName.values()) {
+ for (ZioEntry entry : byName.values()) {
if (canceled) break;
String name = entry.getName();
if (debug) getLogger().debug(name);
if (!entry.isDirectory() && !name.equals(JarFile.MANIFEST_NAME) &&
!name.equals(CERT_SF_NAME) && !name.equals(CERT_RSA_NAME) &&
(stripPattern == null ||
- !stripPattern.matcher(name).matches()))
- {
+ !stripPattern.matcher(name).matches())) {
- progressHelper.progress( ProgressEvent.PRORITY_NORMAL, resourceAdapter.getString(ResourceAdapter.Item.GENERATING_MANIFEST));
+ progressHelper.progress(ProgressEvent.PRORITY_NORMAL, resourceAdapter.getString(ResourceAdapter.Item.GENERATING_MANIFEST));
InputStream data = entry.getInputStream();
while ((num = data.read(buffer)) > 0) {
md.update(buffer, 0, num);
}
-
+
Attributes attr = null;
if (input != null) {
- java.util.jar.Attributes inAttr = input.getAttributes(name);
- if (inAttr != null) attr = new Attributes( inAttr);
+ java.util.jar.Attributes inAttr = input.getAttributes(name);
+ if (inAttr != null) attr = new Attributes(inAttr);
}
if (attr == null) attr = new Attributes();
attr.putValue("SHA1-Digest", Base64.encode(md.digest()));
@@ -437,11 +453,13 @@ public class ZipSigner
}
- /** Write the signature file to the given output stream. */
+ /**
+ * Write the signature file to the given output stream.
+ */
private void generateSignatureFile(Manifest manifest, OutputStream out)
- throws IOException, GeneralSecurityException {
- out.write( ("Signature-Version: 1.0\r\n").getBytes());
- out.write( ("Created-By: 1.0 (Android SignApk)\r\n").getBytes());
+ throws IOException, GeneralSecurityException {
+ out.write(("Signature-Version: 1.0\r\n").getBytes());
+ out.write(("Created-By: 1.0 (Android SignApk)\r\n").getBytes());
// BASE64Encoder base64 = new BASE64Encoder();
@@ -454,32 +472,33 @@ public class ZipSigner
manifest.write(print);
print.flush();
- out.write( ("SHA1-Digest-Manifest: "+ Base64.encode(md.digest()) + "\r\n\r\n").getBytes());
+ out.write(("SHA1-Digest-Manifest: " + Base64.encode(md.digest()) + "\r\n\r\n").getBytes());
Map entries = manifest.getEntries();
for (Map.Entry entry : entries.entrySet()) {
if (canceled) break;
- progressHelper.progress( ProgressEvent.PRORITY_NORMAL, resourceAdapter.getString(ResourceAdapter.Item.GENERATING_SIGNATURE_FILE));
+ progressHelper.progress(ProgressEvent.PRORITY_NORMAL, resourceAdapter.getString(ResourceAdapter.Item.GENERATING_SIGNATURE_FILE));
// Digest of the manifest stanza for this entry.
- String nameEntry = "Name: " + entry.getKey() + "\r\n";
- print.print( nameEntry);
+ String nameEntry = "Name: " + entry.getKey() + "\r\n";
+ print.print(nameEntry);
for (Map.Entry