Reformat the rest of ssl/.

Change-Id: I7dc264f7e29b3ba8be4c717583467edf71bf8dd9
diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c
index f3fc663..ed8b524 100644
--- a/ssl/ssl_cert.c
+++ b/ssl/ssl_cert.c
@@ -128,994 +128,954 @@
 #include "../crypto/directory.h"
 #include "ssl_locl.h"
 
-int SSL_get_ex_data_X509_STORE_CTX_idx(void)
-	{
-	static volatile int ssl_x509_store_ctx_idx= -1;
-	int got_write_lock = 0;
 
-	CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
+int SSL_get_ex_data_X509_STORE_CTX_idx(void) {
+  static int ssl_x509_store_ctx_idx = -1;
+  int got_write_lock = 0;
 
-	if (ssl_x509_store_ctx_idx < 0)
-		{
-		CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
-		CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
-		got_write_lock = 1;
-		
-		if (ssl_x509_store_ctx_idx < 0)
-			{
-			ssl_x509_store_ctx_idx=X509_STORE_CTX_get_ex_new_index(
-				0,"SSL for verify callback",NULL,NULL,NULL);
-			}
-		}
+  CRYPTO_r_lock(CRYPTO_LOCK_SSL_CTX);
 
-	if (got_write_lock)
-		CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
-	else
-		CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
-	
-	return ssl_x509_store_ctx_idx;
-	}
+  if (ssl_x509_store_ctx_idx < 0) {
+    CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
+    CRYPTO_w_lock(CRYPTO_LOCK_SSL_CTX);
+    got_write_lock = 1;
 
-CERT *ssl_cert_new(void)
-	{
-	CERT *ret;
+    if (ssl_x509_store_ctx_idx < 0) {
+      ssl_x509_store_ctx_idx = X509_STORE_CTX_get_ex_new_index(
+          0, "SSL for verify callback", NULL, NULL, NULL);
+    }
+  }
 
-	ret=(CERT *)OPENSSL_malloc(sizeof(CERT));
-	if (ret == NULL)
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_cert_new, ERR_R_MALLOC_FAILURE);
-		return(NULL);
-		}
-	memset(ret,0,sizeof(CERT));
+  if (got_write_lock) {
+    CRYPTO_w_unlock(CRYPTO_LOCK_SSL_CTX);
+  } else {
+    CRYPTO_r_unlock(CRYPTO_LOCK_SSL_CTX);
+  }
 
-	ret->key= &(ret->pkeys[SSL_PKEY_RSA_ENC]);
-	return(ret);
-	}
+  return ssl_x509_store_ctx_idx;
+}
 
-CERT *ssl_cert_dup(CERT *cert)
-	{
-	CERT *ret;
-	int i;
+CERT *ssl_cert_new(void) {
+  CERT *ret;
 
-	ret = (CERT *)OPENSSL_malloc(sizeof(CERT));
-	if (ret == NULL)
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_MALLOC_FAILURE);
-		return(NULL);
-		}
+  ret = (CERT *)OPENSSL_malloc(sizeof(CERT));
+  if (ret == NULL) {
+    OPENSSL_PUT_ERROR(SSL, ssl_cert_new, ERR_R_MALLOC_FAILURE);
+    return NULL;
+  }
+  memset(ret, 0, sizeof(CERT));
 
-	memset(ret, 0, sizeof(CERT));
+  ret->key = &ret->pkeys[SSL_PKEY_RSA_ENC];
+  return ret;
+}
 
-	ret->key = &ret->pkeys[cert->key - &cert->pkeys[0]];
-	/* or ret->key = ret->pkeys + (cert->key - cert->pkeys),
-	 * if you find that more readable */
+CERT *ssl_cert_dup(CERT *cert) {
+  CERT *ret;
+  int i;
 
-	ret->mask_k = cert->mask_k;
-	ret->mask_a = cert->mask_a;
+  ret = (CERT *)OPENSSL_malloc(sizeof(CERT));
+  if (ret == NULL) {
+    OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_MALLOC_FAILURE);
+    return NULL;
+  }
 
-	if (cert->dh_tmp != NULL)
-		{
-		ret->dh_tmp = DHparams_dup(cert->dh_tmp);
-		if (ret->dh_tmp == NULL)
-			{
-			OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_DH_LIB);
-			goto err;
-			}
-		if (cert->dh_tmp->priv_key)
-			{
-			BIGNUM *b = BN_dup(cert->dh_tmp->priv_key);
-			if (!b)
-				{
-				OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_BN_LIB);
-				goto err;
-				}
-			ret->dh_tmp->priv_key = b;
-			}
-		if (cert->dh_tmp->pub_key)
-			{
-			BIGNUM *b = BN_dup(cert->dh_tmp->pub_key);
-			if (!b)
-				{
-				OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_BN_LIB);
-				goto err;
-				}
-			ret->dh_tmp->pub_key = b;
-			}
-		}
-	ret->dh_tmp_cb = cert->dh_tmp_cb;
+  memset(ret, 0, sizeof(CERT));
 
-	if (cert->ecdh_tmp)
-		{
-		ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp);
-		if (ret->ecdh_tmp == NULL)
-			{
-			OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_EC_LIB);
-			goto err;
-			}
-		}
-	ret->ecdh_tmp_cb = cert->ecdh_tmp_cb;
-	ret->ecdh_tmp_auto = cert->ecdh_tmp_auto;
+  ret->key = &ret->pkeys[cert->key - &cert->pkeys[0]];
+  /* or ret->key = ret->pkeys + (cert->key - cert->pkeys), if you find that
+   * more readable */
 
-	for (i = 0; i < SSL_PKEY_NUM; i++)
-		{
-		CERT_PKEY *cpk = cert->pkeys + i;
-		CERT_PKEY *rpk = ret->pkeys + i;
-		if (cpk->x509 != NULL)
-			{
-			rpk->x509 = X509_up_ref(cpk->x509);
-			}
-		
-		if (cpk->privatekey != NULL)
-			{
-			rpk->privatekey = EVP_PKEY_dup(cpk->privatekey);
-			}
+  ret->mask_k = cert->mask_k;
+  ret->mask_a = cert->mask_a;
 
-		if (cpk->chain)
-			{
-			rpk->chain = X509_chain_up_ref(cpk->chain);
-			if (!rpk->chain)
-				{
-				OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_MALLOC_FAILURE);
-				goto err;
-				}
-			}
-		}
-	
-	/* Peer sigalgs set to NULL as we get these from handshake too */
-	ret->peer_sigalgs = NULL;
-	ret->peer_sigalgslen = 0;
-	/* Configured sigalgs however we copy across */
+  if (cert->dh_tmp != NULL) {
+    ret->dh_tmp = DHparams_dup(cert->dh_tmp);
+    if (ret->dh_tmp == NULL) {
+      OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_DH_LIB);
+      goto err;
+    }
+    if (cert->dh_tmp->priv_key) {
+      BIGNUM *b = BN_dup(cert->dh_tmp->priv_key);
+      if (!b) {
+        OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_BN_LIB);
+        goto err;
+      }
+      ret->dh_tmp->priv_key = b;
+    }
+    if (cert->dh_tmp->pub_key) {
+      BIGNUM *b = BN_dup(cert->dh_tmp->pub_key);
+      if (!b) {
+        OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_BN_LIB);
+        goto err;
+      }
+      ret->dh_tmp->pub_key = b;
+    }
+  }
+  ret->dh_tmp_cb = cert->dh_tmp_cb;
 
-	if (cert->conf_sigalgs)
-		{
-		ret->conf_sigalgs = OPENSSL_malloc(cert->conf_sigalgslen);
-		if (!ret->conf_sigalgs)
-			goto err;
-		memcpy(ret->conf_sigalgs, cert->conf_sigalgs,
-						cert->conf_sigalgslen);
-		ret->conf_sigalgslen = cert->conf_sigalgslen;
-		}
-	else
-		ret->conf_sigalgs = NULL;
+  if (cert->ecdh_tmp) {
+    ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp);
+    if (ret->ecdh_tmp == NULL) {
+      OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_EC_LIB);
+      goto err;
+    }
+  }
+  ret->ecdh_tmp_cb = cert->ecdh_tmp_cb;
+  ret->ecdh_tmp_auto = cert->ecdh_tmp_auto;
 
