2016-09-23 02:53:19 -04:00
|
|
|
#ifndef _SSL_STACK_H_
|
|
|
|
#define _SSL_STACK_H_
|
|
|
|
|
2016-09-23 03:18:14 -04:00
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
2016-09-23 02:53:19 -04:00
|
|
|
#include "ssl_types.h"
|
|
|
|
|
2016-10-09 22:40:00 -04:00
|
|
|
#define STACK_OF(type) struct stack_st_##type
|
|
|
|
|
|
|
|
#define SKM_DEFINE_STACK_OF(t1, t2, t3) \
|
|
|
|
STACK_OF(t1); \
|
|
|
|
static ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \
|
|
|
|
{ \
|
|
|
|
return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \
|
|
|
|
} \
|
|
|
|
|
|
|
|
#define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t)
|
2020-06-05 08:20:04 -04:00
|
|
|
typedef struct asn1_string_st ASN1_OCTET_STRING;
|
|
|
|
|
|
|
|
struct stack_st_GENERAL_NAME;
|
|
|
|
typedef struct GENERAL_NAME_st {
|
|
|
|
int type;
|
|
|
|
union {
|
|
|
|
char *ptr;
|
|
|
|
struct asn1_string_st* dNSName;
|
|
|
|
ASN1_OCTET_STRING* iPAddress;
|
|
|
|
} d;
|
|
|
|
} GENERAL_NAME;
|
|
|
|
|
|
|
|
typedef struct asn1_string_st ASN1_OCTET_STRING;
|
|
|
|
typedef struct X509_name_st X509_NAME;
|
|
|
|
typedef struct asn1_string_st ASN1_STRING;
|
|
|
|
typedef struct X509_name_entry_st X509_NAME_ENTRY;
|
|
|
|
|
|
|
|
typedef struct asn1_string_st {
|
|
|
|
int type;
|
|
|
|
int length;
|
|
|
|
void *data;
|
|
|
|
} ASN1_IA5STRING;
|
|
|
|
|
|
|
|
typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief get nr of stack items
|
|
|
|
*
|
|
|
|
* @param sk Stack structure pointer
|
|
|
|
*
|
|
|
|
* @return number of items in the stack
|
|
|
|
*/
|
|
|
|
size_t sk_GENERAL_NAME_num(const struct stack_st_GENERAL_NAME *sk);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief get GENERAL_NAME value from the stack
|
|
|
|
*
|
|
|
|
* @param sk Stack structure pointer
|
|
|
|
* @param i Index to stack item
|
|
|
|
*
|
|
|
|
* @return GENERAL_NAME object pointer
|
|
|
|
*/
|
|
|
|
GENERAL_NAME *sk_GENERAL_NAME_value(const struct stack_st_GENERAL_NAME *sk, size_t i);
|
2016-10-09 22:40:00 -04:00
|
|
|
|
2016-09-23 02:53:19 -04:00
|
|
|
/**
|
|
|
|
* @brief create a openssl stack object
|
|
|
|
*
|
|
|
|
* @param c - stack function
|
|
|
|
*
|
|
|
|
* @return openssl stack object point
|
|
|
|
*/
|
|
|
|
OPENSSL_STACK* OPENSSL_sk_new(OPENSSL_sk_compfunc c);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief create a NULL function openssl stack object
|
|
|
|
*
|
|
|
|
* @param none
|
|
|
|
*
|
|
|
|
* @return openssl stack object point
|
|
|
|
*/
|
|
|
|
OPENSSL_STACK *OPENSSL_sk_new_null(void);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief free openssl stack object
|
|
|
|
*
|
|
|
|
* @param openssl stack object point
|
|
|
|
*
|
|
|
|
* @return none
|
|
|
|
*/
|
|
|
|
void OPENSSL_sk_free(OPENSSL_STACK *stack);
|
|
|
|
|
2016-09-23 03:18:14 -04:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
2016-09-23 02:53:19 -04:00
|
|
|
#endif
|