Add tests for installing the certificate on the early callback.

Test both asynchronous and synchronous versions. This callback is somewhat
different from others. It's NOT called a second time when the handshake is
resumed. This appears to be intentional and not a mismerge from the internal
patch. The caller is expected to set up any state before resuming the handshake
state machine.

Also test the early callback returning an error.

Change-Id: If5e6eddd7007ea5cdd7533b4238e456106b95cbd
Reviewed-on: https://boringssl-review.googlesource.com/3590
Reviewed-by: Adam Langley <agl@google.com>
diff --git a/ssl/test/test_config.cc b/ssl/test/test_config.cc
index afcb106..4db72b4 100644
--- a/ssl/test/test_config.cc
+++ b/ssl/test/test_config.cc
@@ -73,6 +73,8 @@
     &TestConfig::enable_signed_cert_timestamps },
   { "-fastradio-padding", &TestConfig::fastradio_padding },
   { "-implicit-handshake", &TestConfig::implicit_handshake },
+  { "-use-early-callback", &TestConfig::use_early_callback },
+  { "-fail-early-callback", &TestConfig::fail_early_callback },
 };
 
 const Flag<std::string> kStringFlags[] = {
@@ -138,7 +140,9 @@
       min_version(0),
       max_version(0),
       mtu(0),
-      implicit_handshake(false) {
+      implicit_handshake(false),
+      use_early_callback(false),
+      fail_early_callback(false) {
 }
 
 bool ParseConfig(int argc, char **argv, TestConfig *out_config) {