)]}'
{
  "log": [
    {
      "commit": "42f6528b988e3ae320cda63a2bd63d30d9e56183",
      "tree": "15036acfbdb1d2f35899ba85b27da83ed9b99b99",
      "parents": [
        "21e2f1b4a0877ee38f7ba89eb32f585fb34431f3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 09 21:26:21 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jun 10 10:43:02 2011 -0700"
      },
      "message": "New KeyChain API for application access to keystore credentials\n\nThe KeyChain API is Currently in use by Browser and validated by Email\nfor client certificate authentication.\n\nChange-Id: Ifeab416be594457a05747406e31656e71795cb53\n"
    },
    {
      "commit": "93201f545b67da15cb69830a5988810aef52c0b2",
      "tree": "1386ffcba41a1e94de13ea6920cf11a296b8b9c6",
      "parents": [
        "e1a255a89f64730272a66b93f82ec348989a0899"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 09 15:05:35 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 09 21:11:06 2011 -0700"
      },
      "message": "KeyChain API refinements\n\nChange-Id: I177ab4642e6cd1aa13526c14f0a707175fd79655\n"
    },
    {
      "commit": "9d7faa91be6661eccf73494f1ab96ae9a28d42d7",
      "tree": "85bf8aec36f40536a4e6dbf2cd25ea59239ab956",
      "parents": [
        "a4a48a484fe862787cf2fbe1314deab8ac375951"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 07 13:45:33 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 07 15:33:09 2011 -0700"
      },
      "message": "Change KeyChain to assume PEM encoded keystore entries\n\nSummary:\n- Changed KeyChain to assume PEM encoded keystore entries\n- Moved convertToPem from CertInstaller for reuse with other Credentials helpers\n- Added convertFromPem for use decoding keystore entries\n\nChange-Id: I340168b88aefa458d01e81324824e2e08b1d7c4e\n"
    },
    {
      "commit": "7e4b1a488dd02c4bf6156379e36834e9e01c5b1b",
      "tree": "5a28b9bd912415e1a71c1130696720cbe5080c7f",
      "parents": [
        "cb0975b3c1c73d8bcadaca80e1ee99383750af60"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 01 15:29:29 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 01 15:29:29 2011 -0700"
      },
      "message": "Restore ResponseCodes for use with getLastError\n\nChange-Id: I41b5bc9cbb6c05672c92d5864e889fd2b0186141\n"
    },
    {
      "commit": "5cfee3fabb3482c6a6df1c8b6f21e843cf214527",
      "tree": "c4190f1fa809eb1e5e7d028f21be510b2a5b3980",
      "parents": [
        "9b4157935af9e44571187a9533c2cc9b413383bf"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 31 01:00:15 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 01 14:29:59 2011 -0700"
      },
      "message": "Integrating keystore with keyguard (Part 1 of 4)\n\nSummary:\n\nframeworks/base\n  keystore rewrite\n  keyguard integration with keystore on keyguard entry or keyguard change\n  KeyStore API simplification\n\npackages/apps/Settings\n  Removed com.android.credentials.SET_PASSWORD intent support\n  Added keyguard requirement for keystore use\n\npackages/apps/CertInstaller\n  Tracking KeyStore API changes\n  Fix for NPE in CertInstaller when certificate lacks basic constraints\n\npackages/apps/KeyChain\n  Tracking KeyStore API changes\n\nDetails:\n\nframeworks/base\n\n   Move keystore from C to C++ while rewriting password\n   implementation. Removed global variables. Added many comments.\n\n\tcmds/keystore/Android.mk\n\tcmds/keystore/keystore.h\n\tcmds/keystore/keystore.c \u003d\u003e cmds/keystore/keystore.cpp\n\tcmds/keystore/keystore_cli.c \u003d\u003e cmds/keystore/keystore_cli.cpp\n\n   Changed saveLockPattern and saveLockPassword to notify the keystore\n   on changes so that the keystore master key can be reencrypted when\n   the keyguard changes.\n\n\tcore/java/com/android/internal/widget/LockPatternUtils.java\n\n   Changed unlock screens to pass values for keystore unlock or initialization\n\n\tpolicy/src/com/android/internal/policy/impl/PasswordUnlockScreen.java\n\tpolicy/src/com/android/internal/policy/impl/PatternUnlockScreen.java\n\n   KeyStore API changes\n   - renamed test() to state(), which now return a State enum\n   - made APIs with byte[] key arguments private\n   - added new KeyStore.isEmpty used to determine if a keyguard is required\n\n\tkeystore/java/android/security/KeyStore.java\n\n   In addition to tracking KeyStore API changes, added new testIsEmpty\n   and improved some existing tests to validate expect values.\n\n\tkeystore/tests/src/android/security/KeyStoreTest.java\n\npackages/apps/Settings\n\n    Removing com.android.credentials.SET_PASSWORD intent with the\n    removal of the ability to set an explicit keystore password now\n    that the keyguard value is used. Changed to ensure keyguard is\n    enabled for keystore install or unlock. Cleaned up interwoven\n    dialog handing into discrete dialog helper classes.\n\n\tAndroidManifest.xml\n\tsrc/com/android/settings/CredentialStorage.java\n\n    Remove layout for entering new password\n\n\tres/layout/credentials_dialog.xml\n\n    Remove enable credentials checkbox\n\n\tres/xml/security_settings_misc.xml\n\tsrc/com/android/settings/SecuritySettings.java\n\n    Added ability to specify minimum quality key to ChooseLockGeneric\n    Activity. Used by CredentialStorage, but could also be used by\n    CryptKeeperSettings. Changed ChooseLockGeneric to understand\n    minimum quality for keystore in addition to DPM and device\n    encryption.\n\n\tsrc/com/android/settings/ChooseLockGeneric.java\n\n    Changed to use getActivePasswordQuality from\n    getKeyguardStoredPasswordQuality based on experience in\n    CredentialStorage. Removed bogus class javadoc.\n\n\tsrc/com/android/settings/CryptKeeperSettings.java\n\n    Tracking KeyStore API changes\n\n\tsrc/com/android/settings/vpn/VpnSettings.java\n\tsrc/com/android/settings/wifi/WifiSettings.java\n\n   Removing now unused string resources\n\n\tres/values-af/strings.xml\n\tres/values-am/strings.xml\n\tres/values-ar/strings.xml\n\tres/values-bg/strings.xml\n\tres/values-ca/strings.xml\n\tres/values-cs/strings.xml\n\tres/values-da/strings.xml\n\tres/values-de/strings.xml\n\tres/values-el/strings.xml\n\tres/values-en-rGB/strings.xml\n\tres/values-es-rUS/strings.xml\n\tres/values-es/strings.xml\n\tres/values-fa/strings.xml\n\tres/values-fi/strings.xml\n\tres/values-fr/strings.xml\n\tres/values-hr/strings.xml\n\tres/values-hu/strings.xml\n\tres/values-in/strings.xml\n\tres/values-it/strings.xml\n\tres/values-iw/strings.xml\n\tres/values-ja/strings.xml\n\tres/values-ko/strings.xml\n\tres/values-lt/strings.xml\n\tres/values-lv/strings.xml\n\tres/values-ms/strings.xml\n\tres/values-nb/strings.xml\n\tres/values-nl/strings.xml\n\tres/values-pl/strings.xml\n\tres/values-pt-rPT/strings.xml\n\tres/values-pt/strings.xml\n\tres/values-rm/strings.xml\n\tres/values-ro/strings.xml\n\tres/values-ru/strings.xml\n\tres/values-sk/strings.xml\n\tres/values-sl/strings.xml\n\tres/values-sr/strings.xml\n\tres/values-sv/strings.xml\n\tres/values-sw/strings.xml\n\tres/values-th/strings.xml\n\tres/values-tl/strings.xml\n\tres/values-tr/strings.xml\n\tres/values-uk/strings.xml\n\tres/values-vi/strings.xml\n\tres/values-zh-rCN/strings.xml\n\tres/values-zh-rTW/strings.xml\n\tres/values-zu/strings.xml\n\tres/values/strings.xml\n\npackages/apps/CertInstaller\n\n  Tracking KeyStore API changes\n\tsrc/com/android/certinstaller/CertInstaller.java\n\n  Fix for NPE in CertInstaller when certificate lacks basic constraints\n\tsrc/com/android/certinstaller/CredentialHelper.java\n\npackages/apps/KeyChain\n\n  Tracking KeyStore API changes\n\tsrc/com/android/keychain/KeyChainActivity.java\n\tsrc/com/android/keychain/KeyChainService.java\n\tsupport/src/com/android/keychain/tests/support/IKeyChainServiceTestSupport.aidl\n\tsupport/src/com/android/keychain/tests/support/KeyChainServiceTestSupport.java\n\ttests/src/com/android/keychain/tests/KeyChainServiceTest.java\n\nChange-Id: Ic141fb5d4b43d12fe62cb1e29c7cbd891b4be35d\n"
    },
    {
      "commit": "ba1a667b1d6c95050f6c88316ac58fe9e0ff878b",
      "tree": "c045f3673f7471659f20899f94338da3e45a0d69",
      "parents": [
        "f8355d5489a52dcdd904afb48c0f170886becdae"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 24 21:54:37 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 25 10:27:46 2011 -0700"
      },
      "message": "Remove need for onActivityResult from KeyChain API\n\nChange-Id: I97bb9db06978f6dc039d22bfee116671d7b3e336\n"
    },
    {
      "commit": "d752472d9abf03fda637d43716bc6bd632e1f5c3",
      "tree": "9c3d00d1c21b2eb2eadc1687b690d3b018132803",
      "parents": [
        "51c07e717b4416dd338b0add3a3c94d1137366af"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 17 16:20:36 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 17 16:20:36 2011 -0700"
      },
      "message": "Move to KeyChain.bind\n\nChange-Id: Ic3c6e0e9be9bcfdc882cf97cec38cca70b23d0a1\n"
    },
    {
      "commit": "8e9929c4d0730de4c9f01435a7cfe2db8855e24d",
      "tree": "a3075eb3d8b915d47de2f1a7bb31a14acced0e5f",
      "parents": [
        "7f2250d59a81f20627c31a661696ccc4c020fa75"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 17 00:40:28 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue May 17 11:33:37 2011 -0700"
      },
      "message": "Simplify KeyChain API by removing now unneeded CA certificate lookup (1 of 3)\n\nframeworks/base\n\n   Remove getCaCertificates and findIssuer from IKeyChainService,\n   these are now done via libcore\u0027s TrustedCertificateStore (as part\n   of the default TrustManager implementation)\n\n\tkeystore/java/android/security/IKeyChainService.aidl\n\n   Simplify KeyChain API. Now that the CA certificates are visible\n   through the default TrustManager, the KeyChain is solely focused on\n   retrieving PrivateKeys and their associated certificates. The\n   calling API for KeyChain to simply a single KeyChain.get() call\n   that returns a KeyChainResult, removing the need for a KeyChain\n   instance that needs to be closed.\n\n\tkeystore/java/android/security/KeyChain.java\n\tkeystore/java/android/security/KeyChainResult.java\n\nmaster/libcore\n\n    Remove getDefaultIndexedPKIXParameters and\n    getIndexedPKIXParameters which was used as part of the prototype\n    of looking up CAs via the KeyChain but is obsoleted by the new\n    default TrustManager implementation.\n\n\tluni/src/main/java/org/apache/harmony/xnet/provider/jsse/SSLParametersImpl.java\n\tluni/src/main/java/org/apache/harmony/xnet/provider/jsse/TrustManagerImpl.java\n\npackages/apps/KeyChain\n\n    Tracking simplified IKeyChainService, removing now unneeded\n    implementation, updating tests.\n\n\tsrc/com/android/keychain/KeyChainService.java\n\ttests/src/com/android/keychain/tests/KeyChainServiceTest.java\n\ttests/src/com/android/keychain/tests/KeyChainTestActivity.java\n\nChange-Id: I847b28c2f467c85f24d2b693a2fecc1cb46426b4\n"
    },
    {
      "commit": "2627d53f65be672e9a27f735975de1bf3aebfec1",
      "tree": "48c1935198510301c39ebd071de0449204fc768c",
      "parents": [
        "444889838ce46475f04956e8b6b027328917f3fe"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 13 12:54:24 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat May 14 23:45:16 2011 -0700"
      },
      "message": "Make CertInstaller installed CA certs trusted by applications via default TrustManager (1 of 6)\n\nframeworks/base\n\n    Adding IKeyChainService APIs for CertInstaller and Settings use\n\tkeystore/java/android/security/IKeyChainService.aidl\n\nlibcore\n\n    Improve exceptions to include more information\n\tluni/src/main/java/javax/security/auth/x500/X500Principal.java\n\n    Move guts of RootKeyStoreSpi to TrustedCertificateStore, leaving only KeyStoreSpi methods.\n    Added support for adding user CAs in a separate directroy for system.\n    Added support for removeing system CAs by placing a copy in a sytem directory\n\tluni/src/main/java/org/apache/harmony/xnet/provider/jsse/RootKeyStoreSpi.java\n\tluni/src/main/java/org/apache/harmony/xnet/provider/jsse/TrustedCertificateStore.java\n\n    Formerly static methods on RootKeyStoreSpi are now instance methods on TrustedCertificateStore\n\tluni/src/main/java/org/apache/harmony/xnet/provider/jsse/TrustManagerImpl.java\n\n    Added test for NativeCrypto.X509_NAME_hash_old and X509_NAME_hash\n    to make sure the implementing algortims doe not change since\n    TrustedCertificateStore depend on X509_NAME_hash_old (OpenSSL\n    changed the algorithm from MD5 to SHA1 when moving from 0.9.8 to\n    1.0.0)\n\n\tluni/src/test/java/org/apache/harmony/xnet/provider/jsse/NativeCryptoTest.java\n\n    Extensive test of new TrustedCertificateStore behavior\n\tluni/src/test/java/org/apache/harmony/xnet/provider/jsse/TrustedCertificateStoreTest.java\n\n    TestKeyStore improvements\n    - Refactored TestKeyStore to provide simpler createCA method (and\n      internal createCertificate)\n    - Cleaned up to remove use of BouncyCastle specific X509Principal\n      in the TestKeyStore API when the public X500Principal would do.\n    - Cleaned up TestKeyStore support methods to not throw Exception\n      to remove need for static blocks for catch clauses in tests.\n\n\tsupport/src/test/java/libcore/java/security/TestKeyStore.java\n\tluni/src/test/java/libcore/java/security/KeyStoreTest.java\n\tluni/src/test/java/org/apache/harmony/xnet/provider/jsse/NativeCryptoTest.java\n\npackages/apps/CertInstaller\n\n    Change CertInstaller to call IKeyChainService.installCertificate\n    for CA certs to pass them to the KeyChainServiceTest which will\n    make them available to all apps through the\n    TrustedCertificateStore. Change PKCS12 extraction to use AsyncTask.\n\n\tsrc/com/android/certinstaller/CertInstaller.java\n\n    Added installCaCertsToKeyChain and hasCaCerts accessor for use by\n    CertInstaller. Use hasUserCertificate() internally. Cleanup coding\n    style.\n\n\tsrc/com/android/certinstaller/CredentialHelper.java\n\npackages/apps/KeyChain\n\n    Added MANAGE_ACCOUNTS so that IKeyChainService.reset\n    implementation can remove KeyChain accounts.\n\n\tAndroidManifest.xml\n\n    Implement new IKeyChainService methods:\n    - Added IKeyChainService.installCaCertificate to install certs\n      provided by CertInstaller using the TrustedCertificateStore.\n    - Added IKeyChainService.reset to allow Settings to remove the\n      KeyChain accounts so that any app granted access to keystore\n      credentials are revoked when the keystore is reset.\n\n\tsrc/com/android/keychain/KeyChainService.java\n\npackages/apps/Settings\n\n    Changed com.android.credentials.RESET credential reset action to\n    also call IKeyChainService.reset to remove any installed user CAs\n    and remove KeyChain accounts to have AccountManager revoke\n    credential granted to private keys removed during the RESET.\n\n\tsrc/com/android/settings/CredentialStorage.java\n\n    Added toast text value for failure case\n\n\tres/values/strings.xml\n\nsystem/core\n\n    Have init create world readable /data/misc/keychain to allow apps\n    to access user added CA certificates installed by the CertInstaller.\n\n\trootdir/init.rc\n\nChange-Id: I2e4b169cbb35d32d97f5d6a00d988fa389eadcb2\n"
    },
    {
      "commit": "4a9e1a2494f2e48b157506d7c731187907b7fd4e",
      "tree": "9217f60ac23d368a31e89102ace0df5693ae3fdf",
      "parents": [
        "00425721c14a64979ae29b8a8daf24aafdabc56a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 22 15:45:22 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 22 15:45:22 2011 -0700"
      },
      "message": "Expose Credentials.UNLOCK_ACTION for callers that want to use startActivityForResult\n\nChange-Id: I729b2d8257bda3e7ff7858741ebd5415404880e7\n"
    },
    {
      "commit": "b9a07c18e678da35b4c2a618b315fa174a21e818",
      "tree": "82bd62c2e0617b9c7f256d62c1ad4a725693d85c",
      "parents": [
        "f76dc56c33ba66138af70d72803cf55f881c3717"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Apr 11 09:03:51 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Apr 20 13:35:31 2011 -0700"
      },
      "message": "Adding KeyChain API and IKeyChainService\n\nChange-Id: Id3eaa2d1315481f199777b50e875811e3532988a\n"
    },
    {
      "commit": "46703b099516c383a6882815bcf9cd4df0ec538d",
      "tree": "0b4f84436ce6d2b30ad7865facd03d889ea916be",
      "parents": [
        "e651c68ee8f9de7fe3c342c5b5f6690c729f6014"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Apr 06 15:41:29 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Apr 07 11:58:37 2011 -0700"
      },
      "message": "Tolerate missing AccountManager resource, not just missing resource name\n\nIn addition to the primary change in the subject, also some minor cleanup of javadoc, typos, CloseGuard warning, etc found while working on a new AbstractAccountAuthenticator.\n\nChange-Id: I73f3408773a43a0021a15f8d051fd3dbbdf898a5\n"
    },
    {
      "commit": "527f01e76d07b45bdf7ba97ffee0e9b358de658c",
      "tree": "1310216716a0466a80da49164256ae3ce30a94b6",
      "parents": [
        "0e2de6d7187ef67ec00a2f2544450caa4a239c39"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 20 20:23:59 2011 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jan 20 20:23:59 2011 +0800"
      },
      "message": "Update the path of the intent to unlock keystore.\n\nChange-Id: Ia81d0c172f2be6d04cba4db6e6798058f321605d\n"
    },
    {
      "commit": "460c26e9875833dc494575b5c43f08c8baa15f34",
      "tree": "4b05bdabfe75c0a29dfc1fd8161be9dbb42c1cd1",
      "parents": [
        "7ab17a3426d3565f72c6832bb650d1709cbf52cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 11 16:42:09 2010 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 11 16:42:09 2010 -0800"
      },
      "message": "Use deliberately public API rather than org.apache cruft.\n\nInputStreamHelper is scheduled for deletion. As a bonus, the new code is more\nefficient.\n\nChange-Id: Ied8b87fa24f8506cf748b0d4c99ee7e2ae201483\n"
    },
    {
      "commit": "8bdf5935c0db4a66ab33a10b43398d2523cfa15d",
      "tree": "5483e26cd1fb2de239b2f01f3d35c52aeeb7b598",
      "parents": [
        "efb581018bbede2ecdc76bcd9722ded5b6903254"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 15 12:54:40 2010 -0700"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Fri Oct 15 14:46:33 2010 -0700"
      },
      "message": "Work on issue #3101415: Crespo apps seem to have their UID changed over time.\n\nfsync!\n\nChange-Id: Ie6c5397202579935ac69bf61d3e7b3081ecf269c\n"
    },
    {
      "commit": "c5e630a004d144ba1d4cd1d37dd98eb70a7ec1d8",
      "tree": "65c495d05a6c378e0820dfb6f7a58d1d08d98b14",
      "parents": [
        "70f1a3b8a0fcf332e35f87be85ae3a9e37a85e9c"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Oct 08 08:20:16 2010 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Oct 08 08:21:17 2010 +0800"
      },
      "message": "Use explicit intent for installing credentials.\n\nhttp://b/issue?id\u003d3020049\n\nChange-Id: I429c5b2c9f3b876e6197894a9437952d71d5c472\n"
    },
    {
      "commit": "8d578836dc4f9fb41532b8b3dd7a6b168d6f4f9d",
      "tree": "0b1d4c4c5f51e723f9139244d9ac05d0a77fa847",
      "parents": [
        "76e4fa19264793e3ed7e2ee7afccfc808a1a7458"
      ],
      "author": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Thu Sep 09 15:12:40 2010 -0700"
      },
      "committer": {
        "name": "Rich Cannings",
        "email": "richc@google.com",
        "time": "Thu Sep 09 16:28:48 2010 -0700"
      },
      "message": "Remove the use of FileInputStream.available()\n\nBug: 2976294\nChange-Id: I34b13cedbf1d2338163ef74454817c318a3a24f5\n"
    },
    {
      "commit": "34c47c855815d731e6deb55748ff690b0ec7b53f",
      "tree": "3e6a6668f093bcf88bba3bb6c8e4438a212ceea8",
      "parents": [
        "15b3287994b92bb9bff10e65a56bc8a663d0e05d"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Mar 09 13:28:14 2010 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Mar 10 11:25:53 2010 -0800"
      },
      "message": "Don\u0027t rely on the system locale for converting to/from bytes.\n\nBy default, when java converts Strings to bytes, it uses the\ndefault system locale.  This can be specified by the -Dfile.encoding\noption.  If no file encoding is specified, java uses ISO8859_1.\n\nUnfortunately, not all unicode characters can be mapped to\nISO8859_1.  Unmappable characters may be replaced by a byte\nwithin ISO8859_1, which may change the meaning of the String.\nThis is especially problematic for password strings, and has\nbeen used to compromise the security of passwords in the\npast.\n\nThankfully, Android uses UTF-8 by default, so this bug doesn\u0027t\neffect Android devices.  However, it\u0027s recommended to explicitly\nlist the character set when converting to/from bytes to\navoid the potential ambiguity.\n\nChange-Id: Iec927e27ed3fc103696c439f6bd3e8779a37ade8\n"
    },
    {
      "commit": "1ff8fee7c8e4fcd4ef12c6c5d1055b7eccf5809b",
      "tree": "5c7f8f94fd6878b890a1f284eff87028f7301610",
      "parents": [
        "bcea8124a1d85c610b4bd4e6d360a861d2f61793"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Mon Feb 22 11:16:51 2010 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Mon Feb 22 11:17:38 2010 -0800"
      },
      "message": "Better file permissions enforcement on system keystore.\n"
    },
    {
      "commit": "64ef1ce9368985932f4cc7a06b3af585394c5cc6",
      "tree": "cc29959241a730bee5dd0faa42fe400439e051aa",
      "parents": [
        "cdc045dd6da3db8d4ba83560a1bbe27c2ef1e5b2"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Tue Feb 09 15:48:03 2010 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Tue Feb 09 15:48:03 2010 -0800"
      },
      "message": "Fix for bug 2427961\tandroid.security.tests.SystemKeyStoreTest:testBasicAccess is failing.\nFixed issues in test.\n"
    },
    {
      "commit": "d12feb97667498378a472c5a7895a9fcd8056ec5",
      "tree": "bb0dea6d297e753abfd9611ee75e27a517537656",
      "parents": [
        "6004edc67c94a0d034dfb8981b7d4b7a0172a814"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Feb 06 10:43:22 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sat Feb 06 10:43:22 2010 +0800"
      },
      "message": "KeyStore: minor improvements.\n\nMake constants final.\nOnly converts ArrayLists to arrays when necessary.\n"
    },
    {
      "commit": "d02546b4151214abb2db1c88bf7debfc70bd2421",
      "tree": "706596caff37b2f9ba6c04da64bf3b98172da00e",
      "parents": [
        "851b2e75e600a7e3f557b46c4c48c11da025d1f4"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Thu Jan 14 16:38:40 2010 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Fri Jan 15 15:08:06 2010 -0800"
      },
      "message": "Apps on SD card.\nAdded support for retrieving and generating keys as Hex Strings.\nUsing keys to mount encrypted FS.\n"
    },
    {
      "commit": "b62e8132df0d19a39a700324475b3df2de78e0b0",
      "tree": "e5679e990fc995de73fc2c35dd03082c0efd7ebb",
      "parents": [
        "013b9c249dbcb5ca293c5cfe6a0e7908ced32418"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Thu Jan 14 16:38:40 2010 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Fri Jan 15 11:16:31 2010 -0800"
      },
      "message": "Apps on SD card.\nAdded support for retrieving and generating keys as Hex Strings.\n"
    },
    {
      "commit": "8da98e30d8b2ae6e203f769dab0d6ec34cab3011",
      "tree": "16dcc138f20b9880b4eff88eb4f47743c29b683f",
      "parents": [
        "5e3f6caeb08c54fb79f427a528e084711652bbdb"
      ],
      "author": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Wed Jan 06 11:35:59 2010 -0800"
      },
      "committer": {
        "name": "Oscar Montemayor",
        "email": "oam@google.com",
        "time": "Wed Jan 06 16:23:57 2010 -0800"
      },
      "message": "Apps on SD card project.\nA simple keystore to store system-only key material, by leveraging file system access permissions.\n"
    },
    {
      "commit": "f35e9663d7bdae523953185b4ad6b6f9e8e7d6ca",
      "tree": "ea3c0019085dceed51740c940a2b33b14c5e6f3a",
      "parents": [
        "1a3c8950394b98f6f354456830208d70e87b8bb6"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 29 11:20:28 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 29 15:20:24 2009 +0800"
      },
      "message": "Add unit test for the new keystore.\n\nSince we need to test the keystore with user system in order to test\nthe reset(), password(), lock() and unlock(), we have to take advantage\nof the ActivityUnitTestCase to run the test with the user \u0027system\u0027.\n"
    },
    {
      "commit": "8c596c6cce542dcd5c73e8b1aaef666757e36ec4",
      "tree": "0822092e3db464d05ffa0e0bff97edc7829d2975",
      "parents": [
        "f1ece5d0c16fa3e79390e41ad9bec020c77d7720"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 24 13:32:40 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 24 13:32:40 2009 +0800"
      },
      "message": "KeyStore: remove classes used by old keystore.\n"
    },
    {
      "commit": "f1ece5d0c16fa3e79390e41ad9bec020c77d7720",
      "tree": "c5c8b20551a9dcf1bb3dcaf52223866a31164a16",
      "parents": [
        "46a41e0e7f95f43aa7251114f12fd5e2b9933bc7"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 24 13:29:58 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 24 13:29:58 2009 +0800"
      },
      "message": "KeyStore: return null when response code indicates an error.\n"
    },
    {
      "commit": "ec05c46ea9d1dc175b09f93df0b9fea5a43b2d5a",
      "tree": "206c5b70008d30a0176ebe986efef58a7bc59fc6",
      "parents": [
        "85abdc59c3a31df6dc6ac4f20e64d5c91fa70023"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Sep 24 13:13:44 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Sep 24 13:13:44 2009 +0800"
      },
      "message": "Remove old keystore and related files.\n"
    },
    {
      "commit": "613fcc850686dfe71cec9809c3694be9cf02cdc7",
      "tree": "6e7ef01214267a7d8a09ddd50e77c776af7cdcf4",
      "parents": [
        "1f6802295e2dba50a4549b8a22537dcb4c4dda03"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 03:04:46 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 03:04:46 2009 +0800"
      },
      "message": "KeyStore: rename scan() to saw().\n"
    },
    {
      "commit": "44039172627d1c15737ea73836ad375559d76211",
      "tree": "0f4969e1216a9dbdb863268a2f46375eefb8192d",
      "parents": [
        "626c46b016118edbea3a3938425b5d4e959f6f2d"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Sep 21 11:53:59 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Sep 21 15:52:00 2009 +0800"
      },
      "message": "KeyStore: add java interface.\n"
    },
    {
      "commit": "9b7a3f1a6437605022568cad0b92d5006a2ab391",
      "tree": "4d3dcf473cb06af26bc2b6bc68bd54a65422c92c",
      "parents": [
        "adbc99be6d7e35f71bbbdcdfef5562c5a9b53b07"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 18 12:00:12 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 18 12:03:04 2009 +0800"
      },
      "message": "Add a helper class to send out credentials.\n\nChange-Id: I9a550c6edc55d5c2c601223c011922b183cb4d30\n"
    },
    {
      "commit": "5b680802b6774491fbcee69e394d097d4bfcf42e",
      "tree": "7ad1163a5de706df8c48dbc9c1e9c7fd0421fc2a",
      "parents": [
        "972f0e3806f379b7fb6e43265f56ddd91c38107e"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 16 15:43:15 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Sep 17 12:17:29 2009 +0800"
      },
      "message": "Fix a minor bug in is_alnum_string()...\n\nand remove some verbose logging\n"
    },
    {
      "commit": "a7df557aa2573a4718c7bbd069268e62bc036753",
      "tree": "606824416def47dd79b782fb4037aa180fca8d93",
      "parents": [
        "d304ae583d862250a21b5949fc3dbdf3af1febac"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Sep 11 18:34:28 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Sep 11 19:30:13 2009 +0800"
      },
      "message": "Add tests and misc fixes on keystore.\n\n* Refactor netkeystore.c to make client and server code testable.\n* Add a client test for setting new passwd and changing passwd.\n* Exclude \".\" and \"..\" from reset_keystore().\n* Change ServerCommand.executeCommand() to accept variable length of\n  arguments and add convert() to marshalling the args to bytes.\n* Keystore.java is revised accordingly.\n"
    },
    {
      "commit": "9249cc69b83c7b055ae477c4539bdc451fe7f9b9",
      "tree": "c46cac7e798f63e379a5684931cc362d97165f31",
      "parents": [
        "24d237db943051942b5966f5e788d67050ec0ba5"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Sep 08 16:47:51 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Sep 10 12:51:07 2009 +0800"
      },
      "message": "Add two CertTool helper classes.\n\nAlso add the unlock action string to Keystore.\n"
    },
    {
      "commit": "37062b93dcb7c72919be8d33303606cdab936c11",
      "tree": "5bb7c58b073f07777253d25a297b61bac4b67d10",
      "parents": [
        "ccda4c4960ad6694e506e075f8f0b479ea2bafb6"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 10 03:55:33 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 10 03:56:04 2009 +0800"
      },
      "message": "keystore: remove \"#include \u003copenssl/engine.h\u003e\".\n"
    },
    {
      "commit": "801b73f661cbdf92de94b7e552a190fcbbdc3168",
      "tree": "d67ad7b9bca1e97a7cc4ecbab4c6e680933ab1b6",
      "parents": [
        "88e625795943dea84b2e7c32f37e71303143b728"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 08 03:52:45 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Sep 09 15:00:43 2009 +0800"
      },
      "message": "Replace the delimiter whitespace with \u0027\\0\u0027.\n\n+ Use \u0027\\0\u0027 as the delimiter.\n+ Allow whitespace character for keystore password.\n\nIn previous implementation, we use space as the delimiter. That\nwill stop user from using passphrase with whitespace character.\n"
    },
    {
      "commit": "60c821c8eeca28d34fb02cf5e35dadf168e1312e",
      "tree": "7e49e7920894e505e1dfbd02b7c4ad64c8f18f63",
      "parents": [
        "09960230bf3d46ec1e7cbcfd8b07dfe007b9fa96"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Sep 02 11:54:24 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Sep 02 11:54:24 2009 +0800"
      },
      "message": "Print error message if the buffer size is too small.\n"
    },
    {
      "commit": "09960230bf3d46ec1e7cbcfd8b07dfe007b9fa96",
      "tree": "0cdb96cc728125bcae41709a027811cbd6beee2b",
      "parents": [
        "c98d68cd56338ec57695b3c35114fbde88d4bde8"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 01 16:45:13 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 01 16:45:13 2009 +0800"
      },
      "message": "Store CA certificate chain into one single key entry with PEM format.\n\nExtract all CA certificates in a PKCS12 keystore into a single entry in keystore with multiple PEMs.\n"
    },
    {
      "commit": "d21a04c06c0d9b1cb401c30bf6da778010872957",
      "tree": "605df7209d6a7b3adef1459e5ba7e66395a2e6f7",
      "parents": [
        "ed5fede3f8a376ebed46beeb41796838847ad68d",
        "20a1156c6fd30f3ec1336894d6ae7e00298ad65b"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 26 20:29:17 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 26 20:29:17 2009 -0700"
      },
      "message": "Merge change 21259 into eclair\n\n* changes:\n  Make certificate-handling-related constants public\n"
    },
    {
      "commit": "969c2eaa3ac2501931b0ce67d831262e6f3d6cf6",
      "tree": "376710b2e2e957a434f4f67d74fed6b650b60fb0",
      "parents": [
        "2685d3b85b3ad5fcb5362abdfb9037fc89deb714",
        "c8ab08aa86aea3b693f731c9e817eeb71ab4c1cd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 18 08:44:43 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 08:44:43 2009 -0700"
      },
      "message": "am c8ab08aa: Merge change 21124 into donut\n\nMerge commit \u0027c8ab08aa86aea3b693f731c9e817eeb71ab4c1cd\u0027 into eclair\n\n* commit \u0027c8ab08aa86aea3b693f731c9e817eeb71ab4c1cd\u0027:\n  Add license-related files\n"
    },
    {
      "commit": "20a1156c6fd30f3ec1336894d6ae7e00298ad65b",
      "tree": "fa4fcc5c2c3d03272493eb572a0d8fd8ed1be24b",
      "parents": [
        "a31deaf4a960058e533da35d6229f7aa8d4f00c1"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 31 20:34:03 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Aug 14 18:35:44 2009 +0800"
      },
      "message": "Make certificate-handling-related constants public\n"
    },
    {
      "commit": "979b142fa508eef5a24dfc874a945f5662f2566e",
      "tree": "b548bab36f110c0ad484b3cdf7d3c33fec2f2a87",
      "parents": [
        "4431a0650774ae72ce89d0f9c90903dcc81fab8b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 10:58:11 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 10:58:11 2009 -0700"
      },
      "message": "Add license-related files\n\nBUG\u003d1573996\n"
    },
    {
      "commit": "f1ab36f9ab82220de679ff0ca5164995b7d30214",
      "tree": "bdf73fa71e3ac244eb57ba123b634d5ca78b6f52",
      "parents": [
        "0f0767d4daa847314bd9473ef3650d26d1c51c8c"
      ],
      "author": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Wed Aug 05 18:06:27 2009 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Mon Aug 10 16:13:00 2009 +0800"
      },
      "message": "Fix network order for marshalling in keystore interface.\n\nThis will fix the endian issue for heterogeneous architectures in keystore marshalling interface.\n"
    },
    {
      "commit": "dc1d5704a725d207b98de1b117847297958d9148",
      "tree": "dd2e823cd931992d8bbafd054dcfedf567bf7055",
      "parents": [
        "b86bad9493a331a09dd765bc6e725c0aec969ff6"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 15:01:58 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 15:11:36 2009 +0800"
      },
      "message": "Fix the auto notification cleanup when vpn is disconnected.\n\n+ add the log print if the browser give the incorrect data in addCertificate().\n"
    },
    {
      "commit": "e81f51f44b4cfb8316de1d206038414ee6f6e96b",
      "tree": "e0ea02d004c77df56fb98fc5d9d48b875420ed7f",
      "parents": [
        "1f1602e7291ab2b4d8d76db33c89828b6e58e6c0"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sat Aug 01 10:11:46 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sat Aug 01 10:11:46 2009 +0800"
      },
      "message": "Change some log.i to log.d.\n"
    },
    {
      "commit": "fd3db87e28e5b9ed186a15944234f6ff520773c6",
      "tree": "e21771e9cf7e20c51676f7a86ab659592441dffe",
      "parents": [
        "191452378639f1135c9591e21911ce250d140769"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 18:37:13 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 18:37:13 2009 +0800"
      },
      "message": "Support x509-user-cert mime type in browser.\n\n+ Fix the public key matching and intent parameter mismatch.\n"
    },
    {
      "commit": "191452378639f1135c9591e21911ce250d140769",
      "tree": "f92f5aae2ba422aca3bcd83992176a6e55c097b1",
      "parents": [
        "d0021dcae7f474c062f23a449bdd18be5e882d7e"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 15:15:51 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 15:18:22 2009 +0800"
      },
      "message": "Forgot to convert the jstring to char* in certificate request.\n"
    },
    {
      "commit": "719eba5bb1fbc72e3b55450f16b38a6be5640055",
      "tree": "edd5b5178e70733642d9d5275d6a6102bcd657f3",
      "parents": [
        "75b681639d3945d22d4ab90856a65a05405d2538"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 24 11:33:45 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 24 11:33:45 2009 +0800"
      },
      "message": "Change to SPKAC certificate request format for keygen.\n"
    },
    {
      "commit": "24988b34919d65d4e66be69ec0885154c47e85b7",
      "tree": "ca4dd6c8e9827c0af5d7ccdedf147ca48f03f734",
      "parents": [
        "841ed8596a745d90822467bc2c0e13880bb59cc9"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 06:04:58 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 06:04:58 2009 +0800"
      },
      "message": "Cleanup the old keystore APIs.\n"
    },
    {
      "commit": "22726cf8174fe00a097c89b8da397b10626cdd00",
      "tree": "f724f69a84275a72f1b0f0d7949740b418c17bb2",
      "parents": [
        "8ece3445e8c95d02a47737ea2ac2d52a696143cd"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 05:31:48 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 05:35:20 2009 +0800"
      },
      "message": "Return error codes for storing the key/cert in addPkcs12Keystore()\n"
    },
    {
      "commit": "c9c119e7338cab292385118229f884a88fead3a2",
      "tree": "cb4e8f22b73aacbfc45ec80c66b693a47af5e3bc",
      "parents": [
        "f32f746b83826303350417ff9937a6f9e5488f24"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 16 19:54:33 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sat Jul 18 01:17:20 2009 +0800"
      },
      "message": "Support addPkcs12Keystore function in CertTool library.\n\nThe function will be called from the credential storage for decoding\nthe pkcs12 file and saving the certs/keys into mini-keystore.\n"
    },
    {
      "commit": "699ca3f2518360ea3250ff5a0e5d39e122c64a91",
      "tree": "dcdeefe39f5cb52cc02d63039be4c9a4427eb9bc",
      "parents": [
        "4492bcb851f4ee862a446664eb9045045ebb7b5e"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sat Jul 04 22:19:51 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sun Jul 05 11:06:01 2009 +0800"
      },
      "message": "Add password field for WiFi configuration.\n\n1. the certtool.h is modified for avoiding the side effect,\n   for saving the configuration with wpa_supplicant.\n2. put the loadLibrary back in CertTool.java\n3. Fix incorrect JNI declarations.\n"
    },
    {
      "commit": "bf20b9963add781a35de658f3228760015a163c9",
      "tree": "ab310659e9be96273833221ba4dbf9863eba1407",
      "parents": [
        "24ad29c6dbbf62096bcb41ddb2fa3975720ee625"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 23:42:12 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sat Jul 04 00:22:51 2009 +0800"
      },
      "message": "Migrate to the CertTool library.\n\nKeystore is reimplemented and it is mainly for storing\n(key, value) pair generically. The certificate related\nAPIs are moved to the class CertTool instead.\n\nUpdates:\n  Provide the getInstance() which gives the singleton.\n  Fix the missing construction of the BIO in cert.c.\n"
    },
    {
      "commit": "116d890aea63a4191a93412f5cecf5defad25201",
      "tree": "b0bd5d04e6cce6717ecb3d62e19ead62d3fd1a26",
      "parents": [
        "4bca97ecaf04c50d5ed49920d119f9ffa6c29402"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 03 17:38:59 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 03 17:38:59 2009 +0800"
      },
      "message": "Fix null data handling in ServiceCommand.writeCommand()\n"
    },
    {
      "commit": "fa927c046a916fceb077d1ecf2552d76e73da912",
      "tree": "1bd090be6f71aa36b96e3a2218b6f9b97316af3e",
      "parents": [
        "eec11827a6c06b029030f43c8d54fd871cc3347d"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 19:11:11 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 23:08:39 2009 +0800"
      },
      "message": "Remove the null-termination for Java string compatibility.\n\n1. Also change the keyname delimiter in CertTool.java.\n2. Return NOTFOUND if the result.len\u003d\u003d0 in the listKeys().\n3. Define the keystore states in the class Keystore.\n"
    },
    {
      "commit": "eec11827a6c06b029030f43c8d54fd871cc3347d",
      "tree": "6ed138af9f9d632cc6e74dbb517626adb802ac96",
      "parents": [
        "d45dcbec856710f9478ffc5689e7cdf95d757ab8"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 00:22:04 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 18:56:12 2009 +0800"
      },
      "message": "Add CertTool for handling the keygen and certificate download.\n\n1. Have the new Keystore for mini-keystore impelemntation.\n2. Add CertTool library and jni dll for handling keygen and certificates.\n3. Make Reply hidden.\n4. Revert some \u0027incorrect\u0027 change and correct the description.\n"
    },
    {
      "commit": "3af8e9389e008c0076b86cc6b3c6f005e7473d10",
      "tree": "84acce43fa9a460e2d888cea9df28b0bbe1ec5ee",
      "parents": [
        "5254657540b0a6ad54be6229b68fa5626e4ef9e5"
      ],
      "author": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Fri Jun 19 15:03:46 2009 -0700"
      },
      "committer": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Fri Jun 19 15:09:34 2009 -0700"
      },
      "message": "Change addCertificate to take byte[] instead of String as we don\u0027t know the encoding.\n\nIn WebView, if we run into the certificate, we will save it to the Keystore instead of sending it to the WebKit.\n"
    },
    {
      "commit": "6d531bf0513de7778c380d649bc0e554478f78f9",
      "tree": "10ac2aad8a0d60d7990a9ac538b64b2d98a5aa15",
      "parents": [
        "653349fe48f2995d9e17b5e0a4110925cffdaeab"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jun 17 01:29:21 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jun 17 14:32:05 2009 +0800"
      },
      "message": "Change the keystore APIs.\n\n1. simplify the keypair selection in UI.\n2. add the user certificate and key into the keystore for keygen feature.\n"
    },
    {
      "commit": "396c69ca8d938c8705faf602b87729072bf8839c",
      "tree": "3db9a82ce6f79a804091f6037cb55786d6dd9fb5",
      "parents": [
        "1d51e50d5d484c5d9e620b1d6736adc9aa99ae84"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 23:51:51 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 23:57:16 2009 +0800"
      },
      "message": "Change the first parameter of Keystore.generateKeyPair() to int.\n\n* changes\n  change the parameter to the index to the supported key strengths\n  remove the exception class as it is not useful now\n"
    },
    {
      "commit": "1d51e50d5d484c5d9e620b1d6736adc9aa99ae84",
      "tree": "20793d63fda275271d8433554591b9157feeb375",
      "parents": [
        "0304325dd72ff8713c8444e909d387af1447f86f"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 16:14:14 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 17:14:38 2009 +0800"
      },
      "message": "Add keygen API to Keystore.\n"
    },
    {
      "commit": "10e371f18247dc7fb64bfa0f0528501acc17be79",
      "tree": "630ce090cba0314696dd405f6cd3155773cc445a",
      "parents": [
        "a05487dd856222bacf57a41f2dfe1194d3776f05"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jun 10 18:45:14 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jun 11 17:28:40 2009 +0800"
      },
      "message": "Provide the Keystore feature in the framework.\n\n-- added the keystore library for Java application.\n-- changed the marshalling of the keystore function return.\n"
    }
  ]
}
