Merge pull request #452 from h2o/kazuho/async-sign-quic

async signature generation for QUIC
diff --git a/include/picotls.h b/include/picotls.h
index fe74d40..e2a4366 100644
--- a/include/picotls.h
+++ b/include/picotls.h
@@ -1632,7 +1632,7 @@
 static size_t ptls_aead_decrypt(ptls_aead_context_t *ctx, void *output, const void *input, size_t inlen, uint64_t seq,
                                 const void *aad, size_t aadlen);
 /**
- * Return the current read epoch.
+ * Return the current read epoch (i.e., that of the message being received or to be)
  */
 size_t ptls_get_read_epoch(ptls_t *tls);
 /**
diff --git a/lib/picotls.c b/lib/picotls.c
index 83ac410..a712c85 100644
--- a/lib/picotls.c
+++ b/lib/picotls.c
@@ -6317,6 +6317,7 @@
     case PTLS_STATE_CLIENT_EXPECT_CERTIFICATE:
     case PTLS_STATE_CLIENT_EXPECT_CERTIFICATE_VERIFY:
     case PTLS_STATE_CLIENT_EXPECT_FINISHED:
+    case PTLS_STATE_SERVER_GENERATING_CERTIFICATE_VERIFY:
     case PTLS_STATE_SERVER_EXPECT_CERTIFICATE:
     case PTLS_STATE_SERVER_EXPECT_CERTIFICATE_VERIFY:
     case PTLS_STATE_SERVER_EXPECT_FINISHED:
@@ -6365,12 +6366,11 @@
     struct st_ptls_record_t rec = {PTLS_CONTENT_TYPE_HANDSHAKE, 0, inlen, input};
 
     if (tls->state == PTLS_STATE_SERVER_GENERATING_CERTIFICATE_VERIFY) {
-        int ret;
-        if ((ret = server_finish_handshake(tls, &emitter.super, 1, NULL)) != 0)
-            return ret;
+        assert(input == NULL || inlen == 0);
+        return server_finish_handshake(tls, &emitter.super, 1, NULL);
     }
 
-    assert(input);
+    assert(input != NULL);
 
     if (ptls_get_read_epoch(tls) != in_epoch)
         return PTLS_ALERT_UNEXPECTED_MESSAGE;