Activated dtls cookie handling. (But openssl seems to ignore it)
FossilOrigin-Name: ce91ec6df86b16f5ffc71b480c26d81f696bd576f2a0d057d4dfc5e77a4c0e39
This commit is contained in:
parent
a90a48097d
commit
cf60801ca3
@ -147,6 +147,17 @@ int dtls_openssl_set_certs(struct conn * conn, struct dtls_openssl_data *d)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int dtls_verify_callback (int ok, X509_STORE_CTX *ctx) {
|
||||||
|
|
||||||
|
|
||||||
|
printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX501 verify\n");
|
||||||
|
|
||||||
|
/* This function should ask the user
|
||||||
|
* if he trusts the received certificate.
|
||||||
|
* Here we always trust.
|
||||||
|
*/
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
struct dtls_openssl_data * dtls_openssl_data_create(struct conn * conn, const SSL_METHOD * method, BIO_METHOD * bio)
|
struct dtls_openssl_data * dtls_openssl_data_create(struct conn * conn, const SSL_METHOD * method, BIO_METHOD * bio)
|
||||||
@ -163,9 +174,7 @@ struct dtls_openssl_data * dtls_openssl_data_create(struct conn * conn, const SS
|
|||||||
}
|
}
|
||||||
|
|
||||||
SSL_CTX_set_read_ahead(d->ctx, 1);
|
SSL_CTX_set_read_ahead(d->ctx, 1);
|
||||||
// int rc = SSL_CTX_set_cipher_list(d->ctx, "PSK-AES128-CBC-SHA");
|
|
||||||
|
|
||||||
//int rc = SSL_CTX_set_cipher_list(d->ctx, "PSiaK-AXES128-C5BC-SaHA");
|
|
||||||
int rc = SSL_CTX_set_cipher_list(d->ctx, conn->dtls_cipher);
|
int rc = SSL_CTX_set_cipher_list(d->ctx, conn->dtls_cipher);
|
||||||
if (!rc){
|
if (!rc){
|
||||||
dtls_openssl_log_error(0,rc,"DTLS:");
|
dtls_openssl_log_error(0,rc,"DTLS:");
|
||||||
@ -173,6 +182,15 @@ struct dtls_openssl_data * dtls_openssl_data_create(struct conn * conn, const SS
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SSL_CTX_set_session_cache_mode(d->ctx, SSL_SESS_CACHE_OFF);
|
||||||
|
|
||||||
|
SSL_CTX_set_cookie_generate_cb(d->ctx, dtls_openssl_generate_cookie);
|
||||||
|
SSL_CTX_set_cookie_verify_cb(d->ctx, dtls_openssl_verify_cookie);
|
||||||
|
|
||||||
|
SSL_CTX_set_verify(d->ctx, SSL_VERIFY_PEER | SSL_VERIFY_CLIENT_ONCE, dtls_verify_callback);
|
||||||
|
|
||||||
|
printf ("Ver cookie rc %d\n",rc);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (conn->dtls_key_file && conn->dtls_cert_file){
|
if (conn->dtls_key_file && conn->dtls_cert_file){
|
||||||
@ -306,6 +324,10 @@ unsigned char cookie_secret[COOKIE_SECRET_LENGTH];
|
|||||||
|
|
||||||
int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
|
int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
printf(" Gen cookie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
|
||||||
|
|
||||||
|
|
||||||
unsigned char *buffer, result[EVP_MAX_MD_SIZE];
|
unsigned char *buffer, result[EVP_MAX_MD_SIZE];
|
||||||
unsigned int length = 0, resultlength;
|
unsigned int length = 0, resultlength;
|
||||||
union {
|
union {
|
||||||
@ -318,10 +340,10 @@ int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *
|
|||||||
if (!cookie_initialized)
|
if (!cookie_initialized)
|
||||||
{
|
{
|
||||||
if (!RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH))
|
if (!RAND_bytes(cookie_secret, COOKIE_SECRET_LENGTH))
|
||||||
{
|
{
|
||||||
printf("error setting random cookie secret\n");
|
printf("error setting random cookie secret\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
cookie_initialized = 1;
|
cookie_initialized = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,11 +366,10 @@ int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *
|
|||||||
length += sizeof(in_port_t);
|
length += sizeof(in_port_t);
|
||||||
buffer = (unsigned char*) OPENSSL_malloc(length);
|
buffer = (unsigned char*) OPENSSL_malloc(length);
|
||||||
|
|
||||||
if (buffer == NULL)
|
if (buffer == NULL) {
|
||||||
{
|
|
||||||
printf("out of memory\n");
|
printf("out of memory\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (peer.ss.ss_family) {
|
switch (peer.ss.ss_family) {
|
||||||
case AF_INET:
|
case AF_INET:
|
||||||
@ -388,6 +409,9 @@ int dtls_openssl_generate_cookie(SSL *ssl, unsigned char *cookie, unsigned int *
|
|||||||
|
|
||||||
int dtls_openssl_verify_cookie(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)
|
int dtls_openssl_verify_cookie(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
printf(" Verify cookie!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
|
||||||
|
|
||||||
unsigned char *buffer, result[EVP_MAX_MD_SIZE];
|
unsigned char *buffer, result[EVP_MAX_MD_SIZE];
|
||||||
unsigned int length = 0, resultlength;
|
unsigned int length = 0, resultlength;
|
||||||
union {
|
union {
|
||||||
|
Loading…
Reference in New Issue
Block a user