-	if (cert->client_sigalgs)
-		{
-		ret->client_sigalgs = OPENSSL_malloc(cert->client_sigalgslen);
-		if (!ret->client_sigalgs)
-			goto err;
-		memcpy(ret->client_sigalgs, cert->client_sigalgs,
-						cert->client_sigalgslen);
-		ret->client_sigalgslen = cert->client_sigalgslen;
-		}
-	else
-		ret->client_sigalgs = NULL;
-	/* Shared sigalgs also NULL */
-	ret->shared_sigalgs = NULL;
-	/* Copy any custom client certificate types */
-	if (cert->client_certificate_types)
-		{
-		ret->client_certificate_types = BUF_memdup(
-			cert->client_certificate_types,
-			cert->num_client_certificate_types);
-		if (!ret->client_certificate_types)
-			goto err;
-		ret->num_client_certificate_types = cert->num_client_certificate_types;
-		}
+  for (i = 0; i < SSL_PKEY_NUM; i++) {
+    CERT_PKEY *cpk = cert->pkeys + i;
+    CERT_PKEY *rpk = ret->pkeys + i;
+    if (cpk->x509 != NULL) {
+      rpk->x509 = X509_up_ref(cpk->x509);
+    }
 
-	ret->cert_flags = cert->cert_flags;
+    if (cpk->privatekey != NULL) {
+      rpk->privatekey = EVP_PKEY_dup(cpk->privatekey);
+    }
 
-	ret->cert_cb = cert->cert_cb;
-	ret->cert_cb_arg = cert->cert_cb_arg;
+    if (cpk->chain) {
+      rpk->chain = X509_chain_up_ref(cpk->chain);
+      if (!rpk->chain) {
+        OPENSSL_PUT_ERROR(SSL, ssl_cert_dup, ERR_R_MALLOC_FAILURE);
+        goto err;
+      }
+    }
+  }
 
-	if (cert->verify_store)
-		{
-		CRYPTO_add(&cert->verify_store->references, 1, CRYPTO_LOCK_X509_STORE);
-		ret->verify_store = cert->verify_store;
-		}
+  /* Peer sigalgs set to NULL as we get these from handshake too */
+  ret->peer_sigalgs = NULL;
+  ret->peer_sigalgslen = 0;
+  /* Configured sigalgs however we copy across */
 
-	if (cert->chain_store)
-		{
-		CRYPTO_add(&cert->chain_store->references, 1, CRYPTO_LOCK_X509_STORE);
-		ret->chain_store = cert->chain_store;
-		}
+  if (cert->conf_sigalgs) {
+    ret->conf_sigalgs = OPENSSL_malloc(cert->conf_sigalgslen);
+    if (!ret->conf_sigalgs) {
+      goto err;
+    }
+    memcpy(ret->conf_sigalgs, cert->conf_sigalgs, cert->conf_sigalgslen);
+    ret->conf_sigalgslen = cert->conf_sigalgslen;
+  } else {
+    ret->conf_sigalgs = NULL;
+  }
 
-	ret->ciphers_raw = NULL;
+  if (cert->client_sigalgs) {
+    ret->client_sigalgs = OPENSSL_malloc(cert->client_sigalgslen);
+    if (!ret->client_sigalgs) {
+      goto err;
+    }
+    memcpy(ret->client_sigalgs, cert->client_sigalgs, cert->client_sigalgslen);
+    ret->client_sigalgslen = cert->client_sigalgslen;
+  } else {
+    ret->client_sigalgs = NULL;
+  }
+  /* Shared sigalgs also NULL */
+  ret->shared_sigalgs = NULL;
+  /* Copy any custom client certificate types */
+  if (cert->client_certificate_types) {
+    ret->client_certificate_types = BUF_memdup(
+        cert->client_certificate_types, cert->num_client_certificate_types);
+    if (!ret->client_certificate_types) {
+      goto err;
+    }
+    ret->num_client_certificate_types = cert->num_client_certificate_types;
+  }
 
-	return(ret);
-	
+  ret->cert_flags = cert->cert_flags;
+
+  ret->cert_cb = cert->cert_cb;
+  ret->cert_cb_arg = cert->cert_cb_arg;
+
+  if (cert->verify_store) {
+    CRYPTO_add(&cert->verify_store->references, 1, CRYPTO_LOCK_X509_STORE);
+    ret->verify_store = cert->verify_store;
+  }
+
+  if (cert->chain_store) {
+    CRYPTO_add(&cert->chain_store->references, 1, CRYPTO_LOCK_X509_STORE);
+    ret->chain_store = cert->chain_store;
+  }
+
+  ret->ciphers_raw = NULL;
+
+  return ret;
+
 err:
-	ssl_cert_free(ret);
-	return NULL;
-	}
+  ssl_cert_free(ret);
+  return NULL;
+}
 
 /* Free up and clear all certificates and chains */
+void ssl_cert_clear_certs(CERT *c) {
+  int i;
+  if (c == NULL) {
+    return;
+  }
 
-void ssl_cert_clear_certs(CERT *c)
-	{
-	int i;
-	if (c == NULL)
-		return;
-	for (i = 0; i<SSL_PKEY_NUM; i++)
-		{
-		CERT_PKEY *cpk = c->pkeys + i;
-		if (cpk->x509)
-			{
-			X509_free(cpk->x509);
-			cpk->x509 = NULL;
-			}
-		if (cpk->privatekey)
-			{
-			EVP_PKEY_free(cpk->privatekey);
-			cpk->privatekey = NULL;
-			}
-		if (cpk->chain)
-			{
-			sk_X509_pop_free(cpk->chain, X509_free);
-			cpk->chain = NULL;
-			}
-		}
-	}
+  for (i = 0; i < SSL_PKEY_NUM; i++) {
+    CERT_PKEY *cpk = c->pkeys + i;
+    if (cpk->x509) {
+      X509_free(cpk->x509);
+      cpk->x509 = NULL;
+    }
+    if (cpk->privatekey) {
+      EVP_PKEY_free(cpk->privatekey);
+      cpk->privatekey = NULL;
+    }
+    if (cpk->chain) {
+      sk_X509_pop_free(cpk->chain, X509_free);
+      cpk->chain = NULL;
+    }
+  }
+}
 
