)]}'
{
  "log": [
    {
      "commit": "6efed6c20ea6028c972acc3936d421fef646f815",
      "tree": "0d121d311a94000b66f0c0d9281af2bd0a557b5f",
      "parents": [
        "ab02873e8f4e235b0db800521dd0c969ed38c0b9"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Mar 17 16:31:20 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Mar 17 16:31:20 2010 +0800"
      },
      "message": "keystore: rephrase the comment to make the usage more clear.\n\nChange-Id: I529ca7ed443060089c95fe96dd230288be4b6c96\n"
    },
    {
      "commit": "5bf4691382de5bdb2a212fefda9d6c99086bb5ec",
      "tree": "ac4066fd4b8a7e45d6effbdf6b52de108dbea584",
      "parents": [
        "ca2dc3c8048eb9af2abfa5ee94e9eb370e1db17b",
        "e3bc02347197a49aa061084073bde9fbea90cb80"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Mar 08 17:50:56 2010 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 08 17:50:56 2010 -0800"
      },
      "message": "Merge \"keystore: add AID_ROOT into the user table.\""
    },
    {
      "commit": "e3bc02347197a49aa061084073bde9fbea90cb80",
      "tree": "cf33c9b0c85e98c1688ee40f78c9387298f1f119",
      "parents": [
        "eb8e5e45f83519277aecb49556a39e4970cc469a"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Mar 09 09:41:32 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Mar 09 09:44:07 2010 +0800"
      },
      "message": "keystore: add AID_ROOT into the user table.\n\nChange-Id: I4b9cf24d75ca79583d7913bbb2c33745a2316cde\n"
    },
    {
      "commit": "0755483539d97cbf4b78e3a756302994d81f09a9",
      "tree": "996e417f3e082f3a63d6c103ad2aac4dacd5cc26",
      "parents": [
        "eb8e5e45f83519277aecb49556a39e4970cc469a"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Mar 08 17:21:35 2010 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Mar 08 17:21:35 2010 +0800"
      },
      "message": "keystore: allow \u0027\\0\u0027s in keys and add guards for cplusplus.\n\nChange-Id: I0af6ed7c5d51ce4ca39cb837e475942800cf6e2d\n"
    },
    {
      "commit": "b78679e18db941fa0c104d728db128cf9ee21dc7",
      "tree": "8ddb03e837ac7663992df244c637007e69c3269e",
      "parents": [
        "872db948a0366cc4d47cd4cd343f625a206b2eed"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Dec 30 10:38:39 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Wed Dec 30 10:38:39 2009 +0800"
      },
      "message": "keystore: compute the padding in an intuitive way.\n"
    },
    {
      "commit": "ced66258e11cf87277aa2ceaa02903d1c1f132c9",
      "tree": "8f4826f017d53bf9aa84d38c539f77b1ac8a49ee",
      "parents": [
        "cbc7399f773664fee7246fd5113885fa970960b6"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Dec 22 17:02:45 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Dec 22 17:26:42 2009 +0800"
      },
      "message": "keystore: Add paddings before checksumming.\n\nAlso fix a file descriptor leak when file system is nearly full.\n\nBug: 2339184\n"
    },
    {
      "commit": "4424dd7dd5d3a0aea9b1a3375db5d65bc8675bb8",
      "tree": "eef7da401bf461b8cd366bf78c9cb252cabb0f3c",
      "parents": [
        "7b7c3c15154f95e693981f863f563fba41a7b993"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 24 13:35:26 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 24 13:35:26 2009 +0800"
      },
      "message": "keystore: remove old implementation and test.\n\nThe new tests will be implemented in java.\n"
    },
    {
      "commit": "1cdc2a4b810605ea20306102d99ebb5c9cabc6fb",
      "tree": "712b50aac497a9e7ace77d635742d39fa9fe7c5d",
      "parents": [
        "4654d3143224ee8858f6ef37a8165047dfb17bff"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 02:57:52 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 02:57:52 2009 +0800"
      },
      "message": "keystore: rename scan() to saw().\n"
    },
    {
      "commit": "c5dbc5e98ab8342d04f85c051c545c0980f5d98b",
      "tree": "fd7de16d7a728837eb2bb931f755f7c2e71381c7",
      "parents": [
        "15b047cfb2146e37c76df303b4a5720009ec0aed"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 00:43:13 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Tue Sep 22 00:43:13 2009 +0800"
      },
      "message": "keystore: exclude builds for simulator.\n"
    },
    {
      "commit": "dd2a71eebcc55de9fc6e21e2f1335c1c2fb68257",
      "tree": "2c61f98e5d883ed298cd2152088e2bcf35d96d16",
      "parents": [
        "2f3b2a5aa698c82313551d59f9237a6a7849c300"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Sun Sep 20 10:15:46 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Sep 21 11:36:33 2009 +0800"
      },
      "message": "keystore: enable delete(), scan(), exist() when keystore is locked.\n\nAlso check end-of-file explicitly.\n"
    },
    {
      "commit": "2f3b2a5aa698c82313551d59f9237a6a7849c300",
      "tree": "22d114da68d5066b766ea736e09acbf53edc5442",
      "parents": [
        "b3f93c06cff31f9b1b83ba2c4fc5ae7916754e59"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 18 17:23:53 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 18 17:23:53 2009 +0800"
      },
      "message": "keystore: switch to multi-user version.\n"
    },
    {
      "commit": "4cff21f21b583c9994b250154702370c84ea9c60",
      "tree": "32cf290ce7b5f0e1137d19bff8dd2c7e0e451080",
      "parents": [
        "817cfefe109db824804d2e9701c9c553edf5103b"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 18 10:15:37 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Fri Sep 18 11:49:55 2009 +0800"
      },
      "message": "keystore: add multi-user support.\n\nChange-Id: I60268261110934a1d60efa341ff530f94415724f\n"
    },
    {
      "commit": "408c5f2c9846780f05c2a3b3c837fecd5f5c74a6",
      "tree": "a29ed8e8f6665a11b07da127aa25c527f2dd5cd5",
      "parents": [
        "5ec064cfce1abbf51dcf1eb8256a66af5aa442f7"
      ],
      "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": "b2de5bd4dafa0c8a494a654210298d2be8bb04f8",
      "tree": "bee0f90ddf3b16babca025dd93676509b93aeff6",
      "parents": [
        "63a85fc420537d6bf2b8717d35c578806056b9e7"
      ],
      "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": "2a58b6dbf07677e9875ba2306bc118c3eb9aebc6",
      "tree": "ac106bb4e54837089fe1632a8041f96ace90317c",
      "parents": [
        "20ef5001d7e92100e636ecab71799cfd1a07f7b0"
      ],
      "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": "74c332f18412bcc9516f85591900677c40b45475",
      "tree": "5c65acc721b611604684f8370c05c8d00312b1ee",
      "parents": [
        "c1f2b9cd6f5be1096d60724b21417c9379ac19ff"
      ],
      "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": "23c95b3b3277260d7ada14637d9da309695c6c40",
      "tree": "e773ce8f5805b1a8b90bb3ef17679f12241d8398",
      "parents": [
        "f8c8a652cda98094f8beb6ffbc7852b2ded25a86",
        "6cdee5801063c9c332193a186d973a4993c1dd31"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 31 20:15:15 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 31 20:15:15 2009 -0700"
      },
      "message": "Merge change 9438 into donut\n\n* changes:\n  Change some log.i to log.d.\n"
    },
    {
      "commit": "6cdee5801063c9c332193a186d973a4993c1dd31",
      "tree": "e36a446ca5e1fcd70b4dfb44ef0c095b4f8abe30",
      "parents": [
        "907a880fa24500aa4e3476f99cfabf4343236435"
      ],
      "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": "ccf407f7acf7c12a59c9f053bcac0840371c9848",
      "tree": "490d8a65f6aea654ddf38c589350759ed422cfcf",
      "parents": [
        "e84bee9bbfdf394f20efcb383a431ae44100c6d4"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 30 12:31:08 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 30 16:37:48 2009 +0800"
      },
      "message": "Add unit tests for netkeystore.\n\n+ some boundary checks.\n"
    },
    {
      "commit": "11e9f3dd260935cac33a9a6fa45aafa9d87d495a",
      "tree": "79cbba6b7e1d5b9cbb435e246b05fa6a64c75429",
      "parents": [
        "174d638c96aef9eeaf0ee7ae334c8ff9a6b415bf"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 23 07:23:24 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 24 11:24:31 2009 +0800"
      },
      "message": "Add memcpy and strcpy boundary check.\n"
    },
    {
      "commit": "23c7adc5e9e27185ca0a69974a8268ec9e86b9b9",
      "tree": "8a37d6dd1a4d4611fc7e26d86cdf4a7d540e3986",
      "parents": [
        "675e4d3db972e621b1785aa7a4b8aeecee7dbbe4"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jul 16 14:45:11 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Jul 16 14:45:11 2009 +0800"
      },
      "message": "keystore: Fix a compile warning.\n"
    },
    {
      "commit": "dea9f552741c86897ca5cd2ee23f48da8c49f4b1",
      "tree": "070d966b5d9d70b483c99ea344deafb9c47c76b5",
      "parents": [
        "6ac03019e68e6cd8732c5c1670eb71f4840010e2",
        "5d0ca76229bffd0d3d2e2234033a78cb57e7739c"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 06 00:04:54 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 06 00:04:54 2009 -0700"
      },
      "message": "Merge change 6198 into donut\n\n* changes:\n  keystore: Provide a generic getter for native components.\n"
    },
    {
      "commit": "5d0ca76229bffd0d3d2e2234033a78cb57e7739c",
      "tree": "aa4c772b13920667c0b055ca5ada07ec7b9480fb",
      "parents": [
        "928f5052b5f7dfffa2921af769045d85eb483c79"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jul 06 11:13:25 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Mon Jul 06 14:33:09 2009 +0800"
      },
      "message": "keystore: Provide a generic getter for native components.\n"
    },
    {
      "commit": "6ac03019e68e6cd8732c5c1670eb71f4840010e2",
      "tree": "b35e00833f4fa339ad7160860f09f23cfc8cc9f9",
      "parents": [
        "928f5052b5f7dfffa2921af769045d85eb483c79"
      ],
      "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": "37b49519cc2bd8c3b907f7bf3f8f5c21f5692103",
      "tree": "e4041395086d5c0aa2d9bd24ad8ee6c2d136f495",
      "parents": [
        "3fca571773ac0ba2f5ee7816f81c9948e04f89db"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 03 12:09:52 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 03 12:14:36 2009 +0800"
      },
      "message": "Two small checks in keymgmt.\n\n1. Enforce the state check in listkey().\n2. Enforce the password length check.\n"
    },
    {
      "commit": "7bd460b1208dcd41969e5928ad3c3680962bedce",
      "tree": "e91284bf414680579b10d8ef95546920cf4ec16a",
      "parents": [
        "dca4e5332cd1f3ce13a3c8b1938eee6689f7f410"
      ],
      "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": "c186c66a297ec036b3c3dc2ba43553096a753f3f",
      "tree": "67fb6a498d1adde5cc7ca6be1059cb65ac1a410b",
      "parents": [
        "ce6d17210750258ac990cbd13bfeaf9252cf2bb5"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Jun 29 03:12:56 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 14:08:20 2009 +0800"
      },
      "message": "Implement the generic mini-keystore for security.\n\n1. We will progressively migrate to this implementation.\n2. For richc to have a quick review on the keymgmt part.\n3. Add remove_key and make sure all functions are working.\n4. Add permission check for get operation.\n5. Return the retry count if unlock failed.\n6. Add the reset operation for keystore reset.\n7. Add the putfile shell command for putting the key value from file.\n8. Fix the boundary issue during parsing command.\n9. Use the \u0027 \u0027 as delimiter and reset the reply structure for each request.\n10. Add change password retry count check.\n11. Extract the read_marshal/write_marshal for certtool.h.\n12. Remove the old implementation.\n"
    },
    {
      "commit": "4c40420cd231b42a38b84577d6731ce8b0fa1269",
      "tree": "1d24eeef47ec6fc3eaa8b44a5c0323c3c44b7634",
      "parents": [
        "b6d1e5b8ece3e79b606d8441edf89419acf38390"
      ],
      "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": "8fcbada742d8ada3ec14e1625e8e345128e38c20",
      "tree": "8ce85ed2526da348f635d2ae0931d9f3465a6561",
      "parents": [
        "cd2281eea54ae1f99ac1822ef579c62449c7efa9"
      ],
      "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"
    },
    {
      "commit": "a92d5dc0f6d3aadbc64a029ecfacca2f19a661e7",
      "tree": "12af6c9bb70c3f732500ea2be64543c69a4fbcc3",
      "parents": [
        "383bce90737871de0b80082eb3a7925528aae754"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Jun 08 16:34:54 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Jun 08 16:34:54 2009 +0800"
      },
      "message": "First version of the keystore service.\n\nThe keystore service is protected by the user \u0027keystore\u0027. Only keystore\nuser/group can access the key content. All users are able to do the\nfollowing commands from shell as well:\n  listcerts\n  listuserkeys\n  installcert\n  removecert\n  installuserkey\n  removeuserkey\n"
    }
  ]
}
