mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
78
src/ssl.c
78
src/ssl.c
@ -25826,7 +25826,7 @@ void wolfSSL_ASN1_GENERALIZEDTIME_free(WOLFSSL_ASN1_TIME* asn1Time)
|
|||||||
XMEMSET(asn1Time->data, 0, sizeof(asn1Time->data));
|
XMEMSET(asn1Time->data, 0, sizeof(asn1Time->data));
|
||||||
}
|
}
|
||||||
|
|
||||||
int wolfSSL_sk_num(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk)
|
int wolfSSL_sk_num(WOLFSSL_STACK* sk)
|
||||||
{
|
{
|
||||||
WOLFSSL_ENTER("wolfSSL_sk_num");
|
WOLFSSL_ENTER("wolfSSL_sk_num");
|
||||||
if (sk == NULL)
|
if (sk == NULL)
|
||||||
@ -25834,13 +25834,55 @@ int wolfSSL_sk_num(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk)
|
|||||||
return (int)sk->num;
|
return (int)sk->num;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* wolfSSL_sk_value(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk, int i)
|
void* wolfSSL_sk_value(WOLFSSL_STACK* sk, int i)
|
||||||
{
|
{
|
||||||
|
#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
|
||||||
|
int offset = i;
|
||||||
|
WOLFSSL_GENERAL_NAME* gn;
|
||||||
|
#endif
|
||||||
|
WOLFSSL_ENTER("wolfSSL_sk_value");
|
||||||
|
|
||||||
for (; sk != NULL && i > 0; i--)
|
for (; sk != NULL && i > 0; i--)
|
||||||
sk = sk->next;
|
sk = sk->next;
|
||||||
if (sk == NULL)
|
if (sk == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
return (void*)sk->data.obj;
|
|
||||||
|
switch (sk->type) {
|
||||||
|
case STACK_TYPE_X509:
|
||||||
|
return (void*)sk->data.x509;
|
||||||
|
#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
|
||||||
|
case STACK_TYPE_CIPHER:
|
||||||
|
sk->data.cipher.offset = offset;
|
||||||
|
return (void*)&sk->data.cipher;
|
||||||
|
case STACK_TYPE_GEN_NAME:
|
||||||
|
gn = (WOLFSSL_GENERAL_NAME*)sk->data.obj;
|
||||||
|
if (gn == NULL)
|
||||||
|
return NULL;
|
||||||
|
gn->type = sk->data.obj->type;
|
||||||
|
gn->d.ia5 = sk->data.obj->d.ia5;
|
||||||
|
gn->d.iPAddress = sk->data.obj->d.iPAddress;
|
||||||
|
gn->d.dNSName = sk->data.obj->d.dNSName;
|
||||||
|
gn->d.uniformResourceIdentifier =
|
||||||
|
sk->data.obj->d.uniformResourceIdentifier;
|
||||||
|
return (void*)gn;
|
||||||
|
case STACK_TYPE_ACCESS_DESCRIPTION:
|
||||||
|
return (void*)sk->data.access;
|
||||||
|
#endif
|
||||||
|
case STACK_TYPE_OBJ:
|
||||||
|
return (void*)sk->data.obj;
|
||||||
|
break;
|
||||||
|
case STACK_TYPE_NULL:
|
||||||
|
return (void*)sk->data.generic;
|
||||||
|
break;
|
||||||
|
#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
|
||||||
|
case STACK_TYPE_X509_EXT:
|
||||||
|
return (void*)sk->data.ext;
|
||||||
|
#endif
|
||||||
|
case STACK_TYPE_CONF_VALUE:
|
||||||
|
return (void*)sk->data.conf->value;
|
||||||
|
default:
|
||||||
|
return (void*)sk->data.obj;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Free the structure for ASN1_OBJECT stack */
|
/* Free the structure for ASN1_OBJECT stack */
|
||||||
@ -25876,6 +25918,9 @@ void wolfSSL_sk_free(WOLFSSL_STACK* sk)
|
|||||||
case STACK_TYPE_X509_NAME:
|
case STACK_TYPE_X509_NAME:
|
||||||
wolfSSL_sk_X509_NAME_free(sk);
|
wolfSSL_sk_X509_NAME_free(sk);
|
||||||
break;
|
break;
|
||||||
|
case STACK_TYPE_CONF_VALUE:
|
||||||
|
wolfSSL_sk_CONF_VALUE_free(sk);
|
||||||
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
wolfSSL_sk_ASN1_OBJECT_free(sk);
|
wolfSSL_sk_ASN1_OBJECT_free(sk);
|
||||||
@ -25941,6 +25986,33 @@ void wolfSSL_sk_pop_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(OPENSSL_ALL)
|
||||||
|
/* Free the structure for WOLFSSL_CONF_VALUE stack
|
||||||
|
*
|
||||||
|
* sk stack to free nodes in
|
||||||
|
*/
|
||||||
|
void wolfSSL_sk_CONF_VALUE_free(WOLF_STACK_OF(WOLFSSL_CONF_VALUE)* sk)
|
||||||
|
{
|
||||||
|
WOLFSSL_STACK* node;
|
||||||
|
WOLFSSL_STACK* tmp;
|
||||||
|
WOLFSSL_ENTER("wolfSSL_sk_CONF_VALUE_free");
|
||||||
|
|
||||||
|
if (sk == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* parse through stack freeing each node */
|
||||||
|
node = sk->next;
|
||||||
|
while (node) {
|
||||||
|
tmp = node;
|
||||||
|
node = node->next;
|
||||||
|
XFREE(tmp, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* free head of stack */
|
||||||
|
XFREE(sk, NULL, DYNAMIC_TYPE_ASN1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Creates and returns a new null stack. */
|
/* Creates and returns a new null stack. */
|
||||||
WOLFSSL_STACK* wolfSSL_sk_new_null(void)
|
WOLFSSL_STACK* wolfSSL_sk_new_null(void)
|
||||||
{
|
{
|
||||||
|
@ -1816,6 +1816,12 @@ struct WOLFSSL_CIPHER {
|
|||||||
byte cipherSuite0;
|
byte cipherSuite0;
|
||||||
byte cipherSuite;
|
byte cipherSuite;
|
||||||
WOLFSSL* ssl;
|
WOLFSSL* ssl;
|
||||||
|
#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT)
|
||||||
|
char description[MAX_CIPHERNAME_SZ];
|
||||||
|
unsigned long offset;
|
||||||
|
unsigned int in_stack; /* TRUE if added to stack in wolfSSL_get_ciphers_compat */
|
||||||
|
int bits;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -3443,6 +3449,7 @@ typedef struct Arrays {
|
|||||||
#define STACK_TYPE_X509_EXT 7
|
#define STACK_TYPE_X509_EXT 7
|
||||||
#define STACK_TYPE_NULL 8
|
#define STACK_TYPE_NULL 8
|
||||||
#define STACK_TYPE_X509_NAME 9
|
#define STACK_TYPE_X509_NAME 9
|
||||||
|
#define STACK_TYPE_CONF_VALUE 10
|
||||||
|
|
||||||
struct WOLFSSL_STACK {
|
struct WOLFSSL_STACK {
|
||||||
unsigned long num; /* number of nodes in stack
|
unsigned long num; /* number of nodes in stack
|
||||||
@ -3459,6 +3466,7 @@ struct WOLFSSL_STACK {
|
|||||||
WOLFSSL_CIPHER cipher;
|
WOLFSSL_CIPHER cipher;
|
||||||
WOLFSSL_ACCESS_DESCRIPTION* access;
|
WOLFSSL_ACCESS_DESCRIPTION* access;
|
||||||
WOLFSSL_X509_EXTENSION* ext;
|
WOLFSSL_X509_EXTENSION* ext;
|
||||||
|
WOLFSSL_CONF_VALUE* conf;
|
||||||
void* generic;
|
void* generic;
|
||||||
char* string;
|
char* string;
|
||||||
WOLFSSL_GENERAL_NAME* gn;
|
WOLFSSL_GENERAL_NAME* gn;
|
||||||
|
@ -1,2 +1,48 @@
|
|||||||
/* conf.h for openssl */
|
/* conf.h
|
||||||
|
*
|
||||||
|
* Copyright (C) 2006-2019 wolfSSL Inc.
|
||||||
|
*
|
||||||
|
* This file is part of wolfSSL.
|
||||||
|
*
|
||||||
|
* wolfSSL is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* wolfSSL is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* conf.h for openSSL */
|
||||||
|
|
||||||
|
#ifndef WOLFSSL_conf_H_
|
||||||
|
#define WOLFSSL_conf_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct WOLFSSL_CONF_VALUE {
|
||||||
|
char *section;
|
||||||
|
char *name;
|
||||||
|
char *value;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct WOLFSSL_INIT_SETTINGS {
|
||||||
|
char* appname;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct WOLFSSL_CONF_VALUE CONF_VALUE;
|
||||||
|
typedef struct WOLFSSL_INIT_SETTINGS OPENSSL_INIT_SETTINGS;
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
} /* extern "C" */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* WOLFSSL_conf_H_ */
|
||||||
|
@ -34,6 +34,8 @@ WOLFSSL_API void wolfSSL_sk_free(WOLFSSL_STACK *);
|
|||||||
WOLFSSL_API void wolfSSL_sk_GENERIC_free(WOLFSSL_STACK *);
|
WOLFSSL_API void wolfSSL_sk_GENERIC_free(WOLFSSL_STACK *);
|
||||||
WOLFSSL_API int wolfSSL_sk_GENERIC_push(WOLFSSL_STACK *sk, void *data);
|
WOLFSSL_API int wolfSSL_sk_GENERIC_push(WOLFSSL_STACK *sk, void *data);
|
||||||
WOLFSSL_API void wolfSSL_sk_pop_free(WOLFSSL_STACK *st, void (*func) (void *));
|
WOLFSSL_API void wolfSSL_sk_pop_free(WOLFSSL_STACK *st, void (*func) (void *));
|
||||||
|
WOLFSSL_API
|
||||||
|
void wolfSSL_sk_CONF_VALUE_free(WOLF_STACK_OF(WOLFSSL_CONF_VALUE)* sk);
|
||||||
WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_new_null(void);
|
WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_new_null(void);
|
||||||
WOLFSSL_API int wolfSSL_sk_push(WOLFSSL_STACK *st, const void *data);
|
WOLFSSL_API int wolfSSL_sk_push(WOLFSSL_STACK *st, const void *data);
|
||||||
|
|
||||||
|
@ -175,6 +175,7 @@ typedef struct WOLFSSL_X509_VERIFY_PARAM WOLFSSL_X509_VERIFY_PARAM;
|
|||||||
typedef struct WOLFSSL_BIO WOLFSSL_BIO;
|
typedef struct WOLFSSL_BIO WOLFSSL_BIO;
|
||||||
typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD;
|
typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD;
|
||||||
typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION;
|
typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION;
|
||||||
|
typedef struct WOLFSSL_CONF_VALUE WOLFSSL_CONF_VALUE;
|
||||||
typedef struct WOLFSSL_ASN1_TIME WOLFSSL_ASN1_TIME;
|
typedef struct WOLFSSL_ASN1_TIME WOLFSSL_ASN1_TIME;
|
||||||
typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT;
|
typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT;
|
||||||
typedef struct WOLFSSL_ASN1_OTHERNAME WOLFSSL_ASN1_OTHERNAME;
|
typedef struct WOLFSSL_ASN1_OTHERNAME WOLFSSL_ASN1_OTHERNAME;
|
||||||
@ -1919,8 +1920,8 @@ WOLFSSL_API int wolfSSL_ASN1_TIME_diff(int *pday, int *psec,
|
|||||||
const WOLFSSL_ASN1_TIME *from, const WOLFSSL_ASN1_TIME *to);
|
const WOLFSSL_ASN1_TIME *from, const WOLFSSL_ASN1_TIME *to);
|
||||||
WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_set(WOLFSSL_ASN1_TIME *s, time_t t);
|
WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_set(WOLFSSL_ASN1_TIME *s, time_t t);
|
||||||
|
|
||||||
WOLFSSL_API int wolfSSL_sk_num(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)*);
|
WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_STACK* sk);
|
||||||
WOLFSSL_API void* wolfSSL_sk_value(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)*, int);
|
WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_STACK* sk, int i);
|
||||||
|
|
||||||
/* stunnel 4.28 needs */
|
/* stunnel 4.28 needs */
|
||||||
WOLFSSL_API void* wolfSSL_CTX_get_ex_data(const WOLFSSL_CTX*, int);
|
WOLFSSL_API void* wolfSSL_CTX_get_ex_data(const WOLFSSL_CTX*, int);
|
||||||
|
Reference in New Issue
Block a user