-void ssl_cert_free(CERT *c)
-	{
-	if(c == NULL)
-	    return;
+void ssl_cert_free(CERT *c) {
+  if (c == NULL) {
+    return;
+  }
 
-	if (c->dh_tmp) DH_free(c->dh_tmp);
-	if (c->ecdh_tmp) EC_KEY_free(c->ecdh_tmp);
+  if (c->dh_tmp) {
+    DH_free(c->dh_tmp);
+  }
+  if (c->ecdh_tmp) {
+    EC_KEY_free(c->ecdh_tmp);
+  }
 
-	ssl_cert_clear_certs(c);
-	if (c->peer_sigalgs)
-		OPENSSL_free(c->peer_sigalgs);
-	if (c->conf_sigalgs)
-		OPENSSL_free(c->conf_sigalgs);
-	if (c->client_sigalgs)
-		OPENSSL_free(c->client_sigalgs);
-	if (c->shared_sigalgs)
-		OPENSSL_free(c->shared_sigalgs);
-	if (c->client_certificate_types)
-		OPENSSL_free(c->client_certificate_types);
-	if (c->verify_store)
-		X509_STORE_free(c->verify_store);
-	if (c->chain_store)
-		X509_STORE_free(c->chain_store);
-	if (c->ciphers_raw)
-		OPENSSL_free(c->ciphers_raw);
-	OPENSSL_free(c);
-	}
+  ssl_cert_clear_certs(c);
+  if (c->peer_sigalgs) {
+    OPENSSL_free(c->peer_sigalgs);
+  }
+  if (c->conf_sigalgs) {
+    OPENSSL_free(c->conf_sigalgs);
+  }
+  if (c->client_sigalgs) {
+    OPENSSL_free(c->client_sigalgs);
+  }
+  if (c->shared_sigalgs) {
+    OPENSSL_free(c->shared_sigalgs);
+  }
+  if (c->client_certificate_types) {
+    OPENSSL_free(c->client_certificate_types);
+  }
+  if (c->verify_store) {
+    X509_STORE_free(c->verify_store);
+  }
+  if (c->chain_store) {
+    X509_STORE_free(c->chain_store);
+  }
+  if (c->ciphers_raw) {
+    OPENSSL_free(c->ciphers_raw);
+  }
 
-int ssl_cert_inst(CERT **o)
-	{
-	/* Create a CERT if there isn't already one
-	 * (which cannot really happen, as it is initially created in
-	 * SSL_CTX_new; but the earlier code usually allows for that one
-	 * being non-existant, so we follow that behaviour, as it might
-	 * turn out that there actually is a reason for it -- but I'm
-	 * not sure that *all* of the existing code could cope with
-	 * s->cert being NULL, otherwise we could do without the
-	 * initialization in SSL_CTX_new).
-	 */
-	
-	if (o == NULL) 
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_cert_inst, ERR_R_PASSED_NULL_PARAMETER);
-		return(0);
-		}
-	if (*o == NULL)
-		{
-		if ((*o = ssl_cert_new()) == NULL)
-			{
-			OPENSSL_PUT_ERROR(SSL, ssl_cert_new, ERR_R_MALLOC_FAILURE);
-			return(0);
-			}
-		}
-	return(1);
-	}
+  OPENSSL_free(c);
+}
 
-int ssl_cert_set0_chain(CERT *c, STACK_OF(X509) *chain)
-	{
-	CERT_PKEY *cpk = c->key;
-	if (!cpk)
-		return 0;
-	if (cpk->chain)
-		sk_X509_pop_free(cpk->chain, X509_free);
-	cpk->chain = chain;
-	return 1;
-	}
+int ssl_cert_inst(CERT **o) {
+  /* Create a CERT if there isn't already one (which cannot really happen, as
+   * it is initially created in SSL_CTX_new; but the earlier code usually
+   * allows for that one being non-existant, so we follow that behaviour, as it
+   * might turn out that there actually is a reason for it -- but I'm not sure
+   * that *all* of the existing code could cope with s->cert being NULL,
+   * otherwise we could do without the initialization in SSL_CTX_new). */
 
-int ssl_cert_set1_chain(CERT *c, STACK_OF(X509) *chain)
-	{
-	STACK_OF(X509) *dchain;
-	if (!chain)
-		return ssl_cert_set0_chain(c, NULL);
-	dchain = X509_chain_up_ref(chain);
-	if (!dchain)
-		return 0;
-	if (!ssl_cert_set0_chain(c, dchain))
-		{
-		sk_X509_pop_free(dchain, X509_free);
-		return 0;
-		}
-	return 1;
-	}
+  if (o == NULL) {
+    OPENSSL_PUT_ERROR(SSL, ssl_cert_inst, ERR_R_PASSED_NULL_PARAMETER);
+    return 0;
+  }
+  if (*o == NULL) {
+    *o = ssl_cert_new();
+    if (*o == NULL) {
+      OPENSSL_PUT_ERROR(SSL, ssl_cert_new, ERR_R_MALLOC_FAILURE);
+      return 0;
+    }
+  }
 
-int ssl_cert_add0_chain_cert(CERT *c, X509 *x)
-	{
-	CERT_PKEY *cpk = c->key;
-	if (!cpk)
-		return 0;
-	if (!cpk->chain)
-		cpk->chain = sk_X509_new_null();
-	if (!cpk->chain || !sk_X509_push(cpk->chain, x))
-		return 0;
-	return 1;
-	}
+  return 1;
+}
 
-int ssl_cert_add1_chain_cert(CERT *c, X509 *x)
-	{
-	if (!ssl_cert_add0_chain_cert(c, x))
-		return 0;
-	X509_up_ref(x);
-	return 1;
-	}
+int ssl_cert_set0_chain(CERT *c, STACK_OF(X509) * chain) {
+  CERT_PKEY *cpk = c->key;
+  if (!cpk) {
+    return 0;
+  }
+  if (cpk->chain) {
+    sk_X509_pop_free(cpk->chain, X509_free);
+  }
+  cpk->chain = chain;
+  return 1;
+}
 
-int ssl_cert_select_current(CERT *c, X509 *x)
-	{
-	int i;
-	if (x == NULL)
-		return 0;
-	for (i = 0; i < SSL_PKEY_NUM; i++)
-		{
-		if (c->pkeys[i].x509 == x)
-			{
-			c->key = &c->pkeys[i];
-			return 1;
-			}
-		}
+int ssl_cert_set1_chain(CERT *c, STACK_OF(X509) * chain) {
+  STACK_OF(X509) * dchain;
+  if (!chain) {
+    return ssl_cert_set0_chain(c, NULL);
+  }
 
-	for (i = 0; i < SSL_PKEY_NUM; i++)
-		{
-		if (c->pkeys[i].x509 && !X509_cmp(c->pkeys[i].x509, x))
-			{
-			c->key = &c->pkeys[i];
-			return 1;
-			}
-		}
-	return 0;
-	}
+  dchain = X509_chain_up_ref(chain);
+  if (!dchain) {
+    return 0;
+  }
 
-void ssl_cert_set_cert_cb(CERT *c, int (*cb)(SSL *ssl, void *arg), void *arg)
-	{
-	c->cert_cb = cb;
-	c->cert_cb_arg = arg;
-	}
+  if (!ssl_cert_set0_chain(c, dchain)) {
+    sk_X509_pop_free(dchain, X509_free);
+    return 0;
+  }
 
-SESS_CERT *ssl_sess_cert_new(void)
-	{
-	SESS_CERT *ret;
+  return 1;
+}
 
-	ret = OPENSSL_malloc(sizeof *ret);
-	if (ret == NULL)
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_sess_cert_new, ERR_R_MALLOC_FAILURE);
-		return NULL;
-		}
+int ssl_cert_add0_chain_cert(CERT *c, X509 *x) {
+  CERT_PKEY *cpk = c->key;
+  if (!cpk) {
+    return 0;
+  }
 
-	memset(ret, 0 ,sizeof *ret);
-	ret->peer_key = &(ret->peer_pkeys[SSL_PKEY_RSA_ENC]);
+  if (!cpk->chain) {
+    cpk->chain = sk_X509_new_null();
+  }
+  if (!cpk->chain || !sk_X509_push(cpk->chain, x)) {
+    return 0;
+  }
 
-	return ret;
-	}
+  return 1;
+}
 
