/* ====================================================================
* 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>
#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_FREE_FUNC(type, p) \
((void (*)(void *)) ((1 ? p : (void (*)(type *))0)))
#define CHECKED_SK_FREE_FUNC2(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; \
};
#define IMPLEMENT_STACK_OF(type) /* nada (obsolete in new safestack approach)*/
/* 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.
*
o * 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_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)
#define SKM_ASN1_SET_OF_i2d(type, st, pp, i2d_func, ex_tag, ex_class, is_set) \
i2d_ASN1_SET((STACK_OF(OPENSSL_BLOCK) *)CHECKED_STACK_OF(type, st), pp, \
CHECKED_I2D_OF(type, i2d_func), \
ex_tag, ex_class, is_set)
#define SKM_ASN1_seq_pack(type, st, i2d_func, buf, len) \
ASN1_seq_pack(CHECKED_PTR_OF(STACK_OF(type), st), \
CHECKED_I2D_OF(type, i2d_func), buf, len)
#define SKM_ASN1_seq_unpack(type, buf, len, d2i_func, free_func) \
(STACK_OF(type) *)ASN1_seq_unpack(buf, len, CHECKED_D2I_OF(type, d2i_func), CHECKED_SK_FREE_FUNC(type, free_func))
#define SKM_PKCS12_decrypt_d2i(type, algor,
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
毕业设计是高等教育阶段学生完成学业的一个重要环节,通常在学士或硕士学业即将结束时进行。这是学生将在整个学业中所学知识和技能应用到实际问题上的机会,旨在检验学生是否能够独立思考、解决问题,并展示其专业能力的一项综合性任务。 毕业设计的主要特点包括: 独立性: 毕业设计要求学生具备独立思考和解决问题的能力。学生需要选择一个合适的课题,研究相关文献,进行实地调查或实验,并提出独立见解。 实践性: 毕业设计是将理论知识应用到实际问题中的一次实践。通过完成毕业设计,学生能够将所学的专业知识转化为实际的解决方案,加深对专业领域的理解。 综合性: 毕业设计往往要求学生运用多个学科的知识,综合各种技能。这有助于培养学生的综合素养,提高他们的综合能力。 导师指导: 学生在毕业设计过程中通常由一名指导老师或导师团队提供指导和支持。导师负责引导学生确定研究方向、制定计划、提供建议,并在整个过程中监督进展。 学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
资源推荐
资源详情
资源评论
收起资源包目录
一款帮助大巴车司机售卖多余车票的软件.zip (1691个子文件)
ios_open_sdk_3.1.0.3_iphone 0B
2.2.0.3c0ed2d 14B
2.3.0.47cf7aa 14B
4.5.0.e990297.752 18B
libWeiboSDK.a 24.14MB
libcrypto.a 12.99MB
libWeChatSDK.a 12.51MB
libWeChatSDK.a 10.4MB
libssl.a 2.32MB
AlipaySDK 1.9MB
AMapFoundationKit 6.42MB
AMapLocationKit 2.05MB
AMapNaviKit 20.22MB
AMapSearchKit 4.19MB
mfp.cer 577B
countryList 826B
4.4.1.d4983af 14B
1.3.2.d4e0936 14B
icons_2_7_1445580283.data 224KB
icons_2_7_1445580283.data 224KB
icons_1_7_1444880368.data 163KB
icons_1_7_1444880368.data 163KB
icons_3_7_1444880372.data 146KB
icons_3_7_1444880372.data 146KB
icons_50_7_1444880375.data 110KB
icons_50_7_1444880375.data 110KB
3d_sky_1.data 44KB
3d_sky_1.data 44KB
roadarrow.data 43KB
roadarrow.data 43KB
3d_sky_2.data 41KB
3d_sky_2.data 41KB
dash_cd.data 21KB
tnl_n.data 21KB
dash.data 21KB
tnl_l.data 21KB
tyl_l.data 21KB
dash_tq.data 21KB
tbl_n.data 21KB
tgl_l.data 21KB
tyl_n.data 21KB
trl_n.data 21KB
tgl.data 21KB
tnl.data 21KB
tbl.data 21KB
trl.data 21KB
tbl_l.data 21KB
tyl.data 21KB
trl_l.data 21KB
tgl_n.data 21KB
tbl_n.data 21KB
tnl.data 21KB
tnl_l.data 21KB
tgl.data 21KB
dash_cd.data 21KB
tnl_n.data 21KB
tgl_n.data 21KB
dash.data 21KB
tyl_l.data 21KB
dash_tq.data 21KB
trl_l.data 21KB
tbl.data 21KB
trl_n.data 21KB
tbl_l.data 21KB
tyl.data 21KB
tyl_n.data 21KB
trl.data 21KB
tgl_l.data 21KB
lineround.data 11KB
lineround.data 11KB
style_1_7_1445219169.data 10KB
style_1_7_1445219169.data 10KB
style_6_7_1445325996.data 9KB
style_6_7_1445325996.data 9KB
style_3_7_1445827513.data 8KB
style_3_7_1445827513.data 8KB
style_4_7_1445391691.data 7KB
style_4_7_1445391691.data 7KB
style_5_7_1445391719.data 7KB
style_5_7_1445391719.data 7KB
style_50_7_1445670996.data 1KB
style_50_7_1445670996.data 1KB
bktile_1.data 151B
bktile_1.data 151B
bktile_2.data 145B
bktile_2.data 145B
4.gif 2.59MB
line@2x.gif 43B
.gitignore 1KB
safestack.h 180KB
obj_mac.h 133KB
ssl.h 101KB
evp.h 52KB
asn1.h 51KB
ec.h 45KB
x509.h 44KB
engine.h 40KB
NSMutableDictionary+SSDKShare.h 38KB
objects.h 36KB
bn.h 36KB
共 1691 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17
资源评论
普通的一个普通猿
- 粉丝: 1464
- 资源: 1761
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功