ssl_stack.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef _SSL_STACK_H_
  2. #define _SSL_STACK_H_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "ssl_types.h"
  7. #define STACK_OF(type) struct stack_st_##type
  8. #define SKM_DEFINE_STACK_OF(t1, t2, t3) \
  9. STACK_OF(t1); \
  10. static ossl_inline STACK_OF(t1) *sk_##t1##_new_null(void) \
  11. { \
  12. return (STACK_OF(t1) *)OPENSSL_sk_new_null(); \
  13. } \
  14. #define DEFINE_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t)
  15. typedef struct asn1_string_st ASN1_OCTET_STRING;
  16. struct stack_st_GENERAL_NAME;
  17. typedef struct GENERAL_NAME_st {
  18. int type;
  19. union {
  20. char *ptr;
  21. struct asn1_string_st* dNSName;
  22. ASN1_OCTET_STRING* iPAddress;
  23. } d;
  24. } GENERAL_NAME;
  25. typedef struct asn1_string_st ASN1_OCTET_STRING;
  26. typedef struct X509_name_st X509_NAME;
  27. typedef struct asn1_string_st ASN1_STRING;
  28. typedef struct X509_name_entry_st X509_NAME_ENTRY;
  29. typedef struct asn1_string_st {
  30. int type;
  31. int length;
  32. void *data;
  33. } ASN1_IA5STRING;
  34. typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES;
  35. /**
  36. * @brief get nr of stack items
  37. *
  38. * @param sk Stack structure pointer
  39. *
  40. * @return number of items in the stack
  41. */
  42. size_t sk_GENERAL_NAME_num(const struct stack_st_GENERAL_NAME *sk);
  43. /**
  44. * @brief get GENERAL_NAME value from the stack
  45. *
  46. * @param sk Stack structure pointer
  47. * @param i Index to stack item
  48. *
  49. * @return GENERAL_NAME object pointer
  50. */
  51. GENERAL_NAME *sk_GENERAL_NAME_value(const struct stack_st_GENERAL_NAME *sk, size_t i);
  52. /**
  53. * @brief create a openssl stack object
  54. *
  55. * @param c - stack function
  56. *
  57. * @return openssl stack object point
  58. */
  59. OPENSSL_STACK* OPENSSL_sk_new(OPENSSL_sk_compfunc c);
  60. /**
  61. * @brief create a NULL function openssl stack object
  62. *
  63. * @param none
  64. *
  65. * @return openssl stack object point
  66. */
  67. OPENSSL_STACK *OPENSSL_sk_new_null(void);
  68. /**
  69. * @brief free openssl stack object
  70. *
  71. * @param openssl stack object point
  72. *
  73. * @return none
  74. */
  75. void OPENSSL_sk_free(OPENSSL_STACK *stack);
  76. #ifdef __cplusplus
  77. }
  78. #endif
  79. #endif