You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3903 line
179 KiB

  1. /* Copyright (c) 2014, Google Inc.
  2. *
  3. * Permission to use, copy, modify, and/or distribute this software for any
  4. * purpose with or without fee is hereby granted, provided that the above
  5. * copyright notice and this permission notice appear in all copies.
  6. *
  7. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  8. * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  9. * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
  10. * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  11. * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  12. * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  13. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
  14. #if !defined(IN_STACK_H)
  15. #error "Don't include this file directly. Include stack.h."
  16. #endif
  17. /* ACCESS_DESCRIPTION */
  18. #define sk_ACCESS_DESCRIPTION_new(comp) \
  19. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_new(CHECKED_CAST( \
  20. stack_cmp_func, \
  21. int (*)(const ACCESS_DESCRIPTION **a, const ACCESS_DESCRIPTION **b), \
  22. comp)))
  23. #define sk_ACCESS_DESCRIPTION_new_null() \
  24. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_new_null())
  25. #define sk_ACCESS_DESCRIPTION_num(sk) \
  26. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk))
  27. #define sk_ACCESS_DESCRIPTION_zero(sk) \
  28. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk));
  29. #define sk_ACCESS_DESCRIPTION_value(sk, i) \
  30. ((ACCESS_DESCRIPTION *)sk_value( \
  31. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  32. (i)))
  33. #define sk_ACCESS_DESCRIPTION_set(sk, i, p) \
  34. ((ACCESS_DESCRIPTION *)sk_set( \
  35. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), (i), \
  36. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p)))
  37. #define sk_ACCESS_DESCRIPTION_free(sk) \
  38. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk))
  39. #define sk_ACCESS_DESCRIPTION_pop_free(sk, free_func) \
  40. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  41. CHECKED_CAST(void (*)(void *), void (*)(ACCESS_DESCRIPTION *), \
  42. free_func))
  43. #define sk_ACCESS_DESCRIPTION_insert(sk, p, where) \
  44. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  45. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p), (where))
  46. #define sk_ACCESS_DESCRIPTION_delete(sk, where) \
  47. ((ACCESS_DESCRIPTION *)sk_delete( \
  48. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), (where)))
  49. #define sk_ACCESS_DESCRIPTION_delete_ptr(sk, p) \
  50. ((ACCESS_DESCRIPTION *)sk_delete_ptr( \
  51. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  52. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p)))
  53. #define sk_ACCESS_DESCRIPTION_find(sk, out_index, p) \
  54. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  55. (out_index), CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p))
  56. #define sk_ACCESS_DESCRIPTION_shift(sk) \
  57. ((ACCESS_DESCRIPTION *)sk_shift( \
  58. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk)))
  59. #define sk_ACCESS_DESCRIPTION_push(sk, p) \
  60. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  61. CHECKED_CAST(void *, ACCESS_DESCRIPTION *, p))
  62. #define sk_ACCESS_DESCRIPTION_pop(sk) \
  63. ((ACCESS_DESCRIPTION *)sk_pop( \
  64. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk)))
  65. #define sk_ACCESS_DESCRIPTION_dup(sk) \
  66. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_dup( \
  67. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk)))
  68. #define sk_ACCESS_DESCRIPTION_sort(sk) \
  69. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk))
  70. #define sk_ACCESS_DESCRIPTION_is_sorted(sk) \
  71. sk_is_sorted( \
  72. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk))
  73. #define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, comp) \
  74. ((int (*)(const ACCESS_DESCRIPTION **a, const ACCESS_DESCRIPTION **b)) \
  75. sk_set_cmp_func( \
  76. CHECKED_CAST(_STACK *, STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  77. CHECKED_CAST(stack_cmp_func, int (*)(const ACCESS_DESCRIPTION **a, \
  78. const ACCESS_DESCRIPTION **b), \
  79. comp)))
  80. #define sk_ACCESS_DESCRIPTION_deep_copy(sk, copy_func, free_func) \
  81. ((STACK_OF(ACCESS_DESCRIPTION) *)sk_deep_copy( \
  82. CHECKED_CAST(const _STACK *, const STACK_OF(ACCESS_DESCRIPTION) *, sk), \
  83. CHECKED_CAST(void *(*)(void *), \
  84. ACCESS_DESCRIPTION *(*)(ACCESS_DESCRIPTION *), copy_func), \
  85. CHECKED_CAST(void (*)(void *), void (*)(ACCESS_DESCRIPTION *), \
  86. free_func)))
  87. /* ASN1_ADB_TABLE */
  88. #define sk_ASN1_ADB_TABLE_new(comp) \
  89. ((STACK_OF(ASN1_ADB_TABLE) *)sk_new(CHECKED_CAST( \
  90. stack_cmp_func, \
  91. int (*)(const ASN1_ADB_TABLE **a, const ASN1_ADB_TABLE **b), comp)))
  92. #define sk_ASN1_ADB_TABLE_new_null() ((STACK_OF(ASN1_ADB_TABLE) *)sk_new_null())
  93. #define sk_ASN1_ADB_TABLE_num(sk) \
  94. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk))
  95. #define sk_ASN1_ADB_TABLE_zero(sk) \
  96. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk));
  97. #define sk_ASN1_ADB_TABLE_value(sk, i) \
  98. ((ASN1_ADB_TABLE *)sk_value( \
  99. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk), \
  100. (i)))
  101. #define sk_ASN1_ADB_TABLE_set(sk, i, p) \
  102. ((ASN1_ADB_TABLE *)sk_set( \
  103. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), (i), \
  104. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p)))
  105. #define sk_ASN1_ADB_TABLE_free(sk) \
  106. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk))
  107. #define sk_ASN1_ADB_TABLE_pop_free(sk, free_func) \
  108. sk_pop_free( \
  109. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  110. CHECKED_CAST(void (*)(void *), void (*)(ASN1_ADB_TABLE *), free_func))
  111. #define sk_ASN1_ADB_TABLE_insert(sk, p, where) \
  112. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  113. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p), (where))
  114. #define sk_ASN1_ADB_TABLE_delete(sk, where) \
  115. ((ASN1_ADB_TABLE *)sk_delete( \
  116. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), (where)))
  117. #define sk_ASN1_ADB_TABLE_delete_ptr(sk, p) \
  118. ((ASN1_ADB_TABLE *)sk_delete_ptr( \
  119. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  120. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p)))
  121. #define sk_ASN1_ADB_TABLE_find(sk, out_index, p) \
  122. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), (out_index), \
  123. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p))
  124. #define sk_ASN1_ADB_TABLE_shift(sk) \
  125. ((ASN1_ADB_TABLE *)sk_shift( \
  126. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk)))
  127. #define sk_ASN1_ADB_TABLE_push(sk, p) \
  128. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  129. CHECKED_CAST(void *, ASN1_ADB_TABLE *, p))
  130. #define sk_ASN1_ADB_TABLE_pop(sk) \
  131. ((ASN1_ADB_TABLE *)sk_pop( \
  132. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk)))
  133. #define sk_ASN1_ADB_TABLE_dup(sk) \
  134. ((STACK_OF(ASN1_ADB_TABLE) *)sk_dup( \
  135. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk)))
  136. #define sk_ASN1_ADB_TABLE_sort(sk) \
  137. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk))
  138. #define sk_ASN1_ADB_TABLE_is_sorted(sk) \
  139. sk_is_sorted( \
  140. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk))
  141. #define sk_ASN1_ADB_TABLE_set_cmp_func(sk, comp) \
  142. ((int (*)(const ASN1_ADB_TABLE **a, const ASN1_ADB_TABLE **b)) \
  143. sk_set_cmp_func( \
  144. CHECKED_CAST(_STACK *, STACK_OF(ASN1_ADB_TABLE) *, sk), \
  145. CHECKED_CAST(stack_cmp_func, int (*)(const ASN1_ADB_TABLE **a, \
  146. const ASN1_ADB_TABLE **b), \
  147. comp)))
  148. #define sk_ASN1_ADB_TABLE_deep_copy(sk, copy_func, free_func) \
  149. ((STACK_OF(ASN1_ADB_TABLE) *)sk_deep_copy( \
  150. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_ADB_TABLE) *, sk), \
  151. CHECKED_CAST(void *(*)(void *), ASN1_ADB_TABLE *(*)(ASN1_ADB_TABLE *), \
  152. copy_func), \
  153. CHECKED_CAST(void (*)(void *), void (*)(ASN1_ADB_TABLE *), free_func)))
  154. /* ASN1_GENERALSTRING */
  155. #define sk_ASN1_GENERALSTRING_new(comp) \
  156. ((STACK_OF(ASN1_GENERALSTRING) *)sk_new(CHECKED_CAST( \
  157. stack_cmp_func, \
  158. int (*)(const ASN1_GENERALSTRING **a, const ASN1_GENERALSTRING **b), \
  159. comp)))
  160. #define sk_ASN1_GENERALSTRING_new_null() \
  161. ((STACK_OF(ASN1_GENERALSTRING) *)sk_new_null())
  162. #define sk_ASN1_GENERALSTRING_num(sk) \
  163. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk))
  164. #define sk_ASN1_GENERALSTRING_zero(sk) \
  165. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk));
  166. #define sk_ASN1_GENERALSTRING_value(sk, i) \
  167. ((ASN1_GENERALSTRING *)sk_value( \
  168. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk), \
  169. (i)))
  170. #define sk_ASN1_GENERALSTRING_set(sk, i, p) \
  171. ((ASN1_GENERALSTRING *)sk_set( \
  172. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), (i), \
  173. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p)))
  174. #define sk_ASN1_GENERALSTRING_free(sk) \
  175. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk))
  176. #define sk_ASN1_GENERALSTRING_pop_free(sk, free_func) \
  177. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  178. CHECKED_CAST(void (*)(void *), void (*)(ASN1_GENERALSTRING *), \
  179. free_func))
  180. #define sk_ASN1_GENERALSTRING_insert(sk, p, where) \
  181. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  182. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p), (where))
  183. #define sk_ASN1_GENERALSTRING_delete(sk, where) \
  184. ((ASN1_GENERALSTRING *)sk_delete( \
  185. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), (where)))
  186. #define sk_ASN1_GENERALSTRING_delete_ptr(sk, p) \
  187. ((ASN1_GENERALSTRING *)sk_delete_ptr( \
  188. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  189. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p)))
  190. #define sk_ASN1_GENERALSTRING_find(sk, out_index, p) \
  191. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  192. (out_index), CHECKED_CAST(void *, ASN1_GENERALSTRING *, p))
  193. #define sk_ASN1_GENERALSTRING_shift(sk) \
  194. ((ASN1_GENERALSTRING *)sk_shift( \
  195. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk)))
  196. #define sk_ASN1_GENERALSTRING_push(sk, p) \
  197. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  198. CHECKED_CAST(void *, ASN1_GENERALSTRING *, p))
  199. #define sk_ASN1_GENERALSTRING_pop(sk) \
  200. ((ASN1_GENERALSTRING *)sk_pop( \
  201. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk)))
  202. #define sk_ASN1_GENERALSTRING_dup(sk) \
  203. ((STACK_OF(ASN1_GENERALSTRING) *)sk_dup( \
  204. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk)))
  205. #define sk_ASN1_GENERALSTRING_sort(sk) \
  206. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk))
  207. #define sk_ASN1_GENERALSTRING_is_sorted(sk) \
  208. sk_is_sorted( \
  209. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk))
  210. #define sk_ASN1_GENERALSTRING_set_cmp_func(sk, comp) \
  211. ((int (*)(const ASN1_GENERALSTRING **a, const ASN1_GENERALSTRING **b)) \
  212. sk_set_cmp_func( \
  213. CHECKED_CAST(_STACK *, STACK_OF(ASN1_GENERALSTRING) *, sk), \
  214. CHECKED_CAST(stack_cmp_func, int (*)(const ASN1_GENERALSTRING **a, \
  215. const ASN1_GENERALSTRING **b), \
  216. comp)))
  217. #define sk_ASN1_GENERALSTRING_deep_copy(sk, copy_func, free_func) \
  218. ((STACK_OF(ASN1_GENERALSTRING) *)sk_deep_copy( \
  219. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_GENERALSTRING) *, sk), \
  220. CHECKED_CAST(void *(*)(void *), \
  221. ASN1_GENERALSTRING *(*)(ASN1_GENERALSTRING *), copy_func), \
  222. CHECKED_CAST(void (*)(void *), void (*)(ASN1_GENERALSTRING *), \
  223. free_func)))
  224. /* ASN1_INTEGER */
  225. #define sk_ASN1_INTEGER_new(comp) \
  226. ((STACK_OF(ASN1_INTEGER) *)sk_new(CHECKED_CAST( \
  227. stack_cmp_func, int (*)(const ASN1_INTEGER **a, const ASN1_INTEGER **b), \
  228. comp)))
  229. #define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)sk_new_null())
  230. #define sk_ASN1_INTEGER_num(sk) \
  231. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk))
  232. #define sk_ASN1_INTEGER_zero(sk) \
  233. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk));
  234. #define sk_ASN1_INTEGER_value(sk, i) \
  235. ((ASN1_INTEGER *)sk_value( \
  236. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk), (i)))
  237. #define sk_ASN1_INTEGER_set(sk, i, p) \
  238. ((ASN1_INTEGER *)sk_set( \
  239. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), (i), \
  240. CHECKED_CAST(void *, ASN1_INTEGER *, p)))
  241. #define sk_ASN1_INTEGER_free(sk) \
  242. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk))
  243. #define sk_ASN1_INTEGER_pop_free(sk, free_func) \
  244. sk_pop_free( \
  245. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  246. CHECKED_CAST(void (*)(void *), void (*)(ASN1_INTEGER *), free_func))
  247. #define sk_ASN1_INTEGER_insert(sk, p, where) \
  248. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  249. CHECKED_CAST(void *, ASN1_INTEGER *, p), (where))
  250. #define sk_ASN1_INTEGER_delete(sk, where) \
  251. ((ASN1_INTEGER *)sk_delete( \
  252. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), (where)))
  253. #define sk_ASN1_INTEGER_delete_ptr(sk, p) \
  254. ((ASN1_INTEGER *)sk_delete_ptr( \
  255. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  256. CHECKED_CAST(void *, ASN1_INTEGER *, p)))
  257. #define sk_ASN1_INTEGER_find(sk, out_index, p) \
  258. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), (out_index), \
  259. CHECKED_CAST(void *, ASN1_INTEGER *, p))
  260. #define sk_ASN1_INTEGER_shift(sk) \
  261. ((ASN1_INTEGER *)sk_shift( \
  262. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk)))
  263. #define sk_ASN1_INTEGER_push(sk, p) \
  264. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  265. CHECKED_CAST(void *, ASN1_INTEGER *, p))
  266. #define sk_ASN1_INTEGER_pop(sk) \
  267. ((ASN1_INTEGER *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk)))
  268. #define sk_ASN1_INTEGER_dup(sk) \
  269. ((STACK_OF(ASN1_INTEGER) *)sk_dup( \
  270. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk)))
  271. #define sk_ASN1_INTEGER_sort(sk) \
  272. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk))
  273. #define sk_ASN1_INTEGER_is_sorted(sk) \
  274. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk))
  275. #define sk_ASN1_INTEGER_set_cmp_func(sk, comp) \
  276. ((int (*)(const ASN1_INTEGER **a, const ASN1_INTEGER **b))sk_set_cmp_func( \
  277. CHECKED_CAST(_STACK *, STACK_OF(ASN1_INTEGER) *, sk), \
  278. CHECKED_CAST(stack_cmp_func, \
  279. int (*)(const ASN1_INTEGER **a, const ASN1_INTEGER **b), \
  280. comp)))
  281. #define sk_ASN1_INTEGER_deep_copy(sk, copy_func, free_func) \
  282. ((STACK_OF(ASN1_INTEGER) *)sk_deep_copy( \
  283. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_INTEGER) *, sk), \
  284. CHECKED_CAST(void *(*)(void *), ASN1_INTEGER *(*)(ASN1_INTEGER *), \
  285. copy_func), \
  286. CHECKED_CAST(void (*)(void *), void (*)(ASN1_INTEGER *), free_func)))
  287. /* ASN1_OBJECT */
  288. #define sk_ASN1_OBJECT_new(comp) \
  289. ((STACK_OF(ASN1_OBJECT) *)sk_new(CHECKED_CAST( \
  290. stack_cmp_func, int (*)(const ASN1_OBJECT **a, const ASN1_OBJECT **b), \
  291. comp)))
  292. #define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)sk_new_null())
  293. #define sk_ASN1_OBJECT_num(sk) \
  294. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk))
  295. #define sk_ASN1_OBJECT_zero(sk) \
  296. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk));
  297. #define sk_ASN1_OBJECT_value(sk, i) \
  298. ((ASN1_OBJECT *)sk_value( \
  299. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk), (i)))
  300. #define sk_ASN1_OBJECT_set(sk, i, p) \
  301. ((ASN1_OBJECT *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  302. (i), CHECKED_CAST(void *, ASN1_OBJECT *, p)))
  303. #define sk_ASN1_OBJECT_free(sk) \
  304. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk))
  305. #define sk_ASN1_OBJECT_pop_free(sk, free_func) \
  306. sk_pop_free( \
  307. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  308. CHECKED_CAST(void (*)(void *), void (*)(ASN1_OBJECT *), free_func))
  309. #define sk_ASN1_OBJECT_insert(sk, p, where) \
  310. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  311. CHECKED_CAST(void *, ASN1_OBJECT *, p), (where))
  312. #define sk_ASN1_OBJECT_delete(sk, where) \
  313. ((ASN1_OBJECT *)sk_delete( \
  314. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), (where)))
  315. #define sk_ASN1_OBJECT_delete_ptr(sk, p) \
  316. ((ASN1_OBJECT *)sk_delete_ptr( \
  317. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  318. CHECKED_CAST(void *, ASN1_OBJECT *, p)))
  319. #define sk_ASN1_OBJECT_find(sk, out_index, p) \
  320. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), (out_index), \
  321. CHECKED_CAST(void *, ASN1_OBJECT *, p))
  322. #define sk_ASN1_OBJECT_shift(sk) \
  323. ((ASN1_OBJECT *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk)))
  324. #define sk_ASN1_OBJECT_push(sk, p) \
  325. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  326. CHECKED_CAST(void *, ASN1_OBJECT *, p))
  327. #define sk_ASN1_OBJECT_pop(sk) \
  328. ((ASN1_OBJECT *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk)))
  329. #define sk_ASN1_OBJECT_dup(sk) \
  330. ((STACK_OF(ASN1_OBJECT) *)sk_dup( \
  331. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk)))
  332. #define sk_ASN1_OBJECT_sort(sk) \
  333. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk))
  334. #define sk_ASN1_OBJECT_is_sorted(sk) \
  335. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk))
  336. #define sk_ASN1_OBJECT_set_cmp_func(sk, comp) \
  337. ((int (*)(const ASN1_OBJECT **a, const ASN1_OBJECT **b))sk_set_cmp_func( \
  338. CHECKED_CAST(_STACK *, STACK_OF(ASN1_OBJECT) *, sk), \
  339. CHECKED_CAST(stack_cmp_func, \
  340. int (*)(const ASN1_OBJECT **a, const ASN1_OBJECT **b), \
  341. comp)))
  342. #define sk_ASN1_OBJECT_deep_copy(sk, copy_func, free_func) \
  343. ((STACK_OF(ASN1_OBJECT) *)sk_deep_copy( \
  344. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_OBJECT) *, sk), \
  345. CHECKED_CAST(void *(*)(void *), ASN1_OBJECT *(*)(ASN1_OBJECT *), \
  346. copy_func), \
  347. CHECKED_CAST(void (*)(void *), void (*)(ASN1_OBJECT *), free_func)))
  348. /* ASN1_STRING_TABLE */
  349. #define sk_ASN1_STRING_TABLE_new(comp) \
  350. ((STACK_OF(ASN1_STRING_TABLE) *)sk_new(CHECKED_CAST( \
  351. stack_cmp_func, \
  352. int (*)(const ASN1_STRING_TABLE **a, const ASN1_STRING_TABLE **b), \
  353. comp)))
  354. #define sk_ASN1_STRING_TABLE_new_null() \
  355. ((STACK_OF(ASN1_STRING_TABLE) *)sk_new_null())
  356. #define sk_ASN1_STRING_TABLE_num(sk) \
  357. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk))
  358. #define sk_ASN1_STRING_TABLE_zero(sk) \
  359. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk));
  360. #define sk_ASN1_STRING_TABLE_value(sk, i) \
  361. ((ASN1_STRING_TABLE *)sk_value( \
  362. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk), \
  363. (i)))
  364. #define sk_ASN1_STRING_TABLE_set(sk, i, p) \
  365. ((ASN1_STRING_TABLE *)sk_set( \
  366. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), (i), \
  367. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p)))
  368. #define sk_ASN1_STRING_TABLE_free(sk) \
  369. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk))
  370. #define sk_ASN1_STRING_TABLE_pop_free(sk, free_func) \
  371. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  372. CHECKED_CAST(void (*)(void *), void (*)(ASN1_STRING_TABLE *), \
  373. free_func))
  374. #define sk_ASN1_STRING_TABLE_insert(sk, p, where) \
  375. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  376. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p), (where))
  377. #define sk_ASN1_STRING_TABLE_delete(sk, where) \
  378. ((ASN1_STRING_TABLE *)sk_delete( \
  379. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), (where)))
  380. #define sk_ASN1_STRING_TABLE_delete_ptr(sk, p) \
  381. ((ASN1_STRING_TABLE *)sk_delete_ptr( \
  382. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  383. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p)))
  384. #define sk_ASN1_STRING_TABLE_find(sk, out_index, p) \
  385. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  386. (out_index), CHECKED_CAST(void *, ASN1_STRING_TABLE *, p))
  387. #define sk_ASN1_STRING_TABLE_shift(sk) \
  388. ((ASN1_STRING_TABLE *)sk_shift( \
  389. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk)))
  390. #define sk_ASN1_STRING_TABLE_push(sk, p) \
  391. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  392. CHECKED_CAST(void *, ASN1_STRING_TABLE *, p))
  393. #define sk_ASN1_STRING_TABLE_pop(sk) \
  394. ((ASN1_STRING_TABLE *)sk_pop( \
  395. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk)))
  396. #define sk_ASN1_STRING_TABLE_dup(sk) \
  397. ((STACK_OF(ASN1_STRING_TABLE) *)sk_dup( \
  398. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk)))
  399. #define sk_ASN1_STRING_TABLE_sort(sk) \
  400. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk))
  401. #define sk_ASN1_STRING_TABLE_is_sorted(sk) \
  402. sk_is_sorted( \
  403. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk))
  404. #define sk_ASN1_STRING_TABLE_set_cmp_func(sk, comp) \
  405. ((int (*)(const ASN1_STRING_TABLE **a, const ASN1_STRING_TABLE **b)) \
  406. sk_set_cmp_func( \
  407. CHECKED_CAST(_STACK *, STACK_OF(ASN1_STRING_TABLE) *, sk), \
  408. CHECKED_CAST(stack_cmp_func, int (*)(const ASN1_STRING_TABLE **a, \
  409. const ASN1_STRING_TABLE **b), \
  410. comp)))
  411. #define sk_ASN1_STRING_TABLE_deep_copy(sk, copy_func, free_func) \
  412. ((STACK_OF(ASN1_STRING_TABLE) *)sk_deep_copy( \
  413. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_STRING_TABLE) *, sk), \
  414. CHECKED_CAST(void *(*)(void *), \
  415. ASN1_STRING_TABLE *(*)(ASN1_STRING_TABLE *), copy_func), \
  416. CHECKED_CAST(void (*)(void *), void (*)(ASN1_STRING_TABLE *), \
  417. free_func)))
  418. /* ASN1_TYPE */
  419. #define sk_ASN1_TYPE_new(comp) \
  420. ((STACK_OF(ASN1_TYPE) *)sk_new( \
  421. CHECKED_CAST(stack_cmp_func, \
  422. int (*)(const ASN1_TYPE **a, const ASN1_TYPE **b), comp)))
  423. #define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)sk_new_null())
  424. #define sk_ASN1_TYPE_num(sk) \
  425. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk))
  426. #define sk_ASN1_TYPE_zero(sk) \
  427. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk));
  428. #define sk_ASN1_TYPE_value(sk, i) \
  429. ((ASN1_TYPE *)sk_value( \
  430. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk), (i)))
  431. #define sk_ASN1_TYPE_set(sk, i, p) \
  432. ((ASN1_TYPE *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), (i), \
  433. CHECKED_CAST(void *, ASN1_TYPE *, p)))
  434. #define sk_ASN1_TYPE_free(sk) \
  435. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk))
  436. #define sk_ASN1_TYPE_pop_free(sk, free_func) \
  437. sk_pop_free( \
  438. CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  439. CHECKED_CAST(void (*)(void *), void (*)(ASN1_TYPE *), free_func))
  440. #define sk_ASN1_TYPE_insert(sk, p, where) \
  441. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  442. CHECKED_CAST(void *, ASN1_TYPE *, p), (where))
  443. #define sk_ASN1_TYPE_delete(sk, where) \
  444. ((ASN1_TYPE *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  445. (where)))
  446. #define sk_ASN1_TYPE_delete_ptr(sk, p) \
  447. ((ASN1_TYPE *)sk_delete_ptr( \
  448. CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  449. CHECKED_CAST(void *, ASN1_TYPE *, p)))
  450. #define sk_ASN1_TYPE_find(sk, out_index, p) \
  451. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), (out_index), \
  452. CHECKED_CAST(void *, ASN1_TYPE *, p))
  453. #define sk_ASN1_TYPE_shift(sk) \
  454. ((ASN1_TYPE *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk)))
  455. #define sk_ASN1_TYPE_push(sk, p) \
  456. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  457. CHECKED_CAST(void *, ASN1_TYPE *, p))
  458. #define sk_ASN1_TYPE_pop(sk) \
  459. ((ASN1_TYPE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk)))
  460. #define sk_ASN1_TYPE_dup(sk) \
  461. ((STACK_OF(ASN1_TYPE) *)sk_dup( \
  462. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk)))
  463. #define sk_ASN1_TYPE_sort(sk) \
  464. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk))
  465. #define sk_ASN1_TYPE_is_sorted(sk) \
  466. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk))
  467. #define sk_ASN1_TYPE_set_cmp_func(sk, comp) \
  468. ((int (*)(const ASN1_TYPE **a, const ASN1_TYPE **b))sk_set_cmp_func( \
  469. CHECKED_CAST(_STACK *, STACK_OF(ASN1_TYPE) *, sk), \
  470. CHECKED_CAST(stack_cmp_func, \
  471. int (*)(const ASN1_TYPE **a, const ASN1_TYPE **b), comp)))
  472. #define sk_ASN1_TYPE_deep_copy(sk, copy_func, free_func) \
  473. ((STACK_OF(ASN1_TYPE) *)sk_deep_copy( \
  474. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_TYPE) *, sk), \
  475. CHECKED_CAST(void *(*)(void *), ASN1_TYPE *(*)(ASN1_TYPE *), copy_func), \
  476. CHECKED_CAST(void (*)(void *), void (*)(ASN1_TYPE *), free_func)))
  477. /* ASN1_VALUE */
  478. #define sk_ASN1_VALUE_new(comp) \
  479. ((STACK_OF(ASN1_VALUE) *)sk_new(CHECKED_CAST( \
  480. stack_cmp_func, int (*)(const ASN1_VALUE **a, const ASN1_VALUE **b), \
  481. comp)))
  482. #define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)sk_new_null())
  483. #define sk_ASN1_VALUE_num(sk) \
  484. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk))
  485. #define sk_ASN1_VALUE_zero(sk) \
  486. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk));
  487. #define sk_ASN1_VALUE_value(sk, i) \
  488. ((ASN1_VALUE *)sk_value( \
  489. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk), (i)))
  490. #define sk_ASN1_VALUE_set(sk, i, p) \
  491. ((ASN1_VALUE *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  492. (i), CHECKED_CAST(void *, ASN1_VALUE *, p)))
  493. #define sk_ASN1_VALUE_free(sk) \
  494. sk_free(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk))
  495. #define sk_ASN1_VALUE_pop_free(sk, free_func) \
  496. sk_pop_free( \
  497. CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  498. CHECKED_CAST(void (*)(void *), void (*)(ASN1_VALUE *), free_func))
  499. #define sk_ASN1_VALUE_insert(sk, p, where) \
  500. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  501. CHECKED_CAST(void *, ASN1_VALUE *, p), (where))
  502. #define sk_ASN1_VALUE_delete(sk, where) \
  503. ((ASN1_VALUE *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  504. (where)))
  505. #define sk_ASN1_VALUE_delete_ptr(sk, p) \
  506. ((ASN1_VALUE *)sk_delete_ptr( \
  507. CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  508. CHECKED_CAST(void *, ASN1_VALUE *, p)))
  509. #define sk_ASN1_VALUE_find(sk, out_index, p) \
  510. sk_find(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), (out_index), \
  511. CHECKED_CAST(void *, ASN1_VALUE *, p))
  512. #define sk_ASN1_VALUE_shift(sk) \
  513. ((ASN1_VALUE *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk)))
  514. #define sk_ASN1_VALUE_push(sk, p) \
  515. sk_push(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  516. CHECKED_CAST(void *, ASN1_VALUE *, p))
  517. #define sk_ASN1_VALUE_pop(sk) \
  518. ((ASN1_VALUE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk)))
  519. #define sk_ASN1_VALUE_dup(sk) \
  520. ((STACK_OF(ASN1_VALUE) *)sk_dup( \
  521. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk)))
  522. #define sk_ASN1_VALUE_sort(sk) \
  523. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk))
  524. #define sk_ASN1_VALUE_is_sorted(sk) \
  525. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk))
  526. #define sk_ASN1_VALUE_set_cmp_func(sk, comp) \
  527. ((int (*)(const ASN1_VALUE **a, const ASN1_VALUE **b))sk_set_cmp_func( \
  528. CHECKED_CAST(_STACK *, STACK_OF(ASN1_VALUE) *, sk), \
  529. CHECKED_CAST(stack_cmp_func, \
  530. int (*)(const ASN1_VALUE **a, const ASN1_VALUE **b), \
  531. comp)))
  532. #define sk_ASN1_VALUE_deep_copy(sk, copy_func, free_func) \
  533. ((STACK_OF(ASN1_VALUE) *)sk_deep_copy( \
  534. CHECKED_CAST(const _STACK *, const STACK_OF(ASN1_VALUE) *, sk), \
  535. CHECKED_CAST(void *(*)(void *), ASN1_VALUE *(*)(ASN1_VALUE *), \
  536. copy_func), \
  537. CHECKED_CAST(void (*)(void *), void (*)(ASN1_VALUE *), free_func)))
  538. /* BIO */
  539. #define sk_BIO_new(comp) \
  540. ((STACK_OF(BIO) *)sk_new(CHECKED_CAST( \
  541. stack_cmp_func, int (*)(const BIO **a, const BIO **b), comp)))
  542. #define sk_BIO_new_null() ((STACK_OF(BIO) *)sk_new_null())
  543. #define sk_BIO_num(sk) \
  544. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk))
  545. #define sk_BIO_zero(sk) sk_zero(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk));
  546. #define sk_BIO_value(sk, i) \
  547. ((BIO *)sk_value(CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk), \
  548. (i)))
  549. #define sk_BIO_set(sk, i, p) \
  550. ((BIO *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), (i), \
  551. CHECKED_CAST(void *, BIO *, p)))
  552. #define sk_BIO_free(sk) sk_free(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk))
  553. #define sk_BIO_pop_free(sk, free_func) \
  554. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  555. CHECKED_CAST(void (*)(void *), void (*)(BIO *), free_func))
  556. #define sk_BIO_insert(sk, p, where) \
  557. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  558. CHECKED_CAST(void *, BIO *, p), (where))
  559. #define sk_BIO_delete(sk, where) \
  560. ((BIO *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), (where)))
  561. #define sk_BIO_delete_ptr(sk, p) \
  562. ((BIO *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  563. CHECKED_CAST(void *, BIO *, p)))
  564. #define sk_BIO_find(sk, out_index, p) \
  565. sk_find(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), (out_index), \
  566. CHECKED_CAST(void *, BIO *, p))
  567. #define sk_BIO_shift(sk) \
  568. ((BIO *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk)))
  569. #define sk_BIO_push(sk, p) \
  570. sk_push(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  571. CHECKED_CAST(void *, BIO *, p))
  572. #define sk_BIO_pop(sk) \
  573. ((BIO *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk)))
  574. #define sk_BIO_dup(sk) \
  575. ((STACK_OF(BIO) *)sk_dup( \
  576. CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk)))
  577. #define sk_BIO_sort(sk) sk_sort(CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk))
  578. #define sk_BIO_is_sorted(sk) \
  579. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk))
  580. #define sk_BIO_set_cmp_func(sk, comp) \
  581. ((int (*)(const BIO **a, const BIO **b))sk_set_cmp_func( \
  582. CHECKED_CAST(_STACK *, STACK_OF(BIO) *, sk), \
  583. CHECKED_CAST(stack_cmp_func, int (*)(const BIO **a, const BIO **b), \
  584. comp)))
  585. #define sk_BIO_deep_copy(sk, copy_func, free_func) \
  586. ((STACK_OF(BIO) *)sk_deep_copy( \
  587. CHECKED_CAST(const _STACK *, const STACK_OF(BIO) *, sk), \
  588. CHECKED_CAST(void *(*)(void *), BIO *(*)(BIO *), copy_func), \
  589. CHECKED_CAST(void (*)(void *), void (*)(BIO *), free_func)))
  590. /* BY_DIR_ENTRY */
  591. #define sk_BY_DIR_ENTRY_new(comp) \
  592. ((STACK_OF(BY_DIR_ENTRY) *)sk_new(CHECKED_CAST( \
  593. stack_cmp_func, int (*)(const BY_DIR_ENTRY **a, const BY_DIR_ENTRY **b), \
  594. comp)))
  595. #define sk_BY_DIR_ENTRY_new_null() ((STACK_OF(BY_DIR_ENTRY) *)sk_new_null())
  596. #define sk_BY_DIR_ENTRY_num(sk) \
  597. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk))
  598. #define sk_BY_DIR_ENTRY_zero(sk) \
  599. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk));
  600. #define sk_BY_DIR_ENTRY_value(sk, i) \
  601. ((BY_DIR_ENTRY *)sk_value( \
  602. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk), (i)))
  603. #define sk_BY_DIR_ENTRY_set(sk, i, p) \
  604. ((BY_DIR_ENTRY *)sk_set( \
  605. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), (i), \
  606. CHECKED_CAST(void *, BY_DIR_ENTRY *, p)))
  607. #define sk_BY_DIR_ENTRY_free(sk) \
  608. sk_free(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk))
  609. #define sk_BY_DIR_ENTRY_pop_free(sk, free_func) \
  610. sk_pop_free( \
  611. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  612. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_ENTRY *), free_func))
  613. #define sk_BY_DIR_ENTRY_insert(sk, p, where) \
  614. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  615. CHECKED_CAST(void *, BY_DIR_ENTRY *, p), (where))
  616. #define sk_BY_DIR_ENTRY_delete(sk, where) \
  617. ((BY_DIR_ENTRY *)sk_delete( \
  618. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), (where)))
  619. #define sk_BY_DIR_ENTRY_delete_ptr(sk, p) \
  620. ((BY_DIR_ENTRY *)sk_delete_ptr( \
  621. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  622. CHECKED_CAST(void *, BY_DIR_ENTRY *, p)))
  623. #define sk_BY_DIR_ENTRY_find(sk, out_index, p) \
  624. sk_find(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), (out_index), \
  625. CHECKED_CAST(void *, BY_DIR_ENTRY *, p))
  626. #define sk_BY_DIR_ENTRY_shift(sk) \
  627. ((BY_DIR_ENTRY *)sk_shift( \
  628. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk)))
  629. #define sk_BY_DIR_ENTRY_push(sk, p) \
  630. sk_push(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  631. CHECKED_CAST(void *, BY_DIR_ENTRY *, p))
  632. #define sk_BY_DIR_ENTRY_pop(sk) \
  633. ((BY_DIR_ENTRY *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk)))
  634. #define sk_BY_DIR_ENTRY_dup(sk) \
  635. ((STACK_OF(BY_DIR_ENTRY) *)sk_dup( \
  636. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk)))
  637. #define sk_BY_DIR_ENTRY_sort(sk) \
  638. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk))
  639. #define sk_BY_DIR_ENTRY_is_sorted(sk) \
  640. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk))
  641. #define sk_BY_DIR_ENTRY_set_cmp_func(sk, comp) \
  642. ((int (*)(const BY_DIR_ENTRY **a, const BY_DIR_ENTRY **b))sk_set_cmp_func( \
  643. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_ENTRY) *, sk), \
  644. CHECKED_CAST(stack_cmp_func, \
  645. int (*)(const BY_DIR_ENTRY **a, const BY_DIR_ENTRY **b), \
  646. comp)))
  647. #define sk_BY_DIR_ENTRY_deep_copy(sk, copy_func, free_func) \
  648. ((STACK_OF(BY_DIR_ENTRY) *)sk_deep_copy( \
  649. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_ENTRY) *, sk), \
  650. CHECKED_CAST(void *(*)(void *), BY_DIR_ENTRY *(*)(BY_DIR_ENTRY *), \
  651. copy_func), \
  652. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_ENTRY *), free_func)))
  653. /* BY_DIR_HASH */
  654. #define sk_BY_DIR_HASH_new(comp) \
  655. ((STACK_OF(BY_DIR_HASH) *)sk_new(CHECKED_CAST( \
  656. stack_cmp_func, int (*)(const BY_DIR_HASH **a, const BY_DIR_HASH **b), \
  657. comp)))
  658. #define sk_BY_DIR_HASH_new_null() ((STACK_OF(BY_DIR_HASH) *)sk_new_null())
  659. #define sk_BY_DIR_HASH_num(sk) \
  660. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk))
  661. #define sk_BY_DIR_HASH_zero(sk) \
  662. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk));
  663. #define sk_BY_DIR_HASH_value(sk, i) \
  664. ((BY_DIR_HASH *)sk_value( \
  665. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk), (i)))
  666. #define sk_BY_DIR_HASH_set(sk, i, p) \
  667. ((BY_DIR_HASH *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  668. (i), CHECKED_CAST(void *, BY_DIR_HASH *, p)))
  669. #define sk_BY_DIR_HASH_free(sk) \
  670. sk_free(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk))
  671. #define sk_BY_DIR_HASH_pop_free(sk, free_func) \
  672. sk_pop_free( \
  673. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  674. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_HASH *), free_func))
  675. #define sk_BY_DIR_HASH_insert(sk, p, where) \
  676. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  677. CHECKED_CAST(void *, BY_DIR_HASH *, p), (where))
  678. #define sk_BY_DIR_HASH_delete(sk, where) \
  679. ((BY_DIR_HASH *)sk_delete( \
  680. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), (where)))
  681. #define sk_BY_DIR_HASH_delete_ptr(sk, p) \
  682. ((BY_DIR_HASH *)sk_delete_ptr( \
  683. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  684. CHECKED_CAST(void *, BY_DIR_HASH *, p)))
  685. #define sk_BY_DIR_HASH_find(sk, out_index, p) \
  686. sk_find(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), (out_index), \
  687. CHECKED_CAST(void *, BY_DIR_HASH *, p))
  688. #define sk_BY_DIR_HASH_shift(sk) \
  689. ((BY_DIR_HASH *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk)))
  690. #define sk_BY_DIR_HASH_push(sk, p) \
  691. sk_push(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  692. CHECKED_CAST(void *, BY_DIR_HASH *, p))
  693. #define sk_BY_DIR_HASH_pop(sk) \
  694. ((BY_DIR_HASH *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk)))
  695. #define sk_BY_DIR_HASH_dup(sk) \
  696. ((STACK_OF(BY_DIR_HASH) *)sk_dup( \
  697. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk)))
  698. #define sk_BY_DIR_HASH_sort(sk) \
  699. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk))
  700. #define sk_BY_DIR_HASH_is_sorted(sk) \
  701. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk))
  702. #define sk_BY_DIR_HASH_set_cmp_func(sk, comp) \
  703. ((int (*)(const BY_DIR_HASH **a, const BY_DIR_HASH **b))sk_set_cmp_func( \
  704. CHECKED_CAST(_STACK *, STACK_OF(BY_DIR_HASH) *, sk), \
  705. CHECKED_CAST(stack_cmp_func, \
  706. int (*)(const BY_DIR_HASH **a, const BY_DIR_HASH **b), \
  707. comp)))
  708. #define sk_BY_DIR_HASH_deep_copy(sk, copy_func, free_func) \
  709. ((STACK_OF(BY_DIR_HASH) *)sk_deep_copy( \
  710. CHECKED_CAST(const _STACK *, const STACK_OF(BY_DIR_HASH) *, sk), \
  711. CHECKED_CAST(void *(*)(void *), BY_DIR_HASH *(*)(BY_DIR_HASH *), \
  712. copy_func), \
  713. CHECKED_CAST(void (*)(void *), void (*)(BY_DIR_HASH *), free_func)))
  714. /* CONF_VALUE */
  715. #define sk_CONF_VALUE_new(comp) \
  716. ((STACK_OF(CONF_VALUE) *)sk_new(CHECKED_CAST( \
  717. stack_cmp_func, int (*)(const CONF_VALUE **a, const CONF_VALUE **b), \
  718. comp)))
  719. #define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)sk_new_null())
  720. #define sk_CONF_VALUE_num(sk) \
  721. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk))
  722. #define sk_CONF_VALUE_zero(sk) \
  723. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk));
  724. #define sk_CONF_VALUE_value(sk, i) \
  725. ((CONF_VALUE *)sk_value( \
  726. CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk), (i)))
  727. #define sk_CONF_VALUE_set(sk, i, p) \
  728. ((CONF_VALUE *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  729. (i), CHECKED_CAST(void *, CONF_VALUE *, p)))
  730. #define sk_CONF_VALUE_free(sk) \
  731. sk_free(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk))
  732. #define sk_CONF_VALUE_pop_free(sk, free_func) \
  733. sk_pop_free( \
  734. CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  735. CHECKED_CAST(void (*)(void *), void (*)(CONF_VALUE *), free_func))
  736. #define sk_CONF_VALUE_insert(sk, p, where) \
  737. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  738. CHECKED_CAST(void *, CONF_VALUE *, p), (where))
  739. #define sk_CONF_VALUE_delete(sk, where) \
  740. ((CONF_VALUE *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  741. (where)))
  742. #define sk_CONF_VALUE_delete_ptr(sk, p) \
  743. ((CONF_VALUE *)sk_delete_ptr( \
  744. CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  745. CHECKED_CAST(void *, CONF_VALUE *, p)))
  746. #define sk_CONF_VALUE_find(sk, out_index, p) \
  747. sk_find(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), (out_index), \
  748. CHECKED_CAST(void *, CONF_VALUE *, p))
  749. #define sk_CONF_VALUE_shift(sk) \
  750. ((CONF_VALUE *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk)))
  751. #define sk_CONF_VALUE_push(sk, p) \
  752. sk_push(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  753. CHECKED_CAST(void *, CONF_VALUE *, p))
  754. #define sk_CONF_VALUE_pop(sk) \
  755. ((CONF_VALUE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk)))
  756. #define sk_CONF_VALUE_dup(sk) \
  757. ((STACK_OF(CONF_VALUE) *)sk_dup( \
  758. CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk)))
  759. #define sk_CONF_VALUE_sort(sk) \
  760. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk))
  761. #define sk_CONF_VALUE_is_sorted(sk) \
  762. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk))
  763. #define sk_CONF_VALUE_set_cmp_func(sk, comp) \
  764. ((int (*)(const CONF_VALUE **a, const CONF_VALUE **b))sk_set_cmp_func( \
  765. CHECKED_CAST(_STACK *, STACK_OF(CONF_VALUE) *, sk), \
  766. CHECKED_CAST(stack_cmp_func, \
  767. int (*)(const CONF_VALUE **a, const CONF_VALUE **b), \
  768. comp)))
  769. #define sk_CONF_VALUE_deep_copy(sk, copy_func, free_func) \
  770. ((STACK_OF(CONF_VALUE) *)sk_deep_copy( \
  771. CHECKED_CAST(const _STACK *, const STACK_OF(CONF_VALUE) *, sk), \
  772. CHECKED_CAST(void *(*)(void *), CONF_VALUE *(*)(CONF_VALUE *), \
  773. copy_func), \
  774. CHECKED_CAST(void (*)(void *), void (*)(CONF_VALUE *), free_func)))
  775. /* CRYPTO_EX_DATA_FUNCS */
  776. #define sk_CRYPTO_EX_DATA_FUNCS_new(comp) \
  777. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_new(CHECKED_CAST( \
  778. stack_cmp_func, \
  779. int (*)(const CRYPTO_EX_DATA_FUNCS **a, const CRYPTO_EX_DATA_FUNCS **b), \
  780. comp)))
  781. #define sk_CRYPTO_EX_DATA_FUNCS_new_null() \
  782. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_new_null())
  783. #define sk_CRYPTO_EX_DATA_FUNCS_num(sk) \
  784. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, \
  785. sk))
  786. #define sk_CRYPTO_EX_DATA_FUNCS_zero(sk) \
  787. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk));
  788. #define sk_CRYPTO_EX_DATA_FUNCS_value(sk, i) \
  789. ((CRYPTO_EX_DATA_FUNCS *)sk_value( \
  790. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, \
  791. sk), \
  792. (i)))
  793. #define sk_CRYPTO_EX_DATA_FUNCS_set(sk, i, p) \
  794. ((CRYPTO_EX_DATA_FUNCS *)sk_set( \
  795. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), (i), \
  796. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p)))
  797. #define sk_CRYPTO_EX_DATA_FUNCS_free(sk) \
  798. sk_free(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk))
  799. #define sk_CRYPTO_EX_DATA_FUNCS_pop_free(sk, free_func) \
  800. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  801. CHECKED_CAST(void (*)(void *), void (*)(CRYPTO_EX_DATA_FUNCS *), \
  802. free_func))
  803. #define sk_CRYPTO_EX_DATA_FUNCS_insert(sk, p, where) \
  804. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  805. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p), (where))
  806. #define sk_CRYPTO_EX_DATA_FUNCS_delete(sk, where) \
  807. ((CRYPTO_EX_DATA_FUNCS *)sk_delete( \
  808. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), (where)))
  809. #define sk_CRYPTO_EX_DATA_FUNCS_delete_ptr(sk, p) \
  810. ((CRYPTO_EX_DATA_FUNCS *)sk_delete_ptr( \
  811. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  812. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p)))
  813. #define sk_CRYPTO_EX_DATA_FUNCS_find(sk, out_index, p) \
  814. sk_find(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  815. (out_index), CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p))
  816. #define sk_CRYPTO_EX_DATA_FUNCS_shift(sk) \
  817. ((CRYPTO_EX_DATA_FUNCS *)sk_shift( \
  818. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk)))
  819. #define sk_CRYPTO_EX_DATA_FUNCS_push(sk, p) \
  820. sk_push(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  821. CHECKED_CAST(void *, CRYPTO_EX_DATA_FUNCS *, p))
  822. #define sk_CRYPTO_EX_DATA_FUNCS_pop(sk) \
  823. ((CRYPTO_EX_DATA_FUNCS *)sk_pop( \
  824. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk)))
  825. #define sk_CRYPTO_EX_DATA_FUNCS_dup(sk) \
  826. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_dup(CHECKED_CAST( \
  827. const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk)))
  828. #define sk_CRYPTO_EX_DATA_FUNCS_sort(sk) \
  829. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk))
  830. #define sk_CRYPTO_EX_DATA_FUNCS_is_sorted(sk) \
  831. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  832. const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk))
  833. #define sk_CRYPTO_EX_DATA_FUNCS_set_cmp_func(sk, comp) \
  834. ((int (*)(const CRYPTO_EX_DATA_FUNCS **a, const CRYPTO_EX_DATA_FUNCS **b)) \
  835. sk_set_cmp_func( \
  836. CHECKED_CAST(_STACK *, STACK_OF(CRYPTO_EX_DATA_FUNCS) *, sk), \
  837. CHECKED_CAST(stack_cmp_func, \
  838. int (*)(const CRYPTO_EX_DATA_FUNCS **a, \
  839. const CRYPTO_EX_DATA_FUNCS **b), \
  840. comp)))
  841. #define sk_CRYPTO_EX_DATA_FUNCS_deep_copy(sk, copy_func, free_func) \
  842. ((STACK_OF(CRYPTO_EX_DATA_FUNCS) *)sk_deep_copy( \
  843. CHECKED_CAST(const _STACK *, const STACK_OF(CRYPTO_EX_DATA_FUNCS) *, \
  844. sk), \
  845. CHECKED_CAST(void *(*)(void *), \
  846. CRYPTO_EX_DATA_FUNCS *(*)(CRYPTO_EX_DATA_FUNCS *), \
  847. copy_func), \
  848. CHECKED_CAST(void (*)(void *), void (*)(CRYPTO_EX_DATA_FUNCS *), \
  849. free_func)))
  850. /* DIST_POINT */
  851. #define sk_DIST_POINT_new(comp) \
  852. ((STACK_OF(DIST_POINT) *)sk_new(CHECKED_CAST( \
  853. stack_cmp_func, int (*)(const DIST_POINT **a, const DIST_POINT **b), \
  854. comp)))
  855. #define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)sk_new_null())
  856. #define sk_DIST_POINT_num(sk) \
  857. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk))
  858. #define sk_DIST_POINT_zero(sk) \
  859. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk));
  860. #define sk_DIST_POINT_value(sk, i) \
  861. ((DIST_POINT *)sk_value( \
  862. CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk), (i)))
  863. #define sk_DIST_POINT_set(sk, i, p) \
  864. ((DIST_POINT *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  865. (i), CHECKED_CAST(void *, DIST_POINT *, p)))
  866. #define sk_DIST_POINT_free(sk) \
  867. sk_free(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk))
  868. #define sk_DIST_POINT_pop_free(sk, free_func) \
  869. sk_pop_free( \
  870. CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  871. CHECKED_CAST(void (*)(void *), void (*)(DIST_POINT *), free_func))
  872. #define sk_DIST_POINT_insert(sk, p, where) \
  873. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  874. CHECKED_CAST(void *, DIST_POINT *, p), (where))
  875. #define sk_DIST_POINT_delete(sk, where) \
  876. ((DIST_POINT *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  877. (where)))
  878. #define sk_DIST_POINT_delete_ptr(sk, p) \
  879. ((DIST_POINT *)sk_delete_ptr( \
  880. CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  881. CHECKED_CAST(void *, DIST_POINT *, p)))
  882. #define sk_DIST_POINT_find(sk, out_index, p) \
  883. sk_find(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), (out_index), \
  884. CHECKED_CAST(void *, DIST_POINT *, p))
  885. #define sk_DIST_POINT_shift(sk) \
  886. ((DIST_POINT *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk)))
  887. #define sk_DIST_POINT_push(sk, p) \
  888. sk_push(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  889. CHECKED_CAST(void *, DIST_POINT *, p))
  890. #define sk_DIST_POINT_pop(sk) \
  891. ((DIST_POINT *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk)))
  892. #define sk_DIST_POINT_dup(sk) \
  893. ((STACK_OF(DIST_POINT) *)sk_dup( \
  894. CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk)))
  895. #define sk_DIST_POINT_sort(sk) \
  896. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk))
  897. #define sk_DIST_POINT_is_sorted(sk) \
  898. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk))
  899. #define sk_DIST_POINT_set_cmp_func(sk, comp) \
  900. ((int (*)(const DIST_POINT **a, const DIST_POINT **b))sk_set_cmp_func( \
  901. CHECKED_CAST(_STACK *, STACK_OF(DIST_POINT) *, sk), \
  902. CHECKED_CAST(stack_cmp_func, \
  903. int (*)(const DIST_POINT **a, const DIST_POINT **b), \
  904. comp)))
  905. #define sk_DIST_POINT_deep_copy(sk, copy_func, free_func) \
  906. ((STACK_OF(DIST_POINT) *)sk_deep_copy( \
  907. CHECKED_CAST(const _STACK *, const STACK_OF(DIST_POINT) *, sk), \
  908. CHECKED_CAST(void *(*)(void *), DIST_POINT *(*)(DIST_POINT *), \
  909. copy_func), \
  910. CHECKED_CAST(void (*)(void *), void (*)(DIST_POINT *), free_func)))
  911. /* GENERAL_NAME */
  912. #define sk_GENERAL_NAME_new(comp) \
  913. ((STACK_OF(GENERAL_NAME) *)sk_new(CHECKED_CAST( \
  914. stack_cmp_func, int (*)(const GENERAL_NAME **a, const GENERAL_NAME **b), \
  915. comp)))
  916. #define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)sk_new_null())
  917. #define sk_GENERAL_NAME_num(sk) \
  918. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk))
  919. #define sk_GENERAL_NAME_zero(sk) \
  920. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk));
  921. #define sk_GENERAL_NAME_value(sk, i) \
  922. ((GENERAL_NAME *)sk_value( \
  923. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk), (i)))
  924. #define sk_GENERAL_NAME_set(sk, i, p) \
  925. ((GENERAL_NAME *)sk_set( \
  926. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), (i), \
  927. CHECKED_CAST(void *, GENERAL_NAME *, p)))
  928. #define sk_GENERAL_NAME_free(sk) \
  929. sk_free(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk))
  930. #define sk_GENERAL_NAME_pop_free(sk, free_func) \
  931. sk_pop_free( \
  932. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  933. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAME *), free_func))
  934. #define sk_GENERAL_NAME_insert(sk, p, where) \
  935. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  936. CHECKED_CAST(void *, GENERAL_NAME *, p), (where))
  937. #define sk_GENERAL_NAME_delete(sk, where) \
  938. ((GENERAL_NAME *)sk_delete( \
  939. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), (where)))
  940. #define sk_GENERAL_NAME_delete_ptr(sk, p) \
  941. ((GENERAL_NAME *)sk_delete_ptr( \
  942. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  943. CHECKED_CAST(void *, GENERAL_NAME *, p)))
  944. #define sk_GENERAL_NAME_find(sk, out_index, p) \
  945. sk_find(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), (out_index), \
  946. CHECKED_CAST(void *, GENERAL_NAME *, p))
  947. #define sk_GENERAL_NAME_shift(sk) \
  948. ((GENERAL_NAME *)sk_shift( \
  949. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk)))
  950. #define sk_GENERAL_NAME_push(sk, p) \
  951. sk_push(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  952. CHECKED_CAST(void *, GENERAL_NAME *, p))
  953. #define sk_GENERAL_NAME_pop(sk) \
  954. ((GENERAL_NAME *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk)))
  955. #define sk_GENERAL_NAME_dup(sk) \
  956. ((STACK_OF(GENERAL_NAME) *)sk_dup( \
  957. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk)))
  958. #define sk_GENERAL_NAME_sort(sk) \
  959. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk))
  960. #define sk_GENERAL_NAME_is_sorted(sk) \
  961. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk))
  962. #define sk_GENERAL_NAME_set_cmp_func(sk, comp) \
  963. ((int (*)(const GENERAL_NAME **a, const GENERAL_NAME **b))sk_set_cmp_func( \
  964. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAME) *, sk), \
  965. CHECKED_CAST(stack_cmp_func, \
  966. int (*)(const GENERAL_NAME **a, const GENERAL_NAME **b), \
  967. comp)))
  968. #define sk_GENERAL_NAME_deep_copy(sk, copy_func, free_func) \
  969. ((STACK_OF(GENERAL_NAME) *)sk_deep_copy( \
  970. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAME) *, sk), \
  971. CHECKED_CAST(void *(*)(void *), GENERAL_NAME *(*)(GENERAL_NAME *), \
  972. copy_func), \
  973. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAME *), free_func)))
  974. /* GENERAL_NAMES */
  975. #define sk_GENERAL_NAMES_new(comp) \
  976. ((STACK_OF(GENERAL_NAMES) *)sk_new(CHECKED_CAST( \
  977. stack_cmp_func, \
  978. int (*)(const GENERAL_NAMES **a, const GENERAL_NAMES **b), comp)))
  979. #define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)sk_new_null())
  980. #define sk_GENERAL_NAMES_num(sk) \
  981. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk))
  982. #define sk_GENERAL_NAMES_zero(sk) \
  983. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk));
  984. #define sk_GENERAL_NAMES_value(sk, i) \
  985. ((GENERAL_NAMES *)sk_value( \
  986. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk), (i)))
  987. #define sk_GENERAL_NAMES_set(sk, i, p) \
  988. ((GENERAL_NAMES *)sk_set( \
  989. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), (i), \
  990. CHECKED_CAST(void *, GENERAL_NAMES *, p)))
  991. #define sk_GENERAL_NAMES_free(sk) \
  992. sk_free(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk))
  993. #define sk_GENERAL_NAMES_pop_free(sk, free_func) \
  994. sk_pop_free( \
  995. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  996. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAMES *), free_func))
  997. #define sk_GENERAL_NAMES_insert(sk, p, where) \
  998. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  999. CHECKED_CAST(void *, GENERAL_NAMES *, p), (where))
  1000. #define sk_GENERAL_NAMES_delete(sk, where) \
  1001. ((GENERAL_NAMES *)sk_delete( \
  1002. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), (where)))
  1003. #define sk_GENERAL_NAMES_delete_ptr(sk, p) \
  1004. ((GENERAL_NAMES *)sk_delete_ptr( \
  1005. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1006. CHECKED_CAST(void *, GENERAL_NAMES *, p)))
  1007. #define sk_GENERAL_NAMES_find(sk, out_index, p) \
  1008. sk_find(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), (out_index), \
  1009. CHECKED_CAST(void *, GENERAL_NAMES *, p))
  1010. #define sk_GENERAL_NAMES_shift(sk) \
  1011. ((GENERAL_NAMES *)sk_shift( \
  1012. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk)))
  1013. #define sk_GENERAL_NAMES_push(sk, p) \
  1014. sk_push(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1015. CHECKED_CAST(void *, GENERAL_NAMES *, p))
  1016. #define sk_GENERAL_NAMES_pop(sk) \
  1017. ((GENERAL_NAMES *)sk_pop( \
  1018. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk)))
  1019. #define sk_GENERAL_NAMES_dup(sk) \
  1020. ((STACK_OF(GENERAL_NAMES) *)sk_dup( \
  1021. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk)))
  1022. #define sk_GENERAL_NAMES_sort(sk) \
  1023. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk))
  1024. #define sk_GENERAL_NAMES_is_sorted(sk) \
  1025. sk_is_sorted( \
  1026. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk))
  1027. #define sk_GENERAL_NAMES_set_cmp_func(sk, comp) \
  1028. ((int (*)(const GENERAL_NAMES **a, const GENERAL_NAMES **b))sk_set_cmp_func( \
  1029. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_NAMES) *, sk), \
  1030. CHECKED_CAST(stack_cmp_func, \
  1031. int (*)(const GENERAL_NAMES **a, const GENERAL_NAMES **b), \
  1032. comp)))
  1033. #define sk_GENERAL_NAMES_deep_copy(sk, copy_func, free_func) \
  1034. ((STACK_OF(GENERAL_NAMES) *)sk_deep_copy( \
  1035. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_NAMES) *, sk), \
  1036. CHECKED_CAST(void *(*)(void *), GENERAL_NAMES *(*)(GENERAL_NAMES *), \
  1037. copy_func), \
  1038. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_NAMES *), free_func)))
  1039. /* GENERAL_SUBTREE */
  1040. #define sk_GENERAL_SUBTREE_new(comp) \
  1041. ((STACK_OF(GENERAL_SUBTREE) *)sk_new(CHECKED_CAST( \
  1042. stack_cmp_func, \
  1043. int (*)(const GENERAL_SUBTREE **a, const GENERAL_SUBTREE **b), comp)))
  1044. #define sk_GENERAL_SUBTREE_new_null() \
  1045. ((STACK_OF(GENERAL_SUBTREE) *)sk_new_null())
  1046. #define sk_GENERAL_SUBTREE_num(sk) \
  1047. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk))
  1048. #define sk_GENERAL_SUBTREE_zero(sk) \
  1049. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk));
  1050. #define sk_GENERAL_SUBTREE_value(sk, i) \
  1051. ((GENERAL_SUBTREE *)sk_value( \
  1052. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk), \
  1053. (i)))
  1054. #define sk_GENERAL_SUBTREE_set(sk, i, p) \
  1055. ((GENERAL_SUBTREE *)sk_set( \
  1056. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), (i), \
  1057. CHECKED_CAST(void *, GENERAL_SUBTREE *, p)))
  1058. #define sk_GENERAL_SUBTREE_free(sk) \
  1059. sk_free(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk))
  1060. #define sk_GENERAL_SUBTREE_pop_free(sk, free_func) \
  1061. sk_pop_free( \
  1062. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1063. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_SUBTREE *), free_func))
  1064. #define sk_GENERAL_SUBTREE_insert(sk, p, where) \
  1065. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1066. CHECKED_CAST(void *, GENERAL_SUBTREE *, p), (where))
  1067. #define sk_GENERAL_SUBTREE_delete(sk, where) \
  1068. ((GENERAL_SUBTREE *)sk_delete( \
  1069. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), (where)))
  1070. #define sk_GENERAL_SUBTREE_delete_ptr(sk, p) \
  1071. ((GENERAL_SUBTREE *)sk_delete_ptr( \
  1072. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1073. CHECKED_CAST(void *, GENERAL_SUBTREE *, p)))
  1074. #define sk_GENERAL_SUBTREE_find(sk, out_index, p) \
  1075. sk_find(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1076. (out_index), CHECKED_CAST(void *, GENERAL_SUBTREE *, p))
  1077. #define sk_GENERAL_SUBTREE_shift(sk) \
  1078. ((GENERAL_SUBTREE *)sk_shift( \
  1079. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk)))
  1080. #define sk_GENERAL_SUBTREE_push(sk, p) \
  1081. sk_push(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1082. CHECKED_CAST(void *, GENERAL_SUBTREE *, p))
  1083. #define sk_GENERAL_SUBTREE_pop(sk) \
  1084. ((GENERAL_SUBTREE *)sk_pop( \
  1085. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk)))
  1086. #define sk_GENERAL_SUBTREE_dup(sk) \
  1087. ((STACK_OF(GENERAL_SUBTREE) *)sk_dup( \
  1088. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk)))
  1089. #define sk_GENERAL_SUBTREE_sort(sk) \
  1090. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk))
  1091. #define sk_GENERAL_SUBTREE_is_sorted(sk) \
  1092. sk_is_sorted( \
  1093. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk))
  1094. #define sk_GENERAL_SUBTREE_set_cmp_func(sk, comp) \
  1095. ((int (*)(const GENERAL_SUBTREE **a, const GENERAL_SUBTREE **b)) \
  1096. sk_set_cmp_func( \
  1097. CHECKED_CAST(_STACK *, STACK_OF(GENERAL_SUBTREE) *, sk), \
  1098. CHECKED_CAST(stack_cmp_func, int (*)(const GENERAL_SUBTREE **a, \
  1099. const GENERAL_SUBTREE **b), \
  1100. comp)))
  1101. #define sk_GENERAL_SUBTREE_deep_copy(sk, copy_func, free_func) \
  1102. ((STACK_OF(GENERAL_SUBTREE) *)sk_deep_copy( \
  1103. CHECKED_CAST(const _STACK *, const STACK_OF(GENERAL_SUBTREE) *, sk), \
  1104. CHECKED_CAST(void *(*)(void *), GENERAL_SUBTREE *(*)(GENERAL_SUBTREE *), \
  1105. copy_func), \
  1106. CHECKED_CAST(void (*)(void *), void (*)(GENERAL_SUBTREE *), free_func)))
  1107. /* POLICYINFO */
  1108. #define sk_POLICYINFO_new(comp) \
  1109. ((STACK_OF(POLICYINFO) *)sk_new(CHECKED_CAST( \
  1110. stack_cmp_func, int (*)(const POLICYINFO **a, const POLICYINFO **b), \
  1111. comp)))
  1112. #define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)sk_new_null())
  1113. #define sk_POLICYINFO_num(sk) \
  1114. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk))
  1115. #define sk_POLICYINFO_zero(sk) \
  1116. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk));
  1117. #define sk_POLICYINFO_value(sk, i) \
  1118. ((POLICYINFO *)sk_value( \
  1119. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk), (i)))
  1120. #define sk_POLICYINFO_set(sk, i, p) \
  1121. ((POLICYINFO *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1122. (i), CHECKED_CAST(void *, POLICYINFO *, p)))
  1123. #define sk_POLICYINFO_free(sk) \
  1124. sk_free(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk))
  1125. #define sk_POLICYINFO_pop_free(sk, free_func) \
  1126. sk_pop_free( \
  1127. CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1128. CHECKED_CAST(void (*)(void *), void (*)(POLICYINFO *), free_func))
  1129. #define sk_POLICYINFO_insert(sk, p, where) \
  1130. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1131. CHECKED_CAST(void *, POLICYINFO *, p), (where))
  1132. #define sk_POLICYINFO_delete(sk, where) \
  1133. ((POLICYINFO *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1134. (where)))
  1135. #define sk_POLICYINFO_delete_ptr(sk, p) \
  1136. ((POLICYINFO *)sk_delete_ptr( \
  1137. CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1138. CHECKED_CAST(void *, POLICYINFO *, p)))
  1139. #define sk_POLICYINFO_find(sk, out_index, p) \
  1140. sk_find(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), (out_index), \
  1141. CHECKED_CAST(void *, POLICYINFO *, p))
  1142. #define sk_POLICYINFO_shift(sk) \
  1143. ((POLICYINFO *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk)))
  1144. #define sk_POLICYINFO_push(sk, p) \
  1145. sk_push(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1146. CHECKED_CAST(void *, POLICYINFO *, p))
  1147. #define sk_POLICYINFO_pop(sk) \
  1148. ((POLICYINFO *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk)))
  1149. #define sk_POLICYINFO_dup(sk) \
  1150. ((STACK_OF(POLICYINFO) *)sk_dup( \
  1151. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk)))
  1152. #define sk_POLICYINFO_sort(sk) \
  1153. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk))
  1154. #define sk_POLICYINFO_is_sorted(sk) \
  1155. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk))
  1156. #define sk_POLICYINFO_set_cmp_func(sk, comp) \
  1157. ((int (*)(const POLICYINFO **a, const POLICYINFO **b))sk_set_cmp_func( \
  1158. CHECKED_CAST(_STACK *, STACK_OF(POLICYINFO) *, sk), \
  1159. CHECKED_CAST(stack_cmp_func, \
  1160. int (*)(const POLICYINFO **a, const POLICYINFO **b), \
  1161. comp)))
  1162. #define sk_POLICYINFO_deep_copy(sk, copy_func, free_func) \
  1163. ((STACK_OF(POLICYINFO) *)sk_deep_copy( \
  1164. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYINFO) *, sk), \
  1165. CHECKED_CAST(void *(*)(void *), POLICYINFO *(*)(POLICYINFO *), \
  1166. copy_func), \
  1167. CHECKED_CAST(void (*)(void *), void (*)(POLICYINFO *), free_func)))
  1168. /* POLICYQUALINFO */
  1169. #define sk_POLICYQUALINFO_new(comp) \
  1170. ((STACK_OF(POLICYQUALINFO) *)sk_new(CHECKED_CAST( \
  1171. stack_cmp_func, \
  1172. int (*)(const POLICYQUALINFO **a, const POLICYQUALINFO **b), comp)))
  1173. #define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)sk_new_null())
  1174. #define sk_POLICYQUALINFO_num(sk) \
  1175. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk))
  1176. #define sk_POLICYQUALINFO_zero(sk) \
  1177. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk));
  1178. #define sk_POLICYQUALINFO_value(sk, i) \
  1179. ((POLICYQUALINFO *)sk_value( \
  1180. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk), \
  1181. (i)))
  1182. #define sk_POLICYQUALINFO_set(sk, i, p) \
  1183. ((POLICYQUALINFO *)sk_set( \
  1184. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), (i), \
  1185. CHECKED_CAST(void *, POLICYQUALINFO *, p)))
  1186. #define sk_POLICYQUALINFO_free(sk) \
  1187. sk_free(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk))
  1188. #define sk_POLICYQUALINFO_pop_free(sk, free_func) \
  1189. sk_pop_free( \
  1190. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1191. CHECKED_CAST(void (*)(void *), void (*)(POLICYQUALINFO *), free_func))
  1192. #define sk_POLICYQUALINFO_insert(sk, p, where) \
  1193. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1194. CHECKED_CAST(void *, POLICYQUALINFO *, p), (where))
  1195. #define sk_POLICYQUALINFO_delete(sk, where) \
  1196. ((POLICYQUALINFO *)sk_delete( \
  1197. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), (where)))
  1198. #define sk_POLICYQUALINFO_delete_ptr(sk, p) \
  1199. ((POLICYQUALINFO *)sk_delete_ptr( \
  1200. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1201. CHECKED_CAST(void *, POLICYQUALINFO *, p)))
  1202. #define sk_POLICYQUALINFO_find(sk, out_index, p) \
  1203. sk_find(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), (out_index), \
  1204. CHECKED_CAST(void *, POLICYQUALINFO *, p))
  1205. #define sk_POLICYQUALINFO_shift(sk) \
  1206. ((POLICYQUALINFO *)sk_shift( \
  1207. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk)))
  1208. #define sk_POLICYQUALINFO_push(sk, p) \
  1209. sk_push(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1210. CHECKED_CAST(void *, POLICYQUALINFO *, p))
  1211. #define sk_POLICYQUALINFO_pop(sk) \
  1212. ((POLICYQUALINFO *)sk_pop( \
  1213. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk)))
  1214. #define sk_POLICYQUALINFO_dup(sk) \
  1215. ((STACK_OF(POLICYQUALINFO) *)sk_dup( \
  1216. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk)))
  1217. #define sk_POLICYQUALINFO_sort(sk) \
  1218. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk))
  1219. #define sk_POLICYQUALINFO_is_sorted(sk) \
  1220. sk_is_sorted( \
  1221. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk))
  1222. #define sk_POLICYQUALINFO_set_cmp_func(sk, comp) \
  1223. ((int (*)(const POLICYQUALINFO **a, const POLICYQUALINFO **b)) \
  1224. sk_set_cmp_func( \
  1225. CHECKED_CAST(_STACK *, STACK_OF(POLICYQUALINFO) *, sk), \
  1226. CHECKED_CAST(stack_cmp_func, int (*)(const POLICYQUALINFO **a, \
  1227. const POLICYQUALINFO **b), \
  1228. comp)))
  1229. #define sk_POLICYQUALINFO_deep_copy(sk, copy_func, free_func) \
  1230. ((STACK_OF(POLICYQUALINFO) *)sk_deep_copy( \
  1231. CHECKED_CAST(const _STACK *, const STACK_OF(POLICYQUALINFO) *, sk), \
  1232. CHECKED_CAST(void *(*)(void *), POLICYQUALINFO *(*)(POLICYQUALINFO *), \
  1233. copy_func), \
  1234. CHECKED_CAST(void (*)(void *), void (*)(POLICYQUALINFO *), free_func)))
  1235. /* POLICY_MAPPING */
  1236. #define sk_POLICY_MAPPING_new(comp) \
  1237. ((STACK_OF(POLICY_MAPPING) *)sk_new(CHECKED_CAST( \
  1238. stack_cmp_func, \
  1239. int (*)(const POLICY_MAPPING **a, const POLICY_MAPPING **b), comp)))
  1240. #define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)sk_new_null())
  1241. #define sk_POLICY_MAPPING_num(sk) \
  1242. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk))
  1243. #define sk_POLICY_MAPPING_zero(sk) \
  1244. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk));
  1245. #define sk_POLICY_MAPPING_value(sk, i) \
  1246. ((POLICY_MAPPING *)sk_value( \
  1247. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk), \
  1248. (i)))
  1249. #define sk_POLICY_MAPPING_set(sk, i, p) \
  1250. ((POLICY_MAPPING *)sk_set( \
  1251. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), (i), \
  1252. CHECKED_CAST(void *, POLICY_MAPPING *, p)))
  1253. #define sk_POLICY_MAPPING_free(sk) \
  1254. sk_free(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk))
  1255. #define sk_POLICY_MAPPING_pop_free(sk, free_func) \
  1256. sk_pop_free( \
  1257. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1258. CHECKED_CAST(void (*)(void *), void (*)(POLICY_MAPPING *), free_func))
  1259. #define sk_POLICY_MAPPING_insert(sk, p, where) \
  1260. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1261. CHECKED_CAST(void *, POLICY_MAPPING *, p), (where))
  1262. #define sk_POLICY_MAPPING_delete(sk, where) \
  1263. ((POLICY_MAPPING *)sk_delete( \
  1264. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), (where)))
  1265. #define sk_POLICY_MAPPING_delete_ptr(sk, p) \
  1266. ((POLICY_MAPPING *)sk_delete_ptr( \
  1267. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1268. CHECKED_CAST(void *, POLICY_MAPPING *, p)))
  1269. #define sk_POLICY_MAPPING_find(sk, out_index, p) \
  1270. sk_find(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), (out_index), \
  1271. CHECKED_CAST(void *, POLICY_MAPPING *, p))
  1272. #define sk_POLICY_MAPPING_shift(sk) \
  1273. ((POLICY_MAPPING *)sk_shift( \
  1274. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk)))
  1275. #define sk_POLICY_MAPPING_push(sk, p) \
  1276. sk_push(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1277. CHECKED_CAST(void *, POLICY_MAPPING *, p))
  1278. #define sk_POLICY_MAPPING_pop(sk) \
  1279. ((POLICY_MAPPING *)sk_pop( \
  1280. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk)))
  1281. #define sk_POLICY_MAPPING_dup(sk) \
  1282. ((STACK_OF(POLICY_MAPPING) *)sk_dup( \
  1283. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk)))
  1284. #define sk_POLICY_MAPPING_sort(sk) \
  1285. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk))
  1286. #define sk_POLICY_MAPPING_is_sorted(sk) \
  1287. sk_is_sorted( \
  1288. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk))
  1289. #define sk_POLICY_MAPPING_set_cmp_func(sk, comp) \
  1290. ((int (*)(const POLICY_MAPPING **a, const POLICY_MAPPING **b)) \
  1291. sk_set_cmp_func( \
  1292. CHECKED_CAST(_STACK *, STACK_OF(POLICY_MAPPING) *, sk), \
  1293. CHECKED_CAST(stack_cmp_func, int (*)(const POLICY_MAPPING **a, \
  1294. const POLICY_MAPPING **b), \
  1295. comp)))
  1296. #define sk_POLICY_MAPPING_deep_copy(sk, copy_func, free_func) \
  1297. ((STACK_OF(POLICY_MAPPING) *)sk_deep_copy( \
  1298. CHECKED_CAST(const _STACK *, const STACK_OF(POLICY_MAPPING) *, sk), \
  1299. CHECKED_CAST(void *(*)(void *), POLICY_MAPPING *(*)(POLICY_MAPPING *), \
  1300. copy_func), \
  1301. CHECKED_CAST(void (*)(void *), void (*)(POLICY_MAPPING *), free_func)))
  1302. /* RSA_additional_prime */
  1303. #define sk_RSA_additional_prime_new(comp) \
  1304. ((STACK_OF(RSA_additional_prime) *)sk_new(CHECKED_CAST( \
  1305. stack_cmp_func, \
  1306. int (*)(const RSA_additional_prime **a, const RSA_additional_prime **b), \
  1307. comp)))
  1308. #define sk_RSA_additional_prime_new_null() \
  1309. ((STACK_OF(RSA_additional_prime) *)sk_new_null())
  1310. #define sk_RSA_additional_prime_num(sk) \
  1311. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(RSA_additional_prime) *, \
  1312. sk))
  1313. #define sk_RSA_additional_prime_zero(sk) \
  1314. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk));
  1315. #define sk_RSA_additional_prime_value(sk, i) \
  1316. ((RSA_additional_prime *)sk_value( \
  1317. CHECKED_CAST(const _STACK *, const STACK_OF(RSA_additional_prime) *, \
  1318. sk), \
  1319. (i)))
  1320. #define sk_RSA_additional_prime_set(sk, i, p) \
  1321. ((RSA_additional_prime *)sk_set( \
  1322. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), (i), \
  1323. CHECKED_CAST(void *, RSA_additional_prime *, p)))
  1324. #define sk_RSA_additional_prime_free(sk) \
  1325. sk_free(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk))
  1326. #define sk_RSA_additional_prime_pop_free(sk, free_func) \
  1327. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1328. CHECKED_CAST(void (*)(void *), void (*)(RSA_additional_prime *), \
  1329. free_func))
  1330. #define sk_RSA_additional_prime_insert(sk, p, where) \
  1331. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1332. CHECKED_CAST(void *, RSA_additional_prime *, p), (where))
  1333. #define sk_RSA_additional_prime_delete(sk, where) \
  1334. ((RSA_additional_prime *)sk_delete( \
  1335. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), (where)))
  1336. #define sk_RSA_additional_prime_delete_ptr(sk, p) \
  1337. ((RSA_additional_prime *)sk_delete_ptr( \
  1338. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1339. CHECKED_CAST(void *, RSA_additional_prime *, p)))
  1340. #define sk_RSA_additional_prime_find(sk, out_index, p) \
  1341. sk_find(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1342. (out_index), CHECKED_CAST(void *, RSA_additional_prime *, p))
  1343. #define sk_RSA_additional_prime_shift(sk) \
  1344. ((RSA_additional_prime *)sk_shift( \
  1345. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk)))
  1346. #define sk_RSA_additional_prime_push(sk, p) \
  1347. sk_push(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1348. CHECKED_CAST(void *, RSA_additional_prime *, p))
  1349. #define sk_RSA_additional_prime_pop(sk) \
  1350. ((RSA_additional_prime *)sk_pop( \
  1351. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk)))
  1352. #define sk_RSA_additional_prime_dup(sk) \
  1353. ((STACK_OF(RSA_additional_prime) *)sk_dup(CHECKED_CAST( \
  1354. const _STACK *, const STACK_OF(RSA_additional_prime) *, sk)))
  1355. #define sk_RSA_additional_prime_sort(sk) \
  1356. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk))
  1357. #define sk_RSA_additional_prime_is_sorted(sk) \
  1358. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  1359. const STACK_OF(RSA_additional_prime) *, sk))
  1360. #define sk_RSA_additional_prime_set_cmp_func(sk, comp) \
  1361. ((int (*)(const RSA_additional_prime **a, const RSA_additional_prime **b)) \
  1362. sk_set_cmp_func( \
  1363. CHECKED_CAST(_STACK *, STACK_OF(RSA_additional_prime) *, sk), \
  1364. CHECKED_CAST(stack_cmp_func, \
  1365. int (*)(const RSA_additional_prime **a, \
  1366. const RSA_additional_prime **b), \
  1367. comp)))
  1368. #define sk_RSA_additional_prime_deep_copy(sk, copy_func, free_func) \
  1369. ((STACK_OF(RSA_additional_prime) *)sk_deep_copy( \
  1370. CHECKED_CAST(const _STACK *, const STACK_OF(RSA_additional_prime) *, \
  1371. sk), \
  1372. CHECKED_CAST(void *(*)(void *), \
  1373. RSA_additional_prime *(*)(RSA_additional_prime *), \
  1374. copy_func), \
  1375. CHECKED_CAST(void (*)(void *), void (*)(RSA_additional_prime *), \
  1376. free_func)))
  1377. /* SSL_COMP */
  1378. #define sk_SSL_COMP_new(comp) \
  1379. ((STACK_OF(SSL_COMP) *)sk_new(CHECKED_CAST( \
  1380. stack_cmp_func, int (*)(const SSL_COMP **a, const SSL_COMP **b), comp)))
  1381. #define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)sk_new_null())
  1382. #define sk_SSL_COMP_num(sk) \
  1383. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk))
  1384. #define sk_SSL_COMP_zero(sk) \
  1385. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk));
  1386. #define sk_SSL_COMP_value(sk, i) \
  1387. ((SSL_COMP *)sk_value( \
  1388. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk), (i)))
  1389. #define sk_SSL_COMP_set(sk, i, p) \
  1390. ((SSL_COMP *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), (i), \
  1391. CHECKED_CAST(void *, SSL_COMP *, p)))
  1392. #define sk_SSL_COMP_free(sk) \
  1393. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk))
  1394. #define sk_SSL_COMP_pop_free(sk, free_func) \
  1395. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1396. CHECKED_CAST(void (*)(void *), void (*)(SSL_COMP *), free_func))
  1397. #define sk_SSL_COMP_insert(sk, p, where) \
  1398. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1399. CHECKED_CAST(void *, SSL_COMP *, p), (where))
  1400. #define sk_SSL_COMP_delete(sk, where) \
  1401. ((SSL_COMP *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1402. (where)))
  1403. #define sk_SSL_COMP_delete_ptr(sk, p) \
  1404. ((SSL_COMP *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1405. CHECKED_CAST(void *, SSL_COMP *, p)))
  1406. #define sk_SSL_COMP_find(sk, out_index, p) \
  1407. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), (out_index), \
  1408. CHECKED_CAST(void *, SSL_COMP *, p))
  1409. #define sk_SSL_COMP_shift(sk) \
  1410. ((SSL_COMP *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk)))
  1411. #define sk_SSL_COMP_push(sk, p) \
  1412. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1413. CHECKED_CAST(void *, SSL_COMP *, p))
  1414. #define sk_SSL_COMP_pop(sk) \
  1415. ((SSL_COMP *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk)))
  1416. #define sk_SSL_COMP_dup(sk) \
  1417. ((STACK_OF(SSL_COMP) *)sk_dup( \
  1418. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk)))
  1419. #define sk_SSL_COMP_sort(sk) \
  1420. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk))
  1421. #define sk_SSL_COMP_is_sorted(sk) \
  1422. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk))
  1423. #define sk_SSL_COMP_set_cmp_func(sk, comp) \
  1424. ((int (*)(const SSL_COMP **a, const SSL_COMP **b))sk_set_cmp_func( \
  1425. CHECKED_CAST(_STACK *, STACK_OF(SSL_COMP) *, sk), \
  1426. CHECKED_CAST(stack_cmp_func, \
  1427. int (*)(const SSL_COMP **a, const SSL_COMP **b), comp)))
  1428. #define sk_SSL_COMP_deep_copy(sk, copy_func, free_func) \
  1429. ((STACK_OF(SSL_COMP) *)sk_deep_copy( \
  1430. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_COMP) *, sk), \
  1431. CHECKED_CAST(void *(*)(void *), SSL_COMP *(*)(SSL_COMP *), copy_func), \
  1432. CHECKED_CAST(void (*)(void *), void (*)(SSL_COMP *), free_func)))
  1433. /* SSL_CUSTOM_EXTENSION */
  1434. #define sk_SSL_CUSTOM_EXTENSION_new(comp) \
  1435. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_new(CHECKED_CAST( \
  1436. stack_cmp_func, \
  1437. int (*)(const SSL_CUSTOM_EXTENSION **a, const SSL_CUSTOM_EXTENSION **b), \
  1438. comp)))
  1439. #define sk_SSL_CUSTOM_EXTENSION_new_null() \
  1440. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_new_null())
  1441. #define sk_SSL_CUSTOM_EXTENSION_num(sk) \
  1442. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, \
  1443. sk))
  1444. #define sk_SSL_CUSTOM_EXTENSION_zero(sk) \
  1445. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk));
  1446. #define sk_SSL_CUSTOM_EXTENSION_value(sk, i) \
  1447. ((SSL_CUSTOM_EXTENSION *)sk_value( \
  1448. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, \
  1449. sk), \
  1450. (i)))
  1451. #define sk_SSL_CUSTOM_EXTENSION_set(sk, i, p) \
  1452. ((SSL_CUSTOM_EXTENSION *)sk_set( \
  1453. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), (i), \
  1454. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p)))
  1455. #define sk_SSL_CUSTOM_EXTENSION_free(sk) \
  1456. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk))
  1457. #define sk_SSL_CUSTOM_EXTENSION_pop_free(sk, free_func) \
  1458. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1459. CHECKED_CAST(void (*)(void *), void (*)(SSL_CUSTOM_EXTENSION *), \
  1460. free_func))
  1461. #define sk_SSL_CUSTOM_EXTENSION_insert(sk, p, where) \
  1462. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1463. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p), (where))
  1464. #define sk_SSL_CUSTOM_EXTENSION_delete(sk, where) \
  1465. ((SSL_CUSTOM_EXTENSION *)sk_delete( \
  1466. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), (where)))
  1467. #define sk_SSL_CUSTOM_EXTENSION_delete_ptr(sk, p) \
  1468. ((SSL_CUSTOM_EXTENSION *)sk_delete_ptr( \
  1469. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1470. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p)))
  1471. #define sk_SSL_CUSTOM_EXTENSION_find(sk, out_index, p) \
  1472. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1473. (out_index), CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p))
  1474. #define sk_SSL_CUSTOM_EXTENSION_shift(sk) \
  1475. ((SSL_CUSTOM_EXTENSION *)sk_shift( \
  1476. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk)))
  1477. #define sk_SSL_CUSTOM_EXTENSION_push(sk, p) \
  1478. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1479. CHECKED_CAST(void *, SSL_CUSTOM_EXTENSION *, p))
  1480. #define sk_SSL_CUSTOM_EXTENSION_pop(sk) \
  1481. ((SSL_CUSTOM_EXTENSION *)sk_pop( \
  1482. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk)))
  1483. #define sk_SSL_CUSTOM_EXTENSION_dup(sk) \
  1484. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_dup(CHECKED_CAST( \
  1485. const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, sk)))
  1486. #define sk_SSL_CUSTOM_EXTENSION_sort(sk) \
  1487. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk))
  1488. #define sk_SSL_CUSTOM_EXTENSION_is_sorted(sk) \
  1489. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  1490. const STACK_OF(SSL_CUSTOM_EXTENSION) *, sk))
  1491. #define sk_SSL_CUSTOM_EXTENSION_set_cmp_func(sk, comp) \
  1492. ((int (*)(const SSL_CUSTOM_EXTENSION **a, const SSL_CUSTOM_EXTENSION **b)) \
  1493. sk_set_cmp_func( \
  1494. CHECKED_CAST(_STACK *, STACK_OF(SSL_CUSTOM_EXTENSION) *, sk), \
  1495. CHECKED_CAST(stack_cmp_func, \
  1496. int (*)(const SSL_CUSTOM_EXTENSION **a, \
  1497. const SSL_CUSTOM_EXTENSION **b), \
  1498. comp)))
  1499. #define sk_SSL_CUSTOM_EXTENSION_deep_copy(sk, copy_func, free_func) \
  1500. ((STACK_OF(SSL_CUSTOM_EXTENSION) *)sk_deep_copy( \
  1501. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CUSTOM_EXTENSION) *, \
  1502. sk), \
  1503. CHECKED_CAST(void *(*)(void *), \
  1504. SSL_CUSTOM_EXTENSION *(*)(SSL_CUSTOM_EXTENSION *), \
  1505. copy_func), \
  1506. CHECKED_CAST(void (*)(void *), void (*)(SSL_CUSTOM_EXTENSION *), \
  1507. free_func)))
  1508. /* STACK_OF_X509_NAME_ENTRY */
  1509. #define sk_STACK_OF_X509_NAME_ENTRY_new(comp) \
  1510. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_new(CHECKED_CAST( \
  1511. stack_cmp_func, int (*)(const STACK_OF_X509_NAME_ENTRY **a, \
  1512. const STACK_OF_X509_NAME_ENTRY **b), \
  1513. comp)))
  1514. #define sk_STACK_OF_X509_NAME_ENTRY_new_null() \
  1515. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_new_null())
  1516. #define sk_STACK_OF_X509_NAME_ENTRY_num(sk) \
  1517. sk_num(CHECKED_CAST(const _STACK *, \
  1518. const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1519. #define sk_STACK_OF_X509_NAME_ENTRY_zero(sk) \
  1520. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk));
  1521. #define sk_STACK_OF_X509_NAME_ENTRY_value(sk, i) \
  1522. ((STACK_OF_X509_NAME_ENTRY *)sk_value( \
  1523. CHECKED_CAST(const _STACK *, const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, \
  1524. sk), \
  1525. (i)))
  1526. #define sk_STACK_OF_X509_NAME_ENTRY_set(sk, i, p) \
  1527. ((STACK_OF_X509_NAME_ENTRY *)sk_set( \
  1528. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), (i), \
  1529. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p)))
  1530. #define sk_STACK_OF_X509_NAME_ENTRY_free(sk) \
  1531. sk_free(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1532. #define sk_STACK_OF_X509_NAME_ENTRY_pop_free(sk, free_func) \
  1533. sk_pop_free( \
  1534. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1535. CHECKED_CAST(void (*)(void *), void (*)(STACK_OF_X509_NAME_ENTRY *), \
  1536. free_func))
  1537. #define sk_STACK_OF_X509_NAME_ENTRY_insert(sk, p, where) \
  1538. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1539. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p), (where))
  1540. #define sk_STACK_OF_X509_NAME_ENTRY_delete(sk, where) \
  1541. ((STACK_OF_X509_NAME_ENTRY *)sk_delete( \
  1542. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1543. (where)))
  1544. #define sk_STACK_OF_X509_NAME_ENTRY_delete_ptr(sk, p) \
  1545. ((STACK_OF_X509_NAME_ENTRY *)sk_delete_ptr( \
  1546. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1547. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p)))
  1548. #define sk_STACK_OF_X509_NAME_ENTRY_find(sk, out_index, p) \
  1549. sk_find(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1550. (out_index), CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p))
  1551. #define sk_STACK_OF_X509_NAME_ENTRY_shift(sk) \
  1552. ((STACK_OF_X509_NAME_ENTRY *)sk_shift( \
  1553. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk)))
  1554. #define sk_STACK_OF_X509_NAME_ENTRY_push(sk, p) \
  1555. sk_push(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1556. CHECKED_CAST(void *, STACK_OF_X509_NAME_ENTRY *, p))
  1557. #define sk_STACK_OF_X509_NAME_ENTRY_pop(sk) \
  1558. ((STACK_OF_X509_NAME_ENTRY *)sk_pop( \
  1559. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk)))
  1560. #define sk_STACK_OF_X509_NAME_ENTRY_dup(sk) \
  1561. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_dup(CHECKED_CAST( \
  1562. const _STACK *, const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk)))
  1563. #define sk_STACK_OF_X509_NAME_ENTRY_sort(sk) \
  1564. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1565. #define sk_STACK_OF_X509_NAME_ENTRY_is_sorted(sk) \
  1566. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  1567. const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk))
  1568. #define sk_STACK_OF_X509_NAME_ENTRY_set_cmp_func(sk, comp) \
  1569. ((int (*)(const STACK_OF_X509_NAME_ENTRY **a, \
  1570. const STACK_OF_X509_NAME_ENTRY **b)) \
  1571. sk_set_cmp_func( \
  1572. CHECKED_CAST(_STACK *, STACK_OF(STACK_OF_X509_NAME_ENTRY) *, sk), \
  1573. CHECKED_CAST(stack_cmp_func, \
  1574. int (*)(const STACK_OF_X509_NAME_ENTRY **a, \
  1575. const STACK_OF_X509_NAME_ENTRY **b), \
  1576. comp)))
  1577. #define sk_STACK_OF_X509_NAME_ENTRY_deep_copy(sk, copy_func, free_func) \
  1578. ((STACK_OF(STACK_OF_X509_NAME_ENTRY) *)sk_deep_copy( \
  1579. CHECKED_CAST(const _STACK *, const STACK_OF(STACK_OF_X509_NAME_ENTRY) *, \
  1580. sk), \
  1581. CHECKED_CAST(void *(*)(void *), \
  1582. STACK_OF_X509_NAME_ENTRY *(*)(STACK_OF_X509_NAME_ENTRY *), \
  1583. copy_func), \
  1584. CHECKED_CAST(void (*)(void *), void (*)(STACK_OF_X509_NAME_ENTRY *), \
  1585. free_func)))
  1586. /* SXNETID */
  1587. #define sk_SXNETID_new(comp) \
  1588. ((STACK_OF(SXNETID) *)sk_new(CHECKED_CAST( \
  1589. stack_cmp_func, int (*)(const SXNETID **a, const SXNETID **b), comp)))
  1590. #define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)sk_new_null())
  1591. #define sk_SXNETID_num(sk) \
  1592. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk))
  1593. #define sk_SXNETID_zero(sk) \
  1594. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk));
  1595. #define sk_SXNETID_value(sk, i) \
  1596. ((SXNETID *)sk_value( \
  1597. CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk), (i)))
  1598. #define sk_SXNETID_set(sk, i, p) \
  1599. ((SXNETID *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), (i), \
  1600. CHECKED_CAST(void *, SXNETID *, p)))
  1601. #define sk_SXNETID_free(sk) \
  1602. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk))
  1603. #define sk_SXNETID_pop_free(sk, free_func) \
  1604. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1605. CHECKED_CAST(void (*)(void *), void (*)(SXNETID *), free_func))
  1606. #define sk_SXNETID_insert(sk, p, where) \
  1607. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1608. CHECKED_CAST(void *, SXNETID *, p), (where))
  1609. #define sk_SXNETID_delete(sk, where) \
  1610. ((SXNETID *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1611. (where)))
  1612. #define sk_SXNETID_delete_ptr(sk, p) \
  1613. ((SXNETID *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1614. CHECKED_CAST(void *, SXNETID *, p)))
  1615. #define sk_SXNETID_find(sk, out_index, p) \
  1616. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), (out_index), \
  1617. CHECKED_CAST(void *, SXNETID *, p))
  1618. #define sk_SXNETID_shift(sk) \
  1619. ((SXNETID *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk)))
  1620. #define sk_SXNETID_push(sk, p) \
  1621. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1622. CHECKED_CAST(void *, SXNETID *, p))
  1623. #define sk_SXNETID_pop(sk) \
  1624. ((SXNETID *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk)))
  1625. #define sk_SXNETID_dup(sk) \
  1626. ((STACK_OF(SXNETID) *)sk_dup( \
  1627. CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk)))
  1628. #define sk_SXNETID_sort(sk) \
  1629. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk))
  1630. #define sk_SXNETID_is_sorted(sk) \
  1631. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk))
  1632. #define sk_SXNETID_set_cmp_func(sk, comp) \
  1633. ((int (*)(const SXNETID **a, const SXNETID **b))sk_set_cmp_func( \
  1634. CHECKED_CAST(_STACK *, STACK_OF(SXNETID) *, sk), \
  1635. CHECKED_CAST(stack_cmp_func, \
  1636. int (*)(const SXNETID **a, const SXNETID **b), comp)))
  1637. #define sk_SXNETID_deep_copy(sk, copy_func, free_func) \
  1638. ((STACK_OF(SXNETID) *)sk_deep_copy( \
  1639. CHECKED_CAST(const _STACK *, const STACK_OF(SXNETID) *, sk), \
  1640. CHECKED_CAST(void *(*)(void *), SXNETID *(*)(SXNETID *), copy_func), \
  1641. CHECKED_CAST(void (*)(void *), void (*)(SXNETID *), free_func)))
  1642. /* X509 */
  1643. #define sk_X509_new(comp) \
  1644. ((STACK_OF(X509) *)sk_new(CHECKED_CAST( \
  1645. stack_cmp_func, int (*)(const X509 **a, const X509 **b), comp)))
  1646. #define sk_X509_new_null() ((STACK_OF(X509) *)sk_new_null())
  1647. #define sk_X509_num(sk) \
  1648. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk))
  1649. #define sk_X509_zero(sk) sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk));
  1650. #define sk_X509_value(sk, i) \
  1651. ((X509 *)sk_value(CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk), \
  1652. (i)))
  1653. #define sk_X509_set(sk, i, p) \
  1654. ((X509 *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), (i), \
  1655. CHECKED_CAST(void *, X509 *, p)))
  1656. #define sk_X509_free(sk) sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk))
  1657. #define sk_X509_pop_free(sk, free_func) \
  1658. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1659. CHECKED_CAST(void (*)(void *), void (*)(X509 *), free_func))
  1660. #define sk_X509_insert(sk, p, where) \
  1661. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1662. CHECKED_CAST(void *, X509 *, p), (where))
  1663. #define sk_X509_delete(sk, where) \
  1664. ((X509 *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), (where)))
  1665. #define sk_X509_delete_ptr(sk, p) \
  1666. ((X509 *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1667. CHECKED_CAST(void *, X509 *, p)))
  1668. #define sk_X509_find(sk, out_index, p) \
  1669. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), (out_index), \
  1670. CHECKED_CAST(void *, X509 *, p))
  1671. #define sk_X509_shift(sk) \
  1672. ((X509 *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk)))
  1673. #define sk_X509_push(sk, p) \
  1674. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1675. CHECKED_CAST(void *, X509 *, p))
  1676. #define sk_X509_pop(sk) \
  1677. ((X509 *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk)))
  1678. #define sk_X509_dup(sk) \
  1679. ((STACK_OF(X509) *)sk_dup( \
  1680. CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk)))
  1681. #define sk_X509_sort(sk) sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk))
  1682. #define sk_X509_is_sorted(sk) \
  1683. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk))
  1684. #define sk_X509_set_cmp_func(sk, comp) \
  1685. ((int (*)(const X509 **a, const X509 **b))sk_set_cmp_func( \
  1686. CHECKED_CAST(_STACK *, STACK_OF(X509) *, sk), \
  1687. CHECKED_CAST(stack_cmp_func, int (*)(const X509 **a, const X509 **b), \
  1688. comp)))
  1689. #define sk_X509_deep_copy(sk, copy_func, free_func) \
  1690. ((STACK_OF(X509) *)sk_deep_copy( \
  1691. CHECKED_CAST(const _STACK *, const STACK_OF(X509) *, sk), \
  1692. CHECKED_CAST(void *(*)(void *), X509 *(*)(X509 *), copy_func), \
  1693. CHECKED_CAST(void (*)(void *), void (*)(X509 *), free_func)))
  1694. /* X509V3_EXT_METHOD */
  1695. #define sk_X509V3_EXT_METHOD_new(comp) \
  1696. ((STACK_OF(X509V3_EXT_METHOD) *)sk_new(CHECKED_CAST( \
  1697. stack_cmp_func, \
  1698. int (*)(const X509V3_EXT_METHOD **a, const X509V3_EXT_METHOD **b), \
  1699. comp)))
  1700. #define sk_X509V3_EXT_METHOD_new_null() \
  1701. ((STACK_OF(X509V3_EXT_METHOD) *)sk_new_null())
  1702. #define sk_X509V3_EXT_METHOD_num(sk) \
  1703. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk))
  1704. #define sk_X509V3_EXT_METHOD_zero(sk) \
  1705. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk));
  1706. #define sk_X509V3_EXT_METHOD_value(sk, i) \
  1707. ((X509V3_EXT_METHOD *)sk_value( \
  1708. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1709. (i)))
  1710. #define sk_X509V3_EXT_METHOD_set(sk, i, p) \
  1711. ((X509V3_EXT_METHOD *)sk_set( \
  1712. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), (i), \
  1713. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p)))
  1714. #define sk_X509V3_EXT_METHOD_free(sk) \
  1715. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk))
  1716. #define sk_X509V3_EXT_METHOD_pop_free(sk, free_func) \
  1717. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1718. CHECKED_CAST(void (*)(void *), void (*)(X509V3_EXT_METHOD *), \
  1719. free_func))
  1720. #define sk_X509V3_EXT_METHOD_insert(sk, p, where) \
  1721. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1722. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p), (where))
  1723. #define sk_X509V3_EXT_METHOD_delete(sk, where) \
  1724. ((X509V3_EXT_METHOD *)sk_delete( \
  1725. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), (where)))
  1726. #define sk_X509V3_EXT_METHOD_delete_ptr(sk, p) \
  1727. ((X509V3_EXT_METHOD *)sk_delete_ptr( \
  1728. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1729. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p)))
  1730. #define sk_X509V3_EXT_METHOD_find(sk, out_index, p) \
  1731. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1732. (out_index), CHECKED_CAST(void *, X509V3_EXT_METHOD *, p))
  1733. #define sk_X509V3_EXT_METHOD_shift(sk) \
  1734. ((X509V3_EXT_METHOD *)sk_shift( \
  1735. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk)))
  1736. #define sk_X509V3_EXT_METHOD_push(sk, p) \
  1737. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1738. CHECKED_CAST(void *, X509V3_EXT_METHOD *, p))
  1739. #define sk_X509V3_EXT_METHOD_pop(sk) \
  1740. ((X509V3_EXT_METHOD *)sk_pop( \
  1741. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk)))
  1742. #define sk_X509V3_EXT_METHOD_dup(sk) \
  1743. ((STACK_OF(X509V3_EXT_METHOD) *)sk_dup( \
  1744. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk)))
  1745. #define sk_X509V3_EXT_METHOD_sort(sk) \
  1746. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk))
  1747. #define sk_X509V3_EXT_METHOD_is_sorted(sk) \
  1748. sk_is_sorted( \
  1749. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk))
  1750. #define sk_X509V3_EXT_METHOD_set_cmp_func(sk, comp) \
  1751. ((int (*)(const X509V3_EXT_METHOD **a, const X509V3_EXT_METHOD **b)) \
  1752. sk_set_cmp_func( \
  1753. CHECKED_CAST(_STACK *, STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1754. CHECKED_CAST(stack_cmp_func, int (*)(const X509V3_EXT_METHOD **a, \
  1755. const X509V3_EXT_METHOD **b), \
  1756. comp)))
  1757. #define sk_X509V3_EXT_METHOD_deep_copy(sk, copy_func, free_func) \
  1758. ((STACK_OF(X509V3_EXT_METHOD) *)sk_deep_copy( \
  1759. CHECKED_CAST(const _STACK *, const STACK_OF(X509V3_EXT_METHOD) *, sk), \
  1760. CHECKED_CAST(void *(*)(void *), \
  1761. X509V3_EXT_METHOD *(*)(X509V3_EXT_METHOD *), copy_func), \
  1762. CHECKED_CAST(void (*)(void *), void (*)(X509V3_EXT_METHOD *), \
  1763. free_func)))
  1764. /* X509_ALGOR */
  1765. #define sk_X509_ALGOR_new(comp) \
  1766. ((STACK_OF(X509_ALGOR) *)sk_new(CHECKED_CAST( \
  1767. stack_cmp_func, int (*)(const X509_ALGOR **a, const X509_ALGOR **b), \
  1768. comp)))
  1769. #define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)sk_new_null())
  1770. #define sk_X509_ALGOR_num(sk) \
  1771. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk))
  1772. #define sk_X509_ALGOR_zero(sk) \
  1773. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk));
  1774. #define sk_X509_ALGOR_value(sk, i) \
  1775. ((X509_ALGOR *)sk_value( \
  1776. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk), (i)))
  1777. #define sk_X509_ALGOR_set(sk, i, p) \
  1778. ((X509_ALGOR *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1779. (i), CHECKED_CAST(void *, X509_ALGOR *, p)))
  1780. #define sk_X509_ALGOR_free(sk) \
  1781. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk))
  1782. #define sk_X509_ALGOR_pop_free(sk, free_func) \
  1783. sk_pop_free( \
  1784. CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1785. CHECKED_CAST(void (*)(void *), void (*)(X509_ALGOR *), free_func))
  1786. #define sk_X509_ALGOR_insert(sk, p, where) \
  1787. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1788. CHECKED_CAST(void *, X509_ALGOR *, p), (where))
  1789. #define sk_X509_ALGOR_delete(sk, where) \
  1790. ((X509_ALGOR *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1791. (where)))
  1792. #define sk_X509_ALGOR_delete_ptr(sk, p) \
  1793. ((X509_ALGOR *)sk_delete_ptr( \
  1794. CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1795. CHECKED_CAST(void *, X509_ALGOR *, p)))
  1796. #define sk_X509_ALGOR_find(sk, out_index, p) \
  1797. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), (out_index), \
  1798. CHECKED_CAST(void *, X509_ALGOR *, p))
  1799. #define sk_X509_ALGOR_shift(sk) \
  1800. ((X509_ALGOR *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk)))
  1801. #define sk_X509_ALGOR_push(sk, p) \
  1802. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1803. CHECKED_CAST(void *, X509_ALGOR *, p))
  1804. #define sk_X509_ALGOR_pop(sk) \
  1805. ((X509_ALGOR *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk)))
  1806. #define sk_X509_ALGOR_dup(sk) \
  1807. ((STACK_OF(X509_ALGOR) *)sk_dup( \
  1808. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk)))
  1809. #define sk_X509_ALGOR_sort(sk) \
  1810. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk))
  1811. #define sk_X509_ALGOR_is_sorted(sk) \
  1812. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk))
  1813. #define sk_X509_ALGOR_set_cmp_func(sk, comp) \
  1814. ((int (*)(const X509_ALGOR **a, const X509_ALGOR **b))sk_set_cmp_func( \
  1815. CHECKED_CAST(_STACK *, STACK_OF(X509_ALGOR) *, sk), \
  1816. CHECKED_CAST(stack_cmp_func, \
  1817. int (*)(const X509_ALGOR **a, const X509_ALGOR **b), \
  1818. comp)))
  1819. #define sk_X509_ALGOR_deep_copy(sk, copy_func, free_func) \
  1820. ((STACK_OF(X509_ALGOR) *)sk_deep_copy( \
  1821. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ALGOR) *, sk), \
  1822. CHECKED_CAST(void *(*)(void *), X509_ALGOR *(*)(X509_ALGOR *), \
  1823. copy_func), \
  1824. CHECKED_CAST(void (*)(void *), void (*)(X509_ALGOR *), free_func)))
  1825. /* X509_ATTRIBUTE */
  1826. #define sk_X509_ATTRIBUTE_new(comp) \
  1827. ((STACK_OF(X509_ATTRIBUTE) *)sk_new(CHECKED_CAST( \
  1828. stack_cmp_func, \
  1829. int (*)(const X509_ATTRIBUTE **a, const X509_ATTRIBUTE **b), comp)))
  1830. #define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)sk_new_null())
  1831. #define sk_X509_ATTRIBUTE_num(sk) \
  1832. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk))
  1833. #define sk_X509_ATTRIBUTE_zero(sk) \
  1834. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk));
  1835. #define sk_X509_ATTRIBUTE_value(sk, i) \
  1836. ((X509_ATTRIBUTE *)sk_value( \
  1837. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk), \
  1838. (i)))
  1839. #define sk_X509_ATTRIBUTE_set(sk, i, p) \
  1840. ((X509_ATTRIBUTE *)sk_set( \
  1841. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), (i), \
  1842. CHECKED_CAST(void *, X509_ATTRIBUTE *, p)))
  1843. #define sk_X509_ATTRIBUTE_free(sk) \
  1844. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk))
  1845. #define sk_X509_ATTRIBUTE_pop_free(sk, free_func) \
  1846. sk_pop_free( \
  1847. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1848. CHECKED_CAST(void (*)(void *), void (*)(X509_ATTRIBUTE *), free_func))
  1849. #define sk_X509_ATTRIBUTE_insert(sk, p, where) \
  1850. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1851. CHECKED_CAST(void *, X509_ATTRIBUTE *, p), (where))
  1852. #define sk_X509_ATTRIBUTE_delete(sk, where) \
  1853. ((X509_ATTRIBUTE *)sk_delete( \
  1854. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), (where)))
  1855. #define sk_X509_ATTRIBUTE_delete_ptr(sk, p) \
  1856. ((X509_ATTRIBUTE *)sk_delete_ptr( \
  1857. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1858. CHECKED_CAST(void *, X509_ATTRIBUTE *, p)))
  1859. #define sk_X509_ATTRIBUTE_find(sk, out_index, p) \
  1860. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), (out_index), \
  1861. CHECKED_CAST(void *, X509_ATTRIBUTE *, p))
  1862. #define sk_X509_ATTRIBUTE_shift(sk) \
  1863. ((X509_ATTRIBUTE *)sk_shift( \
  1864. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk)))
  1865. #define sk_X509_ATTRIBUTE_push(sk, p) \
  1866. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1867. CHECKED_CAST(void *, X509_ATTRIBUTE *, p))
  1868. #define sk_X509_ATTRIBUTE_pop(sk) \
  1869. ((X509_ATTRIBUTE *)sk_pop( \
  1870. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk)))
  1871. #define sk_X509_ATTRIBUTE_dup(sk) \
  1872. ((STACK_OF(X509_ATTRIBUTE) *)sk_dup( \
  1873. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk)))
  1874. #define sk_X509_ATTRIBUTE_sort(sk) \
  1875. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk))
  1876. #define sk_X509_ATTRIBUTE_is_sorted(sk) \
  1877. sk_is_sorted( \
  1878. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk))
  1879. #define sk_X509_ATTRIBUTE_set_cmp_func(sk, comp) \
  1880. ((int (*)(const X509_ATTRIBUTE **a, const X509_ATTRIBUTE **b)) \
  1881. sk_set_cmp_func( \
  1882. CHECKED_CAST(_STACK *, STACK_OF(X509_ATTRIBUTE) *, sk), \
  1883. CHECKED_CAST(stack_cmp_func, int (*)(const X509_ATTRIBUTE **a, \
  1884. const X509_ATTRIBUTE **b), \
  1885. comp)))
  1886. #define sk_X509_ATTRIBUTE_deep_copy(sk, copy_func, free_func) \
  1887. ((STACK_OF(X509_ATTRIBUTE) *)sk_deep_copy( \
  1888. CHECKED_CAST(const _STACK *, const STACK_OF(X509_ATTRIBUTE) *, sk), \
  1889. CHECKED_CAST(void *(*)(void *), X509_ATTRIBUTE *(*)(X509_ATTRIBUTE *), \
  1890. copy_func), \
  1891. CHECKED_CAST(void (*)(void *), void (*)(X509_ATTRIBUTE *), free_func)))
  1892. /* X509_CRL */
  1893. #define sk_X509_CRL_new(comp) \
  1894. ((STACK_OF(X509_CRL) *)sk_new(CHECKED_CAST( \
  1895. stack_cmp_func, int (*)(const X509_CRL **a, const X509_CRL **b), comp)))
  1896. #define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)sk_new_null())
  1897. #define sk_X509_CRL_num(sk) \
  1898. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk))
  1899. #define sk_X509_CRL_zero(sk) \
  1900. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk));
  1901. #define sk_X509_CRL_value(sk, i) \
  1902. ((X509_CRL *)sk_value( \
  1903. CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk), (i)))
  1904. #define sk_X509_CRL_set(sk, i, p) \
  1905. ((X509_CRL *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), (i), \
  1906. CHECKED_CAST(void *, X509_CRL *, p)))
  1907. #define sk_X509_CRL_free(sk) \
  1908. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk))
  1909. #define sk_X509_CRL_pop_free(sk, free_func) \
  1910. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1911. CHECKED_CAST(void (*)(void *), void (*)(X509_CRL *), free_func))
  1912. #define sk_X509_CRL_insert(sk, p, where) \
  1913. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1914. CHECKED_CAST(void *, X509_CRL *, p), (where))
  1915. #define sk_X509_CRL_delete(sk, where) \
  1916. ((X509_CRL *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1917. (where)))
  1918. #define sk_X509_CRL_delete_ptr(sk, p) \
  1919. ((X509_CRL *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1920. CHECKED_CAST(void *, X509_CRL *, p)))
  1921. #define sk_X509_CRL_find(sk, out_index, p) \
  1922. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), (out_index), \
  1923. CHECKED_CAST(void *, X509_CRL *, p))
  1924. #define sk_X509_CRL_shift(sk) \
  1925. ((X509_CRL *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk)))
  1926. #define sk_X509_CRL_push(sk, p) \
  1927. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1928. CHECKED_CAST(void *, X509_CRL *, p))
  1929. #define sk_X509_CRL_pop(sk) \
  1930. ((X509_CRL *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk)))
  1931. #define sk_X509_CRL_dup(sk) \
  1932. ((STACK_OF(X509_CRL) *)sk_dup( \
  1933. CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk)))
  1934. #define sk_X509_CRL_sort(sk) \
  1935. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk))
  1936. #define sk_X509_CRL_is_sorted(sk) \
  1937. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk))
  1938. #define sk_X509_CRL_set_cmp_func(sk, comp) \
  1939. ((int (*)(const X509_CRL **a, const X509_CRL **b))sk_set_cmp_func( \
  1940. CHECKED_CAST(_STACK *, STACK_OF(X509_CRL) *, sk), \
  1941. CHECKED_CAST(stack_cmp_func, \
  1942. int (*)(const X509_CRL **a, const X509_CRL **b), comp)))
  1943. #define sk_X509_CRL_deep_copy(sk, copy_func, free_func) \
  1944. ((STACK_OF(X509_CRL) *)sk_deep_copy( \
  1945. CHECKED_CAST(const _STACK *, const STACK_OF(X509_CRL) *, sk), \
  1946. CHECKED_CAST(void *(*)(void *), X509_CRL *(*)(X509_CRL *), copy_func), \
  1947. CHECKED_CAST(void (*)(void *), void (*)(X509_CRL *), free_func)))
  1948. /* X509_EXTENSION */
  1949. #define sk_X509_EXTENSION_new(comp) \
  1950. ((STACK_OF(X509_EXTENSION) *)sk_new(CHECKED_CAST( \
  1951. stack_cmp_func, \
  1952. int (*)(const X509_EXTENSION **a, const X509_EXTENSION **b), comp)))
  1953. #define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)sk_new_null())
  1954. #define sk_X509_EXTENSION_num(sk) \
  1955. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk))
  1956. #define sk_X509_EXTENSION_zero(sk) \
  1957. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk));
  1958. #define sk_X509_EXTENSION_value(sk, i) \
  1959. ((X509_EXTENSION *)sk_value( \
  1960. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk), \
  1961. (i)))
  1962. #define sk_X509_EXTENSION_set(sk, i, p) \
  1963. ((X509_EXTENSION *)sk_set( \
  1964. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), (i), \
  1965. CHECKED_CAST(void *, X509_EXTENSION *, p)))
  1966. #define sk_X509_EXTENSION_free(sk) \
  1967. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk))
  1968. #define sk_X509_EXTENSION_pop_free(sk, free_func) \
  1969. sk_pop_free( \
  1970. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  1971. CHECKED_CAST(void (*)(void *), void (*)(X509_EXTENSION *), free_func))
  1972. #define sk_X509_EXTENSION_insert(sk, p, where) \
  1973. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  1974. CHECKED_CAST(void *, X509_EXTENSION *, p), (where))
  1975. #define sk_X509_EXTENSION_delete(sk, where) \
  1976. ((X509_EXTENSION *)sk_delete( \
  1977. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), (where)))
  1978. #define sk_X509_EXTENSION_delete_ptr(sk, p) \
  1979. ((X509_EXTENSION *)sk_delete_ptr( \
  1980. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  1981. CHECKED_CAST(void *, X509_EXTENSION *, p)))
  1982. #define sk_X509_EXTENSION_find(sk, out_index, p) \
  1983. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), (out_index), \
  1984. CHECKED_CAST(void *, X509_EXTENSION *, p))
  1985. #define sk_X509_EXTENSION_shift(sk) \
  1986. ((X509_EXTENSION *)sk_shift( \
  1987. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk)))
  1988. #define sk_X509_EXTENSION_push(sk, p) \
  1989. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  1990. CHECKED_CAST(void *, X509_EXTENSION *, p))
  1991. #define sk_X509_EXTENSION_pop(sk) \
  1992. ((X509_EXTENSION *)sk_pop( \
  1993. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk)))
  1994. #define sk_X509_EXTENSION_dup(sk) \
  1995. ((STACK_OF(X509_EXTENSION) *)sk_dup( \
  1996. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk)))
  1997. #define sk_X509_EXTENSION_sort(sk) \
  1998. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk))
  1999. #define sk_X509_EXTENSION_is_sorted(sk) \
  2000. sk_is_sorted( \
  2001. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk))
  2002. #define sk_X509_EXTENSION_set_cmp_func(sk, comp) \
  2003. ((int (*)(const X509_EXTENSION **a, const X509_EXTENSION **b)) \
  2004. sk_set_cmp_func( \
  2005. CHECKED_CAST(_STACK *, STACK_OF(X509_EXTENSION) *, sk), \
  2006. CHECKED_CAST(stack_cmp_func, int (*)(const X509_EXTENSION **a, \
  2007. const X509_EXTENSION **b), \
  2008. comp)))
  2009. #define sk_X509_EXTENSION_deep_copy(sk, copy_func, free_func) \
  2010. ((STACK_OF(X509_EXTENSION) *)sk_deep_copy( \
  2011. CHECKED_CAST(const _STACK *, const STACK_OF(X509_EXTENSION) *, sk), \
  2012. CHECKED_CAST(void *(*)(void *), X509_EXTENSION *(*)(X509_EXTENSION *), \
  2013. copy_func), \
  2014. CHECKED_CAST(void (*)(void *), void (*)(X509_EXTENSION *), free_func)))
  2015. /* X509_INFO */
  2016. #define sk_X509_INFO_new(comp) \
  2017. ((STACK_OF(X509_INFO) *)sk_new( \
  2018. CHECKED_CAST(stack_cmp_func, \
  2019. int (*)(const X509_INFO **a, const X509_INFO **b), comp)))
  2020. #define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)sk_new_null())
  2021. #define sk_X509_INFO_num(sk) \
  2022. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk))
  2023. #define sk_X509_INFO_zero(sk) \
  2024. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk));
  2025. #define sk_X509_INFO_value(sk, i) \
  2026. ((X509_INFO *)sk_value( \
  2027. CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk), (i)))
  2028. #define sk_X509_INFO_set(sk, i, p) \
  2029. ((X509_INFO *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), (i), \
  2030. CHECKED_CAST(void *, X509_INFO *, p)))
  2031. #define sk_X509_INFO_free(sk) \
  2032. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk))
  2033. #define sk_X509_INFO_pop_free(sk, free_func) \
  2034. sk_pop_free( \
  2035. CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2036. CHECKED_CAST(void (*)(void *), void (*)(X509_INFO *), free_func))
  2037. #define sk_X509_INFO_insert(sk, p, where) \
  2038. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2039. CHECKED_CAST(void *, X509_INFO *, p), (where))
  2040. #define sk_X509_INFO_delete(sk, where) \
  2041. ((X509_INFO *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2042. (where)))
  2043. #define sk_X509_INFO_delete_ptr(sk, p) \
  2044. ((X509_INFO *)sk_delete_ptr( \
  2045. CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2046. CHECKED_CAST(void *, X509_INFO *, p)))
  2047. #define sk_X509_INFO_find(sk, out_index, p) \
  2048. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), (out_index), \
  2049. CHECKED_CAST(void *, X509_INFO *, p))
  2050. #define sk_X509_INFO_shift(sk) \
  2051. ((X509_INFO *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk)))
  2052. #define sk_X509_INFO_push(sk, p) \
  2053. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2054. CHECKED_CAST(void *, X509_INFO *, p))
  2055. #define sk_X509_INFO_pop(sk) \
  2056. ((X509_INFO *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk)))
  2057. #define sk_X509_INFO_dup(sk) \
  2058. ((STACK_OF(X509_INFO) *)sk_dup( \
  2059. CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk)))
  2060. #define sk_X509_INFO_sort(sk) \
  2061. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk))
  2062. #define sk_X509_INFO_is_sorted(sk) \
  2063. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk))
  2064. #define sk_X509_INFO_set_cmp_func(sk, comp) \
  2065. ((int (*)(const X509_INFO **a, const X509_INFO **b))sk_set_cmp_func( \
  2066. CHECKED_CAST(_STACK *, STACK_OF(X509_INFO) *, sk), \
  2067. CHECKED_CAST(stack_cmp_func, \
  2068. int (*)(const X509_INFO **a, const X509_INFO **b), comp)))
  2069. #define sk_X509_INFO_deep_copy(sk, copy_func, free_func) \
  2070. ((STACK_OF(X509_INFO) *)sk_deep_copy( \
  2071. CHECKED_CAST(const _STACK *, const STACK_OF(X509_INFO) *, sk), \
  2072. CHECKED_CAST(void *(*)(void *), X509_INFO *(*)(X509_INFO *), copy_func), \
  2073. CHECKED_CAST(void (*)(void *), void (*)(X509_INFO *), free_func)))
  2074. /* X509_LOOKUP */
  2075. #define sk_X509_LOOKUP_new(comp) \
  2076. ((STACK_OF(X509_LOOKUP) *)sk_new(CHECKED_CAST( \
  2077. stack_cmp_func, int (*)(const X509_LOOKUP **a, const X509_LOOKUP **b), \
  2078. comp)))
  2079. #define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)sk_new_null())
  2080. #define sk_X509_LOOKUP_num(sk) \
  2081. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk))
  2082. #define sk_X509_LOOKUP_zero(sk) \
  2083. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk));
  2084. #define sk_X509_LOOKUP_value(sk, i) \
  2085. ((X509_LOOKUP *)sk_value( \
  2086. CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk), (i)))
  2087. #define sk_X509_LOOKUP_set(sk, i, p) \
  2088. ((X509_LOOKUP *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2089. (i), CHECKED_CAST(void *, X509_LOOKUP *, p)))
  2090. #define sk_X509_LOOKUP_free(sk) \
  2091. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk))
  2092. #define sk_X509_LOOKUP_pop_free(sk, free_func) \
  2093. sk_pop_free( \
  2094. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2095. CHECKED_CAST(void (*)(void *), void (*)(X509_LOOKUP *), free_func))
  2096. #define sk_X509_LOOKUP_insert(sk, p, where) \
  2097. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2098. CHECKED_CAST(void *, X509_LOOKUP *, p), (where))
  2099. #define sk_X509_LOOKUP_delete(sk, where) \
  2100. ((X509_LOOKUP *)sk_delete( \
  2101. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), (where)))
  2102. #define sk_X509_LOOKUP_delete_ptr(sk, p) \
  2103. ((X509_LOOKUP *)sk_delete_ptr( \
  2104. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2105. CHECKED_CAST(void *, X509_LOOKUP *, p)))
  2106. #define sk_X509_LOOKUP_find(sk, out_index, p) \
  2107. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), (out_index), \
  2108. CHECKED_CAST(void *, X509_LOOKUP *, p))
  2109. #define sk_X509_LOOKUP_shift(sk) \
  2110. ((X509_LOOKUP *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk)))
  2111. #define sk_X509_LOOKUP_push(sk, p) \
  2112. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2113. CHECKED_CAST(void *, X509_LOOKUP *, p))
  2114. #define sk_X509_LOOKUP_pop(sk) \
  2115. ((X509_LOOKUP *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk)))
  2116. #define sk_X509_LOOKUP_dup(sk) \
  2117. ((STACK_OF(X509_LOOKUP) *)sk_dup( \
  2118. CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk)))
  2119. #define sk_X509_LOOKUP_sort(sk) \
  2120. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk))
  2121. #define sk_X509_LOOKUP_is_sorted(sk) \
  2122. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk))
  2123. #define sk_X509_LOOKUP_set_cmp_func(sk, comp) \
  2124. ((int (*)(const X509_LOOKUP **a, const X509_LOOKUP **b))sk_set_cmp_func( \
  2125. CHECKED_CAST(_STACK *, STACK_OF(X509_LOOKUP) *, sk), \
  2126. CHECKED_CAST(stack_cmp_func, \
  2127. int (*)(const X509_LOOKUP **a, const X509_LOOKUP **b), \
  2128. comp)))
  2129. #define sk_X509_LOOKUP_deep_copy(sk, copy_func, free_func) \
  2130. ((STACK_OF(X509_LOOKUP) *)sk_deep_copy( \
  2131. CHECKED_CAST(const _STACK *, const STACK_OF(X509_LOOKUP) *, sk), \
  2132. CHECKED_CAST(void *(*)(void *), X509_LOOKUP *(*)(X509_LOOKUP *), \
  2133. copy_func), \
  2134. CHECKED_CAST(void (*)(void *), void (*)(X509_LOOKUP *), free_func)))
  2135. /* X509_NAME */
  2136. #define sk_X509_NAME_new(comp) \
  2137. ((STACK_OF(X509_NAME) *)sk_new( \
  2138. CHECKED_CAST(stack_cmp_func, \
  2139. int (*)(const X509_NAME **a, const X509_NAME **b), comp)))
  2140. #define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)sk_new_null())
  2141. #define sk_X509_NAME_num(sk) \
  2142. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk))
  2143. #define sk_X509_NAME_zero(sk) \
  2144. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk));
  2145. #define sk_X509_NAME_value(sk, i) \
  2146. ((X509_NAME *)sk_value( \
  2147. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk), (i)))
  2148. #define sk_X509_NAME_set(sk, i, p) \
  2149. ((X509_NAME *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), (i), \
  2150. CHECKED_CAST(void *, X509_NAME *, p)))
  2151. #define sk_X509_NAME_free(sk) \
  2152. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk))
  2153. #define sk_X509_NAME_pop_free(sk, free_func) \
  2154. sk_pop_free( \
  2155. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2156. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME *), free_func))
  2157. #define sk_X509_NAME_insert(sk, p, where) \
  2158. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2159. CHECKED_CAST(void *, X509_NAME *, p), (where))
  2160. #define sk_X509_NAME_delete(sk, where) \
  2161. ((X509_NAME *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2162. (where)))
  2163. #define sk_X509_NAME_delete_ptr(sk, p) \
  2164. ((X509_NAME *)sk_delete_ptr( \
  2165. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2166. CHECKED_CAST(void *, X509_NAME *, p)))
  2167. #define sk_X509_NAME_find(sk, out_index, p) \
  2168. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), (out_index), \
  2169. CHECKED_CAST(void *, X509_NAME *, p))
  2170. #define sk_X509_NAME_shift(sk) \
  2171. ((X509_NAME *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk)))
  2172. #define sk_X509_NAME_push(sk, p) \
  2173. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2174. CHECKED_CAST(void *, X509_NAME *, p))
  2175. #define sk_X509_NAME_pop(sk) \
  2176. ((X509_NAME *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk)))
  2177. #define sk_X509_NAME_dup(sk) \
  2178. ((STACK_OF(X509_NAME) *)sk_dup( \
  2179. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk)))
  2180. #define sk_X509_NAME_sort(sk) \
  2181. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk))
  2182. #define sk_X509_NAME_is_sorted(sk) \
  2183. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk))
  2184. #define sk_X509_NAME_set_cmp_func(sk, comp) \
  2185. ((int (*)(const X509_NAME **a, const X509_NAME **b))sk_set_cmp_func( \
  2186. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME) *, sk), \
  2187. CHECKED_CAST(stack_cmp_func, \
  2188. int (*)(const X509_NAME **a, const X509_NAME **b), comp)))
  2189. #define sk_X509_NAME_deep_copy(sk, copy_func, free_func) \
  2190. ((STACK_OF(X509_NAME) *)sk_deep_copy( \
  2191. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME) *, sk), \
  2192. CHECKED_CAST(void *(*)(void *), X509_NAME *(*)(X509_NAME *), copy_func), \
  2193. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME *), free_func)))
  2194. /* X509_NAME_ENTRY */
  2195. #define sk_X509_NAME_ENTRY_new(comp) \
  2196. ((STACK_OF(X509_NAME_ENTRY) *)sk_new(CHECKED_CAST( \
  2197. stack_cmp_func, \
  2198. int (*)(const X509_NAME_ENTRY **a, const X509_NAME_ENTRY **b), comp)))
  2199. #define sk_X509_NAME_ENTRY_new_null() \
  2200. ((STACK_OF(X509_NAME_ENTRY) *)sk_new_null())
  2201. #define sk_X509_NAME_ENTRY_num(sk) \
  2202. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk))
  2203. #define sk_X509_NAME_ENTRY_zero(sk) \
  2204. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk));
  2205. #define sk_X509_NAME_ENTRY_value(sk, i) \
  2206. ((X509_NAME_ENTRY *)sk_value( \
  2207. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk), \
  2208. (i)))
  2209. #define sk_X509_NAME_ENTRY_set(sk, i, p) \
  2210. ((X509_NAME_ENTRY *)sk_set( \
  2211. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), (i), \
  2212. CHECKED_CAST(void *, X509_NAME_ENTRY *, p)))
  2213. #define sk_X509_NAME_ENTRY_free(sk) \
  2214. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk))
  2215. #define sk_X509_NAME_ENTRY_pop_free(sk, free_func) \
  2216. sk_pop_free( \
  2217. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2218. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME_ENTRY *), free_func))
  2219. #define sk_X509_NAME_ENTRY_insert(sk, p, where) \
  2220. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2221. CHECKED_CAST(void *, X509_NAME_ENTRY *, p), (where))
  2222. #define sk_X509_NAME_ENTRY_delete(sk, where) \
  2223. ((X509_NAME_ENTRY *)sk_delete( \
  2224. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), (where)))
  2225. #define sk_X509_NAME_ENTRY_delete_ptr(sk, p) \
  2226. ((X509_NAME_ENTRY *)sk_delete_ptr( \
  2227. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2228. CHECKED_CAST(void *, X509_NAME_ENTRY *, p)))
  2229. #define sk_X509_NAME_ENTRY_find(sk, out_index, p) \
  2230. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2231. (out_index), CHECKED_CAST(void *, X509_NAME_ENTRY *, p))
  2232. #define sk_X509_NAME_ENTRY_shift(sk) \
  2233. ((X509_NAME_ENTRY *)sk_shift( \
  2234. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk)))
  2235. #define sk_X509_NAME_ENTRY_push(sk, p) \
  2236. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2237. CHECKED_CAST(void *, X509_NAME_ENTRY *, p))
  2238. #define sk_X509_NAME_ENTRY_pop(sk) \
  2239. ((X509_NAME_ENTRY *)sk_pop( \
  2240. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk)))
  2241. #define sk_X509_NAME_ENTRY_dup(sk) \
  2242. ((STACK_OF(X509_NAME_ENTRY) *)sk_dup( \
  2243. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk)))
  2244. #define sk_X509_NAME_ENTRY_sort(sk) \
  2245. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk))
  2246. #define sk_X509_NAME_ENTRY_is_sorted(sk) \
  2247. sk_is_sorted( \
  2248. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk))
  2249. #define sk_X509_NAME_ENTRY_set_cmp_func(sk, comp) \
  2250. ((int (*)(const X509_NAME_ENTRY **a, const X509_NAME_ENTRY **b)) \
  2251. sk_set_cmp_func( \
  2252. CHECKED_CAST(_STACK *, STACK_OF(X509_NAME_ENTRY) *, sk), \
  2253. CHECKED_CAST(stack_cmp_func, int (*)(const X509_NAME_ENTRY **a, \
  2254. const X509_NAME_ENTRY **b), \
  2255. comp)))
  2256. #define sk_X509_NAME_ENTRY_deep_copy(sk, copy_func, free_func) \
  2257. ((STACK_OF(X509_NAME_ENTRY) *)sk_deep_copy( \
  2258. CHECKED_CAST(const _STACK *, const STACK_OF(X509_NAME_ENTRY) *, sk), \
  2259. CHECKED_CAST(void *(*)(void *), X509_NAME_ENTRY *(*)(X509_NAME_ENTRY *), \
  2260. copy_func), \
  2261. CHECKED_CAST(void (*)(void *), void (*)(X509_NAME_ENTRY *), free_func)))
  2262. /* X509_OBJECT */
  2263. #define sk_X509_OBJECT_new(comp) \
  2264. ((STACK_OF(X509_OBJECT) *)sk_new(CHECKED_CAST( \
  2265. stack_cmp_func, int (*)(const X509_OBJECT **a, const X509_OBJECT **b), \
  2266. comp)))
  2267. #define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)sk_new_null())
  2268. #define sk_X509_OBJECT_num(sk) \
  2269. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk))
  2270. #define sk_X509_OBJECT_zero(sk) \
  2271. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk));
  2272. #define sk_X509_OBJECT_value(sk, i) \
  2273. ((X509_OBJECT *)sk_value( \
  2274. CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk), (i)))
  2275. #define sk_X509_OBJECT_set(sk, i, p) \
  2276. ((X509_OBJECT *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2277. (i), CHECKED_CAST(void *, X509_OBJECT *, p)))
  2278. #define sk_X509_OBJECT_free(sk) \
  2279. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk))
  2280. #define sk_X509_OBJECT_pop_free(sk, free_func) \
  2281. sk_pop_free( \
  2282. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2283. CHECKED_CAST(void (*)(void *), void (*)(X509_OBJECT *), free_func))
  2284. #define sk_X509_OBJECT_insert(sk, p, where) \
  2285. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2286. CHECKED_CAST(void *, X509_OBJECT *, p), (where))
  2287. #define sk_X509_OBJECT_delete(sk, where) \
  2288. ((X509_OBJECT *)sk_delete( \
  2289. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), (where)))
  2290. #define sk_X509_OBJECT_delete_ptr(sk, p) \
  2291. ((X509_OBJECT *)sk_delete_ptr( \
  2292. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2293. CHECKED_CAST(void *, X509_OBJECT *, p)))
  2294. #define sk_X509_OBJECT_find(sk, out_index, p) \
  2295. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), (out_index), \
  2296. CHECKED_CAST(void *, X509_OBJECT *, p))
  2297. #define sk_X509_OBJECT_shift(sk) \
  2298. ((X509_OBJECT *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk)))
  2299. #define sk_X509_OBJECT_push(sk, p) \
  2300. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2301. CHECKED_CAST(void *, X509_OBJECT *, p))
  2302. #define sk_X509_OBJECT_pop(sk) \
  2303. ((X509_OBJECT *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk)))
  2304. #define sk_X509_OBJECT_dup(sk) \
  2305. ((STACK_OF(X509_OBJECT) *)sk_dup( \
  2306. CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk)))
  2307. #define sk_X509_OBJECT_sort(sk) \
  2308. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk))
  2309. #define sk_X509_OBJECT_is_sorted(sk) \
  2310. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk))
  2311. #define sk_X509_OBJECT_set_cmp_func(sk, comp) \
  2312. ((int (*)(const X509_OBJECT **a, const X509_OBJECT **b))sk_set_cmp_func( \
  2313. CHECKED_CAST(_STACK *, STACK_OF(X509_OBJECT) *, sk), \
  2314. CHECKED_CAST(stack_cmp_func, \
  2315. int (*)(const X509_OBJECT **a, const X509_OBJECT **b), \
  2316. comp)))
  2317. #define sk_X509_OBJECT_deep_copy(sk, copy_func, free_func) \
  2318. ((STACK_OF(X509_OBJECT) *)sk_deep_copy( \
  2319. CHECKED_CAST(const _STACK *, const STACK_OF(X509_OBJECT) *, sk), \
  2320. CHECKED_CAST(void *(*)(void *), X509_OBJECT *(*)(X509_OBJECT *), \
  2321. copy_func), \
  2322. CHECKED_CAST(void (*)(void *), void (*)(X509_OBJECT *), free_func)))
  2323. /* X509_POLICY_DATA */
  2324. #define sk_X509_POLICY_DATA_new(comp) \
  2325. ((STACK_OF(X509_POLICY_DATA) *)sk_new(CHECKED_CAST( \
  2326. stack_cmp_func, \
  2327. int (*)(const X509_POLICY_DATA **a, const X509_POLICY_DATA **b), comp)))
  2328. #define sk_X509_POLICY_DATA_new_null() \
  2329. ((STACK_OF(X509_POLICY_DATA) *)sk_new_null())
  2330. #define sk_X509_POLICY_DATA_num(sk) \
  2331. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk))
  2332. #define sk_X509_POLICY_DATA_zero(sk) \
  2333. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk));
  2334. #define sk_X509_POLICY_DATA_value(sk, i) \
  2335. ((X509_POLICY_DATA *)sk_value( \
  2336. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk), \
  2337. (i)))
  2338. #define sk_X509_POLICY_DATA_set(sk, i, p) \
  2339. ((X509_POLICY_DATA *)sk_set( \
  2340. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), (i), \
  2341. CHECKED_CAST(void *, X509_POLICY_DATA *, p)))
  2342. #define sk_X509_POLICY_DATA_free(sk) \
  2343. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk))
  2344. #define sk_X509_POLICY_DATA_pop_free(sk, free_func) \
  2345. sk_pop_free( \
  2346. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2347. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_DATA *), free_func))
  2348. #define sk_X509_POLICY_DATA_insert(sk, p, where) \
  2349. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2350. CHECKED_CAST(void *, X509_POLICY_DATA *, p), (where))
  2351. #define sk_X509_POLICY_DATA_delete(sk, where) \
  2352. ((X509_POLICY_DATA *)sk_delete( \
  2353. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), (where)))
  2354. #define sk_X509_POLICY_DATA_delete_ptr(sk, p) \
  2355. ((X509_POLICY_DATA *)sk_delete_ptr( \
  2356. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2357. CHECKED_CAST(void *, X509_POLICY_DATA *, p)))
  2358. #define sk_X509_POLICY_DATA_find(sk, out_index, p) \
  2359. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2360. (out_index), CHECKED_CAST(void *, X509_POLICY_DATA *, p))
  2361. #define sk_X509_POLICY_DATA_shift(sk) \
  2362. ((X509_POLICY_DATA *)sk_shift( \
  2363. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk)))
  2364. #define sk_X509_POLICY_DATA_push(sk, p) \
  2365. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2366. CHECKED_CAST(void *, X509_POLICY_DATA *, p))
  2367. #define sk_X509_POLICY_DATA_pop(sk) \
  2368. ((X509_POLICY_DATA *)sk_pop( \
  2369. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk)))
  2370. #define sk_X509_POLICY_DATA_dup(sk) \
  2371. ((STACK_OF(X509_POLICY_DATA) *)sk_dup( \
  2372. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk)))
  2373. #define sk_X509_POLICY_DATA_sort(sk) \
  2374. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk))
  2375. #define sk_X509_POLICY_DATA_is_sorted(sk) \
  2376. sk_is_sorted( \
  2377. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk))
  2378. #define sk_X509_POLICY_DATA_set_cmp_func(sk, comp) \
  2379. ((int (*)(const X509_POLICY_DATA **a, const X509_POLICY_DATA **b)) \
  2380. sk_set_cmp_func( \
  2381. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_DATA) *, sk), \
  2382. CHECKED_CAST(stack_cmp_func, int (*)(const X509_POLICY_DATA **a, \
  2383. const X509_POLICY_DATA **b), \
  2384. comp)))
  2385. #define sk_X509_POLICY_DATA_deep_copy(sk, copy_func, free_func) \
  2386. ((STACK_OF(X509_POLICY_DATA) *)sk_deep_copy( \
  2387. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_DATA) *, sk), \
  2388. CHECKED_CAST(void *(*)(void *), \
  2389. X509_POLICY_DATA *(*)(X509_POLICY_DATA *), copy_func), \
  2390. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_DATA *), \
  2391. free_func)))
  2392. /* X509_POLICY_NODE */
  2393. #define sk_X509_POLICY_NODE_new(comp) \
  2394. ((STACK_OF(X509_POLICY_NODE) *)sk_new(CHECKED_CAST( \
  2395. stack_cmp_func, \
  2396. int (*)(const X509_POLICY_NODE **a, const X509_POLICY_NODE **b), comp)))
  2397. #define sk_X509_POLICY_NODE_new_null() \
  2398. ((STACK_OF(X509_POLICY_NODE) *)sk_new_null())
  2399. #define sk_X509_POLICY_NODE_num(sk) \
  2400. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk))
  2401. #define sk_X509_POLICY_NODE_zero(sk) \
  2402. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk));
  2403. #define sk_X509_POLICY_NODE_value(sk, i) \
  2404. ((X509_POLICY_NODE *)sk_value( \
  2405. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk), \
  2406. (i)))
  2407. #define sk_X509_POLICY_NODE_set(sk, i, p) \
  2408. ((X509_POLICY_NODE *)sk_set( \
  2409. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), (i), \
  2410. CHECKED_CAST(void *, X509_POLICY_NODE *, p)))
  2411. #define sk_X509_POLICY_NODE_free(sk) \
  2412. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk))
  2413. #define sk_X509_POLICY_NODE_pop_free(sk, free_func) \
  2414. sk_pop_free( \
  2415. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2416. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_NODE *), free_func))
  2417. #define sk_X509_POLICY_NODE_insert(sk, p, where) \
  2418. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2419. CHECKED_CAST(void *, X509_POLICY_NODE *, p), (where))
  2420. #define sk_X509_POLICY_NODE_delete(sk, where) \
  2421. ((X509_POLICY_NODE *)sk_delete( \
  2422. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), (where)))
  2423. #define sk_X509_POLICY_NODE_delete_ptr(sk, p) \
  2424. ((X509_POLICY_NODE *)sk_delete_ptr( \
  2425. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2426. CHECKED_CAST(void *, X509_POLICY_NODE *, p)))
  2427. #define sk_X509_POLICY_NODE_find(sk, out_index, p) \
  2428. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2429. (out_index), CHECKED_CAST(void *, X509_POLICY_NODE *, p))
  2430. #define sk_X509_POLICY_NODE_shift(sk) \
  2431. ((X509_POLICY_NODE *)sk_shift( \
  2432. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk)))
  2433. #define sk_X509_POLICY_NODE_push(sk, p) \
  2434. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2435. CHECKED_CAST(void *, X509_POLICY_NODE *, p))
  2436. #define sk_X509_POLICY_NODE_pop(sk) \
  2437. ((X509_POLICY_NODE *)sk_pop( \
  2438. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk)))
  2439. #define sk_X509_POLICY_NODE_dup(sk) \
  2440. ((STACK_OF(X509_POLICY_NODE) *)sk_dup( \
  2441. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk)))
  2442. #define sk_X509_POLICY_NODE_sort(sk) \
  2443. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk))
  2444. #define sk_X509_POLICY_NODE_is_sorted(sk) \
  2445. sk_is_sorted( \
  2446. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk))
  2447. #define sk_X509_POLICY_NODE_set_cmp_func(sk, comp) \
  2448. ((int (*)(const X509_POLICY_NODE **a, const X509_POLICY_NODE **b)) \
  2449. sk_set_cmp_func( \
  2450. CHECKED_CAST(_STACK *, STACK_OF(X509_POLICY_NODE) *, sk), \
  2451. CHECKED_CAST(stack_cmp_func, int (*)(const X509_POLICY_NODE **a, \
  2452. const X509_POLICY_NODE **b), \
  2453. comp)))
  2454. #define sk_X509_POLICY_NODE_deep_copy(sk, copy_func, free_func) \
  2455. ((STACK_OF(X509_POLICY_NODE) *)sk_deep_copy( \
  2456. CHECKED_CAST(const _STACK *, const STACK_OF(X509_POLICY_NODE) *, sk), \
  2457. CHECKED_CAST(void *(*)(void *), \
  2458. X509_POLICY_NODE *(*)(X509_POLICY_NODE *), copy_func), \
  2459. CHECKED_CAST(void (*)(void *), void (*)(X509_POLICY_NODE *), \
  2460. free_func)))
  2461. /* X509_PURPOSE */
  2462. #define sk_X509_PURPOSE_new(comp) \
  2463. ((STACK_OF(X509_PURPOSE) *)sk_new(CHECKED_CAST( \
  2464. stack_cmp_func, int (*)(const X509_PURPOSE **a, const X509_PURPOSE **b), \
  2465. comp)))
  2466. #define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)sk_new_null())
  2467. #define sk_X509_PURPOSE_num(sk) \
  2468. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk))
  2469. #define sk_X509_PURPOSE_zero(sk) \
  2470. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk));
  2471. #define sk_X509_PURPOSE_value(sk, i) \
  2472. ((X509_PURPOSE *)sk_value( \
  2473. CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk), (i)))
  2474. #define sk_X509_PURPOSE_set(sk, i, p) \
  2475. ((X509_PURPOSE *)sk_set( \
  2476. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), (i), \
  2477. CHECKED_CAST(void *, X509_PURPOSE *, p)))
  2478. #define sk_X509_PURPOSE_free(sk) \
  2479. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk))
  2480. #define sk_X509_PURPOSE_pop_free(sk, free_func) \
  2481. sk_pop_free( \
  2482. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2483. CHECKED_CAST(void (*)(void *), void (*)(X509_PURPOSE *), free_func))
  2484. #define sk_X509_PURPOSE_insert(sk, p, where) \
  2485. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2486. CHECKED_CAST(void *, X509_PURPOSE *, p), (where))
  2487. #define sk_X509_PURPOSE_delete(sk, where) \
  2488. ((X509_PURPOSE *)sk_delete( \
  2489. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), (where)))
  2490. #define sk_X509_PURPOSE_delete_ptr(sk, p) \
  2491. ((X509_PURPOSE *)sk_delete_ptr( \
  2492. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2493. CHECKED_CAST(void *, X509_PURPOSE *, p)))
  2494. #define sk_X509_PURPOSE_find(sk, out_index, p) \
  2495. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), (out_index), \
  2496. CHECKED_CAST(void *, X509_PURPOSE *, p))
  2497. #define sk_X509_PURPOSE_shift(sk) \
  2498. ((X509_PURPOSE *)sk_shift( \
  2499. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk)))
  2500. #define sk_X509_PURPOSE_push(sk, p) \
  2501. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2502. CHECKED_CAST(void *, X509_PURPOSE *, p))
  2503. #define sk_X509_PURPOSE_pop(sk) \
  2504. ((X509_PURPOSE *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk)))
  2505. #define sk_X509_PURPOSE_dup(sk) \
  2506. ((STACK_OF(X509_PURPOSE) *)sk_dup( \
  2507. CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk)))
  2508. #define sk_X509_PURPOSE_sort(sk) \
  2509. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk))
  2510. #define sk_X509_PURPOSE_is_sorted(sk) \
  2511. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk))
  2512. #define sk_X509_PURPOSE_set_cmp_func(sk, comp) \
  2513. ((int (*)(const X509_PURPOSE **a, const X509_PURPOSE **b))sk_set_cmp_func( \
  2514. CHECKED_CAST(_STACK *, STACK_OF(X509_PURPOSE) *, sk), \
  2515. CHECKED_CAST(stack_cmp_func, \
  2516. int (*)(const X509_PURPOSE **a, const X509_PURPOSE **b), \
  2517. comp)))
  2518. #define sk_X509_PURPOSE_deep_copy(sk, copy_func, free_func) \
  2519. ((STACK_OF(X509_PURPOSE) *)sk_deep_copy( \
  2520. CHECKED_CAST(const _STACK *, const STACK_OF(X509_PURPOSE) *, sk), \
  2521. CHECKED_CAST(void *(*)(void *), X509_PURPOSE *(*)(X509_PURPOSE *), \
  2522. copy_func), \
  2523. CHECKED_CAST(void (*)(void *), void (*)(X509_PURPOSE *), free_func)))
  2524. /* X509_REVOKED */
  2525. #define sk_X509_REVOKED_new(comp) \
  2526. ((STACK_OF(X509_REVOKED) *)sk_new(CHECKED_CAST( \
  2527. stack_cmp_func, int (*)(const X509_REVOKED **a, const X509_REVOKED **b), \
  2528. comp)))
  2529. #define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)sk_new_null())
  2530. #define sk_X509_REVOKED_num(sk) \
  2531. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk))
  2532. #define sk_X509_REVOKED_zero(sk) \
  2533. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk));
  2534. #define sk_X509_REVOKED_value(sk, i) \
  2535. ((X509_REVOKED *)sk_value( \
  2536. CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk), (i)))
  2537. #define sk_X509_REVOKED_set(sk, i, p) \
  2538. ((X509_REVOKED *)sk_set( \
  2539. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), (i), \
  2540. CHECKED_CAST(void *, X509_REVOKED *, p)))
  2541. #define sk_X509_REVOKED_free(sk) \
  2542. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk))
  2543. #define sk_X509_REVOKED_pop_free(sk, free_func) \
  2544. sk_pop_free( \
  2545. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2546. CHECKED_CAST(void (*)(void *), void (*)(X509_REVOKED *), free_func))
  2547. #define sk_X509_REVOKED_insert(sk, p, where) \
  2548. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2549. CHECKED_CAST(void *, X509_REVOKED *, p), (where))
  2550. #define sk_X509_REVOKED_delete(sk, where) \
  2551. ((X509_REVOKED *)sk_delete( \
  2552. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), (where)))
  2553. #define sk_X509_REVOKED_delete_ptr(sk, p) \
  2554. ((X509_REVOKED *)sk_delete_ptr( \
  2555. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2556. CHECKED_CAST(void *, X509_REVOKED *, p)))
  2557. #define sk_X509_REVOKED_find(sk, out_index, p) \
  2558. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), (out_index), \
  2559. CHECKED_CAST(void *, X509_REVOKED *, p))
  2560. #define sk_X509_REVOKED_shift(sk) \
  2561. ((X509_REVOKED *)sk_shift( \
  2562. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk)))
  2563. #define sk_X509_REVOKED_push(sk, p) \
  2564. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2565. CHECKED_CAST(void *, X509_REVOKED *, p))
  2566. #define sk_X509_REVOKED_pop(sk) \
  2567. ((X509_REVOKED *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk)))
  2568. #define sk_X509_REVOKED_dup(sk) \
  2569. ((STACK_OF(X509_REVOKED) *)sk_dup( \
  2570. CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk)))
  2571. #define sk_X509_REVOKED_sort(sk) \
  2572. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk))
  2573. #define sk_X509_REVOKED_is_sorted(sk) \
  2574. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk))
  2575. #define sk_X509_REVOKED_set_cmp_func(sk, comp) \
  2576. ((int (*)(const X509_REVOKED **a, const X509_REVOKED **b))sk_set_cmp_func( \
  2577. CHECKED_CAST(_STACK *, STACK_OF(X509_REVOKED) *, sk), \
  2578. CHECKED_CAST(stack_cmp_func, \
  2579. int (*)(const X509_REVOKED **a, const X509_REVOKED **b), \
  2580. comp)))
  2581. #define sk_X509_REVOKED_deep_copy(sk, copy_func, free_func) \
  2582. ((STACK_OF(X509_REVOKED) *)sk_deep_copy( \
  2583. CHECKED_CAST(const _STACK *, const STACK_OF(X509_REVOKED) *, sk), \
  2584. CHECKED_CAST(void *(*)(void *), X509_REVOKED *(*)(X509_REVOKED *), \
  2585. copy_func), \
  2586. CHECKED_CAST(void (*)(void *), void (*)(X509_REVOKED *), free_func)))
  2587. /* X509_TRUST */
  2588. #define sk_X509_TRUST_new(comp) \
  2589. ((STACK_OF(X509_TRUST) *)sk_new(CHECKED_CAST( \
  2590. stack_cmp_func, int (*)(const X509_TRUST **a, const X509_TRUST **b), \
  2591. comp)))
  2592. #define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)sk_new_null())
  2593. #define sk_X509_TRUST_num(sk) \
  2594. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk))
  2595. #define sk_X509_TRUST_zero(sk) \
  2596. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk));
  2597. #define sk_X509_TRUST_value(sk, i) \
  2598. ((X509_TRUST *)sk_value( \
  2599. CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk), (i)))
  2600. #define sk_X509_TRUST_set(sk, i, p) \
  2601. ((X509_TRUST *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2602. (i), CHECKED_CAST(void *, X509_TRUST *, p)))
  2603. #define sk_X509_TRUST_free(sk) \
  2604. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk))
  2605. #define sk_X509_TRUST_pop_free(sk, free_func) \
  2606. sk_pop_free( \
  2607. CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2608. CHECKED_CAST(void (*)(void *), void (*)(X509_TRUST *), free_func))
  2609. #define sk_X509_TRUST_insert(sk, p, where) \
  2610. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2611. CHECKED_CAST(void *, X509_TRUST *, p), (where))
  2612. #define sk_X509_TRUST_delete(sk, where) \
  2613. ((X509_TRUST *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2614. (where)))
  2615. #define sk_X509_TRUST_delete_ptr(sk, p) \
  2616. ((X509_TRUST *)sk_delete_ptr( \
  2617. CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2618. CHECKED_CAST(void *, X509_TRUST *, p)))
  2619. #define sk_X509_TRUST_find(sk, out_index, p) \
  2620. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), (out_index), \
  2621. CHECKED_CAST(void *, X509_TRUST *, p))
  2622. #define sk_X509_TRUST_shift(sk) \
  2623. ((X509_TRUST *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk)))
  2624. #define sk_X509_TRUST_push(sk, p) \
  2625. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2626. CHECKED_CAST(void *, X509_TRUST *, p))
  2627. #define sk_X509_TRUST_pop(sk) \
  2628. ((X509_TRUST *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk)))
  2629. #define sk_X509_TRUST_dup(sk) \
  2630. ((STACK_OF(X509_TRUST) *)sk_dup( \
  2631. CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk)))
  2632. #define sk_X509_TRUST_sort(sk) \
  2633. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk))
  2634. #define sk_X509_TRUST_is_sorted(sk) \
  2635. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk))
  2636. #define sk_X509_TRUST_set_cmp_func(sk, comp) \
  2637. ((int (*)(const X509_TRUST **a, const X509_TRUST **b))sk_set_cmp_func( \
  2638. CHECKED_CAST(_STACK *, STACK_OF(X509_TRUST) *, sk), \
  2639. CHECKED_CAST(stack_cmp_func, \
  2640. int (*)(const X509_TRUST **a, const X509_TRUST **b), \
  2641. comp)))
  2642. #define sk_X509_TRUST_deep_copy(sk, copy_func, free_func) \
  2643. ((STACK_OF(X509_TRUST) *)sk_deep_copy( \
  2644. CHECKED_CAST(const _STACK *, const STACK_OF(X509_TRUST) *, sk), \
  2645. CHECKED_CAST(void *(*)(void *), X509_TRUST *(*)(X509_TRUST *), \
  2646. copy_func), \
  2647. CHECKED_CAST(void (*)(void *), void (*)(X509_TRUST *), free_func)))
  2648. /* X509_VERIFY_PARAM */
  2649. #define sk_X509_VERIFY_PARAM_new(comp) \
  2650. ((STACK_OF(X509_VERIFY_PARAM) *)sk_new(CHECKED_CAST( \
  2651. stack_cmp_func, \
  2652. int (*)(const X509_VERIFY_PARAM **a, const X509_VERIFY_PARAM **b), \
  2653. comp)))
  2654. #define sk_X509_VERIFY_PARAM_new_null() \
  2655. ((STACK_OF(X509_VERIFY_PARAM) *)sk_new_null())
  2656. #define sk_X509_VERIFY_PARAM_num(sk) \
  2657. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk))
  2658. #define sk_X509_VERIFY_PARAM_zero(sk) \
  2659. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk));
  2660. #define sk_X509_VERIFY_PARAM_value(sk, i) \
  2661. ((X509_VERIFY_PARAM *)sk_value( \
  2662. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2663. (i)))
  2664. #define sk_X509_VERIFY_PARAM_set(sk, i, p) \
  2665. ((X509_VERIFY_PARAM *)sk_set( \
  2666. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), (i), \
  2667. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p)))
  2668. #define sk_X509_VERIFY_PARAM_free(sk) \
  2669. sk_free(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk))
  2670. #define sk_X509_VERIFY_PARAM_pop_free(sk, free_func) \
  2671. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2672. CHECKED_CAST(void (*)(void *), void (*)(X509_VERIFY_PARAM *), \
  2673. free_func))
  2674. #define sk_X509_VERIFY_PARAM_insert(sk, p, where) \
  2675. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2676. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p), (where))
  2677. #define sk_X509_VERIFY_PARAM_delete(sk, where) \
  2678. ((X509_VERIFY_PARAM *)sk_delete( \
  2679. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), (where)))
  2680. #define sk_X509_VERIFY_PARAM_delete_ptr(sk, p) \
  2681. ((X509_VERIFY_PARAM *)sk_delete_ptr( \
  2682. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2683. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p)))
  2684. #define sk_X509_VERIFY_PARAM_find(sk, out_index, p) \
  2685. sk_find(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2686. (out_index), CHECKED_CAST(void *, X509_VERIFY_PARAM *, p))
  2687. #define sk_X509_VERIFY_PARAM_shift(sk) \
  2688. ((X509_VERIFY_PARAM *)sk_shift( \
  2689. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk)))
  2690. #define sk_X509_VERIFY_PARAM_push(sk, p) \
  2691. sk_push(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2692. CHECKED_CAST(void *, X509_VERIFY_PARAM *, p))
  2693. #define sk_X509_VERIFY_PARAM_pop(sk) \
  2694. ((X509_VERIFY_PARAM *)sk_pop( \
  2695. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk)))
  2696. #define sk_X509_VERIFY_PARAM_dup(sk) \
  2697. ((STACK_OF(X509_VERIFY_PARAM) *)sk_dup( \
  2698. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk)))
  2699. #define sk_X509_VERIFY_PARAM_sort(sk) \
  2700. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk))
  2701. #define sk_X509_VERIFY_PARAM_is_sorted(sk) \
  2702. sk_is_sorted( \
  2703. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk))
  2704. #define sk_X509_VERIFY_PARAM_set_cmp_func(sk, comp) \
  2705. ((int (*)(const X509_VERIFY_PARAM **a, const X509_VERIFY_PARAM **b)) \
  2706. sk_set_cmp_func( \
  2707. CHECKED_CAST(_STACK *, STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2708. CHECKED_CAST(stack_cmp_func, int (*)(const X509_VERIFY_PARAM **a, \
  2709. const X509_VERIFY_PARAM **b), \
  2710. comp)))
  2711. #define sk_X509_VERIFY_PARAM_deep_copy(sk, copy_func, free_func) \
  2712. ((STACK_OF(X509_VERIFY_PARAM) *)sk_deep_copy( \
  2713. CHECKED_CAST(const _STACK *, const STACK_OF(X509_VERIFY_PARAM) *, sk), \
  2714. CHECKED_CAST(void *(*)(void *), \
  2715. X509_VERIFY_PARAM *(*)(X509_VERIFY_PARAM *), copy_func), \
  2716. CHECKED_CAST(void (*)(void *), void (*)(X509_VERIFY_PARAM *), \
  2717. free_func)))
  2718. /* void */
  2719. #define sk_void_new(comp) \
  2720. ((STACK_OF(void) *)sk_new(CHECKED_CAST( \
  2721. stack_cmp_func, int (*)(const void **a, const void **b), comp)))
  2722. #define sk_void_new_null() ((STACK_OF(void) *)sk_new_null())
  2723. #define sk_void_num(sk) \
  2724. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk))
  2725. #define sk_void_zero(sk) sk_zero(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk));
  2726. #define sk_void_value(sk, i) \
  2727. ((void *)sk_value(CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk), \
  2728. (i)))
  2729. #define sk_void_set(sk, i, p) \
  2730. ((void *)sk_set(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), (i), \
  2731. CHECKED_CAST(void *, void *, p)))
  2732. #define sk_void_free(sk) sk_free(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk))
  2733. #define sk_void_pop_free(sk, free_func) \
  2734. sk_pop_free(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2735. CHECKED_CAST(void (*)(void *), void (*)(void *), free_func))
  2736. #define sk_void_insert(sk, p, where) \
  2737. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2738. CHECKED_CAST(void *, void *, p), (where))
  2739. #define sk_void_delete(sk, where) \
  2740. ((void *)sk_delete(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), (where)))
  2741. #define sk_void_delete_ptr(sk, p) \
  2742. ((void *)sk_delete_ptr(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2743. CHECKED_CAST(void *, void *, p)))
  2744. #define sk_void_find(sk, out_index, p) \
  2745. sk_find(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), (out_index), \
  2746. CHECKED_CAST(void *, void *, p))
  2747. #define sk_void_shift(sk) \
  2748. ((void *)sk_shift(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk)))
  2749. #define sk_void_push(sk, p) \
  2750. sk_push(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2751. CHECKED_CAST(void *, void *, p))
  2752. #define sk_void_pop(sk) \
  2753. ((void *)sk_pop(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk)))
  2754. #define sk_void_dup(sk) \
  2755. ((STACK_OF(void) *)sk_dup( \
  2756. CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk)))
  2757. #define sk_void_sort(sk) sk_sort(CHECKED_CAST(_STACK *, STACK_OF(void) *, sk))
  2758. #define sk_void_is_sorted(sk) \
  2759. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk))
  2760. #define sk_void_set_cmp_func(sk, comp) \
  2761. ((int (*)(const void **a, const void **b))sk_set_cmp_func( \
  2762. CHECKED_CAST(_STACK *, STACK_OF(void) *, sk), \
  2763. CHECKED_CAST(stack_cmp_func, int (*)(const void **a, const void **b), \
  2764. comp)))
  2765. #define sk_void_deep_copy(sk, copy_func, free_func) \
  2766. ((STACK_OF(void) *)sk_deep_copy( \
  2767. CHECKED_CAST(const _STACK *, const STACK_OF(void) *, sk), \
  2768. CHECKED_CAST(void *(*)(void *), void *(*)(void *), copy_func), \
  2769. CHECKED_CAST(void (*)(void *), void (*)(void *), free_func)))
  2770. /* SRTP_PROTECTION_PROFILE */
  2771. #define sk_SRTP_PROTECTION_PROFILE_new(comp) \
  2772. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_new(CHECKED_CAST( \
  2773. stack_cmp_func, int (*)(const const SRTP_PROTECTION_PROFILE **a, \
  2774. const const SRTP_PROTECTION_PROFILE **b), \
  2775. comp)))
  2776. #define sk_SRTP_PROTECTION_PROFILE_new_null() \
  2777. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_new_null())
  2778. #define sk_SRTP_PROTECTION_PROFILE_num(sk) \
  2779. sk_num(CHECKED_CAST(const _STACK *, \
  2780. const STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2781. #define sk_SRTP_PROTECTION_PROFILE_zero(sk) \
  2782. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk));
  2783. #define sk_SRTP_PROTECTION_PROFILE_value(sk, i) \
  2784. ((const SRTP_PROTECTION_PROFILE *)sk_value( \
  2785. CHECKED_CAST(const _STACK *, const STACK_OF(SRTP_PROTECTION_PROFILE) *, \
  2786. sk), \
  2787. (i)))
  2788. #define sk_SRTP_PROTECTION_PROFILE_set(sk, i, p) \
  2789. ((const SRTP_PROTECTION_PROFILE *)sk_set( \
  2790. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), (i), \
  2791. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p)))
  2792. #define sk_SRTP_PROTECTION_PROFILE_free(sk) \
  2793. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2794. #define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, free_func) \
  2795. sk_pop_free( \
  2796. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2797. CHECKED_CAST(void (*)(void *), \
  2798. void (*)(const SRTP_PROTECTION_PROFILE *), free_func))
  2799. #define sk_SRTP_PROTECTION_PROFILE_insert(sk, p, where) \
  2800. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2801. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p), (where))
  2802. #define sk_SRTP_PROTECTION_PROFILE_delete(sk, where) \
  2803. ((const SRTP_PROTECTION_PROFILE *)sk_delete( \
  2804. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2805. (where)))
  2806. #define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, p) \
  2807. ((const SRTP_PROTECTION_PROFILE *)sk_delete_ptr( \
  2808. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2809. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p)))
  2810. #define sk_SRTP_PROTECTION_PROFILE_find(sk, out_index, p) \
  2811. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2812. (out_index), \
  2813. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p))
  2814. #define sk_SRTP_PROTECTION_PROFILE_shift(sk) \
  2815. ((const SRTP_PROTECTION_PROFILE *)sk_shift( \
  2816. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk)))
  2817. #define sk_SRTP_PROTECTION_PROFILE_push(sk, p) \
  2818. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2819. CHECKED_CAST(void *, const SRTP_PROTECTION_PROFILE *, p))
  2820. #define sk_SRTP_PROTECTION_PROFILE_pop(sk) \
  2821. ((const SRTP_PROTECTION_PROFILE *)sk_pop( \
  2822. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk)))
  2823. #define sk_SRTP_PROTECTION_PROFILE_dup(sk) \
  2824. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_dup(CHECKED_CAST( \
  2825. const _STACK *, const STACK_OF(SRTP_PROTECTION_PROFILE) *, sk)))
  2826. #define sk_SRTP_PROTECTION_PROFILE_sort(sk) \
  2827. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2828. #define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) \
  2829. sk_is_sorted(CHECKED_CAST(const _STACK *, \
  2830. const STACK_OF(SRTP_PROTECTION_PROFILE) *, sk))
  2831. #define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, comp) \
  2832. ((int (*)(const SRTP_PROTECTION_PROFILE **a, \
  2833. const SRTP_PROTECTION_PROFILE **b)) \
  2834. sk_set_cmp_func( \
  2835. CHECKED_CAST(_STACK *, STACK_OF(SRTP_PROTECTION_PROFILE) *, sk), \
  2836. CHECKED_CAST(stack_cmp_func, \
  2837. int (*)(const SRTP_PROTECTION_PROFILE **a, \
  2838. const SRTP_PROTECTION_PROFILE **b), \
  2839. comp)))
  2840. #define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copy_func, free_func) \
  2841. ((STACK_OF(SRTP_PROTECTION_PROFILE) *)sk_deep_copy( \
  2842. CHECKED_CAST(const _STACK *, const STACK_OF(SRTP_PROTECTION_PROFILE) *, \
  2843. sk), \
  2844. CHECKED_CAST( \
  2845. void *(*)(void *), \
  2846. const SRTP_PROTECTION_PROFILE *(*)(const SRTP_PROTECTION_PROFILE *), \
  2847. copy_func), \
  2848. CHECKED_CAST(void (*)(void *), \
  2849. void (*)(const SRTP_PROTECTION_PROFILE *), free_func)))
  2850. /* SSL_CIPHER */
  2851. #define sk_SSL_CIPHER_new(comp) \
  2852. ((STACK_OF(SSL_CIPHER) *)sk_new(CHECKED_CAST( \
  2853. stack_cmp_func, \
  2854. int (*)(const const SSL_CIPHER **a, const const SSL_CIPHER **b), comp)))
  2855. #define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)sk_new_null())
  2856. #define sk_SSL_CIPHER_num(sk) \
  2857. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk))
  2858. #define sk_SSL_CIPHER_zero(sk) \
  2859. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk));
  2860. #define sk_SSL_CIPHER_value(sk, i) \
  2861. ((const SSL_CIPHER *)sk_value( \
  2862. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk), (i)))
  2863. #define sk_SSL_CIPHER_set(sk, i, p) \
  2864. ((const SSL_CIPHER *)sk_set( \
  2865. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), (i), \
  2866. CHECKED_CAST(void *, const SSL_CIPHER *, p)))
  2867. #define sk_SSL_CIPHER_free(sk) \
  2868. sk_free(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk))
  2869. #define sk_SSL_CIPHER_pop_free(sk, free_func) \
  2870. sk_pop_free( \
  2871. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2872. CHECKED_CAST(void (*)(void *), void (*)(const SSL_CIPHER *), free_func))
  2873. #define sk_SSL_CIPHER_insert(sk, p, where) \
  2874. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2875. CHECKED_CAST(void *, const SSL_CIPHER *, p), (where))
  2876. #define sk_SSL_CIPHER_delete(sk, where) \
  2877. ((const SSL_CIPHER *)sk_delete( \
  2878. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), (where)))
  2879. #define sk_SSL_CIPHER_delete_ptr(sk, p) \
  2880. ((const SSL_CIPHER *)sk_delete_ptr( \
  2881. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2882. CHECKED_CAST(void *, const SSL_CIPHER *, p)))
  2883. #define sk_SSL_CIPHER_find(sk, out_index, p) \
  2884. sk_find(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), (out_index), \
  2885. CHECKED_CAST(void *, const SSL_CIPHER *, p))
  2886. #define sk_SSL_CIPHER_shift(sk) \
  2887. ((const SSL_CIPHER *)sk_shift( \
  2888. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk)))
  2889. #define sk_SSL_CIPHER_push(sk, p) \
  2890. sk_push(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2891. CHECKED_CAST(void *, const SSL_CIPHER *, p))
  2892. #define sk_SSL_CIPHER_pop(sk) \
  2893. ((const SSL_CIPHER *)sk_pop( \
  2894. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk)))
  2895. #define sk_SSL_CIPHER_dup(sk) \
  2896. ((STACK_OF(SSL_CIPHER) *)sk_dup( \
  2897. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk)))
  2898. #define sk_SSL_CIPHER_sort(sk) \
  2899. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk))
  2900. #define sk_SSL_CIPHER_is_sorted(sk) \
  2901. sk_is_sorted(CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk))
  2902. #define sk_SSL_CIPHER_set_cmp_func(sk, comp) \
  2903. ((int (*)(const SSL_CIPHER **a, const SSL_CIPHER **b))sk_set_cmp_func( \
  2904. CHECKED_CAST(_STACK *, STACK_OF(SSL_CIPHER) *, sk), \
  2905. CHECKED_CAST(stack_cmp_func, \
  2906. int (*)(const SSL_CIPHER **a, const SSL_CIPHER **b), \
  2907. comp)))
  2908. #define sk_SSL_CIPHER_deep_copy(sk, copy_func, free_func) \
  2909. ((STACK_OF(SSL_CIPHER) *)sk_deep_copy( \
  2910. CHECKED_CAST(const _STACK *, const STACK_OF(SSL_CIPHER) *, sk), \
  2911. CHECKED_CAST(void *(*)(void *), \
  2912. const SSL_CIPHER *(*)(const SSL_CIPHER *), copy_func), \
  2913. CHECKED_CAST(void (*)(void *), void (*)(const SSL_CIPHER *), \
  2914. free_func)))
  2915. /* OPENSSL_STRING */
  2916. #define sk_OPENSSL_STRING_new(comp) \
  2917. ((STACK_OF(OPENSSL_STRING) *)sk_new(CHECKED_CAST( \
  2918. stack_cmp_func, \
  2919. int (*)(const OPENSSL_STRING *a, const OPENSSL_STRING *b), comp)))
  2920. #define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)sk_new_null())
  2921. #define sk_OPENSSL_STRING_num(sk) \
  2922. sk_num(CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk))
  2923. #define sk_OPENSSL_STRING_zero(sk) \
  2924. sk_zero(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk));
  2925. #define sk_OPENSSL_STRING_value(sk, i) \
  2926. ((OPENSSL_STRING)sk_value( \
  2927. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk), \
  2928. (i)))
  2929. #define sk_OPENSSL_STRING_set(sk, i, p) \
  2930. ((OPENSSL_STRING)sk_set( \
  2931. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), (i), \
  2932. CHECKED_CAST(void *, OPENSSL_STRING, p)))
  2933. #define sk_OPENSSL_STRING_free(sk) \
  2934. sk_free(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk))
  2935. #define sk_OPENSSL_STRING_pop_free(sk, free_func) \
  2936. sk_pop_free( \
  2937. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  2938. CHECKED_CAST(void (*)(void *), void (*)(OPENSSL_STRING), free_func))
  2939. #define sk_OPENSSL_STRING_insert(sk, p, where) \
  2940. sk_insert(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  2941. CHECKED_CAST(void *, OPENSSL_STRING, p), (where))
  2942. #define sk_OPENSSL_STRING_delete(sk, where) \
  2943. ((OPENSSL_STRING)sk_delete( \
  2944. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), (where)))
  2945. #define sk_OPENSSL_STRING_delete_ptr(sk, p) \
  2946. ((OPENSSL_STRING)sk_delete_ptr( \
  2947. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  2948. CHECKED_CAST(void *, OPENSSL_STRING, p)))
  2949. #define sk_OPENSSL_STRING_find(sk, out_index, p) \
  2950. sk_find(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), (out_index), \
  2951. CHECKED_CAST(void *, OPENSSL_STRING, p))
  2952. #define sk_OPENSSL_STRING_shift(sk) \
  2953. ((OPENSSL_STRING)sk_shift( \
  2954. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk)))
  2955. #define sk_OPENSSL_STRING_push(sk, p) \
  2956. sk_push(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  2957. CHECKED_CAST(void *, OPENSSL_STRING, p))
  2958. #define sk_OPENSSL_STRING_pop(sk) \
  2959. ((OPENSSL_STRING)sk_pop( \
  2960. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk)))
  2961. #define sk_OPENSSL_STRING_dup(sk) \
  2962. ((STACK_OF(OPENSSL_STRING) *)sk_dup( \
  2963. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk)))
  2964. #define sk_OPENSSL_STRING_sort(sk) \
  2965. sk_sort(CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk))
  2966. #define sk_OPENSSL_STRING_is_sorted(sk) \
  2967. sk_is_sorted( \
  2968. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk))
  2969. #define sk_OPENSSL_STRING_set_cmp_func(sk, comp) \
  2970. ((int (*)(const OPENSSL_STRING **a, const OPENSSL_STRING **b)) \
  2971. sk_set_cmp_func( \
  2972. CHECKED_CAST(_STACK *, STACK_OF(OPENSSL_STRING) *, sk), \
  2973. CHECKED_CAST(stack_cmp_func, int (*)(const OPENSSL_STRING **a, \
  2974. const OPENSSL_STRING **b), \
  2975. comp)))
  2976. #define sk_OPENSSL_STRING_deep_copy(sk, copy_func, free_func) \
  2977. ((STACK_OF(OPENSSL_STRING) *)sk_deep_copy( \
  2978. CHECKED_CAST(const _STACK *, const STACK_OF(OPENSSL_STRING) *, sk), \
  2979. CHECKED_CAST(void *(*)(void *), OPENSSL_STRING (*)(OPENSSL_STRING), \
  2980. copy_func), \
  2981. CHECKED_CAST(void (*)(void *), void (*)(OPENSSL_STRING), free_func)))