/* ====================================================================
* Copyright (c) 1999 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
#ifndef HEADER_SAFESTACK_H
# define HEADER_SAFESTACK_H
# include <openssl/stack.h>
#ifdef __cplusplus
extern "C" {
#endif
# ifndef CHECKED_PTR_OF
# define CHECKED_PTR_OF(type, p) \
((void*) (1 ? p : (type*)0))
# endif
/*
* In C++ we get problems because an explicit cast is needed from (void *) we
* use CHECKED_STACK_OF to ensure the correct type is passed in the macros
* below.
*/
# define CHECKED_STACK_OF(type, p) \
((_STACK*) (1 ? p : (STACK_OF(type)*)0))
# define CHECKED_SK_COPY_FUNC(type, p) \
((void *(*)(void *)) ((1 ? p : (type *(*)(const type *))0)))
# define CHECKED_SK_FREE_FUNC(type, p) \
((void (*)(void *)) ((1 ? p : (void (*)(type *))0)))
# define CHECKED_SK_CMP_FUNC(type, p) \
((int (*)(const void *, const void *)) \
((1 ? p : (int (*)(const type * const *, const type * const *))0)))
# define STACK_OF(type) struct stack_st_##type
# define PREDECLARE_STACK_OF(type) STACK_OF(type);
# define DECLARE_STACK_OF(type) \
STACK_OF(type) \
{ \
_STACK stack; \
};
# define DECLARE_SPECIAL_STACK_OF(type, type2) \
STACK_OF(type) \
{ \
_STACK stack; \
};
/* nada (obsolete in new safestack approach)*/
# define IMPLEMENT_STACK_OF(type)
/*-
* Strings are special: normally an lhash entry will point to a single
* (somewhat) mutable object. In the case of strings:
*
* a) Instead of a single char, there is an array of chars, NUL-terminated.
* b) The string may have be immutable.
*
* So, they need their own declarations. Especially important for
* type-checking tools, such as Deputy.
*
* In practice, however, it appears to be hard to have a const
* string. For now, I'm settling for dealing with the fact it is a
* string at all.
*/
typedef char *OPENSSL_STRING;
typedef const char *OPENSSL_CSTRING;
/*
* Confusingly, LHASH_OF(STRING) deals with char ** throughout, but
* STACK_OF(STRING) is really more like STACK_OF(char), only, as mentioned
* above, instead of a single char each entry is a NUL-terminated array of
* chars. So, we have to implement STRING specially for STACK_OF. This is
* dealt with in the autogenerated macros below.
*/
DECLARE_SPECIAL_STACK_OF(OPENSSL_STRING, char)
/*
* Similarly, we sometimes use a block of characters, NOT nul-terminated.
* These should also be distinguished from "normal" stacks.
*/
typedef void *OPENSSL_BLOCK;
DECLARE_SPECIAL_STACK_OF(OPENSSL_BLOCK, void)
/*
* SKM_sk_... stack macros are internal to safestack.h: never use them
* directly, use sk_<type>_... instead
*/
# define SKM_sk_new(type, cmp) \
((STACK_OF(type) *)sk_new(CHECKED_SK_CMP_FUNC(type, cmp)))
# define SKM_sk_new_null(type) \
((STACK_OF(type) *)sk_new_null())
# define SKM_sk_free(type, st) \
sk_free(CHECKED_STACK_OF(type, st))
# define SKM_sk_num(type, st) \
sk_num(CHECKED_STACK_OF(type, st))
# define SKM_sk_value(type, st,i) \
((type *)sk_value(CHECKED_STACK_OF(type, st), i))
# define SKM_sk_set(type, st,i,val) \
sk_set(CHECKED_STACK_OF(type, st), i, CHECKED_PTR_OF(type, val))
# define SKM_sk_zero(type, st) \
sk_zero(CHECKED_STACK_OF(type, st))
# define SKM_sk_push(type, st, val) \
sk_push(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val))
# define SKM_sk_unshift(type, st, val) \
sk_unshift(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val))
# define SKM_sk_find(type, st, val) \
sk_find(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val))
# define SKM_sk_find_ex(type, st, val) \
sk_find_ex(CHECKED_STACK_OF(type, st), \
CHECKED_PTR_OF(type, val))
# define SKM_sk_delete(type, st, i) \
(type *)sk_delete(CHECKED_STACK_OF(type, st), i)
# define SKM_sk_delete_ptr(type, st, ptr) \
(type *)sk_delete_ptr(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, ptr))
# define SKM_sk_insert(type, st,val, i) \
sk_insert(CHECKED_STACK_OF(type, st), CHECKED_PTR_OF(type, val), i)
# define SKM_sk_set_cmp_func(type, st, cmp) \
((int (*)(const type * const *,const type * const *)) \
sk_set_cmp_func(CHECKED_STACK_OF(type, st), CHECKED_SK_CMP_FUNC(type, cmp)))
# define SKM_sk_dup(type, st) \
(STACK_OF(type) *)sk_dup(CHECKED_STACK_OF(type, st))
# define SKM_sk_pop_free(type, st, free_func) \
sk_pop_free(CHECKED_STACK_OF(type, st), CHECKED_SK_FREE_FUNC(type, free_func))
# define SKM_sk_deep_copy(type, st, copy_func, free_func) \
(STACK_OF(type) *)sk_deep_copy(CHECKED_STACK_OF(type, st), CHECKED_SK_COPY_FUNC(type, copy_func), CHECKED_SK_FREE_FUNC(type, free_func))
# define SKM_sk_shift(type, st) \
(type *)sk_shift(CHECKED_STACK_OF(type, st))
# define SKM_sk_pop(type, st) \
(type *)sk_pop(CHECKED_STACK_OF(type, st))
# define SKM_sk_sort(type, st) \
sk_sort(CHECKED_STACK_OF(type, st))
# define SKM_sk_is_sorted(type, st) \
sk_is_sorted(CHECKED_STACK_OF(type, st))
# define SKM_ASN1_SET_OF_d2i(type, st, pp, length, d2i_func, free_func, ex_tag, ex_class) \
(STACK_OF(type) *)d2i_ASN1_SET( \
(STACK_OF(OPENSSL_BLOCK) **)CHECKED_PTR_OF(STACK_OF(type)*, st), \
pp, length, \
CHECKED_D2I_OF(type, d2i_func), \
CHECKED_SK_FREE_FUNC(type, free_func), \
ex_tag, ex_class
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
hpux 11.31 ia openssh 7.9 (237个子文件)
libcrypto.so.1 4.72MB
libssl.so.1 4.28MB
wget.1 106KB
ssh.1 42KB
ssh-keygen.1 26KB
sftp.1 14KB
ssh-agent.1 5KB
scp.1 5KB
ssh-add.1 5KB
cadaver.1 4KB
ssh-keyscan.1 4KB
zlib.3 4KB
ssh_config.5 50KB
sshd_config.5 48KB
moduli.5 3KB
sshd.8 29KB
sftp-server.8 4KB
ssh-keysign.8 2KB
ssh-pkcs11-helper.8 559B
libcrypto.a 8.12MB
libssl.a 1.5MB
libz.a 325KB
charset.alias 577B
cadaver 1010KB
nrpe.cfg 8KB
nrpe.old.cfg 8KB
check_apt 576KB
check_breeze 2KB
check_by_ssh 255KB
check_clamd 359KB
check_cluster 238KB
check_dig 254KB
check_disk 599KB
check_disk_smb 9KB
check_dns 323KB
check_dummy 211KB
check_file_age 3KB
check_flexlm 6KB
check_ftp 359KB
check_http 749KB
check_ifoperstatus 15KB
check_ifstatus 12KB
check_imap 359KB
check_ircd 7KB
check_jabber 359KB
check_load 244KB
check_log 6KB
check_mailq 21KB
check_mrtg 239KB
check_mrtgtraf 239KB
check_nagios 244KB
check_nntp 359KB
check_nntps 359KB
check_nrpe 114KB
check_nt 318KB
check_ntp 321KB
check_ntp_peer 254KB
check_ntp_time 253KB
check_nwstat 322KB
check_oracle 9KB
check_overcr 249KB
check_ping 320KB
check_pop 359KB
check_procs 587KB
check_real 247KB
check_rpc 9KB
check_sensors 1KB
check_simap 359KB
check_smtp 633KB
check_spop 359KB
check_ssh 247KB
check_ssmtp 359KB
check_swap 245KB
check_tcp 359KB
check_time 248KB
check_udp 359KB
check_ups 250KB
check_users 237KB
check_wave 3KB
safestack.h 198KB
obj_mac.h 172KB
ssl.h 146KB
zlib.h 86KB
evp.h 66KB
asn1.h 62KB
ec.h 55KB
x509.h 52KB
objects.h 46KB
engine.h 44KB
bn.h 40KB
x509v3.h 39KB
tls1.h 38KB
bio.h 38KB
ts.h 34KB
asn1t.h 34KB
ssl3.h 33KB
rsa.h 29KB
x509_vfy.h 29KB
cms.h 28KB
symhacks.h 27KB
共 237 条
- 1
- 2
- 3
资源评论
- qq_303226392018-11-12这个资源好像还需要重新编译
onlyloveu2
- 粉丝: 2
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 王锐的《OpenSceneGraph 3.0 Beginner's Guide》中文翻译版,个人读了翻译的很不错!值得推荐
- scr ubuntu上传
- AI Python编程学习课件-第6章深度学习
- STM32单片机FPGA毕设电路原理论文报告液晶显示模块与8031单片机的接口电路及编程
- STM32单片机FPGA毕设电路原理论文报告液晶航向指示器接口电路设计
- Pytorch深度学习入门与实战2024
- STM32单片机FPGA毕设电路原理论文报告野战救护车手术台稳定液压系统及其自动控制
- STM32单片机FPGA毕设电路原理论文报告压延机卷取调速装置改造
- STM32单片机FPGA毕设电路原理论文报告形状记忆合金驱动的微电脑密码锁的设计
- HTML小游戏27 - Chuck Chicken 魔法蛋网页游戏源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功