diff options
author | Neil Fuller <nfuller@google.com> | 2015-05-14 17:02:32 +0100 |
---|---|---|
committer | Neil Fuller <nfuller@google.com> | 2015-05-15 09:12:01 +0000 |
commit | 266664659f091122ec603435bc3dea4282a353f1 (patch) | |
tree | b7b63dcbea7c4547c40c95b3e88a06f14d6ee8a9 /tzdata/update_test_app | |
parent | af13f698a348ab33fb37df20fb9a7fd45e07edfe (diff) | |
download | libcore-266664659f091122ec603435bc3dea4282a353f1.zip libcore-266664659f091122ec603435bc3dea4282a353f1.tar.gz libcore-266664659f091122ec603435bc3dea4282a353f1.tar.bz2 |
Remove signature generation from UpdateTestApp
The need for a signature was removed in internal changes for the
M release. Instead, a permission is required.
Related commits:
12964bf5dd36d13fc25efef7c7175a677f9490a5
ef3d6079a55f559191c90d15e3f30a72b576c499
Bug: 19941636
(cherry picked from commit ba148e2de81badc77ad21daca18996d0766e412e)
Change-Id: Ie107b344b4e60cd4d71fe78a87d2260405d94c3a
Diffstat (limited to 'tzdata/update_test_app')
-rw-r--r-- | tzdata/update_test_app/AndroidManifest.xml | 3 | ||||
-rw-r--r-- | tzdata/update_test_app/src/libcore/tzdata/update_test_app/installupdatetestapp/MainActivity.java | 102 |
2 files changed, 3 insertions, 102 deletions
diff --git a/tzdata/update_test_app/AndroidManifest.xml b/tzdata/update_test_app/AndroidManifest.xml index 67a8450..081aae5 100644 --- a/tzdata/update_test_app/AndroidManifest.xml +++ b/tzdata/update_test_app/AndroidManifest.xml @@ -2,8 +2,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="libcore.tzdata.update_test_app.installupdatetestapp" > - <uses-permission android:name="android.permission.WRITE_SETTINGS" /> - <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> + <uses-permission android:name="android.permission.UPDATE_CONFIG" /> <application android:allowBackup="false" diff --git a/tzdata/update_test_app/src/libcore/tzdata/update_test_app/installupdatetestapp/MainActivity.java b/tzdata/update_test_app/src/libcore/tzdata/update_test_app/installupdatetestapp/MainActivity.java index f9d911b..2348e43 100644 --- a/tzdata/update_test_app/src/libcore/tzdata/update_test_app/installupdatetestapp/MainActivity.java +++ b/tzdata/update_test_app/src/libcore/tzdata/update_test_app/installupdatetestapp/MainActivity.java @@ -29,17 +29,12 @@ import android.widget.Button; import android.widget.EditText; import android.widget.TextView; -import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; -import java.security.KeyFactory; -import java.security.PrivateKey; -import java.security.Signature; -import java.security.spec.PKCS8EncodedKeySpec; import java.util.Date; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -47,45 +42,9 @@ import java.util.concurrent.Executors; public class MainActivity extends Activity implements View.OnClickListener { - private static final String UPDATE_CERTIFICATE_KEY = "config_update_certificate"; private static final String EXTRA_REQUIRED_HASH = "REQUIRED_HASH"; - private static final String EXTRA_SIGNATURE = "SIGNATURE"; private static final String EXTRA_VERSION_NUMBER = "VERSION"; - public static final String TEST_CERT = "" + - "MIIDsjCCAxugAwIBAgIJAPLf2gS0zYGUMA0GCSqGSIb3DQEBBQUAMIGYMQswCQYDVQQGEwJVUzET" + - "MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEPMA0GA1UEChMGR29v" + - "Z2xlMRAwDgYDVQQLEwd0ZXN0aW5nMRYwFAYDVQQDEw1HZXJlbXkgQ29uZHJhMSEwHwYJKoZIhvcN" + - "AQkBFhJnY29uZHJhQGdvb2dsZS5jb20wHhcNMTIwNzE0MTc1MjIxWhcNMTIwODEzMTc1MjIxWjCB" + - "mDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDU1vdW50YWluIFZp" + - "ZXcxDzANBgNVBAoTBkdvb2dsZTEQMA4GA1UECxMHdGVzdGluZzEWMBQGA1UEAxMNR2VyZW15IENv" + - "bmRyYTEhMB8GCSqGSIb3DQEJARYSZ2NvbmRyYUBnb29nbGUuY29tMIGfMA0GCSqGSIb3DQEBAQUA" + - "A4GNADCBiQKBgQCjGGHATBYlmas+0sEECkno8LZ1KPglb/mfe6VpCT3GhSr+7br7NG/ZwGZnEhLq" + - "E7YIH4fxltHmQC3Tz+jM1YN+kMaQgRRjo/LBCJdOKaMwUbkVynAH6OYsKevjrOPk8lfM5SFQzJMG" + - "sA9+Tfopr5xg0BwZ1vA/+E3mE7Tr3M2UvwIDAQABo4IBADCB/TAdBgNVHQ4EFgQUhzkS9E6G+x8W" + - "L4EsmRjDxu28tHUwgc0GA1UdIwSBxTCBwoAUhzkS9E6G+x8WL4EsmRjDxu28tHWhgZ6kgZswgZgx" + - "CzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3" + - "MQ8wDQYDVQQKEwZHb29nbGUxEDAOBgNVBAsTB3Rlc3RpbmcxFjAUBgNVBAMTDUdlcmVteSBDb25k" + - "cmExITAfBgkqhkiG9w0BCQEWEmdjb25kcmFAZ29vZ2xlLmNvbYIJAPLf2gS0zYGUMAwGA1UdEwQF" + - "MAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAYiugFDmbDOQ2U/+mqNt7o8ftlEo9SJrns6O8uTtK6AvR" + - "orDrR1AXTXkuxwLSbmVfedMGOZy7Awh7iZa8hw5x9XmUudfNxvmrKVEwGQY2DZ9PXbrnta/dwbhK" + - "mWfoepESVbo7CKIhJp8gRW0h1Z55ETXD57aGJRvQS4pxkP8ANhM="; - - - public static final String TEST_KEY = "" + - "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKMYYcBMFiWZqz7SwQQKSejwtnUo" + - "+CVv+Z97pWkJPcaFKv7tuvs0b9nAZmcSEuoTtggfh/GW0eZALdPP6MzVg36QxpCBFGOj8sEIl04p" + - "ozBRuRXKcAfo5iwp6+Os4+TyV8zlIVDMkwawD35N+imvnGDQHBnW8D/4TeYTtOvczZS/AgMBAAEC" + - "gYBxwFalNSwZK3WJipq+g6KLCiBn1JxGGDQlLKrweFaSuFyFky9fd3IvkIabirqQchD612sMb+GT" + - "0t1jptW6z4w2w6++IW0A3apDOCwoD+uvDBXrbFqI0VbyAWUNqHVdaFFIRk2IHGEE6463mGRdmILX" + - "IlCd/85RTHReg4rl/GFqWQJBANgLAIR4pWbl5Gm+DtY18wp6Q3pJAAMkmP/lISCBIidu1zcqYIKt" + - "PoDW4Knq9xnhxPbXrXKv4YzZWHBK8GkKhQ0CQQDBQnXufQcMew+PwiS0oJvS+eQ6YJwynuqG2ejg" + - "WE+T7489jKtscRATpUXpZUYmDLGg9bLt7L62hFvFSj2LO2X7AkBcdrD9AWnBFWlh/G77LVHczSEu" + - "KCoyLiqxcs5vy/TjLaQ8vw1ZQG580/qJnr+tOxyCjSJ18GK3VppsTRaBznfNAkB3nuCKNp9HTWCL" + - "dfrsRsFMrFpk++mSt6SoxXaMbn0LL2u1CD4PCEiQMGt+lK3/3TmRTKNs+23sYS7Ahjxj0udDAkEA" + - "p57Nj65WNaWeYiOfTwKXkLj8l29H5NbaGWxPT0XkWr4PvBOFZVH/wj0/qc3CMVGnv11+DyO+QUCN" + - "SqBB5aRe8g=="; - private EditText actionEditText; private EditText versionEditText; private EditText contentPathEditText; @@ -137,27 +96,10 @@ public class MainActivity extends Activity implements View.OnClickListener { } publishProgress("Created copy of " + contentFile + " at " + copyOfContentFile); - String originalCert = null; try { - originalCert = overrideCert(TEST_CERT); - sleep(1000); - publishProgress("Overridden update cert"); - - String signature = createSignature(copyOfContentFile, version, requiredHash); - sendIntent(copyOfContentFile, action, version, requiredHash, signature); - publishProgress("Sent update intent"); + sendIntent(copyOfContentFile, action, version, requiredHash); } catch (Exception e) { publishProgress("Error", exceptionToString(e)); - } finally { - if (originalCert != null) { - sleep(1000); - try { - overrideCert(originalCert); - publishProgress("Reverted update cert"); - } catch (Exception e) { - publishProgress("Unable to revert update cert", exceptionToString(e)); - } - } } publishProgress("Update intent sent successfully"); return null; @@ -172,15 +114,6 @@ public class MainActivity extends Activity implements View.OnClickListener { }.executeOnExecutor(executor); } - private String overrideCert(String cert) throws Exception { - final String key = UPDATE_CERTIFICATE_KEY; - String originalCert = Settings.Secure.getString(getContentResolver(), key); - if (!Settings.Secure.putString(getContentResolver(), key, cert)) { - throw new Exception("Unable to override update certificate"); - } - return originalCert; - } - private void sleep(long millisDelay) { try { Thread.sleep(millisDelay); @@ -190,7 +123,7 @@ public class MainActivity extends Activity implements View.OnClickListener { } private void sendIntent( - File contentFile, String action, String version, String required, String sig) { + File contentFile, String action, String version, String required) { Intent i = new Intent(); i.setAction(action); Uri contentUri = @@ -201,7 +134,6 @@ public class MainActivity extends Activity implements View.OnClickListener { i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); i.putExtra(EXTRA_VERSION_NUMBER, version); i.putExtra(EXTRA_REQUIRED_HASH, required); - i.putExtra(EXTRA_SIGNATURE, sig); sendBroadcast(i); } @@ -220,36 +152,6 @@ public class MainActivity extends Activity implements View.OnClickListener { logView.scrollTo(0, scrollAmount); } - private static String createSignature(File contentFile, String version, String requiredHash) - throws Exception { - byte[] contentBytes = readBytes(contentFile); - Signature signer = Signature.getInstance("SHA512withRSA"); - signer.initSign(createKey()); - signer.update(contentBytes); - signer.update(version.trim().getBytes()); - signer.update(requiredHash.getBytes()); - return new String(Base64.encode(signer.sign(), Base64.DEFAULT)); - } - - private static byte[] readBytes(File contentFile) throws IOException { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - try (FileInputStream fis = new FileInputStream(contentFile)) { - int count; - byte[] buffer = new byte[8192]; - while ((count = fis.read(buffer)) != -1) { - baos.write(buffer, 0, count); - } - } - return baos.toByteArray(); - } - - private static PrivateKey createKey() throws Exception { - byte[] derKey = Base64.decode(TEST_KEY.getBytes(), Base64.DEFAULT); - PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(derKey); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - return keyFactory.generatePrivate(keySpec); - } - private static String exceptionToString(Exception e) { StringWriter writer = new StringWriter(); e.printStackTrace(new PrintWriter(writer)); |