-void ssl_sess_cert_free(SESS_CERT *sc)
-	{
-	int i;
+int ssl_cert_add1_chain_cert(CERT *c, X509 *x) {
+  if (!ssl_cert_add0_chain_cert(c, x)) {
+    return 0;
+  }
 
-	if (sc == NULL)
-		return;
+  X509_up_ref(x);
+  return 1;
+}
 
-	if (sc->cert_chain != NULL)
-		sk_X509_pop_free(sc->cert_chain, X509_free);
-	for (i = 0; i < SSL_PKEY_NUM; i++)
-		{
-		if (sc->peer_pkeys[i].x509 != NULL)
-			X509_free(sc->peer_pkeys[i].x509);
-#if 0 /* We don't have the peer's private key.  These lines are just
-	   * here as a reminder that we're still using a not-quite-appropriate
-	   * data structure. */
-		if (sc->peer_pkeys[i].privatekey != NULL)
-			EVP_PKEY_free(sc->peer_pkeys[i].privatekey);
-#endif
-		}
+int ssl_cert_select_current(CERT *c, X509 *x) {
+  int i;
+  if (x == NULL) {
+    return 0;
+  }
 
-	if (sc->peer_dh_tmp != NULL)
-		DH_free(sc->peer_dh_tmp);
-	if (sc->peer_ecdh_tmp != NULL)
-		EC_KEY_free(sc->peer_ecdh_tmp);
+  for (i = 0; i < SSL_PKEY_NUM; i++) {
+    if (c->pkeys[i].x509 == x) {
+      c->key = &c->pkeys[i];
+      return 1;
+    }
+  }
 
-	OPENSSL_free(sc);
-	}
+  for (i = 0; i < SSL_PKEY_NUM; i++) {
+    if (c->pkeys[i].x509 && !X509_cmp(c->pkeys[i].x509, x)) {
+      c->key = &c->pkeys[i];
+      return 1;
+    }
+  }
 
-int ssl_set_peer_cert_type(SESS_CERT *sc,int type)
-	{
-	sc->peer_cert_type = type;
-	return(1);
-	}
+  return 0;
+}
 
-int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk)
-	{
-	X509 *x;
-	int i;
-	X509_STORE *verify_store;
-	X509_STORE_CTX ctx;
+void ssl_cert_set_cert_cb(CERT *c, int (*cb)(SSL *ssl, void *arg), void *arg) {
+  c->cert_cb = cb;
+  c->cert_cb_arg = arg;
+}
 
-	if (s->cert->verify_store)
-		verify_store = s->cert->verify_store;
-	else
-		verify_store = s->ctx->cert_store;
+SESS_CERT *ssl_sess_cert_new(void) {
+  SESS_CERT *ret;
 
-	if ((sk == NULL) || (sk_X509_num(sk) == 0))
-		return(0);
+  ret = OPENSSL_malloc(sizeof *ret);
+  if (ret == NULL) {
+    OPENSSL_PUT_ERROR(SSL, ssl_sess_cert_new, ERR_R_MALLOC_FAILURE);
+    return NULL;
+  }
 
-	x=sk_X509_value(sk,0);
-	if(!X509_STORE_CTX_init(&ctx,verify_store,x,sk))
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_verify_cert_chain, ERR_R_X509_LIB);
-		return(0);
-		}
-#if 0
-	if (SSL_get_verify_depth(s) >= 0)
-		X509_STORE_CTX_set_depth(&ctx, SSL_get_verify_depth(s));
-#endif
-	X509_STORE_CTX_set_ex_data(&ctx,SSL_get_ex_data_X509_STORE_CTX_idx(),s);
+  memset(ret, 0, sizeof *ret);
+  ret->peer_key = &(ret->peer_pkeys[SSL_PKEY_RSA_ENC]);
 
-	/* We need to inherit the verify parameters. These can be determined by
-	 * the context: if its a server it will verify SSL client certificates
-	 * or vice versa.
-	 */
+  return ret;
+}
 
-	X509_STORE_CTX_set_default(&ctx,
-				s->server ? "ssl_client" : "ssl_server");
-	/* Anything non-default in "param" should overwrite anything in the
-	 * ctx.
-	 */
-	X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(&ctx), s->param);
+void ssl_sess_cert_free(SESS_CERT *sc) {
+  int i;
 
-	if (s->verify_callback)
-		X509_STORE_CTX_set_verify_cb(&ctx, s->verify_callback);
+  if (sc == NULL) {
+    return;
+  }
 
-	if (s->ctx->app_verify_callback != NULL)
-#if 1 /* new with OpenSSL 0.9.7 */
-		i=s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg); 
-#else
-		i=s->ctx->app_verify_callback(&ctx); /* should pass app_verify_arg */
-#endif
-	else
-		{
-#ifndef OPENSSL_NO_X509_VERIFY
-		i=X509_verify_cert(&ctx);
-#else
-		i=0;
-		ctx.error=X509_V_ERR_APPLICATION_VERIFICATION;
-		OPENSSL_PUT_ERROR(SSL, ssl_verify_cert_chain, SSL_R_NO_VERIFY_CALLBACK);
-#endif
-		}
+  if (sc->cert_chain != NULL) {
+    sk_X509_pop_free(sc->cert_chain, X509_free);
+  }
 
-	s->verify_result=ctx.error;
-	X509_STORE_CTX_cleanup(&ctx);
+  for (i = 0; i < SSL_PKEY_NUM; i++) {
+    if (sc->peer_pkeys[i].x509 != NULL) {
+      X509_free(sc->peer_pkeys[i].x509);
+    }
+  }
 
-	return(i);
-	}
+  if (sc->peer_dh_tmp != NULL) {
+    DH_free(sc->peer_dh_tmp);
+  }
+  if (sc->peer_ecdh_tmp != NULL) {
+    EC_KEY_free(sc->peer_ecdh_tmp);
+  }
 
-static void set_client_CA_list(STACK_OF(X509_NAME) **ca_list,STACK_OF(X509_NAME) *name_list)
-	{
-	if (*ca_list != NULL)
-		sk_X509_NAME_pop_free(*ca_list,X509_NAME_free);
+  OPENSSL_free(sc);
+}
 
-	*ca_list=name_list;
-	}
+int ssl_set_peer_cert_type(SESS_CERT *sc, int type) {
+  sc->peer_cert_type = type;
+  return 1;
+}
 
-STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk)
-	{
-	size_t i;
-	STACK_OF(X509_NAME) *ret;
-	X509_NAME *name;
+int ssl_verify_cert_chain(SSL *s, STACK_OF(X509) * sk) {
+  X509 *x;
+  int i;
+  X509_STORE *verify_store;
+  X509_STORE_CTX ctx;
 
-	ret=sk_X509_NAME_new_null();
-	for (i=0; i<sk_X509_NAME_num(sk); i++)
-		{
-		name=X509_NAME_dup(sk_X509_NAME_value(sk,i));
-		if ((name == NULL) || !sk_X509_NAME_push(ret,name))
-			{
-			sk_X509_NAME_pop_free(ret,X509_NAME_free);
-			return(NULL);
-			}
-		}
-	return(ret);
-	}
+  if (s->cert->verify_store) {
+    verify_store = s->cert->verify_store;
+  } else {
+    verify_store = s->ctx->cert_store;
+  }
 
-void SSL_set_client_CA_list(SSL *s,STACK_OF(X509_NAME) *name_list)
-	{
-	set_client_CA_list(&(s->client_CA),name_list);
-	}
+  if (sk == NULL || sk_X509_num(sk) == 0) {
+    return 0;
+  }
 
-void SSL_CTX_set_client_CA_list(SSL_CTX *ctx,STACK_OF(X509_NAME) *name_list)
-	{
-	set_client_CA_list(&(ctx->client_CA),name_list);
-	}
+  x = sk_X509_value(sk, 0);
+  if (!X509_STORE_CTX_init(&ctx, verify_store, x, sk)) {
+    OPENSSL_PUT_ERROR(SSL, ssl_verify_cert_chain, ERR_R_X509_LIB);
+    return 0;
+  }
+  X509_STORE_CTX_set_ex_data(&ctx, SSL_get_ex_data_X509_STORE_CTX_idx(), s);
 
-STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *ctx)
-	{
-	return(ctx->client_CA);
-	}
+  /* We need to inherit the verify parameters. These can be determined by the
+   * context: if its a server it will verify SSL client certificates or vice
+   * versa. */
+  X509_STORE_CTX_set_default(&ctx, s->server ? "ssl_client" : "ssl_server");
 
-STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s)
-	{
-	if (s->server)
-		{
-		if (s->client_CA != NULL)
-			return(s->client_CA);
-		else
-			return(s->ctx->client_CA);
-		}
-	else
-		{
-		if (((s->version>>8) == SSL3_VERSION_MAJOR) &&
-			(s->s3 != NULL))
-			return(s->s3->tmp.ca_names);
-		else
-			return(NULL);
-		}
-	}
+  /* Anything non-default in "param" should overwrite anything in the ctx. */
+  X509_VERIFY_PARAM_set1(X509_STORE_CTX_get0_param(&ctx), s->param);
 
-static int add_client_CA(STACK_OF(X509_NAME) **sk,X509 *x)
-	{
-	X509_NAME *name;
+  if (s->verify_callback) {
+    X509_STORE_CTX_set_verify_cb(&ctx, s->verify_callback);
+  }
 
-	if (x == NULL) return(0);
-	if ((*sk == NULL) && ((*sk=sk_X509_NAME_new_null()) == NULL))
-		return(0);
-		
-	if ((name=X509_NAME_dup(X509_get_subject_name(x))) == NULL)
-		return(0);
+  if (s->ctx->app_verify_callback != NULL) {
+    i = s->ctx->app_verify_callback(&ctx, s->ctx->app_verify_arg);
+  } else {
+    i = X509_verify_cert(&ctx);
+  }
 
-	if (!sk_X509_NAME_push(*sk,name))
-		{
-		X509_NAME_free(name);
-		return(0);
-		}
-	return(1);
-	}
+  s->verify_result = ctx.error;
+  X509_STORE_CTX_cleanup(&ctx);
 
-int SSL_add_client_CA(SSL *ssl,X509 *x)
-	{
-	return(add_client_CA(&(ssl->client_CA),x));
-	}
+  return i;
+}
 
-int SSL_CTX_add_client_CA(SSL_CTX *ctx,X509 *x)
-	{
-	return(add_client_CA(&(ctx->client_CA),x));
-	}
+static void set_client_CA_list(STACK_OF(X509_NAME) * *ca_list,
+                               STACK_OF(X509_NAME) * name_list) {
+  if (*ca_list != NULL) {
+    sk_X509_NAME_pop_free(*ca_list, X509_NAME_free);
+  }
 
-static int xname_cmp(const X509_NAME **a, const X509_NAME **b)
-	{
-	return(X509_NAME_cmp(*a,*b));
-	}
+  *ca_list = name_list;
+}
 
-#ifndef OPENSSL_NO_STDIO
-/*!
- * Load CA certs from a file into a ::STACK. Note that it is somewhat misnamed;
+STACK_OF(X509_NAME) * SSL_dup_CA_list(STACK_OF(X509_NAME) * sk) {
+  size_t i;
+  STACK_OF(X509_NAME) * ret;
+  X509_NAME *name;
+
+  ret = sk_X509_NAME_new_null();
+  for (i = 0; i < sk_X509_NAME_num(sk); i++) {
+    name = X509_NAME_dup(sk_X509_NAME_value(sk, i));
+    if (name == NULL || !sk_X509_NAME_push(ret, name)) {
+      sk_X509_NAME_pop_free(ret, X509_NAME_free);
+      return NULL;
+    }
+  }
+
+  return ret;
+}
+
+void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) * name_list) {
+  set_client_CA_list(&(s->client_CA), name_list);
+}
+
+void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) * name_list) {
+  set_client_CA_list(&(ctx->client_CA), name_list);
+}
+
+STACK_OF(X509_NAME) * SSL_CTX_get_client_CA_list(const SSL_CTX *ctx) {
+  return ctx->client_CA;
+}
+
+STACK_OF(X509_NAME) * SSL_get_client_CA_list(const SSL *s) {
+  if (s->server) {
+    if (s->client_CA != NULL) {
+      return s->client_CA;
+    } else {
+      return s->ctx->client_CA;
+    }
+  } else {
+    if ((s->version >> 8) == SSL3_VERSION_MAJOR && s->s3 != NULL) {
+      return s->s3->tmp.ca_names;
+    } else {
+      return NULL;
+    }
+  }
+}
+
+static int add_client_CA(STACK_OF(X509_NAME) * *sk, X509 *x) {
+  X509_NAME *name;
+
+  if (x == NULL) {
+    return 0;
+  }
+  if (*sk == NULL) {
+    *sk = sk_X509_NAME_new_null();
+    if (*sk == NULL) {
+      return 0;
+    }
+  }
+
+  name = X509_NAME_dup(X509_get_subject_name(x));
+  if (name == NULL) {
+    return 0;
+  }
+
+  if (!sk_X509_NAME_push(*sk, name)) {
+    X509_NAME_free(name);
+    return 0;
+  }
+
+  return 1;
+}
+
+int SSL_add_client_CA(SSL *ssl, X509 *x) {
+  return add_client_CA(&(ssl->client_CA), x);
+}
+
+int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x) {
+  return add_client_CA(&(ctx->client_CA), x);
+}
+
+static int xname_cmp(const X509_NAME **a, const X509_NAME **b) {
+  return X509_NAME_cmp(*a, *b);
+}
+
+/* Load CA certs from a file into a STACK. Note that it is somewhat misnamed;
  * it doesn't really have anything to do with clients (except that a common use
  * for a stack of CAs is to send it to the client). Actually, it doesn't have
  * much to do with CAs, either, since it will load any old cert.
+ *
  * \param file the file containing one or more certs.
- * \return a ::STACK containing the certs.
- */
-STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file)
-	{
-	BIO *in;
-	X509 *x=NULL;
-	X509_NAME *xn=NULL;
-	STACK_OF(X509_NAME) *ret = NULL,*sk;
+ * \return a ::STACK containing the certs. */
+STACK_OF(X509_NAME) * SSL_load_client_CA_file(const char *file) {
+  BIO *in;
+  X509 *x = NULL;
+  X509_NAME *xn = NULL;
+  STACK_OF(X509_NAME) *ret = NULL, *sk;
 
-	sk=sk_X509_NAME_new(xname_cmp);
+  sk = sk_X509_NAME_new(xname_cmp);
+  in = BIO_new(BIO_s_file());
 
-	in=BIO_new(BIO_s_file());
+  if (sk == NULL || in == NULL) {
+    OPENSSL_PUT_ERROR(SSL, SSL_load_client_CA_file, ERR_R_MALLOC_FAILURE);
+    goto err;
+  }
 
-	if ((sk == NULL) || (in == NULL))
-		{
-		OPENSSL_PUT_ERROR(SSL, SSL_load_client_CA_file, ERR_R_MALLOC_FAILURE);
-		goto err;
-		}
-	
-	if (!BIO_read_filename(in,file))
-		goto err;
+  if (!BIO_read_filename(in, file)) {
+    goto err;
+  }
 
-	for (;;)
-		{
-		if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
-			break;
-		if (ret == NULL)
-			{
-			ret = sk_X509_NAME_new_null();
-			if (ret == NULL)
-				{
-				OPENSSL_PUT_ERROR(SSL, SSL_load_client_CA_file, ERR_R_MALLOC_FAILURE);
-				goto err;
-				}
-			}
-		if ((xn=X509_get_subject_name(x)) == NULL) goto err;
-		/* check for duplicates */
-		xn=X509_NAME_dup(xn);
-		if (xn == NULL) goto err;
-		if (sk_X509_NAME_find(sk, NULL, xn))
-			X509_NAME_free(xn);
-		else
-			{
-			sk_X509_NAME_push(sk,xn);
-			sk_X509_NAME_push(ret,xn);
-			}
-		}
+  for (;;) {
+    if (PEM_read_bio_X509(in, &x, NULL, NULL) == NULL) {
+      break;
+    }
+    if (ret == NULL) {
+      ret = sk_X509_NAME_new_null();
+      if (ret == NULL) {
+        OPENSSL_PUT_ERROR(SSL, SSL_load_client_CA_file, ERR_R_MALLOC_FAILURE);
+        goto err;
+      }
+    }
+    xn = X509_get_subject_name(x);
+    if (xn == NULL) {
+      goto err;
+    }
 
-	if (0)
-		{
-err:
-		if (ret != NULL) sk_X509_NAME_pop_free(ret,X509_NAME_free);
-		ret=NULL;
-		}
-	if (sk != NULL) sk_X509_NAME_free(sk);
-	if (in != NULL) BIO_free(in);
-	if (x != NULL) X509_free(x);
-	if (ret != NULL)
-		ERR_clear_error();
-	return(ret);
-	}
-#endif
+    /* check for duplicates */
+    xn = X509_NAME_dup(xn);
+    if (xn == NULL) {
+      goto err;
+    }
+    if (sk_X509_NAME_find(sk, NULL, xn)) {
+      X509_NAME_free(xn);
+    } else {
+      sk_X509_NAME_push(sk, xn);
+      sk_X509_NAME_push(ret, xn);
+    }
+  }
 
-/*!
- * Add a file of certs to a stack.
+  if (0) {
+  err:
+    if (ret != NULL) {
+      sk_X509_NAME_pop_free(ret, X509_NAME_free);
+    }
+    ret = NULL;
+  }
+
+  if (sk != NULL) {
+    sk_X509_NAME_free(sk);
+  }
+  if (in != NULL) {
+    BIO_free(in);
+  }
+  if (x != NULL) {
+    X509_free(x);
+  }
+  if (ret != NULL) {
+    ERR_clear_error();
+  }
+  return ret;
+}
+
+/* Add a file of certs to a stack.
+ *
  * \param stack the stack to add to.
  * \param file the file to add from. All certs in this file that are not
- * already in the stack will be added.
+ *     already in the stack will be added.
  * \return 1 for success, 0 for failure. Note that in the case of failure some
- * certs may have been added to \c stack.
- */
+ *     certs may have been added to \c stack. */
+int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) * stack,
+                                        const char *file) {
+  BIO *in;
+  X509 *x = NULL;
+  X509_NAME *xn = NULL;
+  int ret = 1;
+  int (*oldcmp)(const X509_NAME **a, const X509_NAME **b);
 
-int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
-					const char *file)
-	{
-	BIO *in;
-	X509 *x=NULL;
-	X509_NAME *xn=NULL;
-	int ret=1;
-	int (*oldcmp)(const X509_NAME **a, const X509_NAME **b);
-	
-	oldcmp=sk_X509_NAME_set_cmp_func(stack,xname_cmp);
-	
-	in=BIO_new(BIO_s_file());
-	
-	if (in == NULL)
-		{
-		OPENSSL_PUT_ERROR(SSL, SSL_add_file_cert_subjects_to_stack, ERR_R_MALLOC_FAILURE);
-		goto err;
-		}
-	
-	if (!BIO_read_filename(in,file))
-		goto err;
-	
-	for (;;)
-		{
-		if (PEM_read_bio_X509(in,&x,NULL,NULL) == NULL)
-			break;
-		if ((xn=X509_get_subject_name(x)) == NULL) goto err;
-		xn=X509_NAME_dup(xn);
-		if (xn == NULL) goto err;
-		if (sk_X509_NAME_find(stack, NULL, xn))
-			X509_NAME_free(xn);
-		else
-			sk_X509_NAME_push(stack,xn);
-		}
+  oldcmp = sk_X509_NAME_set_cmp_func(stack, xname_cmp);
+  in = BIO_new(BIO_s_file());
 
-	ERR_clear_error();
+  if (in == NULL) {
+    OPENSSL_PUT_ERROR(SSL, SSL_add_file_cert_subjects_to_stack,
+                      ERR_R_MALLOC_FAILURE);
+    goto err;
+  }
 
-	if (0)
-		{
-err:
-		ret=0;
-		}
-	if(in != NULL)
-		BIO_free(in);
-	if(x != NULL)
-		X509_free(x);
-	
-	(void)sk_X509_NAME_set_cmp_func(stack,oldcmp);
+  if (!BIO_read_filename(in, file)) {
+    goto err;
+  }
 
-	return ret;
-	}
+  for (;;) {
+    if (PEM_read_bio_X509(in, &x, NULL, NULL) == NULL) {
+      break;
+    }
+    xn = X509_get_subject_name(x);
+    if (xn == NULL) {
+      goto err;
+    }
+    xn = X509_NAME_dup(xn);
+    if (xn == NULL) {
+      goto err;
+    }
+    if (sk_X509_NAME_find(stack, NULL, xn)) {
+      X509_NAME_free(xn);
+    } else {
+      sk_X509_NAME_push(stack, xn);
+    }
+  }
 
