)]}'
{
  "log": [
    {
      "commit": "bf9a82a6433701aa2f02761f3a7c425ffef4fa09",
      "tree": "ccf4acc0a984848ac438104d20014a036e6cc2e9",
      "parents": [
        "822de0d90cb4d76d5a8bd655f3c9a94f9bc25d7a"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Mar 25 10:12:19 2016 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Mar 25 14:48:44 2016 -0700"
      },
      "message": "Add handleTrustStorageUpdate\n\nThis pruns all the stored trusted issuers so that changes to the system\nor user CA store are detected. Currently this is only exposed as a\nTestApi, but it can be hooked up to the trusted storage change event\nin a future commit.\n\nBug: 27526668\nChange-Id: Ic426254babab9a3177c968bc05b45e95eaac1fdd\n"
    },
    {
      "commit": "7cc736da82b814b383daaa59609372917fd004cd",
      "tree": "abe8a3963e9fb282f53562cadd85823d44ad55d3",
      "parents": [
        "7c891700995276c9f6952d0e1f2a2c1882d66f3d"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Mar 23 14:59:14 2016 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Mar 23 15:28:41 2016 -0700"
      },
      "message": "Properly handle whitespace in domain entries\n\nDomain entries can contain whitespace (or newlines) which should be\nignored to avoid unexpectedly failing to match a domain.\n\nBug: 27816377\nChange-Id: I3691aa4abd409e7be97ad0cf1eb0195725e1b0ab\n"
    },
    {
      "commit": "567f6f24747c80b4ab362a22985576c4f8a418fd",
      "tree": "348247aeb61bc3d44bb0fff9a0503aab657c99ee",
      "parents": [
        "1ce163fe34ae05218d723acafc4dd47bd55cc8da"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Feb 29 14:02:32 2016 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Mar 01 12:42:54 2016 -0800"
      },
      "message": "Allow debug-overrides to be specified in an extra resource\n\nAn application can specify its debug-overrides in an extra resource with\nthe same name suffixed with \"_debug\" (e.g. res/xml/security_config.xml and\nres/xml/security_config_debug.xml).\n\nBy specifying the debug-overrides in an extra file release builds can\nstrip out the file (and any certificate resources that the\ndebug-overrides depend on) to prevent including testing configuration\ninformation in the release build of an application.\n\nBug: 27418003\nChange-Id: Ibfebc376360ca474fc0f9f2fd565faa0cffd9549\n"
    },
    {
      "commit": "32d2a1024f75f7e917f2aca18d34322a46d36bcb",
      "tree": "380523f9dbb4b5f6bbd2cc2fc7cb45635535e0d9",
      "parents": [
        "d78bf970ca8b7a48bf26651016c034b5e319456c"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Feb 23 16:01:55 2016 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Feb 24 10:36:27 2016 -0800"
      },
      "message": "Dont trust the user added CA store by default for apps targeting N\n\nAndroid\u0027s security model is such that the applications data is secure by\ndefault unless the application specifically grants access to it.\nApplication data in transit should have similar security properties.\n\nBug: 27301579\nChange-Id: I72f106aefecccd6edfcc1d3ae10131ad2f69a559\n"
    },
    {
      "commit": "aa6c3c3e252252b80c3900bd4c1ff27d37265c6d",
      "tree": "143c86a6fc3d42adef1b666505651fa7e9fa1043",
      "parents": [
        "47359e813d28570acb789463403bd9df123aaca6"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Dec 18 13:43:28 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Jan 13 15:19:45 2016 -0800"
      },
      "message": "Support TrustedCertificateStore.findAllIssuers\n\nChange-Id: I176ec42c9907e50ee218e4fb352b530ca797be46\n"
    },
    {
      "commit": "49ce7dc2baa9ee867fc7b78301c65fab2168a9b2",
      "tree": "8331e3acccafd87d8236b93ee0271a66525b3ff5",
      "parents": [
        "cfed01af4bea6ff9025c31fbe3ed973f47529484",
        "dd586a46c9ce5f9790ae097f491b088300603452"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Dec 14 19:30:44 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Dec 14 19:30:44 2015 +0000"
      },
      "message": "Merge \"Check for null hostnames in RootTrustManager\""
    },
    {
      "commit": "dd586a46c9ce5f9790ae097f491b088300603452",
      "tree": "cefe97f62997a073963487d04650be77fcc0a0f3",
      "parents": [
        "9613157d5efd09be07a0074a0122dd69265ca70f"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Dec 10 18:32:40 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Dec 10 18:32:40 2015 -0800"
      },
      "message": "Check for null hostnames in RootTrustManager\n\nEven if the hostname aware method is called if the hostname is null then\nthe destination is unknown and the configuration can be ambiguous.\n\nChange-Id: I7cacbd57a42604933fdc882371f143dc0a20902d\n"
    },
    {
      "commit": "fa9beebb83abe38fa04c14dc628bc5c1b4b068cd",
      "tree": "fffd0dd39998f8d115bc0f60fb431ac193929225",
      "parents": [
        "6fea66116c79ecb5232a1c7ae66ae2a6e62c1c12"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Nov 25 13:12:55 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Dec 01 12:19:39 2015 -0800"
      },
      "message": "Expose findByIssuerAndSignature\n\nThis will be used to create a custom conscrypt TrustedCertificateStore\nto avoid loading all of the trusted certificates into memory in a\nkeystore.\n\nChange-Id: Iaf54b691393ecadae6c7ff56b8adc6a2a2923d29\n"
    },
    {
      "commit": "d3af9620817220d737fdb532c1ae1032bdd65e11",
      "tree": "abf147a0d643303681a7110bcb78b279e886b256",
      "parents": [
        "7d72975c5b3e6f18710f078199e7a9e3f9376c60"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Nov 16 10:48:20 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Nov 30 17:20:00 2015 -0800"
      },
      "message": "Expose findTrustAnchorBySubjectAndPublicKey\n\nThis allows for faster lookups of TrustAnchors when checking pin\noverrides without needing to iterate over all certificates.\n\nCurrently only the system and user trusted certificate store are\noptimized to avoid reading the entire source before doing the trust\nanchor lookup, improvements to the resource source will come in a later\ncommit.\n\nThis also refactors System/UserCertificateSource to avoid code\nduplication.\n\nChange-Id: Ice00c5e047140f3d102306937556b761faaf0d0e\n"
    },
    {
      "commit": "5a1078f40dd511901c33ccf78be6e2d5081d6637",
      "tree": "b9d5ab60194a061c0aed6f07d34bfa1dff18525b",
      "parents": [
        "08d36202daeb3e668911c9902edb61b6894f822e"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Nov 10 12:26:18 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Nov 11 10:54:54 2015 -0800"
      },
      "message": "Add NetworkSecurityConfigProvider\n\nChange-Id: I321e3ca94cc2a8d5e0e5d82a83b255ff5b8a71d2\n"
    },
    {
      "commit": "08d36202daeb3e668911c9902edb61b6894f822e",
      "tree": "72dee75fd1be13ff12ecbde62647d9e376b72f16",
      "parents": [
        "749501e88e5fa6bdc6594a9db5c232e31bdda867"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Mon Nov 09 13:38:51 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Tue Nov 10 12:40:00 2015 -0800"
      },
      "message": "Add support for debug-overrides configuration\n\nDebug overrides are only used if the application is debuggable in\norder to help local debugging and development by trusting additional\nCAs. In a non-debuggable version of the application the debug-overrides\nare ignored.\n\nTrust anchors in the debug override configuration have two key\ndifferences from those in base-config and domain-config:\n1) trust anchors in the debug-overrides are trusted for all connections\nin addition to any trust anchors included in the relevant base/domain\nconfigs.\n2) By default trust anchors in the debug config override pins, as their\npurpose is for connecting to non-standard servers for debugging and\ntesting and those servers should not be pinned in the production\nconfiguration.\n\nChange-Id: I15ee98eae182be0ffaa49b06bc5e1c6c3d22baee\n"
    },
    {
      "commit": "bd173c28fcded629da722c6669f1b6478cdcd94f",
      "tree": "24524a2b7140b729912e123e835f7eaf185c64a4",
      "parents": [
        "5f96702f582050c1598136ed2a748f76b981c94e"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Nov 06 23:02:37 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Sat Nov 07 13:31:04 2015 -0800"
      },
      "message": "Support nested domain-config elements\n\nNested domain-config inherit unset parameters from the domain-config\nthey are nested in. This helps avoid copy and pasted configs that are\nalmost the same except a few minor differences for a domain with\nslightly different requirements.\n\nFor example: Consider a domain-config for example.com that, among other\nsettings, does not enforce hsts. Now if you want the rules for\nexample.com to apply to secure.example.com except that hsts _is_\nenforced you can make a nested domain-config for secure.example.com\nunder example.com that sets hstsEnforced\u003d\"true\" and nothing else.\n\nChange-Id: I9e33f7e62127fd7f4f15c3560fff2f2626477bd4\n"
    },
    {
      "commit": "5f96702f582050c1598136ed2a748f76b981c94e",
      "tree": "95bff660c4abcc6b7057372e254acfbb2ea52d89",
      "parents": [
        "1347cb81f402c628f3346ea350a5862749901d59"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Nov 04 23:55:29 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Nov 06 22:24:01 2015 -0800"
      },
      "message": "Add xml source for network security configuration\n\nXmlConfigSource parses an ApplicationConfig from an xml resource.\nCurrently this supports app-wide default configuration via the\nbase-config element, per domain via the domain-config element and\ninheritance of unset properties at parse time.\n\nInheritance of unset properties is currently only:\ndomain-config -\u003e base-config -\u003e platform default configuration\nWhere the most specific value is used.\nFor example: If the base-config specifies trust anchors, all connections\nwill use those anchors except for connections to a domain which has a\ndomain-config that specifies trust anchors, in which case the\ndomain-config\u0027s trust anchors will be used. If the domain-config or\nbase-config don\u0027t set trust anchors, or don\u0027t exist, then the platform\ndefault trust anchors will be used.\n\nNested domain-config entries, debug-overrides, and thorough\ndocumentation of the xml format will follow in later commits.\n\nChange-Id: I1232ff1e8079a81b340bc12e142f0889f6947aa0\n"
    },
    {
      "commit": "80a73f5939364a07d8e83d3a90de6dc789e1b334",
      "tree": "c1f10b56247dbb43e7df15ee56fdf772b88796a5",
      "parents": [
        "6bc1e3966c4890ee3d47b5e527b800f2700ed627"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Nov 04 23:36:07 2015 -0800"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Thu Nov 05 12:50:30 2015 -0800"
      },
      "message": "Use a builder for NetworkSecurityConfig\n\nThe builder supports all the standard builder set* methods as well as\nsetting a parent builder to use when values are not set (recursively).\nThis allows us to have a level of inheretence in configurations without\ncomplicating the lookup and trust checking logic by doing inheretence\nwhen building the configs.\n\nChange-Id: I054af83451e52761227479eadf9cb9803437505f\n"
    },
    {
      "commit": "6bc1e3966c4890ee3d47b5e527b800f2700ed627",
      "tree": "4a4d5e03e7cca93d342bb6ea6fc7fdfef75587dd",
      "parents": [
        "5d562d4d2fe5697468e5b93b183ed8ea42e115a2"
      ],
      "author": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Fri Oct 23 15:33:56 2015 -0700"
      },
      "committer": {
        "name": "Chad Brubaker",
        "email": "cbrubaker@google.com",
        "time": "Wed Nov 04 14:31:18 2015 -0800"
      },
      "message": "Add initial network security config implementation\n\nInitial implementation of a unified application wide static\nnetwork security configuration.\n\nThis currently encompases:\n* Trust decisions such as what trust anchors to use as well as static\n  certificate pinning.\n* Policy on what to do with cleartext traffic.\n\nIn order to prevent issues due to interplay of various components in an\napplication and their potentially different security requirements\nconfiguration can be specified at a per-domain granularity in addition\nto application wide defaults.\n\nThis change contains the internal data structures and trust management\ncode, hooking these up in application startup will come in a future\ncommit.\n\nChange-Id: I53ce5ba510a4221d58839e61713262a8f4c6699c\n"
    }
  ]
}
