If OPENSSL_SSL_DEBUG_BROKEN_PROTOCOL is set allow the use of "SCSV" as
a ciphersuite to position the SCSV value in different places for testing purposes.
This commit is contained in:
parent
3ed6e22771
commit
323fa64559
16
ssl/s3_lib.c
16
ssl/s3_lib.c
@ -2011,6 +2011,22 @@ OPENSSL_GLOBAL SSL_CIPHER ssl3_ciphers[]={
|
|||||||
256,
|
256,
|
||||||
256,
|
256,
|
||||||
},
|
},
|
||||||
|
#ifdef OPENSSL_SSL_DEBUG_BROKEN_PROTOCOL
|
||||||
|
{
|
||||||
|
1,
|
||||||
|
"SCSV",
|
||||||
|
SSL3_CK_SCSV,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef OPENSSL_NO_ECDH
|
#ifndef OPENSSL_NO_ECDH
|
||||||
/* Cipher C001 */
|
/* Cipher C001 */
|
||||||
|
@ -971,7 +971,10 @@ static void ssl_cipher_apply_rule(unsigned long cipher_id,
|
|||||||
#ifdef CIPHER_DEBUG
|
#ifdef CIPHER_DEBUG
|
||||||
printf("\nName: %s:\nAlgo = %08lx/%08lx/%08lx/%08lx/%08lx Algo_strength = %08lx\n", cp->name, cp->algorithm_mkey, cp->algorithm_auth, cp->algorithm_enc, cp->algorithm_mac, cp->algorithm_ssl, cp->algo_strength);
|
printf("\nName: %s:\nAlgo = %08lx/%08lx/%08lx/%08lx/%08lx Algo_strength = %08lx\n", cp->name, cp->algorithm_mkey, cp->algorithm_auth, cp->algorithm_enc, cp->algorithm_mac, cp->algorithm_ssl, cp->algo_strength);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef OPENSSL_SSL_DEBUG_BROKEN_PROTOCOL
|
||||||
|
if (cipher_id && cipher_id != cp->id)
|
||||||
|
continue;
|
||||||
|
#endif
|
||||||
if (alg_mkey && !(alg_mkey & cp->algorithm_mkey))
|
if (alg_mkey && !(alg_mkey & cp->algorithm_mkey))
|
||||||
continue;
|
continue;
|
||||||
if (alg_auth && !(alg_auth & cp->algorithm_auth))
|
if (alg_auth && !(alg_auth & cp->algorithm_auth))
|
||||||
|
@ -1423,6 +1423,7 @@ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
|
|||||||
SSL_CIPHER *c;
|
SSL_CIPHER *c;
|
||||||
CERT *ct = s->cert;
|
CERT *ct = s->cert;
|
||||||
unsigned char *q;
|
unsigned char *q;
|
||||||
|
int no_scsv = s->renegotiate;
|
||||||
/* Set disabled masks for this session */
|
/* Set disabled masks for this session */
|
||||||
ssl_set_client_disabled(s);
|
ssl_set_client_disabled(s);
|
||||||
|
|
||||||
@ -1437,13 +1438,22 @@ int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p,
|
|||||||
c->algorithm_mkey & ct->mask_k ||
|
c->algorithm_mkey & ct->mask_k ||
|
||||||
c->algorithm_auth & ct->mask_a)
|
c->algorithm_auth & ct->mask_a)
|
||||||
continue;
|
continue;
|
||||||
|
#ifdef OPENSSL_SSL_DEBUG_BROKEN_PROTOCOL
|
||||||
|
if (c->id == SSL3_CK_SCSV)
|
||||||
|
{
|
||||||
|
if (no_scsv)
|
||||||
|
continue;
|
||||||
|
else
|
||||||
|
no_scsv = 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p);
|
j = put_cb ? put_cb(c,p) : ssl_put_cipher_by_char(s,c,p);
|
||||||
p+=j;
|
p+=j;
|
||||||
}
|
}
|
||||||
/* If p == q, no ciphers and caller indicates an error. Otherwise
|
/* If p == q, no ciphers and caller indicates an error. Otherwise
|
||||||
* add SCSV if not renegotiating.
|
* add SCSV if not renegotiating.
|
||||||
*/
|
*/
|
||||||
if (p != q && !s->renegotiate)
|
if (p != q && !no_scsv)
|
||||||
{
|
{
|
||||||
static SSL_CIPHER scsv =
|
static SSL_CIPHER scsv =
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user