)]}'
{
  "log": [
    {
      "commit": "dc8bc1160cd97ca113636ca2b4adda21e031b5bd",
      "tree": "33b75101f66e635dcf0dec76176e2ea7c1ae1d49",
      "parents": [
        "07ab0871eea8e307f412f3d7433016bff4c275aa"
      ],
      "author": {
        "name": "Shawn Willden",
        "email": "swillden@google.com",
        "time": "Thu Sep 11 16:08:44 2014 -0600"
      },
      "committer": {
        "name": "Rom Lemarchand",
        "email": "romlem@google.com",
        "time": "Sun Sep 14 17:09:47 2014 +0000"
      },
      "message": "Correct test data size in keystore signing and verification tests.\n\nThe test is sending too much data to be signed, which should actually\nfail, and does on Volantis.  Apparently the other keymaster implementors\ndo something to pass it, because shamu and hammerhead pass, but the test\nis wrong.\n\nChange-Id: Ic616a551567d64f5d87d9607ceb08afa7be74f9d\n"
    },
    {
      "commit": "26408ccd8e852d947e58021792bfc3b315e5948d",
      "tree": "8ac7bc2fe43ccf5639015a688ace43ae544b1a2e",
      "parents": [
        "2f67e237383ae6e76c44333ab79c6f0d1e3e568d"
      ],
      "author": {
        "name": "Bernhard Bauer",
        "email": "bauerb@google.com",
        "time": "Mon Sep 08 14:07:31 2014 +0100"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Sep 11 19:17:00 2014 +0100"
      },
      "message": "Add DevicePolicyManager PrivateKey mgmt\n\nAdditional device policy API to install keypairs to the keychain\nsilently.\n\nBug: 15065444\nChange-Id: Idc25774c9ab1a61080290bebd6f5c4f24e6ee2e0\n"
    },
    {
      "commit": "f0ae135049048424bceccb0799b12377181b25f0",
      "tree": "e4a86db25d50e83db28a0b58cc79eaaadcb72004",
      "parents": [
        "97e75e1da97f01e82c0105b1f915821a99dda196"
      ],
      "author": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Mon Aug 18 10:48:33 2014 +0100"
      },
      "committer": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Mon Sep 08 17:59:42 2014 +0100"
      },
      "message": "Extend IKeyChainService AIDL with CACert retrieval\n\nBug:16029580\nChange-Id: I41a3bd2f3bd95550e59f1d0d0acd0e765d7b62d7\n"
    },
    {
      "commit": "f0246a8a14d69680d1776620e75a485cf963e574",
      "tree": "7fffafa3844a193de4b206605bdb59599a0318d5",
      "parents": [
        "d627eac286e377aec5c8f66d4746850c3eff8ff8"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Wed Aug 13 09:50:25 2014 +0100"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Fri Aug 29 23:03:42 2014 +0100"
      },
      "message": "Keep managed profile keystores in sync with owner\n\nFixes setting a keyguard password for keystore in a multi-user setup\nwhile we\u0027re at it.\n\nBug: 16233206.\nChange-Id: I7941707ca66ac25bd122fd22e5e0f639e7af697e\n"
    },
    {
      "commit": "3291de8f6c8bc7ffa5992a2a5a5c2cf8bb0adf4b",
      "tree": "c3f363ba74a9f6ce48ca3318b8672dea2a43ff0d",
      "parents": [
        "f8d72cc14f70f5af13342c4c7b107a8ab60dfe23"
      ],
      "author": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Fri Aug 15 14:01:14 2014 +0000"
      },
      "committer": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Fri Aug 15 14:01:14 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Revert \"Update Trusted Credentials screen in settings\"\"\"\"\"\n\nThis reverts commit c9249c69813c6fb889d71d84583c67ae2942e6de.\n\nChange-Id: I5504fddaf7b18efb73cd6c76678b3b39ce9b0229\n"
    },
    {
      "commit": "f8d72cc14f70f5af13342c4c7b107a8ab60dfe23",
      "tree": "57ac8e36c84cb0d3628535c9ffc96094c5bda61f",
      "parents": [
        "f75aadc028f2e79541a269bf2c74dcb3482e2ec7"
      ],
      "author": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Fri Aug 15 12:52:35 2014 +0000"
      },
      "committer": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Fri Aug 15 12:58:37 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Update Trusted Credentials screen in settings\"\"\"\"\n\nThis reverts commit 87efe74e092236c372d3b6909009641123aa416a.\n\nThis should be fine now with all the dependency CLs +2-ed\n\n\nChange-Id: I96ad14ad5ff81e6b5391035cb6c5a62339c6cc40"
    },
    {
      "commit": "f75aadc028f2e79541a269bf2c74dcb3482e2ec7",
      "tree": "c3f363ba74a9f6ce48ca3318b8672dea2a43ff0d",
      "parents": [
        "1e7bc0def8c62b91d3eb985a51bec54063ce83f5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 15 12:25:52 2014 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 15 12:25:52 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Update Trusted Credentials screen in settings\"\"\"\n\nThis reverts commit 19c8ce291e89a9ef1442a20e1feab421b11536d7.\n\nChange-Id: Ie5a5571127311e0a29f314c0566e779cfe940b53\n"
    },
    {
      "commit": "1e7bc0def8c62b91d3eb985a51bec54063ce83f5",
      "tree": "57ac8e36c84cb0d3628535c9ffc96094c5bda61f",
      "parents": [
        "4b2d0f20db2e0f9395a0c12ed5d4b6020eb272cb"
      ],
      "author": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Fri Aug 15 11:52:15 2014 +0000"
      },
      "committer": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Fri Aug 15 12:55:35 2014 +0100"
      },
      "message": "Revert \"Revert \"Update Trusted Credentials screen in settings\"\"\n\nThis reverts commit 0f0de0bdd021bad5f85fdb0399a4ea91a1611e25.\n\nChange-Id: Ia3d0907e3d7c2ec42d64e45f60e3dfaffb932c3d\n"
    },
    {
      "commit": "678e3ecc937c00969830700dffb42fb1ee232f7c",
      "tree": "98c7144f8cca3b46411549aad4bbdcaa5376df00",
      "parents": [
        "1386627335a79dd02fb34db344e63ca3abfce013"
      ],
      "author": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Thu Aug 07 13:41:08 2014 +0000"
      },
      "committer": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Thu Aug 07 13:41:08 2014 +0000"
      },
      "message": "Revert \"Update Trusted Credentials screen in settings\"\n\nThis reverts commit 4fde5aa9fab931d9becfc49f7d7b8526ad5640d9.\n\nChange-Id: I581c38d64e9829b0079bafa42615f2aa0bf64763\n"
    },
    {
      "commit": "1386627335a79dd02fb34db344e63ca3abfce013",
      "tree": "7c01e7fec4edf431ef8740e61655d82ec93aca7d",
      "parents": [
        "1cc41c938cfe587441a63f0d6176f59fcf2f25b4"
      ],
      "author": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Tue Jul 15 16:58:59 2014 +0100"
      },
      "committer": {
        "name": "Zoltan Szatmary-Ban",
        "email": "szatmz@google.com",
        "time": "Tue Jul 29 16:43:37 2014 +0100"
      },
      "message": "Update Trusted Credentials screen in settings\n\nTrusted credentials for both the primary user and its managed profiles are shown\non the Trusted Credentials fragment. All functionalities (e.g. disabling/enabling\nof certificates) remain available.\n\nBug: 16029580\n\nChange-Id: Ia92ae02d8c572bf4a3be172f6c255726cefc0fa1\n"
    },
    {
      "commit": "aab72f3b0ab740e12b4a2576a99852081529feb5",
      "tree": "9e9d0c76701aa01e9eab8f07841c7a01ba4961a0",
      "parents": [
        "54fb7e94d071cdaf13b944bca9fec441c376b16b",
        "306fe08ce2b06671336e67a87afaa0851f0105eb"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Jun 19 14:06:09 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 17 21:55:55 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Publish DevicePolicyManager CA certificate APIs\"\"\""
    },
    {
      "commit": "306fe08ce2b06671336e67a87afaa0851f0105eb",
      "tree": "029c5bee023ef6697c4e2fbbf0b3526b76db749f",
      "parents": [
        "2b5e917026fe4e6dec8712ee24bdffee8d62ab33"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Jun 19 14:04:24 2014 +0000"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Thu Jun 19 14:04:24 2014 +0000"
      },
      "message": "Revert \"Revert \"Publish DevicePolicyManager CA certificate APIs\"\"\n\nThis reverts commit 792b270dbdc980cfe04e8d461bf00a1f45b5e936.\n\nChange-Id: I18c7e0eca39868230cd8e4f4bbeb3c44ff9e8b78\n"
    },
    {
      "commit": "2b5e917026fe4e6dec8712ee24bdffee8d62ab33",
      "tree": "2393e00fba108510fbaaec68285481419d843bbd",
      "parents": [
        "837304f6f6ae37dc475fa6e0e620f1c2321f2e11"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Tue Jun 17 22:12:28 2014 +0000"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Tue Jun 17 22:12:28 2014 +0000"
      },
      "message": "Revert \"Publish DevicePolicyManager CA certificate APIs\"\n\nThis reverts commit 5260bf69946563dc47c17e7441b352adfce384c5.\n\nChange-Id: I5e44fdac8a7375576b25171f58e31a1fa0e3c569\n"
    },
    {
      "commit": "6d3912e2ef75a7794ac44839eef2569086cae104",
      "tree": "c7a83f9a3b01f91c151db0a50e4077f3c988848c",
      "parents": [
        "1f681448c6b7db451c31af7d61c0b85b7b5af04f",
        "2b5e917026fe4e6dec8712ee24bdffee8d62ab33"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Tue Jun 17 22:15:07 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 17 21:55:55 2014 +0000"
      },
      "message": "Merge \"Revert \"Publish DevicePolicyManager CA certificate APIs\"\""
    },
    {
      "commit": "b12f1778d612a53e6b40e6d5873be1ccff2e52a5",
      "tree": "9286a5eeb94eae55529fd0a7eb25b23ce8948622",
      "parents": [
        "ea54579b54687788c269b386c4bb802de5b87b1a",
        "837304f6f6ae37dc475fa6e0e620f1c2321f2e11"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Tue Jun 17 16:46:22 2014 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Jun 17 05:12:50 2014 +0000"
      },
      "message": "Merge \"Publish DevicePolicyManager CA certificate APIs\""
    },
    {
      "commit": "837304f6f6ae37dc475fa6e0e620f1c2321f2e11",
      "tree": "029c5bee023ef6697c4e2fbbf0b3526b76db749f",
      "parents": [
        "1b8aef2be7a467672b3ffdc37039b9233ece0fbc"
      ],
      "author": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Wed Jun 11 16:19:43 2014 +0100"
      },
      "committer": {
        "name": "Robin Lee",
        "email": "rgl@google.com",
        "time": "Wed Jun 11 16:55:32 2014 +0100"
      },
      "message": "Publish DevicePolicyManager CA certificate APIs\n\nExposes these methods:\n - hasCaCertInstalled\n - hasAnyCaCertsInstalled\n - installCaCert\n - uninstallCaCert\n\nAllows device and profile owners to perform some certificate management\nincluding querying for and enabling/disabling specific CA certificates.\n\nChange-Id: I4aa8a1a8601b234e30acde99dfa382e04cb62495\n"
    },
    {
      "commit": "e37da759c521b156f0f2f8fecaa3cb52969674e2",
      "tree": "21778b9e589e064cda1c6d55197b4ef46c970dcc",
      "parents": [
        "41a2c47e65a406534a2e4473da2f9ef35d0b04ce",
        "b1cb5aabeb68815715eed423f1f9a7edb9a3e938"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed Jun 11 19:33:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 11 19:33:51 2014 +0000"
      },
      "message": "am b1cb5aab: am 748856f2: am a7ddd029: am 80e84e2d: am f3cecfa2: am 55d525b2: am 716cc7dc: Add documentation for AndroidKeyStore\n\n* commit \u0027b1cb5aabeb68815715eed423f1f9a7edb9a3e938\u0027:\n  Add documentation for AndroidKeyStore\n"
    },
    {
      "commit": "80e84e2db92ba190c6c517dd4c71cd12c0adb249",
      "tree": "9ca44998acd120769b2bbfc8508311ec129a20f0",
      "parents": [
        "20c5ce50c456742bf912ebb915be45bfdb51487d",
        "f3cecfa2185ef5622992b21da8204b8b6590ef2d"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Jun 10 02:39:28 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 10 02:39:28 2014 +0000"
      },
      "message": "am f3cecfa2: am 55d525b2: am 716cc7dc: Add documentation for AndroidKeyStore\n\n* commit \u0027f3cecfa2185ef5622992b21da8204b8b6590ef2d\u0027:\n  Add documentation for AndroidKeyStore\n"
    },
    {
      "commit": "f3cecfa2185ef5622992b21da8204b8b6590ef2d",
      "tree": "a513acfdc2b30864fd89a3f27e423cfd6c44abb8",
      "parents": [
        "dcfba78fbb4dad6792113383b2d32eff7f2c1f88",
        "55d525b26b716351625798675afe69c6cf43cf5a"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Tue Jun 10 02:36:10 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 10 02:36:10 2014 +0000"
      },
      "message": "am 55d525b2: am 716cc7dc: Add documentation for AndroidKeyStore\n\n* commit \u002755d525b26b716351625798675afe69c6cf43cf5a\u0027:\n  Add documentation for AndroidKeyStore\n"
    },
    {
      "commit": "716cc7dcac1bb9279326ab92a78a246b3a70de4e",
      "tree": "2e94d735322779b7a9ba9c4acc3b2316009af400",
      "parents": [
        "ab6424959ca0dd765f37944dbeaa59a50b99d7a4"
      ],
      "author": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed May 07 21:16:15 2014 -0700"
      },
      "committer": {
        "name": "Robert Ly",
        "email": "robertly@google.com",
        "time": "Wed May 07 21:20:01 2014 -0700"
      },
      "message": "Add documentation for AndroidKeyStore\n\nAdd exposition about the use cases for AndroidKeyStore and links to the\nAPI sample application for different use cases.\n\nBug: 8608817\nChange-Id: Ic4ce9405781c92f12687895b28c671661ea5524f\n"
    },
    {
      "commit": "a365906e670c89674fb3383b5bcb33e682910c29",
      "tree": "6eaa177219777d844522491689ec9a65324142b3",
      "parents": [
        "946bb3cef9137cb12e2200cd286713aa1d74fb48"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 17 16:21:53 2014 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Mar 17 16:21:56 2014 -0700"
      },
      "message": "Use the correct package name for CHOOSER\n\nBug: 13013106\nChange-Id: I1f715de18e7108274f5a98234376d48c2d329438\n"
    },
    {
      "commit": "1a88d834e8f7d21e714121c011fec82369a2e9f1",
      "tree": "e51210d536855b187e5c9bf08e7df3cac8f34e1d",
      "parents": [
        "8f52fee0609a4f273f87f4178865b0713c8114aa"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 07 09:12:48 2014 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Feb 07 09:14:32 2014 -0800"
      },
      "message": "KeyChain: add explicit package for getPrivateKey\n\nBug: 9964538\nChange-Id: If67c1938e9506d4fa81b241bcbce2193d1b194ef\n"
    },
    {
      "commit": "6090995951c6e2e4dcf38102f01793f8a94166e1",
      "tree": "37f32f4b269fc26a18e3249a18459a476c473266",
      "parents": [
        "266f48cc042dda828109eb135088cdb6f0f7c1d5"
      ],
      "author": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Tue Nov 19 16:54:46 2013 -0500"
      },
      "committer": {
        "name": "John Spurlock",
        "email": "jspurlock@google.com",
        "time": "Wed Nov 20 11:31:47 2013 -0500"
      },
      "message": "Remove unused imports from frameworks/base.\n\nChange-Id: Ia1f99bd2c1105b0b0f70aa614f1f4a67b2840906\n"
    },
    {
      "commit": "b91773bce1126d28a93f73fbef18f3a79245f24e",
      "tree": "a7ab82da0330b4f4249c219dbea9efd17a2b7953",
      "parents": [
        "d2676f9bd93c333ae2c7f3ca284d0fef5a7e146b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 05 13:03:16 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Sep 05 13:27:00 2013 -0700"
      },
      "message": "Add argument to binder call to check key types\n\nBefore there was only one key type supported, so we didn\u0027t need to query\na key type. Now there is DSA, EC, and RSA, so there needs to be another\nargument.\n\nBug: 10600582\nChange-Id: I9fe9e46b9ec9cfb2f1246179b2c396216b2c1fdb\n"
    },
    {
      "commit": "c222ddd07ff9c65c682fd82f8534a9d7dea796cd",
      "tree": "374082b71bd0c03a5b63de361926677724040ede",
      "parents": [
        "a39859889b7de0ad3190386cc732fa4bdcbe5504"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 03 09:45:55 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 03 09:45:55 2013 -0700"
      },
      "message": "Unhide functions to allow ECDSA support\n\nBug: 10600582\nChange-Id: Ic710807d7e771737521e0abd83af2f666ec1199c\n"
    },
    {
      "commit": "a39859889b7de0ad3190386cc732fa4bdcbe5504",
      "tree": "a9efaea5421fe0ce48f088faf2324afb798d2ce1",
      "parents": [
        "96661c42d0643c129fed60678aa0b8f99d32b456"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 16 14:03:29 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Sep 03 00:53:04 2013 -0700"
      },
      "message": "Add support for DSA and ECDSA key types\n\n(cherry picked from commit f64386fc26efeb245fd90fabaa47b8c8bf9b4613)\n\nBug: 10600582\nChange-Id: I88dfcc8ca602f55fad54bd8bf043aee460c0de24\n"
    },
    {
      "commit": "da51e68e582ffa017543982297c831680d201a91",
      "tree": "569121a5f1c7d504a6f499f6249de09e016b7d8e",
      "parents": [
        "0a94b9ce277ef2ec79902e3c576a50ab438dca97"
      ],
      "author": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Thu Aug 08 22:35:44 2013 -0400"
      },
      "committer": {
        "name": "Maggie Benthall",
        "email": "mbenthall@google.com",
        "time": "Tue Aug 20 14:30:36 2013 -0400"
      },
      "message": "Add methods for managing CAs to DevicePolicyManager(Service)\n\nGuard install/uninstall by enforcing that the caller have the new system-only permission MANAGE_CA_CERTIFICATES.\nAlso include API methods for asking whether there are any User CA certs\ninstalled, or if one by a particular name is installed in the keystore.\n\nCA certs will be installed via KeyChain into the TrustedCertificateStore.\n\nBug: 8232670\n\nChange-Id: I17b47a452e72eb4fe556dc6db823a46c6e854be8\n"
    },
    {
      "commit": "a920f25fe55fc9afc7640902a200f19ce278588b",
      "tree": "d248ebfca6085ff79f1a5cfb91a1778b4617ac82",
      "parents": [
        "324993abed48843da1cb63063668147151e4db5c",
        "fca0f92e0a9c121dcf28fa783e884f1fb4993374"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 28 16:41:19 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 28 16:41:19 2013 -0700"
      },
      "message": "resolved conflicts for merge of fca0f92e to stage-aosp-master\n\nChange-Id: I4791f0ffa324a313b8390fbde6d8f82f716ecf74\n"
    },
    {
      "commit": "d396a448b2e36e29598c954b64bfddef73f3fae0",
      "tree": "c8851235188aa3e48f7069c8a6004e40b304d253",
      "parents": [
        "5216f11e462b9f17704c0ac9e193d2149f3fa755"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 28 16:24:48 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 28 16:24:48 2013 -0700"
      },
      "message": "Switch frameworks/base over from @hidden Charsets to public StandardCharsets.\n\nBug: 3484927\nChange-Id: I5d136d2ee629588538602766a182ae14ce5fc63c\n"
    },
    {
      "commit": "5f851a89b6a90db206d0e2fa63a60229e2bfcda6",
      "tree": "96606b9c3ca3682b890284276b81ac6cfa429617",
      "parents": [
        "5f714213546d667ac241a92e2052b30dabef8355",
        "cd1de3940d9c389b6e69a7040c67d3abb8458ad2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 06 15:13:58 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 06 15:13:58 2013 -0700"
      },
      "message": "am cd1de394: Merge \"Track change in NativeCrypto\"\n\n* commit \u0027cd1de3940d9c389b6e69a7040c67d3abb8458ad2\u0027:\n  Track change in NativeCrypto\n"
    },
    {
      "commit": "4b30e3391bda250975b43af43bad58c98fa73f84",
      "tree": "82abee4746206fb285ffd384f6d594872b71b706",
      "parents": [
        "6d82f86fa01800ee0523743366e0dc1113178fd9"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 06 15:00:58 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon May 06 15:00:58 2013 -0700"
      },
      "message": "Track change in NativeCrypto\n\nChange-Id: Ic04d4ac5218795fc226f1751b6ae4db1ae73a930\n"
    },
    {
      "commit": "e9ae6822a80cb1f3bd13c785f1727c03d35da52e",
      "tree": "b1458872d38a68b06c277276a3062bac0247509d",
      "parents": [
        "be53f1806cf9f0ec69f785a0063227e0ed795eb8",
        "1f6e789b7ee9698ab8c528a393c28cce500ace04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 29 23:09:03 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 29 23:09:03 2013 -0700"
      },
      "message": "resolved conflicts for merge of 1f6e789b to jb-mr2-dev-plus-aosp\n\nChange-Id: I06c05d637613215b6d83df3e29cd495f6a5a0176\n"
    },
    {
      "commit": "12e752225aa96888358294be0d725d499a1c9f03",
      "tree": "d716c7eedc50ccdf146aaca9b55fae969cf753ec",
      "parents": [
        "28b1f0ee02e14241ffb81f431fc54053771c1c90"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 23 22:34:24 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 29 15:15:27 2013 -0700"
      },
      "message": "Track change to JSSE provider\n\nChange-Id: I35e824e47ad758ab6408e91e2ba5dcda053a82f5\n"
    },
    {
      "commit": "1c219f619291ba818bc2542390a2988539d94ed0",
      "tree": "f9b17839a23ca3978cea2251767b4432d1d1f9a6",
      "parents": [
        "a454c5732cacffdda53ae277b1e43d87b43044b1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Apr 18 17:57:03 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Apr 18 18:34:58 2013 -0700"
      },
      "message": "Rename API AndroidKey* -\u003e Key*\n\nBug: 8657552\nChange-Id: Id9102b7c2c2f6d27fba7645f0629750cfe1eb510\n"
    },
    {
      "commit": "bf2147669e295384df17b50afc53a4d450b05bdd",
      "tree": "594236183b0a773b440972214b5dc1ddc62eada1",
      "parents": [
        "6fb172b12eefeea4b565c616a4d0a8d1fb015217"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 10 11:30:58 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Mon Apr 15 19:33:15 2013 +0000"
      },
      "message": "AndroidKeyStore: Add encrypted flag\n\nAdd the encrypted flag for the KeyPairGenerator and the KeyStore so that\napplications can choose to allow entries when there is no lockscreen.\n\n(partial cherry pick from commit 2eeda7286f3c7cb79f7eb71ae6464cad213d12a3)\n\nBug: 8122243\nChange-Id: I5ecd9251ec79ec53a3b68c0fff8dfba10873e36e\n"
    },
    {
      "commit": "4622351159b51bf072fe12833b574cf38f9400c8",
      "tree": "e8c71ae1cd0293863d679d9700cba106bb5a089c",
      "parents": [
        "5678bacdffb6871b0d5b428548315cc3bba430bd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 10 10:37:55 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 15 11:09:29 2013 -0700"
      },
      "message": "keystore: Add flag for blobs to be unencrypted\n\nIn order to let apps use keystore more productively, make the blob\nencryption optional. As more hardware-assisted keystores (i.e., hardware\nthat has a Keymaster HAL) come around, encrypting blobs start to make\nless sense since the thing it\u0027s encrypting is usually a token and not\nany raw key material.\n\n(cherry picked from commit a3788b00bb221e20abdd42f747d2af419e0a088c)\n\nBug: 8122243\nChange-Id: Ifc1c64743651b23a4eace208ade0176af47ea989\n"
    },
    {
      "commit": "e7cf8c230208beef0c3a5f83a1e1d2c36ac5ca12",
      "tree": "bc70a5697a261dc198cb8b13b761ceb66f545599",
      "parents": [
        "b2c0ff64d8ff92dab53e969a44fa12427d145952"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Apr 12 17:37:37 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Apr 12 18:09:04 2013 -0700"
      },
      "message": "keystore: remove old APIs\n\nRemove the APIs that don\u0027t specify the flags so callers know what\nthey\u0027re getting.\n\nBug: 8122243\nChange-Id: Ifaef6fb1d16010237c01f9d11f2053bb6b3980c0\n"
    },
    {
      "commit": "b2c0ff64d8ff92dab53e969a44fa12427d145952",
      "tree": "3b3139b4fd331e0ce65d245510d54c15ae3a03ae",
      "parents": [
        "8692685a54f6bf87dadc82fbd5576cdb81ba662b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Apr 12 17:36:25 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Apr 12 18:09:04 2013 -0700"
      },
      "message": "Remove old KeyStore call sites\n\nRemove the call sites that don\u0027t have the flags specified. This is to\nensure that callers know what flags they\u0027re setting.\n\nBug: 8122243\nChange-Id: Ifbd178fddbf8dbd8f7b821ea739a20d056ef9fa7\n"
    },
    {
      "commit": "2eeda7286f3c7cb79f7eb71ae6464cad213d12a3",
      "tree": "cf77426b72b1287ce66c230da7c67d2d5c8cdd8a",
      "parents": [
        "a3788b00bb221e20abdd42f747d2af419e0a088c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 10 11:30:58 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Apr 12 15:19:48 2013 -0700"
      },
      "message": "AndroidKeyStore: Add encrypted flag\n\nAdd the encrypted flag for the KeyPairGenerator and the KeyStore so that\napplications can choose to allow entries when there is no lockscreen.\n\nBug: 8122243\nChange-Id: Ia802afe965f2377ad3f282dab8c512388c705850\n"
    },
    {
      "commit": "a3788b00bb221e20abdd42f747d2af419e0a088c",
      "tree": "227a48273035bfbf5f7d1beb53a43c1340bb7418",
      "parents": [
        "f8a67f4f5dd4c5499a6e7148331f0286e31203ec"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 10 10:37:55 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 10 23:36:13 2013 -0700"
      },
      "message": "keystore: Add flag for blobs to be unencrypted\n\nIn order to let apps use keystore more productively, make the blob\nencryption optional. As more hardware-assisted keystores (i.e., hardware\nthat has a Keymaster HAL) come around, encrypting blobs start to make\nless sense since the thing it\u0027s encrypting is usually a token and not\nany raw key material.\n\nBug: 8122243\nChange-Id: If9af0d992d68edec006e630c687df3d03a7c9608\n"
    },
    {
      "commit": "8b51475c97f8f2742047976283afbe1f9ef9fcbf",
      "tree": "62a1931f70aecc1a156d129b6602274e0c86e3fe",
      "parents": [
        "4296704208a9eeb40f4e5fa8d6d1f79c72c322ee"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 09:35:16 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Sat Apr 06 10:05:31 2013 -0700"
      },
      "message": "Revert \"Remove AndroidKeyStore from API\"\n\nThis reverts commit ce24985ad636c38b6ee01ec9cdecfb038bfeaeb6.\n\nChange-Id: I02d6492c8db869619694c7209bb37522a7ec5a29\n"
    },
    {
      "commit": "d72317abd79ddf95d48c8f35bf1070900ff55b5e",
      "tree": "d07ab26ca8e840bd98811223315bc2ad773e0418",
      "parents": [
        "688c33448572fa3879b1486d8fa1bf16cd946211"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 01 15:59:59 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Apr 03 11:32:52 2013 -0700"
      },
      "message": "Remove keystore entries when package removed\n\nAdd a hook into PackageManagerService so that when app IDs are\ncompletely removed, we erase all entries from keystore for those UIDs\nthat have gone away.\n\n(cherry picked from commit 95e3ee3971915b323e5c13dcfe3b12a4180850cd)\n\nBug: 3020069\nChange-Id: I374258ccc103f8cb3e238f2bf0d1afda0659db94\n"
    },
    {
      "commit": "95e3ee3971915b323e5c13dcfe3b12a4180850cd",
      "tree": "233169c1fc19155ec6fa7d0b408838ac051ce426",
      "parents": [
        "b7aca350e4c46bbc431f2ecaa4d8cee87915fe8b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 01 15:59:59 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 02 11:50:16 2013 -0700"
      },
      "message": "Remove keystore entries when package removed\n\nAdd a hook into PackageManagerService so that when app IDs are\ncompletely removed, we erase all entries from keystore for those UIDs\nthat have gone away.\n\nBug: 3020069\nChange-Id: Id4b1d51a5fa4c418865055635a84bebcf5b65ec8\n"
    },
    {
      "commit": "5b7e90ac937857c10a3d49b244ec75ca539b9a22",
      "tree": "88d4dd850f2288d87e620f3cf60db934b3a91c58",
      "parents": [
        "1ea4a5ba859c70b7e7414e1f6a2a772cf9dd5cfb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 02 11:23:41 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 02 11:23:41 2013 -0700"
      },
      "message": "Add API to query KeyChain algorithm support, pt. 2\n\nLate-breaking comments on API name. Revised.\n\nBug: 7095660\nChange-Id: I7224d9c8a4f84a272360ede78a18bfb72d8aeb77\n"
    },
    {
      "commit": "bf556ac636a39c1d0fe5451a921b88400dd1c695",
      "tree": "46595e9d1072d3611adb6b30fa10741696a2831b",
      "parents": [
        "53de5c296a579e9012d152f8a25c08f6f6091b3b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Apr 01 15:10:22 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 02 10:34:24 2013 -0700"
      },
      "message": "Add API to query KeyChain algorithm support\n\nBug: 7095660\nChange-Id: Ia87caaa33bc01b032130811833f0a3c4f75b62d4\n"
    },
    {
      "commit": "5cb5cec6a4a4d5432d4ce6468c12de9508db1633",
      "tree": "0778665976a92cdaf2943e551c72ef5fbb41f558",
      "parents": [
        "2fb669e68f771f07517b8d5087ca875025b9bcfb"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 29 11:14:17 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 29 14:21:10 2013 -0700"
      },
      "message": "KeyStore: add API to query storage type\n\nAdd an API to keystore daemon to query what kind of storage is currently\nin use.\n\n(cherry picked from commit a738e2a1aee26e0be3944c11820724aeca313f83)\n\nChange-Id: I52c84449a27b1cefc49372a6406b7132c2bbddee\n"
    },
    {
      "commit": "a738e2a1aee26e0be3944c11820724aeca313f83",
      "tree": "f759843e6482eba4a964869e62a025f22756ed49",
      "parents": [
        "ce7f2723ad42f09fb173a9b86d3546e1474fd667"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 29 11:14:17 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Mar 29 11:16:43 2013 -0700"
      },
      "message": "KeyStore: add API to query storage type\n\nAdd an API to keystore daemon to query what kind of storage is currently\nin use.\n\nChange-Id: I5a83ae92250ca63b691dcf1beb8b3e1703797745\n"
    },
    {
      "commit": "acb0b5b220b2cb15f5a800a356bb25f47252a6ea",
      "tree": "f5df06bd61e283f28dec8598115fc290fa3f75b1",
      "parents": [
        "02c86306d2569d18a49da3d9228dacb25b1f8973"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 28 15:05:03 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 28 16:05:46 2013 -0700"
      },
      "message": "AndroidKeyStore: add Builder for param spec\n\nChange-Id: I13403197e1ac7ac607efa10979eb73bde0135a2a\n"
    },
    {
      "commit": "3e7be43e2555bbdfe311dcbd9a36f7f05321a2d8",
      "tree": "56850ebc6b5f349bb0127b8e92c031b65095c05e",
      "parents": [
        "3864aa3944254184ddcd61002cb9f1d7cb1d4c67"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 28 09:25:51 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 28 11:30:11 2013 -0700"
      },
      "message": "Add ability to install credentials as other UID\n\nWe need the ability to install from the system UID to wifi UID\nto explicitly bind WiFi credentials to the WiFi profile. This adds the\nability for Wifi Settings to invoke installation of a PKCS12 file for\nthe wifi UID.\n\nBug: 8183258\nChange-Id: I652b7e6fa93deda6d6d310be33f224e5a356c787\n"
    },
    {
      "commit": "5f1d965f7d7e1df50981ffed8faa11fbcc17ca22",
      "tree": "b4449ba12d8e3da7e8c70edcd2b313f4798cd76c",
      "parents": [
        "e4679750c538e982bb81f4eea2343e8bede3e118"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 21 14:21:50 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Mar 21 14:24:19 2013 -0700"
      },
      "message": "KeyStore: change migrate to duplicate\n\nAfter discussion, it was determined that duplicate would be less\ndisruptive and it still fit in the current HAL model.\n\nChange-Id: I2f9cae48d38ec7146511e876450fa39fc92cda55\n"
    },
    {
      "commit": "bd79419ef84ae31f3765721b50aa413fa462d1d1",
      "tree": "d2eb8242f5a770452d7100d38b6c273aac242134",
      "parents": [
        "78ad849163a7b01073b46fbd7d818392720005d1"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 20 11:36:50 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Mar 20 11:57:46 2013 -0700"
      },
      "message": "KeyStore: add \"migrate\" command\n\nTo support the WiFi service, we need to support migration from the\nsystem UID to the wifi UID. This adds a command to achieve the\nmigration.\n\nBug: 8122243\nChange-Id: I65f7a91504c1d2a2aac22b9c3051adffd28d66c1\n"
    },
    {
      "commit": "78ad849163a7b01073b46fbd7d818392720005d1",
      "tree": "8b177dc6137d8264e6e1a288e726de2aab6f040a",
      "parents": [
        "ebebb80b4a629756128b5a4fcf483133f01dbfd7"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 13 17:02:57 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@android.com",
        "time": "Wed Mar 20 16:50:06 2013 +0000"
      },
      "message": "KeyStore: add API to uid versions\n\nIn previous commits, we added the ability to specify which UID we want to\ntarget on certain operations. This commit adds the ability to reach those\nbinder calls from the KeyStore class.\n\nAlso fix a problem where saw() was not reading all the values returned via\nthe Binder call. This changes the semantics to return a null instead of\nfailing silently when it\u0027s not possible to search.\n\nChange-Id: I32098dc0eb42e09ace89f6b7455766842a72e9f4\n"
    },
    {
      "commit": "b9594ce9ebb3f5f303a280f04312ae5754ce3560",
      "tree": "c2d5554829d9dfce6c387a7a41a2218d5bd5f276",
      "parents": [
        "37edbbc62fa031c75ce5a1298fdd07d981907e89"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 14 10:18:38 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu Feb 14 12:06:51 2013 -0800"
      },
      "message": "KeyStore: stop using state()\n\nChange-Id: I721974fd95f8d1ab06a3fd1bbb4c9b4d9d1d7752\n"
    },
    {
      "commit": "b0f4b8a7d2662e8cc63dae1001175bf72bca1539",
      "tree": "90ec01d90d588d952f3c5d068f932a0e91b51559",
      "parents": [
        "8ab767786a3b59c72b613f84d40b181428327ac1",
        "e151f281d527f4bea5cbdf4219d5e0507a6668b0"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 13 23:43:57 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 13 23:43:57 2013 +0000"
      },
      "message": "Merge \"Track keystore binder changes\""
    },
    {
      "commit": "0150e48200a967aead3c2ac6f1283ae2df54c305",
      "tree": "bee78bcbe290463bc346f0fb9ec6d18233bbb440",
      "parents": [
        "c5748148c56e129e7b5cec7fac0921ce7967d054"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 13 15:22:50 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 13 15:24:06 2013 -0800"
      },
      "message": "KeyChain: return null instead of throw\n\nThe API documentation says it will return null if the key isn\u0027t found.\nWe get null back from the keystore daemon when it can\u0027t retrieve the\ndata, so just return null back to the API caller.\n\nChange-Id: I42248bd50cbc5f76864bd762aae3faab1c50529d\n"
    },
    {
      "commit": "e151f281d527f4bea5cbdf4219d5e0507a6668b0",
      "tree": "487e9615ae880db537fd22900f451a64896b6f95",
      "parents": [
        "c5748148c56e129e7b5cec7fac0921ce7967d054"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 13 15:22:25 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Feb 13 15:22:25 2013 -0800"
      },
      "message": "Track keystore binder changes\n\nChange-Id: Id6133be059a8a0901d16355a9152e40e4a255454\n"
    },
    {
      "commit": "887c523646012f4f0b63f5ffd0a1e9ebc3c2bdf1",
      "tree": "4502db46424fe9c82fa96eb7ccb264999c59d5c7",
      "parents": [
        "c4a768c87e03a5e6d8b4435aaca6893546006321",
        "74637db21eb0b3c0167378e2b5c866fdc02e51f2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 17:35:35 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 17:35:35 2013 -0800"
      },
      "message": "am 74637db2: Merge \"AndroidKeyStore: return error code on error\"\n\n# Via Gerrit Code Review (1) and Kenny Root (1)\n* commit \u002774637db21eb0b3c0167378e2b5c866fdc02e51f2\u0027:\n  AndroidKeyStore: return error code on error\n"
    },
    {
      "commit": "e66769ad5194cb4533d1087416a2e804ac384285",
      "tree": "22123fc2bb1210baa71e79671e44f7a4aad1daf1",
      "parents": [
        "5a720bb9b031d44e593d2054bda586ccc3752aa4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 15:49:11 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 15:50:58 2013 -0800"
      },
      "message": "AndroidKeyStore: return error code on error\n\nInstead of blindly multiplying return value by 1000 to convert to\nmilliseconds, check to see if it\u0027s an error condition first.\n\nChange-Id: I8eab1e7a86d78c13458fcbbc79d590e452fc9791\n"
    },
    {
      "commit": "c4a768c87e03a5e6d8b4435aaca6893546006321",
      "tree": "2f44135e4cb2b2980db138c9026be8563a86f4a5",
      "parents": [
        "516fab2404f550aca03b3774bd5b279d4e69dd9f",
        "5a720bb9b031d44e593d2054bda586ccc3752aa4"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 15:10:26 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 15:10:26 2013 -0800"
      },
      "message": "am 5a720bb9: Merge \"AndroidKeyStore: add key wrapping test\"\n\n# Via Gerrit Code Review (1) and Kenny Root (1)\n* commit \u00275a720bb9b031d44e593d2054bda586ccc3752aa4\u0027:\n  AndroidKeyStore: add key wrapping test\n"
    },
    {
      "commit": "516fab2404f550aca03b3774bd5b279d4e69dd9f",
      "tree": "1277c2393a27b7146cae657e1bfc6e5a336dc936",
      "parents": [
        "3789b2fb823b7632e410c0191ddf77dc1e875196",
        "133c5f5e91e72cff1a9a3a4903a0efc96b39165b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 15:10:22 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Feb 04 15:10:22 2013 -0800"
      },
      "message": "am 133c5f5e: Merge \"AndroidKeyStore: fix tests\"\n\n# Via Gerrit Code Review (1) and Kenny Root (1)\n* commit \u0027133c5f5e91e72cff1a9a3a4903a0efc96b39165b\u0027:\n  AndroidKeyStore: fix tests\n"
    },
    {
      "commit": "656f92f2c6fec008dd3131f6ec30a121b5b2a92e",
      "tree": "a97e794772576fa72827dcb7e265df83dfaf8b7e",
      "parents": [
        "8b58c52bf4cc276165b1857eb4087eabde7b6477"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 14:47:36 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 14:53:11 2013 -0800"
      },
      "message": "AndroidKeyStore: add key wrapping test\n\nChange-Id: Ib21ab37d22689dd87f014eaa1f7919a575367cdd\n"
    },
    {
      "commit": "8b58c52bf4cc276165b1857eb4087eabde7b6477",
      "tree": "448c4ff3315e2fc1a9c4d910c749eda002c7ce57",
      "parents": [
        "ace72f6a37ffc232172346b3385494ef10195583"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 14:47:23 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Feb 04 14:52:23 2013 -0800"
      },
      "message": "AndroidKeyStore: fix tests\n\nChange-Id: I65fd8ba27af57ea8fd27c8e08c9c1201f32c494d\n"
    },
    {
      "commit": "a647281109584d96ba2265c0faa14432deeb9815",
      "tree": "38ee867fe739b4db88aa88dc392a8376a449511f",
      "parents": [
        "4dca3946177aaea54d78d39273324caacf74a7bb",
        "2e99d3c9646861ca92faf6708c18e36c7530fd93"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Jan 25 16:41:33 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jan 25 16:41:33 2013 -0800"
      },
      "message": "am 2e99d3c9: am ebb61ca2: Merge \"Track libcore changes for OpenSSLKey\"\n\n# Via Android Git Automerger (1) and others\n* commit \u00272e99d3c9646861ca92faf6708c18e36c7530fd93\u0027:\n  Track libcore changes for OpenSSLKey\n"
    },
    {
      "commit": "cc1fc6b6adc1edc2acaa42205b4ec5ca00bfd353",
      "tree": "299d31dd411af8ca6121807073004701464232e9",
      "parents": [
        "b1e16f11ffd3a391be1a44a352c122b6dad1e8a5"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jan 22 13:25:38 2013 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Jan 22 15:22:56 2013 -0800"
      },
      "message": "Track libcore changes for OpenSSLKey\n\nChange-Id: I39f60c34daa9ccc633efb02988ea238a84e6bbf1\n"
    },
    {
      "commit": "c41db6c9ba298c8fac5068ad2843b4aa58ecf1c5",
      "tree": "b13108014c51ebbe71a07d463c0c06ac7508cd9f",
      "parents": [
        "262b311c3c7d68204a72d3ba87bd76883aec00e2",
        "834b0f3cd90679655ac1549cb427fc9475ac4a4b"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Jan 03 18:44:22 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Jan 03 18:44:22 2013 -0800"
      },
      "message": "am 834b0f3c: am 19b17b41: am 38a642e9: am 3e2479dd: Merge \"docs: fix broken links and add new sitemap text file\" into jb-mr1-dev\n\n* commit \u0027834b0f3cd90679655ac1549cb427fc9475ac4a4b\u0027:\n  docs: fix broken links and add new sitemap text file\n"
    },
    {
      "commit": "188315cf8b44fb59da2d37c1d54bbc70ee3acb4e",
      "tree": "b36f9db256cf022a8b3eb179ab1bd5eaeb3fcb42",
      "parents": [
        "9d7578c73afa69272dcf9476ae3eefc2b59d6778"
      ],
      "author": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Jan 03 18:02:21 2013 -0800"
      },
      "committer": {
        "name": "Scott Main",
        "email": "smain@google.com",
        "time": "Thu Jan 03 18:02:21 2013 -0800"
      },
      "message": "docs: fix broken links and add new sitemap text file\n\nChange-Id: If0f7967a65a6e3a444a565a2e8229a04a5265f56\n"
    },
    {
      "commit": "6b77645aa9ac51ce33ea67adba226aaf1a6e8846",
      "tree": "0eb1ff1cf5bbe1e508596462396c03d878fd9c26",
      "parents": [
        "87ed0a10f5cb563c0a06d22a40472b4e88348e9b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Nov 02 15:40:32 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 14 08:45:52 2012 -0800"
      },
      "message": "Switch keystore to binder\n\nChange-Id: I9fa1fc05068bee1eed3f618fb32f70cf3d4c05d4\n"
    },
    {
      "commit": "58ed5d748c0b9b64845975ef5844ad313de7c3f6",
      "tree": "507af3879bc894eb854712a1fe6c0953805a895c",
      "parents": [
        "9197d170b770f2b87abd0cd0e13dcf71e5a181c2",
        "768d9e1a72ceee7d4a5f608776b87b62d6ce4a04"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 07 11:52:12 2012 -0800"
      },
      "message": "am 768d9e1a: Merge \"Correct executable bit for source files\"\n\n* commit \u0027768d9e1a72ceee7d4a5f608776b87b62d6ce4a04\u0027:\n  Correct executable bit for source files\n"
    },
    {
      "commit": "3a084af2e90849aaa8beb3a610189e3399c63ea0",
      "tree": "ba4b87d227674fd68f9ea395649fde32778620f0",
      "parents": [
        "9d547d6934f64189e368c0b190fb4cf49c95a557"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:19:47 2012 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Nov 07 10:27:31 2012 -0800"
      },
      "message": "Correct executable bit for source files\n\nMany media files and source code files were marked as executable in Git.\nRemove those.\n\nAlso a shell script and python script were not marked as executable.\n\nChange-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5\n"
    },
    {
      "commit": "ce24985ad636c38b6ee01ec9cdecfb038bfeaeb6",
      "tree": "0fd76d777fe86ee580ba0bcb03e0c6be327e2738",
      "parents": [
        "0b62fa234d2e3580b1f04cb9c4a6a308be99a5ae"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 14 16:19:31 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Sep 14 16:23:37 2012 -0700"
      },
      "message": "Remove AndroidKeyStore from API\n\nChange-Id: Ibe09d78e5a5b86604f01144f344525bff94c2dde\n"
    },
    {
      "commit": "0efca17105d112a0ff568602831b22bdafa00433",
      "tree": "5a4a8a7cf4d0f4884a75ec7d4b4ecb27bc5a0ad8",
      "parents": [
        "bd0fe8783407bc760b8e9a9952cb96a600d26ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 04 23:01:07 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 12 10:01:00 2012 -0700"
      },
      "message": "Tracking upgrade to bouncycastle 1.47\n\nChange-Id: I4a3c508c5e65dd46a2df22935b5351092550fad5\n"
    },
    {
      "commit": "a4640c082c8ccf66ebfb50ace5747409ab6aee55",
      "tree": "7b2266c166f65ef186e913f18110dab6bbd7d9e8",
      "parents": [
        "2701f325a6d4acd920637d2ff6fd6972a9cf836b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 31 13:38:11 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 31 16:45:24 2012 -0700"
      },
      "message": "Add some NullPointerExceptions to AndroidKeyStore\n\nExisting KeyStore implementations throw NullPointerExceptions beacuse\nthe KeyStoreSpi doesn\u0027t check these arguments for null. Add in checks so\nwe don\u0027t accidentally check some bogus values.\n\nAlso switch a RuntimeException to a KeyStoreException\n\nChange-Id: I18f4d4474d607cb2057ea8069b901e0992275e78\n"
    },
    {
      "commit": "69ddab4575ff684c533c995e07ca15fe18543fc0",
      "tree": "dfae3a89b9027c33d47b58f80200af021bbe7426",
      "parents": [
        "080ca09c7f4c0033d0efece23687b71f7f8febc9"
      ],
      "author": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Sat Aug 25 00:05:46 2012 -0700"
      },
      "committer": {
        "name": "Jeff Sharkey",
        "email": "jsharkey@android.com",
        "time": "Mon Aug 27 12:35:05 2012 -0700"
      },
      "message": "Always-on VPN.\n\nAdds support for always-on VPN profiles, also called \"lockdown.\" When\nenabled, LockdownVpnTracker manages the netd firewall to prevent\nunencrypted traffic from leaving the device. It creates narrow rules\nto only allow traffic to the selected VPN server. When an egress\nnetwork becomes available, LockdownVpnTracker will try bringing up\nthe VPN connection, and will reconnect if disconnected.\n\nConnectivityService augments any NetworkInfo based on the lockdown\nVPN status to help apps wait until the VPN is connected.\n\nThis feature requires that VPN profiles use an IP address for both\nVPN server and DNS. It also blocks non-default APN access when\nenabled. Waits for USER_PRESENT after boot to check KeyStore status.\n\nBug: 5756357\nChange-Id: If615f206b1634000d78a8350a17e88bfcac8e0d0\n"
    },
    {
      "commit": "802768dd86c4e8a933dbfbac2e9f1a1daa5f93fa",
      "tree": "a90458054c943c102152dbc0c061a83d52c1c70c",
      "parents": [
        "6479ecd1b24e9d5a5636130cb4b0c353b396ff0e"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 21 15:23:35 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 22 13:03:30 2012 -0700"
      },
      "message": "Add ability to replace chain for PrivateKeyEntry\n\nFor the AndroidKeyStore API, allow entries to have their certificate\nchain replaced without destroying the underlying PrivateKey. Since\nentries are backed by unexportable private keys, requiring them to be\nsupplied again doesn\u0027t make sense and is impossible.\n\nChange-Id: I629ce2a625315c8d8020a082892650ac5eba22ae\n"
    },
    {
      "commit": "db026710ec0adcf7f72dfb24c65d38a882ee26d8",
      "tree": "cff080fbecd17c5d6e6a60a7bc2adccbd6761b20",
      "parents": [
        "e29df16cb57b69995df597e8a6d95d986c1c43fc"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 20 10:48:46 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Wed Aug 22 08:52:55 2012 -0700"
      },
      "message": "Add KeyPairGenerator for Android keystore\n\nThis allows end-users to generate keys in the keystore without the\nprivate part of the key ever needing to leave the device. The generation\nprocess also generates a self-signed certificate.\n\nChange-Id: I114ffb8e0cbe3b1edaae7e69e8aa578cb835efc9\n"
    },
    {
      "commit": "e29df16cb57b69995df597e8a6d95d986c1c43fc",
      "tree": "7cb7fb03ffff118dab968b483bb6d52270cf4ac9",
      "parents": [
        "473c712b19bad992ab4eafcd43175fdce77b913d"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 10 08:28:37 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 20 12:44:40 2012 -0700"
      },
      "message": "Add AndroidKeyStore provider for KeyStore API\n\nThis introduces a public API for the Android keystore that is accessible\nvia java.security.KeyStore API. This allows programs to store\nPrivateKeyEntry and TrustedCertificateEntry items visible only to\nthemselves.\n\nFuture work should include:\n\n* Implement KeyStore.CallbackHandlerProtection parameter to allow the\n  caller to request that the keystore daemon unlock itself via the\n  system password input dialog.\n\n* Implement SecretKeyEntry once that support is in keystore daemon\n\nChange-Id: I382ffdf742d3f9f7647c5f5a429244a340b6bb0a\n"
    },
    {
      "commit": "473c712b19bad992ab4eafcd43175fdce77b913d",
      "tree": "53695829e6276f1ab596ec873b63e3fa9ad2c491",
      "parents": [
        "bc11e52cafa182996a338641c86bf3a07f571b1d"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 17 21:13:48 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 20 09:48:41 2012 -0700"
      },
      "message": "Add getmtime to Android KeyStore API\n\njava.security.KeyStore requires that you be able to get the creation\ndate for any given entry. We\u0027ll approximate that through using the mtime\nof the file in the keystore.\n\nChange-Id: I16f74354a6c2e78a1a0b4dc2ae720c5391274e6f\n"
    },
    {
      "commit": "4cfb30a22ac22ce6a50d4860e467beda5c7da735",
      "tree": "c0a230a1ba720ba74ea27ec76bc6f62617ec3c7c",
      "parents": [
        "f83d2d6f6b4a23011226a7b9fee20dabf94820cb",
        "1ad8bf5660281d624759897e0403b35b29641ba2"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Aug 13 09:49:46 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Aug 13 09:49:46 2012 -0700"
      },
      "message": "am 1ad8bf56: am f0e87175: Merge \"Remove useless TestRunner\"\n\n* commit \u00271ad8bf5660281d624759897e0403b35b29641ba2\u0027:\n  Remove useless TestRunner\n"
    },
    {
      "commit": "96ad6cb080d0721a433d2bcb201f4a4582bf1caf",
      "tree": "1c74406ce7acaf2be1d06c2885cd50b62a8b7d85",
      "parents": [
        "37548994e69292932e9e2fafb7cba6c53e3a2bcd"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 10 12:39:15 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri Aug 10 13:40:19 2012 -0700"
      },
      "message": "Remove useless TestRunner\n\nInstrumentationTestRunner can enumerate the test cases to run without a\nspecial TestRunner.\n\nChange-Id: I5a49413440ef191f28a21034a318d9a9e3f8174b\n"
    },
    {
      "commit": "54e03afcfe34e9875efa56650c1af3ebc8f58a89",
      "tree": "25390fe3fb2d9846e94974fb7f6cb63f04f16ef3",
      "parents": [
        "bec1d13da2ef3c8c2c4cc4f740474d095068bd8b"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 07 10:04:26 2012 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Aug 07 11:41:16 2012 -0700"
      },
      "message": "Use TrustedCertificateStore for chain building\n\nMove chain building to TrustedCertificateStore since it has more\ninformation about the certificates.\n\nChange-Id: I3030e94eb1abb8a2047a4151bdaad9922706dd0f\n"
    },
    {
      "commit": "2a5b147ec8fc1235af928042bdfb78170b18067b",
      "tree": "9420325372005ce5d2070402a0f99dcd04d85552",
      "parents": [
        "4faeef378e9b82a4ad0fc1d4bb923af1a4f70e4e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 30 18:44:29 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 01 15:44:52 2012 -0700"
      },
      "message": "Change KeyStore to use Modified UTF-8 to match NativeCrypto\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d35141\nBug: 6869713\n\nChange-Id: I61cb309786960072148ef97ea5afedb33dc45f4e\n"
    },
    {
      "commit": "5b1f037829bff93877a6257db69f4e7723a27e20",
      "tree": "81bd1910040f2f1e2d491070e0309eee205b2ac8",
      "parents": [
        "28b452fddf85de27ad88b2b5de884c8428e74f1e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 30 18:44:29 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 30 18:54:18 2012 -0700"
      },
      "message": "Change KeyStore to use Modified UTF-8 to match NativeCrypto\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d35141\nBug: 6869713\n\nChange-Id: I61cb309786960072148ef97ea5afedb33dc45f4e\n"
    },
    {
      "commit": "5ea68db37fd5ad4e0ddc0745b4347e86f17f78db",
      "tree": "9ff7f7392fa6a74f2304362f173092ec342dce99",
      "parents": [
        "dfac68eacc60c130e54345d98bd45c99573cb627"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 17 23:40:49 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 27 22:41:42 2012 -0700"
      },
      "message": "Improve test key names to reproduce public issue\n\nAlso fixes other unrelated test failures.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d34577\nBug: 6837950\n\n(cherry-picked from f4019af04a1fc4b16aa5972cbcbba703caa5d78d)\n\nChange-Id: I5b32b5ccac80f04a4d0fd6b21b8caa11e42995a7\n"
    },
    {
      "commit": "f4019af04a1fc4b16aa5972cbcbba703caa5d78d",
      "tree": "cb973060e9f94fee6b6fbea21518d1ae7819dbf7",
      "parents": [
        "388953942b536b5eebd942ef78ae5b7499bc2078"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 17 23:40:49 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 17 23:56:20 2012 -0700"
      },
      "message": "Improve test key names to reproduce public issue\n\nAlso fixes other unrelated test failures.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d34577\nBug: 6837950\n\nChange-Id: I2c5ed1cbfbe0ab6f4ddd8619696d6545be0519a8\n"
    },
    {
      "commit": "5423e68d5dbe048ec6f042cce52a33f94184e9fb",
      "tree": "77d2cc39ea7f7a856d71d79233702af3dd71dccd",
      "parents": [
        "b2e822fc2ac87703ac12d062add62408574cbf7c"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Mon Nov 14 08:43:13 2011 -0800"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Mar 20 09:04:33 2012 -0700"
      },
      "message": "Add signing to keystore\n\nChange the keystore to keep the private keys in keystore. When returned,\nit uses the OpenSSL representation of the key to allow users to use it\nin various operations through the OpenSSL ENGINE that connects to\nkeystore.\n\nChange-Id: I3681f98cb2ec49ffc4a49f3821909313b4ab5735\n"
    },
    {
      "commit": "1cedb47e18a3acb322914e1963285882dc77d9ba",
      "tree": "28e75fe0ca8c2601f896e05e50051d450f6b851a",
      "parents": [
        "a1d2bd829d4804b7841d7c39c8d2ae438b634efb",
        "e57319ff880c43b44aaab4905dc8997d97827520"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Thu Mar 15 14:55:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Mar 15 14:55:15 2012 -0700"
      },
      "message": "Merge \"Make the credential storage change action public.\""
    },
    {
      "commit": "fcdccac49067e4cc60567ee93ccf1b62e74477fb",
      "tree": "e25cedb6c3fd888ec4ebaae1914686e37b3c2db6",
      "parents": [
        "592c85cd6c083997ee7f31ecbd52ab67942467d6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 01 15:14:14 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 01 15:14:14 2012 -0800"
      },
      "message": "Remove obsolete KeyChain references to USE_CREDENTIALS (2 of 2)\n\nChange-Id: Ic8a22ce3a9010b8378af044e611bf787e15f6227\n"
    },
    {
      "commit": "e57319ff880c43b44aaab4905dc8997d97827520",
      "tree": "3fb494b7f3b52b95a4350d152962967915e366d1",
      "parents": [
        "abfac6a55984fc7f0cf044371104c4e1b0b65fbf"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Fri Feb 17 14:35:18 2012 -0800"
      },
      "committer": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Fri Feb 17 14:35:18 2012 -0800"
      },
      "message": "Make the credential storage change action public.\n\nBug: 6009802\n\nWhen the credential storage changes, (adding/removing certs,\nresetting the storage, enabling/disabling trusted CAs, etc), the\napplications that use the storage has to be made aware of the\nfact that the storage changed, so they can clear any cached state,\nclose connections or take any other actions. Internally, this\napplies to webview. However, applications, potentially including\n3rd party browsers, also need this information.\n\nChange-Id: I765b97a3f38f45247ee3f6e127b490388d373847\n"
    },
    {
      "commit": "93ba4fedebb78ba47c24e8472c8960ea8fdc933a",
      "tree": "66f36a06854e538cd83fab14c5e8662ef40abd03",
      "parents": [
        "dbbb175258d39fc8a528527a8ce1ad4cb338b496"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Tue Feb 14 11:48:49 2012 -0800"
      },
      "committer": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Thu Feb 16 14:24:10 2012 -0800"
      },
      "message": "Act on credential storage updates.\n\nBug: 6009802\n\nCherry pick fcd93b72a3dde2b20fa0d8b04d3f47311b0856a1\nListen to credential storage updates and clean state when necessary.\n\nChange-Id: I2c63e6771e9373da8b39781fdcf3d21583c4e3b2\n"
    },
    {
      "commit": "43e41580e4c700e970cc5e62180a767ab424da6d",
      "tree": "51ce4cc891d418ebab7d1f4bf64a5c0210567689",
      "parents": [
        "fcd93b72a3dde2b20fa0d8b04d3f47311b0856a1"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Wed Feb 15 19:04:04 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Feb 15 19:04:04 2012 -0800"
      },
      "message": "Revert \"Act on credential storage updates.\"\n\nThis reverts commit fcd93b72a3dde2b20fa0d8b04d3f47311b0856a1"
    },
    {
      "commit": "fcd93b72a3dde2b20fa0d8b04d3f47311b0856a1",
      "tree": "8d56f6f2dff57a0f97eb1f0c3f5c7a88cfe81dcf",
      "parents": [
        "b17932fe84f84a660194d25d56ce06324b1bf28d"
      ],
      "author": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Tue Feb 14 11:48:49 2012 -0800"
      },
      "committer": {
        "name": "Selim Gurun",
        "email": "sgurun@google.com",
        "time": "Wed Feb 15 10:02:25 2012 -0800"
      },
      "message": "Act on credential storage updates.\n\nBug: 6009802\n\nListen to credential storage updates and clean state when necessary.\n\nChange-Id: I48f2e7d6e036882c2b4a29fbd357ca018fd4e4c7\n"
    },
    {
      "commit": "ab8b84ad3847788d83da557606aa27d4102e6b52",
      "tree": "1e9ecca2953c3c8b4fe39c374a4d86e0ed8303c2",
      "parents": [
        "8c55a9a57e4f13ec420c3de7b3abfdcf454f6633"
      ],
      "author": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Wed Jul 13 14:55:39 2011 -0700"
      },
      "committer": {
        "name": "Fred Quintana",
        "email": "fredq@google.com",
        "time": "Wed Jul 13 22:45:07 2011 -0700"
      },
      "message": "Make the KeyChain handled its own grants rather than having\nAccountManagerService handle them.\n\nChange-Id: I89d272b22766f85019c1f947153d69e6dbb74c68\n"
    },
    {
      "commit": "74e6bd7b7783fb506d7525e9ba40aac980745eaf",
      "tree": "ba5021a7f07abdbf6c2766973c50f4d8e614c8f0",
      "parents": [
        "28db8b944a589b9db0474c90e64875c6023292bb",
        "ca43c458ad0ee8cfa7f5eabc8ba1a65ae473976b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 06 14:59:21 2011 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 06 14:59:21 2011 -0700"
      },
      "message": "Merge \"New KeyChain API for credential installation\""
    },
    {
      "commit": "db93b78385d694402760ad63de0795f3902030d9",
      "tree": "0e43bd94879c2db988648b5c33b674e89625abe1",
      "parents": [
        "748d9f2fe4db14d1f0f140a92ff7e6cc27dcd732"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 01 00:12:17 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 01 14:41:56 2011 -0700"
      },
      "message": "Build cert chain in KeyChain.getCertificateChain\n\nBug: 4970298\nChange-Id: Id91391233528edc2a4da5ebe92ec85d381f170de\n"
    },
    {
      "commit": "ca43c458ad0ee8cfa7f5eabc8ba1a65ae473976b",
      "tree": "dcfa3b84dbeefe5928770600b316bc94e6de02e0",
      "parents": [
        "6e24576b6b10336e37c6447a5e2dbde5ea332da6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 29 18:53:17 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 29 20:32:54 2011 -0700"
      },
      "message": "New KeyChain API for credential installation\n\nBug: 3497064\nChange-Id: Ie5c20e87a436b7ab66258d08b719ab8bb1f1d86d\n"
    },
    {
      "commit": "a00a2b33ccc6bc079c3ee57a938f62947b48a001",
      "tree": "5e057ff17cca7fb2ab224ac1abd81bfc34e4325b",
      "parents": [
        "afb60c36b7879c4ed195fb19cc4334175be28c92"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 29 10:42:35 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 29 18:46:56 2011 -0700"
      },
      "message": "KeyChain API for credential installation\n\nBug: 3497064\nChange-Id: I4ac4d8b5559496b1632d63c2129e2bafd240893f\n"
    },
    {
      "commit": "bef5e5aabcb6ab440829f4418d1cbc268564eee0",
      "tree": "c2312f4e06065bec972b66f0ad292ca0fdca5fbc",
      "parents": [
        "5106476bbf2a8e89b47e91d60e20fd38f7fa7e85"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 27 17:22:02 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 27 17:22:02 2011 -0700"
      },
      "message": "Add KeyStoreTest.testGet\n\nNow that system user can read keystore, add KeyStoreTest.testGet and update other tests to use KeyStore.get\n\nChange-Id: I364866d52c2ecf550ff26aadc6e85126318889fa\n"
    },
    {
      "commit": "6da00334478df64921b68fcbb45c9d1eef6f35bd",
      "tree": "62903589cfc52fadf5ae070a6448304319c7a109",
      "parents": [
        "a084c841aa4b5c0ab2e0e7a62c58a852633adb62"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Jun 26 21:08:03 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 27 12:14:25 2011 -0700"
      },
      "message": "Moving ssl_certificate layout, resources, and helper code to SslCertificate\nAdd IKeyChainService.deleteCaCertificate\n\nChange-Id: If42341bc732efcfe4f958c00cdd6c0fec11a3c75\n"
    },
    {
      "commit": "67c30dfe8e4bff11a4660ac23e8679b5deb59457",
      "tree": "bf4811e6fbf0bcd12bb90f3a02824be69cfb3b9f",
      "parents": [
        "dde052f4ba57d74af25a513853bacc035368240e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jun 24 02:13:23 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jun 25 16:48:25 2011 -0700"
      },
      "message": "Replace KeyChainActivity placeholder UI with more polished dialog (1 of 5)\n\nframeworks/base\n\n    Extended KeyChain.chooserPrivateKeyAlias to allow caller to supply\n    preferred choice to be selected in chooser. This allows Email\n    settings to highlight the current choice when allowing user to\n    change settings.\n\tkeystore/java/android/security/KeyChain.java\n\tapi/current.txt\n\n    Implemented KeyChain functionality to pass host and port\n    information to KeyChainActivity for display.\n\tkeystore/java/android/security/KeyChain.java\n\n    KeyChain now sends a PendingIntent as part of the Intent it sends\n    to the KeyChainActivity which can be used to identify the caller\n    in reliable way.\n\tkeystore/java/android/security/KeyChain.java\n\n    Moved .pfx/.p12/.cer/.crt constants to Credentials for reuse.\n    Added Credentials.install variant with no value for use from KeyChainActivity\n\tkeystore/java/android/security/Credentials.java\n\npackages/apps/CertInstaller\n    Source of extension constants now in Credentials\n\tsrc/com/android/certinstaller/CertFile.java\n\npackages/apps/Browser\n    Have browser supply host and port information to KeyChain.choosePrivateKeyAlias\n    Tracking KeyChain.choosePrivateKeyAlias API change\n\tsrc/com/android/browser/Tab.java\n\npackages/apps/Email\n    Tracking KeyChain.choosePrivateKeyAlias API change\n\tsrc/com/android/email/view/CertificateSelector.java\n\npackages/apps/KeyChain\n\n    KeyChain now depends on bouncycastle X509Name for formatting\n    X500Principals, since the 4 X500Principal formatting options could\n    not format emailAddress attributes in a human readable way and its\n    the most important attribute to display for client certificates in\n    most cases.\n\tAndroid.mk\n\n    Changing the UI to a dialog, make the activity style transparent.\n\tAndroidManifest.xml\n\tres/values/styles.xml\n\n    Layout for chooser dialog\n\tres/layout/cert_chooser.xml\n\n    Layout for list items in chooser\n\tres/layout/cert_item.xml\n\n    New resources for dialog including comments for translators.\n\tres/values/strings.xml\n\n    New dialog based KeyChainActivity. Now also shows requesting app\n    and requesting server. Now can preselect a specified alias. New\n    link directly to CertInstaller.\n\n\tsrc/com/android/keychain/KeyChainActivity.java\n\n    Fix KeyChainTestActivity to work with TestKeyStore changes that\n    were causing network activity on the UI to look up the name of\n    localhost. Also track KeyChain.choosePrivateKeyAlias API change.\n\n\ttests/src/com/android/keychain/tests/KeyChainTestActivity.java\n\nChange-Id: I07128fba8750f9a6bcb9c6be5da04df992403d69\n"
    },
    {
      "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"
    }
  ],
  "next": "93201f545b67da15cb69830a5988810aef52c0b2"
}