-/*!
- * Add a directory of certs to a stack.
+  ERR_clear_error();
+
+  if (0) {
+  err:
+    ret = 0;
+  }
+
+  if (in != NULL) {
+    BIO_free(in);
+  }
+  if (x != NULL) {
+    X509_free(x);
+  }
+
+  sk_X509_NAME_set_cmp_func(stack, oldcmp);
+
+  return ret;
+}
+
+/* Add a directory of certs to a stack.
+ *
  * \param stack the stack to append to.
  * \param dir the directory to append from. All files in this directory will be
- * examined as potential certs. Any that are acceptable to
- * SSL_add_dir_cert_subjects_to_stack() that are not already in the stack will be
- * included.
+ *     examined as potential certs. Any that are acceptable to
+ *     SSL_add_dir_cert_subjects_to_stack() that are not already in the stack will
+ *     be included.
  * \return 1 for success, 0 for failure. Note that in the case of failure some
- * certs may have been added to \c stack.
- */
+ *     certs may have been added to \c stack. */
+int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) * stack,
+                                       const char *dir) {
+  OPENSSL_DIR_CTX *d = NULL;
+  const char *filename;
+  int ret = 0;
 
-int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stack,
-				       const char *dir)
-	{
-	OPENSSL_DIR_CTX *d = NULL;
-	const char *filename;
-	int ret = 0;
+  CRYPTO_w_lock(CRYPTO_LOCK_READDIR);
 
-	CRYPTO_w_lock(CRYPTO_LOCK_READDIR);
+  /* Note that a side effect is that the CAs will be sorted by name */
+  while ((filename = OPENSSL_DIR_read(&d, dir))) {
+    char buf[1024];
+    int r;
 
-	/* Note that a side effect is that the CAs will be sorted by name */
+    if (strlen(dir) + strlen(filename) + 2 > sizeof(buf)) {
+      OPENSSL_PUT_ERROR(SSL, SSL_add_dir_cert_subjects_to_stack,
+                        SSL_R_PATH_TOO_LONG);
+      goto err;
+    }
 
-	while((filename = OPENSSL_DIR_read(&d, dir)))
-		{
-		char buf[1024];
-		int r;
+    r = BIO_snprintf(buf, sizeof buf, "%s/%s", dir, filename);
+    if (r <= 0 || r >= (int)sizeof(buf) ||
+        !SSL_add_file_cert_subjects_to_stack(stack, buf)) {
+      goto err;
+    }
+  }
 
-		if(strlen(dir)+strlen(filename)+2 > sizeof buf)
-			{
-			OPENSSL_PUT_ERROR(SSL, SSL_add_dir_cert_subjects_to_stack, SSL_R_PATH_TOO_LONG);
-			goto err;
-			}
+  if (errno) {
+    OPENSSL_PUT_ERROR(SSL, SSL_add_file_cert_subjects_to_stack, ERR_R_SYS_LIB);
+    ERR_add_error_data(3, "OPENSSL_DIR_read(&ctx, '", dir, "')");
+    goto err;
+  }
 
-#ifdef OPENSSL_SYS_VMS
-		r = BIO_snprintf(buf,sizeof buf,"%s%s",dir,filename);
-#else
-		r = BIO_snprintf(buf,sizeof buf,"%s/%s",dir,filename);
-#endif
-		if (r <= 0 || r >= (int)sizeof(buf))
-			goto err;
-		if(!SSL_add_file_cert_subjects_to_stack(stack,buf))
-			goto err;
-		}
-
-	if (errno)
-		{
-		OPENSSL_PUT_ERROR(SSL, SSL_add_file_cert_subjects_to_stack, ERR_R_SYS_LIB);
-		ERR_add_error_data(3, "OPENSSL_DIR_read(&ctx, '", dir, "')");
-		goto err;
-		}
-
-	ret = 1;
+  ret = 1;
 
 err:
-	if (d) OPENSSL_DIR_end(&d);
-	CRYPTO_w_unlock(CRYPTO_LOCK_READDIR);
-	return ret;
-	}
+  if (d) {
+    OPENSSL_DIR_end(&d);
+  }
+  CRYPTO_w_unlock(CRYPTO_LOCK_READDIR);
+  return ret;
+}
 
 /* Add a certificate to a BUF_MEM structure */
