diff --git a/lib/openssl.c b/lib/openssl.c
index 4c5eaf0..81336cf 100644
--- a/lib/openssl.c
+++ b/lib/openssl.c
@@ -103,7 +103,8 @@
     {PTLS_SIGNATURE_ECDSA_SECP521R1_SHA512, EVP_sha512}, {UINT16_MAX, NULL}};
 #endif
 #if defined EVP_PKEY_ED25519
-static const struct st_ptls_openssl_signature_scheme_t ed25519_signature_schemes[] = {{PTLS_SIGNATURE_ED25519, NULL}, {UINT16_MAX, NULL}};
+static const struct st_ptls_openssl_signature_scheme_t ed25519_signature_schemes[] = {{PTLS_SIGNATURE_ED25519, NULL},
+                                                                                      {UINT16_MAX, NULL}};
 #endif
 
 /**
@@ -703,8 +704,7 @@
     }
 
 #if defined EVP_PKEY_ED25519
-    if (EVP_PKEY_id(key) == EVP_PKEY_ED25519)
-    {
+    if (EVP_PKEY_id(key) == EVP_PKEY_ED25519) {
         if (EVP_DigestSign(ctx, NULL, &siglen, input.base, input.len) != 1) {
             ret = PTLS_ERROR_LIBRARY;
             goto Exit;
@@ -712,13 +712,12 @@
 
         if ((ret = ptls_buffer_reserve(outbuf, siglen)) != 0)
             goto Exit;
-        
+
         if (EVP_DigestSign(ctx, outbuf->base + outbuf->off, &siglen, input.base, input.len) != 1) {
             ret = PTLS_ERROR_LIBRARY;
             goto Exit;
         }
-    }
-    else 
+    } else
 #endif
     {
         if (EVP_PKEY_id(key) == EVP_PKEY_RSA) {
@@ -1087,26 +1086,24 @@
     }
 
 #if defined EVP_PKEY_ED25519
-    if (EVP_PKEY_id(key) == EVP_PKEY_ED25519)
-    {
+    if (EVP_PKEY_id(key) == EVP_PKEY_ED25519) {
         if (EVP_DigestVerifyInit(ctx, &pkey_ctx, NULL, NULL, key) != 1) {
             ret = PTLS_ERROR_LIBRARY;
             goto Exit;
         }
-        
+
         if (EVP_DigestVerify(ctx, signature.base, signature.len, data.base, data.len) != 1) {
             ret = PTLS_ERROR_LIBRARY;
             goto Exit;
         }
-    }
-    else
+    } else
 #endif
     {
         if (EVP_DigestVerifyInit(ctx, &pkey_ctx, scheme->scheme_md(), NULL, key) != 1) {
             ret = PTLS_ERROR_LIBRARY;
             goto Exit;
         }
-        
+
         if (EVP_PKEY_id(key) == EVP_PKEY_RSA) {
             if (EVP_PKEY_CTX_set_rsa_padding(pkey_ctx, RSA_PKCS1_PSS_PADDING) != 1) {
                 ret = PTLS_ERROR_LIBRARY;
diff --git a/t/openssl.c b/t/openssl.c
index 5ca7bbf..7935bf5 100644
--- a/t/openssl.c
+++ b/t/openssl.c
@@ -138,7 +138,8 @@
         uint8_t sigbuf_small[1024];
 
         ptls_buffer_init(&sigbuf, sigbuf_small, sizeof(sigbuf_small));
-        ok(do_sign(key, &sigbuf, ptls_iovec_init(message, strlen(message)), schemes[i].scheme_md != NULL ? schemes[i].scheme_md() : NULL) == 0);
+        ok(do_sign(key, &sigbuf, ptls_iovec_init(message, strlen(message)),
+                   schemes[i].scheme_md != NULL ? schemes[i].scheme_md() : NULL) == 0);
         EVP_PKEY_up_ref(key);
         ok(verify_sign(key, schemes[i].scheme_id, ptls_iovec_init(message, strlen(message)),
                        ptls_iovec_init(sigbuf.base, sigbuf.off)) == 0);
