{"comment":{"url":"https://api.github.com/repos/letsencrypt/lets-encrypt-preview/comments/9167631","html_url":"https://github.com/letsencrypt/lets-encrypt-preview/commit/73ec1311c0479085977b6669f23316fcb01383ff#commitcomment-9167631","id":9167631,"user":{"login":"jdkasten","id":1581662,"avatar_url":"https://avatars.githubusercontent.com/u/1581662?v=3","gravatar_id":"","url":"https://api.github.com/users/jdkasten","html_url":"https://github.com/jdkasten","followers_url":"https://api.github.com/users/jdkasten/followers","following_url":"https://api.github.com/users/jdkasten/following{/other_user}","gists_url":"https://api.github.com/users/jdkasten/gists{/gist_id}","starred_url":"https://api.github.com/users/jdkasten/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jdkasten/subscriptions","organizations_url":"https://api.github.com/users/jdkasten/orgs","repos_url":"https://api.github.com/users/jdkasten/repos","events_url":"https://api.github.com/users/jdkasten/events{/privacy}","received_events_url":"https://api.github.com/users/jdkasten/received_events","type":"User","site_admin":false},"position":null,"line":null,"path":"","commit_id":"73ec1311c0479085977b6669f23316fcb01383ff","created_at":"2015-01-06T12:14:21Z","updated_at":"2015-01-06T12:14:21Z","body":"Authenticators are overloaded with all of the available challenges at once.  This allows them to solve the challenges as quickly as possible.\r\n\r\nExample: In the Apache case, the Apache config can handle 30 dvsni challenges at once and it saves server time avoiding unnecessary restarts.  At the same time, all authenticators shouldn't be required to perform all challenges at once.  The authenticator should be able to solve one challenge and return... hopefully providing enough to get an \"Authorization\" (message from the CA indicating completion) and the client can give the Authenticator the remaining list of challenges in a later invocation of perform.\r\n\r\nIn preparation for new Authenticators with different abilities, I am attempting to move all of the complicated indexing into the Client, so that the Authenticator only has to worry about its specific challenges.\r\n\r\nSince I was refactoring this section, I decided it should include the ability to handle multiple domains at a time.  (The ACME node dummy server still doesn't support the feature yet)  The preparation really drives home the Authenticator challenge overload idea and it should simplify developing authenticators in the future.\r\n\r\nBefore I submit a PR for this branch I plan to add many tests for the verify_identities function and will add in tests for apache.dvsni for good measure as I feel the code will be settling down.\r\n\r\nCurrent Development Plan: \r\n1.  finish this branch/update general documentation in Wiki\r\n2.  Move client to use Anvil ACME server code\r\n3.  Revisit Installer API (remove references to vhosts...use more general domain)"}}