+static int ssl_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x) {
+  int n;
+  uint8_t *p;
 
-static int ssl_add_cert_to_buf(BUF_MEM *buf, unsigned long *l, X509 *x)
-	{
-	int n;
-	unsigned char *p;
+  n = i2d_X509(x, NULL);
+  if (!BUF_MEM_grow_clean(buf, (int)(n + (*l) + 3))) {
+    OPENSSL_PUT_ERROR(SSL, ssl_add_cert_to_buf, ERR_R_BUF_LIB);
+    return 0;
+  }
+  p = (uint8_t *)&(buf->data[*l]);
+  l2n3(n, p);
+  i2d_X509(x, &p);
+  *l += n + 3;
 
-	n=i2d_X509(x,NULL);
-	if (!BUF_MEM_grow_clean(buf,(int)(n+(*l)+3)))
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_add_cert_to_buf, ERR_R_BUF_LIB);
-		return 0;
-		}
-	p=(unsigned char *)&(buf->data[*l]);
-	l2n3(n,p);
-	i2d_X509(x,&p);
-	*l+=n+3;
-
-	return 1;
-	}
+  return 1;
+}
 
 /* Add certificate chain to internal SSL BUF_MEM structure. */
-int ssl_add_cert_chain(SSL *s, CERT_PKEY *cpk, unsigned long *l)
-	{
-	BUF_MEM *buf = s->init_buf;
-	int no_chain;
-	size_t i;
+int ssl_add_cert_chain(SSL *s, CERT_PKEY *cpk, unsigned long *l) {
+  BUF_MEM *buf = s->init_buf;
+  int no_chain = 0;
+  size_t i;
 
-	X509 *x;
-	STACK_OF(X509) *extra_certs;
-	X509_STORE *chain_store;
+  X509 *x = NULL;
+  STACK_OF(X509) * extra_certs;
+  X509_STORE *chain_store;
 
-	if (cpk)
-		x = cpk->x509;
-	else
-		x = NULL;
+  if (cpk) {
+    x = cpk->x509;
+  }
 
-	if (s->cert->chain_store)
-		chain_store = s->cert->chain_store;
-	else
-		chain_store = s->ctx->cert_store;
+  if (s->cert->chain_store) {
+    chain_store = s->cert->chain_store;
+  } else {
+    chain_store = s->ctx->cert_store;
+  }
 
-	/* If we have a certificate specific chain use it, else use
-	 * parent ctx.
-	 */
-	if (cpk && cpk->chain)
-		extra_certs = cpk->chain;
-	else
-		extra_certs = s->ctx->extra_certs;
+  /* If we have a certificate specific chain use it, else use parent ctx. */
+  if (cpk && cpk->chain) {
+    extra_certs = cpk->chain;
+  } else {
+    extra_certs = s->ctx->extra_certs;
+  }
 
-	if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || extra_certs)
-		no_chain = 1;
-	else
-		no_chain = 0;
+  if ((s->mode & SSL_MODE_NO_AUTO_CHAIN) || extra_certs) {
+    no_chain = 1;
+  }
 
-	/* TLSv1 sends a chain with nothing in it, instead of an alert */
-	if (!BUF_MEM_grow_clean(buf,10))
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_add_cert_chain, ERR_R_BUF_LIB);
-		return 0;
-		}
-	if (x != NULL)
-		{
-		if (no_chain)
-			{
-			if (!ssl_add_cert_to_buf(buf, l, x))
-				return 0;
-			}
-		else
-			{
-			X509_STORE_CTX xs_ctx;
+  /* TLSv1 sends a chain with nothing in it, instead of an alert. */
+  if (!BUF_MEM_grow_clean(buf, 10)) {
+    OPENSSL_PUT_ERROR(SSL, ssl_add_cert_chain, ERR_R_BUF_LIB);
+    return 0;
+  }
 
-			if (!X509_STORE_CTX_init(&xs_ctx,chain_store,x,NULL))
-				{
-				OPENSSL_PUT_ERROR(SSL, ssl_add_cert_chain, ERR_R_X509_LIB);
-				return(0);
-				}
-			X509_verify_cert(&xs_ctx);
-			/* Don't leave errors in the queue */
-			ERR_clear_error();
-			for (i=0; i < sk_X509_num(xs_ctx.chain); i++)
-				{
-				x = sk_X509_value(xs_ctx.chain, i);
+  if (x != NULL) {
+    if (no_chain) {
+      if (!ssl_add_cert_to_buf(buf, l, x)) {
+        return 0;
+      }
+    } else {
+      X509_STORE_CTX xs_ctx;
 
-				if (!ssl_add_cert_to_buf(buf, l, x))
-					{
-					X509_STORE_CTX_cleanup(&xs_ctx);
-					return 0;
-					}
-				}
-			X509_STORE_CTX_cleanup(&xs_ctx);
-			}
-		}
-	for (i=0; i<sk_X509_num(extra_certs); i++)
-		{
-		x=sk_X509_value(extra_certs,i);
-		if (!ssl_add_cert_to_buf(buf, l, x))
-			return 0;
-		}
+      if (!X509_STORE_CTX_init(&xs_ctx, chain_store, x, NULL)) {
+        OPENSSL_PUT_ERROR(SSL, ssl_add_cert_chain, ERR_R_X509_LIB);
+        return 0;
+      }
+      X509_verify_cert(&xs_ctx);
+      /* Don't leave errors in the queue */
+      ERR_clear_error();
+      for (i = 0; i < sk_X509_num(xs_ctx.chain); i++) {
+        x = sk_X509_value(xs_ctx.chain, i);
 
-	return 1;
-	}
+        if (!ssl_add_cert_to_buf(buf, l, x)) {
+          X509_STORE_CTX_cleanup(&xs_ctx);
+          return 0;
+        }
+      }
+      X509_STORE_CTX_cleanup(&xs_ctx);
+    }
+  }
+
+  for (i = 0; i < sk_X509_num(extra_certs); i++) {
+    x = sk_X509_value(extra_certs, i);
+    if (!ssl_add_cert_to_buf(buf, l, x)) {
+      return 0;
+    }
+  }
+
+  return 1;
+}
 
 /* Build a certificate chain for current certificate */
