projects
/
oweals
/
openssl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Support TLS_FALLBACK_SCSV.
[oweals/openssl.git]
/
apps
/
s_cb.c
diff --git
a/apps/s_cb.c
b/apps/s_cb.c
index 411a4f671ac7c1c52f8cbcbf1bee4c4780427f78..ed877af1220e9d4da16e45987c8339d54187f8bb 100644
(file)
--- a/
apps/s_cb.c
+++ b/
apps/s_cb.c
@@
-259,6
+259,7
@@
int set_cert_stuff(SSL_CTX *ctx, char *cert_file, char *key_file)
int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key,
STACK_OF(X509) *chain, int build_chain)
{
int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key,
STACK_OF(X509) *chain, int build_chain)
{
+ int chflags = chain ? SSL_BUILD_CHAIN_FLAG_CHECK : 0;
if (cert == NULL)
return 1;
if (SSL_CTX_use_certificate(ctx,cert) <= 0)
if (cert == NULL)
return 1;
if (SSL_CTX_use_certificate(ctx,cert) <= 0)
@@
-288,7
+289,7
@@
int set_cert_key_stuff(SSL_CTX *ctx, X509 *cert, EVP_PKEY *key,
ERR_print_errors(bio_err);
return 0;
}
ERR_print_errors(bio_err);
return 0;
}
- if (
!chain && build_chain && !SSL_CTX_build_cert_chain(ctx, 0
))
+ if (
build_chain && !SSL_CTX_build_cert_chain(ctx, chflags
))
{
BIO_printf(bio_err,"error building certificate chain\n");
ERR_print_errors(bio_err);
{
BIO_printf(bio_err,"error building certificate chain\n");
ERR_print_errors(bio_err);
@@
-1021,6
+1022,10
@@
void MS_CALLBACK tlsext_cb(SSL *s, int client_server, int type,
break;
#endif
break;
#endif
+ case TLSEXT_TYPE_padding:
+ extname = "TLS padding";
+ break;
+
default:
extname = "unknown";
break;
default:
extname = "unknown";
break;
@@
-1264,6
+1269,16
@@
static int set_cert_cb(SSL *ssl, void *arg)
{
int i, rv;
SSL_EXCERT *exc = arg;
{
int i, rv;
SSL_EXCERT *exc = arg;
+#ifdef CERT_CB_TEST_RETRY
+ static int retry_cnt;
+ if (retry_cnt < 5)
+ {
+ retry_cnt++;
+ fprintf(stderr, "Certificate callback retry test: count %d\n",
+ retry_cnt);
+ return -1;
+ }
+#endif
SSL_certs_clear(ssl);
if (!exc)
SSL_certs_clear(ssl);
if (!exc)
@@
-1677,6
+1692,12
@@
int args_ssl_call(SSL_CTX *ctx, BIO *err, SSL_CONF_CTX *cctx,
}
}
#endif
}
}
#endif
+ if (!SSL_CONF_CTX_finish(cctx))
+ {
+ BIO_puts(err, "Error finishing context\n");
+ ERR_print_errors(err);
+ return 0;
+ }
return 1;
}
return 1;
}
@@
-1724,7
+1745,6
@@
int ssl_load_stores(SSL_CTX *ctx,
ch = X509_STORE_new();
if (!X509_STORE_load_locations(ch, chCAfile, chCApath))
goto err;
ch = X509_STORE_new();
if (!X509_STORE_load_locations(ch, chCAfile, chCApath))
goto err;
- /*X509_STORE_set_verify_cb(ch, verify_callback);*/
SSL_CTX_set1_chain_cert_store(ctx, ch);
}
rv = 1;
SSL_CTX_set1_chain_cert_store(ctx, ch);
}
rv = 1;