)]}'
{
  "log": [
    {
      "commit": "5b680802b6774491fbcee69e394d097d4bfcf42e",
      "tree": "7ad1163a5de706df8c48dbc9c1e9c7fd0421fc2a",
      "parents": [
        "972f0e3806f379b7fb6e43265f56ddd91c38107e"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Wed Sep 16 15:43:15 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Sep 17 12:17:29 2009 +0800"
      },
      "message": "Fix a minor bug in is_alnum_string()...\n\nand remove some verbose logging\n"
    },
    {
      "commit": "a7df557aa2573a4718c7bbd069268e62bc036753",
      "tree": "606824416def47dd79b782fb4037aa180fca8d93",
      "parents": [
        "d304ae583d862250a21b5949fc3dbdf3af1febac"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Sep 11 18:34:28 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Sep 11 19:30:13 2009 +0800"
      },
      "message": "Add tests and misc fixes on keystore.\n\n* Refactor netkeystore.c to make client and server code testable.\n* Add a client test for setting new passwd and changing passwd.\n* Exclude \".\" and \"..\" from reset_keystore().\n* Change ServerCommand.executeCommand() to accept variable length of\n  arguments and add convert() to marshalling the args to bytes.\n* Keystore.java is revised accordingly.\n"
    },
    {
      "commit": "9249cc69b83c7b055ae477c4539bdc451fe7f9b9",
      "tree": "c46cac7e798f63e379a5684931cc362d97165f31",
      "parents": [
        "24d237db943051942b5966f5e788d67050ec0ba5"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Sep 08 16:47:51 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Thu Sep 10 12:51:07 2009 +0800"
      },
      "message": "Add two CertTool helper classes.\n\nAlso add the unlock action string to Keystore.\n"
    },
    {
      "commit": "37062b93dcb7c72919be8d33303606cdab936c11",
      "tree": "5bb7c58b073f07777253d25a297b61bac4b67d10",
      "parents": [
        "ccda4c4960ad6694e506e075f8f0b479ea2bafb6"
      ],
      "author": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 10 03:55:33 2009 +0800"
      },
      "committer": {
        "name": "Chia-chi Yeh",
        "email": "chiachi@android.com",
        "time": "Thu Sep 10 03:56:04 2009 +0800"
      },
      "message": "keystore: remove \"#include \u003copenssl/engine.h\u003e\".\n"
    },
    {
      "commit": "801b73f661cbdf92de94b7e552a190fcbbdc3168",
      "tree": "d67ad7b9bca1e97a7cc4ecbab4c6e680933ab1b6",
      "parents": [
        "88e625795943dea84b2e7c32f37e71303143b728"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 08 03:52:45 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Sep 09 15:00:43 2009 +0800"
      },
      "message": "Replace the delimiter whitespace with \u0027\\0\u0027.\n\n+ Use \u0027\\0\u0027 as the delimiter.\n+ Allow whitespace character for keystore password.\n\nIn previous implementation, we use space as the delimiter. That\nwill stop user from using passphrase with whitespace character.\n"
    },
    {
      "commit": "60c821c8eeca28d34fb02cf5e35dadf168e1312e",
      "tree": "7e49e7920894e505e1dfbd02b7c4ad64c8f18f63",
      "parents": [
        "09960230bf3d46ec1e7cbcfd8b07dfe007b9fa96"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Sep 02 11:54:24 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Sep 02 11:54:24 2009 +0800"
      },
      "message": "Print error message if the buffer size is too small.\n"
    },
    {
      "commit": "09960230bf3d46ec1e7cbcfd8b07dfe007b9fa96",
      "tree": "0cdb96cc728125bcae41709a027811cbd6beee2b",
      "parents": [
        "c98d68cd56338ec57695b3c35114fbde88d4bde8"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 01 16:45:13 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Sep 01 16:45:13 2009 +0800"
      },
      "message": "Store CA certificate chain into one single key entry with PEM format.\n\nExtract all CA certificates in a PKCS12 keystore into a single entry in keystore with multiple PEMs.\n"
    },
    {
      "commit": "d21a04c06c0d9b1cb401c30bf6da778010872957",
      "tree": "605df7209d6a7b3adef1459e5ba7e66395a2e6f7",
      "parents": [
        "ed5fede3f8a376ebed46beeb41796838847ad68d",
        "20a1156c6fd30f3ec1336894d6ae7e00298ad65b"
      ],
      "author": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 26 20:29:17 2009 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 26 20:29:17 2009 -0700"
      },
      "message": "Merge change 21259 into eclair\n\n* changes:\n  Make certificate-handling-related constants public\n"
    },
    {
      "commit": "969c2eaa3ac2501931b0ce67d831262e6f3d6cf6",
      "tree": "376710b2e2e957a434f4f67d74fed6b650b60fb0",
      "parents": [
        "2685d3b85b3ad5fcb5362abdfb9037fc89deb714",
        "c8ab08aa86aea3b693f731c9e817eeb71ab4c1cd"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 18 08:44:43 2009 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Aug 18 08:44:43 2009 -0700"
      },
      "message": "am c8ab08aa: Merge change 21124 into donut\n\nMerge commit \u0027c8ab08aa86aea3b693f731c9e817eeb71ab4c1cd\u0027 into eclair\n\n* commit \u0027c8ab08aa86aea3b693f731c9e817eeb71ab4c1cd\u0027:\n  Add license-related files\n"
    },
    {
      "commit": "20a1156c6fd30f3ec1336894d6ae7e00298ad65b",
      "tree": "fa4fcc5c2c3d03272493eb572a0d8fd8ed1be24b",
      "parents": [
        "a31deaf4a960058e533da35d6229f7aa8d4f00c1"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 31 20:34:03 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Aug 14 18:35:44 2009 +0800"
      },
      "message": "Make certificate-handling-related constants public\n"
    },
    {
      "commit": "979b142fa508eef5a24dfc874a945f5662f2566e",
      "tree": "b548bab36f110c0ad484b3cdf7d3c33fec2f2a87",
      "parents": [
        "4431a0650774ae72ce89d0f9c90903dcc81fab8b"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 10:58:11 2009 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Thu Aug 13 10:58:11 2009 -0700"
      },
      "message": "Add license-related files\n\nBUG\u003d1573996\n"
    },
    {
      "commit": "f1ab36f9ab82220de679ff0ca5164995b7d30214",
      "tree": "bdf73fa71e3ac244eb57ba123b634d5ca78b6f52",
      "parents": [
        "0f0767d4daa847314bd9473ef3650d26d1c51c8c"
      ],
      "author": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Wed Aug 05 18:06:27 2009 +0800"
      },
      "committer": {
        "name": "repo sync",
        "email": "cywang@google.com",
        "time": "Mon Aug 10 16:13:00 2009 +0800"
      },
      "message": "Fix network order for marshalling in keystore interface.\n\nThis will fix the endian issue for heterogeneous architectures in keystore marshalling interface.\n"
    },
    {
      "commit": "dc1d5704a725d207b98de1b117847297958d9148",
      "tree": "dd2e823cd931992d8bbafd054dcfedf567bf7055",
      "parents": [
        "b86bad9493a331a09dd765bc6e725c0aec969ff6"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 15:01:58 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Mon Aug 03 15:11:36 2009 +0800"
      },
      "message": "Fix the auto notification cleanup when vpn is disconnected.\n\n+ add the log print if the browser give the incorrect data in addCertificate().\n"
    },
    {
      "commit": "e81f51f44b4cfb8316de1d206038414ee6f6e96b",
      "tree": "e0ea02d004c77df56fb98fc5d9d48b875420ed7f",
      "parents": [
        "1f1602e7291ab2b4d8d76db33c89828b6e58e6c0"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sat Aug 01 10:11:46 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Sat Aug 01 10:11:46 2009 +0800"
      },
      "message": "Change some log.i to log.d.\n"
    },
    {
      "commit": "fd3db87e28e5b9ed186a15944234f6ff520773c6",
      "tree": "e21771e9cf7e20c51676f7a86ab659592441dffe",
      "parents": [
        "191452378639f1135c9591e21911ce250d140769"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 18:37:13 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 18:37:13 2009 +0800"
      },
      "message": "Support x509-user-cert mime type in browser.\n\n+ Fix the public key matching and intent parameter mismatch.\n"
    },
    {
      "commit": "191452378639f1135c9591e21911ce250d140769",
      "tree": "f92f5aae2ba422aca3bcd83992176a6e55c097b1",
      "parents": [
        "d0021dcae7f474c062f23a449bdd18be5e882d7e"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 15:15:51 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Tue Jul 28 15:18:22 2009 +0800"
      },
      "message": "Forgot to convert the jstring to char* in certificate request.\n"
    },
    {
      "commit": "719eba5bb1fbc72e3b55450f16b38a6be5640055",
      "tree": "edd5b5178e70733642d9d5275d6a6102bcd657f3",
      "parents": [
        "75b681639d3945d22d4ab90856a65a05405d2538"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 24 11:33:45 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Fri Jul 24 11:33:45 2009 +0800"
      },
      "message": "Change to SPKAC certificate request format for keygen.\n"
    },
    {
      "commit": "24988b34919d65d4e66be69ec0885154c47e85b7",
      "tree": "ca4dd6c8e9827c0af5d7ccdedf147ca48f03f734",
      "parents": [
        "841ed8596a745d90822467bc2c0e13880bb59cc9"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 06:04:58 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 06:04:58 2009 +0800"
      },
      "message": "Cleanup the old keystore APIs.\n"
    },
    {
      "commit": "22726cf8174fe00a097c89b8da397b10626cdd00",
      "tree": "f724f69a84275a72f1b0f0d7949740b418c17bb2",
      "parents": [
        "8ece3445e8c95d02a47737ea2ac2d52a696143cd"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 05:31:48 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jul 22 05:35:20 2009 +0800"
      },
      "message": "Return error codes for storing the key/cert in addPkcs12Keystore()\n"
    },
    {
      "commit": "c9c119e7338cab292385118229f884a88fead3a2",
      "tree": "cb4e8f22b73aacbfc45ec80c66b693a47af5e3bc",
      "parents": [
        "f32f746b83826303350417ff9937a6f9e5488f24"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 16 19:54:33 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sat Jul 18 01:17:20 2009 +0800"
      },
      "message": "Support addPkcs12Keystore function in CertTool library.\n\nThe function will be called from the credential storage for decoding\nthe pkcs12 file and saving the certs/keys into mini-keystore.\n"
    },
    {
      "commit": "699ca3f2518360ea3250ff5a0e5d39e122c64a91",
      "tree": "dcdeefe39f5cb52cc02d63039be4c9a4427eb9bc",
      "parents": [
        "4492bcb851f4ee862a446664eb9045045ebb7b5e"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sat Jul 04 22:19:51 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sun Jul 05 11:06:01 2009 +0800"
      },
      "message": "Add password field for WiFi configuration.\n\n1. the certtool.h is modified for avoiding the side effect,\n   for saving the configuration with wpa_supplicant.\n2. put the loadLibrary back in CertTool.java\n3. Fix incorrect JNI declarations.\n"
    },
    {
      "commit": "bf20b9963add781a35de658f3228760015a163c9",
      "tree": "ab310659e9be96273833221ba4dbf9863eba1407",
      "parents": [
        "24ad29c6dbbf62096bcb41ddb2fa3975720ee625"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 23:42:12 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Sat Jul 04 00:22:51 2009 +0800"
      },
      "message": "Migrate to the CertTool library.\n\nKeystore is reimplemented and it is mainly for storing\n(key, value) pair generically. The certificate related\nAPIs are moved to the class CertTool instead.\n\nUpdates:\n  Provide the getInstance() which gives the singleton.\n  Fix the missing construction of the BIO in cert.c.\n"
    },
    {
      "commit": "116d890aea63a4191a93412f5cecf5defad25201",
      "tree": "b0bd5d04e6cce6717ecb3d62e19ead62d3fd1a26",
      "parents": [
        "4bca97ecaf04c50d5ed49920d119f9ffa6c29402"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 03 17:38:59 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Fri Jul 03 17:38:59 2009 +0800"
      },
      "message": "Fix null data handling in ServiceCommand.writeCommand()\n"
    },
    {
      "commit": "fa927c046a916fceb077d1ecf2552d76e73da912",
      "tree": "1bd090be6f71aa36b96e3a2218b6f9b97316af3e",
      "parents": [
        "eec11827a6c06b029030f43c8d54fd871cc3347d"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 19:11:11 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 23:08:39 2009 +0800"
      },
      "message": "Remove the null-termination for Java string compatibility.\n\n1. Also change the keyname delimiter in CertTool.java.\n2. Return NOTFOUND if the result.len\u003d\u003d0 in the listKeys().\n3. Define the keystore states in the class Keystore.\n"
    },
    {
      "commit": "eec11827a6c06b029030f43c8d54fd871cc3347d",
      "tree": "6ed138af9f9d632cc6e74dbb517626adb802ac96",
      "parents": [
        "d45dcbec856710f9478ffc5689e7cdf95d757ab8"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 00:22:04 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jul 02 18:56:12 2009 +0800"
      },
      "message": "Add CertTool for handling the keygen and certificate download.\n\n1. Have the new Keystore for mini-keystore impelemntation.\n2. Add CertTool library and jni dll for handling keygen and certificates.\n3. Make Reply hidden.\n4. Revert some \u0027incorrect\u0027 change and correct the description.\n"
    },
    {
      "commit": "3af8e9389e008c0076b86cc6b3c6f005e7473d10",
      "tree": "84acce43fa9a460e2d888cea9df28b0bbe1ec5ee",
      "parents": [
        "5254657540b0a6ad54be6229b68fa5626e4ef9e5"
      ],
      "author": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Fri Jun 19 15:03:46 2009 -0700"
      },
      "committer": {
        "name": "Grace Kloba",
        "email": "klobag@google.com",
        "time": "Fri Jun 19 15:09:34 2009 -0700"
      },
      "message": "Change addCertificate to take byte[] instead of String as we don\u0027t know the encoding.\n\nIn WebView, if we run into the certificate, we will save it to the Keystore instead of sending it to the WebKit.\n"
    },
    {
      "commit": "6d531bf0513de7778c380d649bc0e554478f78f9",
      "tree": "10ac2aad8a0d60d7990a9ac538b64b2d98a5aa15",
      "parents": [
        "653349fe48f2995d9e17b5e0a4110925cffdaeab"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jun 17 01:29:21 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jun 17 14:32:05 2009 +0800"
      },
      "message": "Change the keystore APIs.\n\n1. simplify the keypair selection in UI.\n2. add the user certificate and key into the keystore for keygen feature.\n"
    },
    {
      "commit": "396c69ca8d938c8705faf602b87729072bf8839c",
      "tree": "3db9a82ce6f79a804091f6037cb55786d6dd9fb5",
      "parents": [
        "1d51e50d5d484c5d9e620b1d6736adc9aa99ae84"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 23:51:51 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 23:57:16 2009 +0800"
      },
      "message": "Change the first parameter of Keystore.generateKeyPair() to int.\n\n* changes\n  change the parameter to the index to the supported key strengths\n  remove the exception class as it is not useful now\n"
    },
    {
      "commit": "1d51e50d5d484c5d9e620b1d6736adc9aa99ae84",
      "tree": "20793d63fda275271d8433554591b9157feeb375",
      "parents": [
        "0304325dd72ff8713c8444e909d387af1447f86f"
      ],
      "author": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 16:14:14 2009 +0800"
      },
      "committer": {
        "name": "Hung-ying Tyan",
        "email": "tyanh@google.com",
        "time": "Tue Jun 16 17:14:38 2009 +0800"
      },
      "message": "Add keygen API to Keystore.\n"
    },
    {
      "commit": "10e371f18247dc7fb64bfa0f0528501acc17be79",
      "tree": "630ce090cba0314696dd405f6cd3155773cc445a",
      "parents": [
        "a05487dd856222bacf57a41f2dfe1194d3776f05"
      ],
      "author": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Wed Jun 10 18:45:14 2009 +0800"
      },
      "committer": {
        "name": "Chung-yih Wang",
        "email": "cywang@google.com",
        "time": "Thu Jun 11 17:28:40 2009 +0800"
      },
      "message": "Provide the Keystore feature in the framework.\n\n-- added the keystore library for Java application.\n-- changed the marshalling of the keystore function return.\n"
    }
  ]
}