-int ssl_build_cert_chain(CERT *c, X509_STORE *chain_store, int flags)
-	{
-	CERT_PKEY *cpk = c->key;
-	X509_STORE_CTX xs_ctx;
-	STACK_OF(X509) *chain = NULL, *untrusted = NULL;
-	X509 *x;
-	int i, rv = 0;
-	unsigned long error;
+int ssl_build_cert_chain(CERT *c, X509_STORE *chain_store, int flags) {
+  CERT_PKEY *cpk = c->key;
+  X509_STORE_CTX xs_ctx;
+  STACK_OF(X509) *chain = NULL, *untrusted = NULL;
+  X509 *x;
+  int i, rv = 0;
+  unsigned long error;
 
-	if (!cpk->x509)
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_build_cert_chain, SSL_R_NO_CERTIFICATE_SET);
-		goto err;
-		}
-	/* Rearranging and check the chain: add everything to a store */
-	if (flags & SSL_BUILD_CHAIN_FLAG_CHECK)
-		{
-		size_t j;
-		chain_store = X509_STORE_new();
-		if (!chain_store)
-			goto err;
-		for (j = 0; j < sk_X509_num(cpk->chain); j++)
-			{
-			x = sk_X509_value(cpk->chain, j);
-			if (!X509_STORE_add_cert(chain_store, x))
-				{
-				error = ERR_peek_last_error();
-				if (ERR_GET_LIB(error) != ERR_LIB_X509 ||
-				    ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE)
-					goto err;
-				ERR_clear_error();
-				}
-			}
-		/* Add EE cert too: it might be self signed */
-		if (!X509_STORE_add_cert(chain_store, cpk->x509))
-			{
-			error = ERR_peek_last_error();
-			if (ERR_GET_LIB(error) != ERR_LIB_X509 ||
-			    ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE)
-				goto err;
-			ERR_clear_error();
-			}
-		}
-	else
-		{
-		if (c->chain_store)
-			chain_store = c->chain_store;
+  if (!cpk->x509) {
+    OPENSSL_PUT_ERROR(SSL, ssl_build_cert_chain, SSL_R_NO_CERTIFICATE_SET);
+    goto err;
+  }
 
-		if (flags & SSL_BUILD_CHAIN_FLAG_UNTRUSTED)
-			untrusted = cpk->chain;
-		}
+  /* Rearranging and check the chain: add everything to a store */
+  if (flags & SSL_BUILD_CHAIN_FLAG_CHECK) {
+    size_t j;
+    chain_store = X509_STORE_new();
+    if (!chain_store) {
+      goto err;
+    }
 
-	if (!X509_STORE_CTX_init(&xs_ctx, chain_store, cpk->x509, untrusted))
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_build_cert_chain, ERR_R_X509_LIB);
-		goto err;
-		}
+    for (j = 0; j < sk_X509_num(cpk->chain); j++) {
+      x = sk_X509_value(cpk->chain, j);
+      if (!X509_STORE_add_cert(chain_store, x)) {
+        error = ERR_peek_last_error();
+        if (ERR_GET_LIB(error) != ERR_LIB_X509 ||
+            ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE) {
+          goto err;
+        }
+        ERR_clear_error();
+      }
+    }
 
-	i = X509_verify_cert(&xs_ctx);
-	if (i <= 0 && flags & SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR)
-		{
-		if (flags & SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR)
-			ERR_clear_error();
-		i = 1;
-		rv = 2;
-		}
-	if (i > 0)
-		chain = X509_STORE_CTX_get1_chain(&xs_ctx);
-	if (i <= 0)
-		{
-		OPENSSL_PUT_ERROR(SSL, ssl_build_cert_chain, SSL_R_CERTIFICATE_VERIFY_FAILED);
-		i = X509_STORE_CTX_get_error(&xs_ctx);
-		ERR_add_error_data(2, "Verify error:",
-					X509_verify_cert_error_string(i));
+    /* Add EE cert too: it might be self signed */
+    if (!X509_STORE_add_cert(chain_store, cpk->x509)) {
+      error = ERR_peek_last_error();
+      if (ERR_GET_LIB(error) != ERR_LIB_X509 ||
+          ERR_GET_REASON(error) != X509_R_CERT_ALREADY_IN_HASH_TABLE) {
+        goto err;
+      }
+      ERR_clear_error();
+    }
+  } else {
+    if (c->chain_store) {
+      chain_store = c->chain_store;
+    }
 
-		X509_STORE_CTX_cleanup(&xs_ctx);
-		goto err;
-		}
-	X509_STORE_CTX_cleanup(&xs_ctx);
-	if (cpk->chain)
-		sk_X509_pop_free(cpk->chain, X509_free);
-	/* Remove EE certificate from chain */
-	x = sk_X509_shift(chain);
-	X509_free(x);
-	if (flags & SSL_BUILD_CHAIN_FLAG_NO_ROOT)
-		{
-		if (sk_X509_num(chain) > 0)
-			{
-			/* See if last cert is self signed */
-			x = sk_X509_value(chain, sk_X509_num(chain) - 1);
-			X509_check_purpose(x, -1, 0);
-			if (x->ex_flags & EXFLAG_SS)
-				{
-				x = sk_X509_pop(chain);
-				X509_free(x);
-				}
-			}
-		}
-	cpk->chain = chain;
-	if (rv == 0)
-		rv = 1;
-	err:
-	if (flags & SSL_BUILD_CHAIN_FLAG_CHECK)
-		X509_STORE_free(chain_store);
+    if (flags & SSL_BUILD_CHAIN_FLAG_UNTRUSTED) {
+      untrusted = cpk->chain;
+    }
+  }
 
-	return rv;
-	}
+  if (!X509_STORE_CTX_init(&xs_ctx, chain_store, cpk->x509, untrusted)) {
+    OPENSSL_PUT_ERROR(SSL, ssl_build_cert_chain, ERR_R_X509_LIB);
+    goto err;
+  }
 
-int ssl_cert_set_cert_store(CERT *c, X509_STORE *store, int chain, int ref)
-	{
-	X509_STORE **pstore;
-	if (chain)
-		pstore = &c->chain_store;
-	else
-		pstore = &c->verify_store;
-	if (*pstore)
-		X509_STORE_free(*pstore);
-	*pstore = store;
-	if (ref && store)
-		CRYPTO_add(&store->references, 1, CRYPTO_LOCK_X509_STORE);
-	return 1;
-	}
+  i = X509_verify_cert(&xs_ctx);
+  if (i <= 0 && flags & SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR) {
+    if (flags & SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR) {
+      ERR_clear_error();
+    }
+    i = 1;
+    rv = 2;
+  }
 
+  if (i > 0) {
+    chain = X509_STORE_CTX_get1_chain(&xs_ctx);
+  }
+  if (i <= 0) {
+    OPENSSL_PUT_ERROR(SSL, ssl_build_cert_chain,
+                      SSL_R_CERTIFICATE_VERIFY_FAILED);
+    i = X509_STORE_CTX_get_error(&xs_ctx);
+    ERR_add_error_data(2, "Verify error:", X509_verify_cert_error_string(i));
+
+    X509_STORE_CTX_cleanup(&xs_ctx);
+    goto err;
+  }
+
+  X509_STORE_CTX_cleanup(&xs_ctx);
+  if (cpk->chain) {
+    sk_X509_pop_free(cpk->chain, X509_free);
+  }
+
+  /* Remove EE certificate from chain */
+  x = sk_X509_shift(chain);
+  X509_free(x);
+  if (flags & SSL_BUILD_CHAIN_FLAG_NO_ROOT) {
+    if (sk_X509_num(chain) > 0) {
+      /* See if last cert is self signed */
+      x = sk_X509_value(chain, sk_X509_num(chain) - 1);
+      X509_check_purpose(x, -1, 0);
+      if (x->ex_flags & EXFLAG_SS) {
+        x = sk_X509_pop(chain);
+        X509_free(x);
+      }
+    }
+  }
+
+  cpk->chain = chain;
+  if (rv == 0)
+    rv = 1;
+
+err:
+  if (flags & SSL_BUILD_CHAIN_FLAG_CHECK) {
+    X509_STORE_free(chain_store);
+  }
+
+  return rv;
+}
+
+int ssl_cert_set_cert_store(CERT *c, X509_STORE *store, int chain, int ref) {
+  X509_STORE **pstore;
+  if (chain) {
+    pstore = &c->chain_store;
+  } else {
+    pstore = &c->verify_store;
+  }
+
+  if (*pstore) {
+    X509_STORE_free(*pstore);
+  }
+  *pstore = store;
+
+  if (ref && store) {
+    CRYPTO_add(&store->references, 1, CRYPTO_LOCK_X509_STORE);
+  }
+  return 1;
+}