Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
ee8ba0b2
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
11 个月 前同步成功
通知
8
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ee8ba0b2
编写于
5月 30, 1999
作者:
B
Ben Laurie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Another safe stack.
上级
838d25a1
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
54 addition
and
30 deletion
+54
-30
apps/ca.c
apps/ca.c
+4
-4
crypto/asn1/t_crl.c
crypto/asn1/t_crl.c
+5
-4
crypto/asn1/x_crl.c
crypto/asn1/x_crl.c
+21
-13
crypto/stack/safestack.h
crypto/stack/safestack.h
+5
-2
crypto/stack/stack.c
crypto/stack/stack.c
+14
-6
crypto/stack/stack.h
crypto/stack/stack.h
+1
-0
crypto/x509/x509.h
crypto/x509/x509.h
+4
-1
未找到文件。
apps/ca.c
浏览文件 @
ee8ba0b2
...
...
@@ -1073,15 +1073,15 @@ bad:
if
(
!
a2i_ASN1_INTEGER
(
hex
,
r
->
serialNumber
,
buf
[
0
],
BSIZE
))
goto
err
;
sk_
push
(
ci
->
revoked
,(
char
*
)
r
);
sk_
X509_REVOKED_push
(
ci
->
revoked
,
r
);
}
}
/* sort the data so it will be written in serial
* number order */
sk_
find
(
ci
->
revoked
,
NULL
);
for
(
i
=
0
;
i
<
sk_num
(
ci
->
revoked
);
i
++
)
sk_
X509_REVOKED_sort
(
ci
->
revoked
);
for
(
i
=
0
;
i
<
sk_
X509_REVOKED_
num
(
ci
->
revoked
);
i
++
)
{
r
=
(
X509_REVOKED
*
)
sk
_value
(
ci
->
revoked
,
i
);
r
=
sk_X509_REVOKED
_value
(
ci
->
revoked
,
i
);
r
->
sequence
=
i
;
}
...
...
crypto/asn1/t_crl.c
浏览文件 @
ee8ba0b2
...
...
@@ -87,7 +87,7 @@ int X509_CRL_print(BIO *out, X509_CRL *x)
{
char
buf
[
256
];
unsigned
char
*
s
;
STACK
*
rev
;
STACK
_OF
(
X509_REVOKED
)
*
rev
;
X509_REVOKED
*
r
;
long
l
;
int
i
,
j
,
n
;
...
...
@@ -117,11 +117,12 @@ int X509_CRL_print(BIO *out, X509_CRL *x)
rev
=
X509_CRL_get_REVOKED
(
x
);
if
(
sk_num
(
rev
))
BIO_printf
(
out
,
"Revoked Certificates:
\n
"
);
if
(
sk_X509_REVOKED_num
(
rev
))
BIO_printf
(
out
,
"Revoked Certificates:
\n
"
);
else
BIO_printf
(
out
,
"No Revoked Certificates.
\n
"
);
for
(
i
=
0
;
i
<
sk_num
(
rev
);
i
++
)
{
r
=
(
X509_REVOKED
*
)
sk
_value
(
rev
,
i
);
for
(
i
=
0
;
i
<
sk_
X509_REVOKED_
num
(
rev
);
i
++
)
{
r
=
sk_X509_REVOKED
_value
(
rev
,
i
);
BIO_printf
(
out
,
" Serial Number: "
);
i2a_ASN1_INTEGER
(
out
,
r
->
serialNumber
);
BIO_printf
(
out
,
"
\n
Revocation Date: "
,
""
);
...
...
crypto/asn1/x_crl.c
浏览文件 @
ee8ba0b2
...
...
@@ -100,11 +100,13 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp)
{
int
v1
=
0
;
long
l
=
0
;
int
(
*
old_cmp
)(
X509_REVOKED
**
,
X509_REVOKED
**
);
M_ASN1_I2D_vars
(
a
);
old_cmp
=
sk_X509_REVOKED_set_cmp_func
(
a
->
revoked
,
X509_REVOKED_seq_cmp
);
sk_X509_REVOKED_sort
(
a
->
revoked
);
sk_X509_REVOKED_set_cmp_func
(
a
->
revoked
,
old_cmp
);
if
(
sk_num
(
a
->
revoked
)
!=
0
)
qsort
((
char
*
)
a
->
revoked
->
data
,
sk_num
(
a
->
revoked
),
sizeof
(
X509_REVOKED
*
),(
int
(
*
)(
const
void
*
,
const
void
*
))
X509_REVOKED_seq_cmp
);
if
((
a
->
version
!=
NULL
)
&&
((
l
=
ASN1_INTEGER_get
(
a
->
version
))
!=
0
))
{
M_ASN1_I2D_len
(
a
->
version
,
i2d_ASN1_INTEGER
);
...
...
@@ -114,7 +116,8 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp)
M_ASN1_I2D_len
(
a
->
lastUpdate
,
i2d_ASN1_TIME
);
if
(
a
->
nextUpdate
!=
NULL
)
{
M_ASN1_I2D_len
(
a
->
nextUpdate
,
i2d_ASN1_TIME
);
}
M_ASN1_I2D_len_SEQUENCE_opt
(
a
->
revoked
,
i2d_X509_REVOKED
);
M_ASN1_I2D_len_SEQUENCE_opt_type
(
X509_REVOKED
,
a
->
revoked
,
i2d_X509_REVOKED
);
M_ASN1_I2D_len_EXP_SEQUENCE_opt_type
(
X509_EXTENSION
,
a
->
extensions
,
i2d_X509_EXTENSION
,
0
,
V_ASN1_SEQUENCE
,
v1
);
...
...
@@ -130,7 +133,8 @@ int i2d_X509_CRL_INFO(X509_CRL_INFO *a, unsigned char **pp)
M_ASN1_I2D_put
(
a
->
lastUpdate
,
i2d_ASN1_UTCTIME
);
if
(
a
->
nextUpdate
!=
NULL
)
{
M_ASN1_I2D_put
(
a
->
nextUpdate
,
i2d_ASN1_UTCTIME
);
}
M_ASN1_I2D_put_SEQUENCE_opt
(
a
->
revoked
,
i2d_X509_REVOKED
);
M_ASN1_I2D_put_SEQUENCE_opt_type
(
X509_REVOKED
,
a
->
revoked
,
i2d_X509_REVOKED
);
M_ASN1_I2D_put_EXP_SEQUENCE_opt_type
(
X509_EXTENSION
,
a
->
extensions
,
i2d_X509_EXTENSION
,
0
,
V_ASN1_SEQUENCE
,
v1
);
...
...
@@ -172,16 +176,17 @@ X509_CRL_INFO *d2i_X509_CRL_INFO(X509_CRL_INFO **a, unsigned char **pp,
V_ASN1_GENERALIZEDTIME
);
if
(
ret
->
revoked
!=
NULL
)
{
while
(
sk_num
(
ret
->
revoked
))
X509_REVOKED_free
(
(
X509_REVOKED
*
)
sk
_pop
(
ret
->
revoked
));
while
(
sk_
X509_REVOKED_
num
(
ret
->
revoked
))
X509_REVOKED_free
(
sk_X509_REVOKED
_pop
(
ret
->
revoked
));
}
M_ASN1_D2I_get_seq_opt
(
ret
->
revoked
,
d2i_X509_REVOKED
,
X509_REVOKED_free
);
M_ASN1_D2I_get_seq_opt_type
(
X509_REVOKED
,
ret
->
revoked
,
d2i_X509_REVOKED
,
X509_REVOKED_free
);
if
(
ret
->
revoked
!=
NULL
)
{
for
(
i
=
0
;
i
<
sk_num
(
ret
->
revoked
);
i
++
)
for
(
i
=
0
;
i
<
sk_
X509_REVOKED_
num
(
ret
->
revoked
);
i
++
)
{
((
X509_REVOKED
*
)
sk_value
(
ret
->
revoked
,
i
)
)
->
sequence
=
i
;
sk_X509_REVOKED_value
(
ret
->
revoked
,
i
)
->
sequence
=
i
;
}
}
...
...
@@ -258,9 +263,9 @@ X509_CRL_INFO *X509_CRL_INFO_new(void)
M_ASN1_New
(
ret
->
issuer
,
X509_NAME_new
);
M_ASN1_New
(
ret
->
lastUpdate
,
ASN1_UTCTIME_new
);
ret
->
nextUpdate
=
NULL
;
M_ASN1_New
(
ret
->
revoked
,
sk_new_null
);
M_ASN1_New
(
ret
->
revoked
,
sk_
X509_REVOKED_
new_null
);
M_ASN1_New
(
ret
->
extensions
,
sk_X509_EXTENSION_new_null
);
ret
->
revoked
->
comp
=
(
int
(
*
)())
X509_REVOKED_cmp
;
sk_X509_REVOKED_set_cmp_func
(
ret
->
revoked
,
X509_REVOKED_cmp
)
;
return
(
ret
);
M_ASN1_New_Error
(
ASN1_F_X509_CRL_INFO_NEW
);
}
...
...
@@ -297,7 +302,7 @@ void X509_CRL_INFO_free(X509_CRL_INFO *a)
ASN1_UTCTIME_free
(
a
->
lastUpdate
);
if
(
a
->
nextUpdate
)
ASN1_UTCTIME_free
(
a
->
nextUpdate
);
sk_pop_free
(
a
->
revoked
,
X509_REVOKED_free
);
sk_
X509_REVOKED_
pop_free
(
a
->
revoked
,
X509_REVOKED_free
);
sk_X509_EXTENSION_pop_free
(
a
->
extensions
,
X509_EXTENSION_free
);
Free
(
a
);
}
...
...
@@ -338,3 +343,6 @@ static int X509_REVOKED_seq_cmp(X509_REVOKED **a, X509_REVOKED **b)
{
return
((
*
a
)
->
sequence
-
(
*
b
)
->
sequence
);
}
IMPLEMENT_STACK_OF
(
X509_REVOKED
)
IMPLEMENT_ASN1_SET_OF
(
X509_REVOKED
)
crypto/stack/safestack.h
浏览文件 @
ee8ba0b2
...
...
@@ -82,7 +82,8 @@ int (*sk_##type##_set_cmp_func(STACK_OF(type) *sk, \
STACK_OF(type) *sk_##type##_dup(STACK_OF(type) *sk); \
void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)); \
type *sk_##type##_shift(STACK_OF(type) *sk); \
type *sk_##type##_pop(STACK_OF(type) *sk);
type *sk_##type##_pop(STACK_OF(type) *sk); \
void sk_##type##_sort(STACK_OF(type) *sk);
#define IMPLEMENT_STACK_OF(type) \
STACK_OF(type) *sk_##type##_new(int (*cmp)(type **,type **)) \
...
...
@@ -121,6 +122,8 @@ void sk_##type##_pop_free(STACK_OF(type) *sk,void (*func)(type *)) \
type *sk_##type##_shift(STACK_OF(type) *sk) \
{ return (type *)sk_shift((STACK *)sk); } \
type *sk_##type##_pop(STACK_OF(type) *sk) \
{ return (type *)sk_pop((STACK *)sk); }
{ return (type *)sk_pop((STACK *)sk); } \
void sk_##type##_sort(STACK_OF(type) *sk) \
{ sk_sort((STACK *)sk); }
#endif
/* ndef HEADER_SAFESTACK_H */
crypto/stack/stack.c
浏览文件 @
ee8ba0b2
...
...
@@ -217,13 +217,9 @@ int sk_find(STACK *st, char *data)
return
(
i
);
return
(
-
1
);
}
comp_func
=
(
int
(
*
)())
st
->
comp
;
if
(
!
st
->
sorted
)
{
qsort
((
char
*
)
st
->
data
,
st
->
num
,
sizeof
(
char
*
),
FP_ICC
comp_func
);
st
->
sorted
=
1
;
}
sk_sort
(
st
);
if
(
data
==
NULL
)
return
(
-
1
);
comp_func
=
(
int
(
*
)())
st
->
comp
;
r
=
(
char
**
)
bsearch
(
&
data
,(
char
*
)
st
->
data
,
st
->
num
,
sizeof
(
char
*
),
FP_ICC
comp_func
);
if
(
r
==
NULL
)
return
(
-
1
);
...
...
@@ -301,3 +297,15 @@ char *sk_set(STACK *st, int i, char *value)
if
(
st
==
NULL
)
return
NULL
;
return
(
st
->
data
[
i
]
=
value
);
}
void
sk_sort
(
STACK
*
st
)
{
if
(
!
st
->
sorted
)
{
int
(
*
comp_func
)();
comp_func
=
(
int
(
*
)())
st
->
comp
;
qsort
(
st
->
data
,
st
->
num
,
sizeof
(
char
*
),
FP_ICC
comp_func
);
st
->
sorted
=
1
;
}
}
crypto/stack/stack.h
浏览文件 @
ee8ba0b2
...
...
@@ -98,6 +98,7 @@ char *sk_pop(STACK *st);
void
sk_zero
(
STACK
*
st
);
int
(
*
sk_set_cmp_func
(
STACK
*
sk
,
int
(
*
c
)()))();
STACK
*
sk_dup
(
STACK
*
st
);
void
sk_sort
(
STACK
*
st
);
#ifdef __cplusplus
}
...
...
crypto/x509/x509.h
浏览文件 @
ee8ba0b2
...
...
@@ -249,6 +249,9 @@ typedef struct X509_revoked_st
int
sequence
;
/* load sequence */
}
X509_REVOKED
;
DECLARE_STACK_OF
(
X509_REVOKED
)
DECLARE_ASN1_SET_OF
(
X509_REVOKED
)
typedef
struct
X509_crl_info_st
{
ASN1_INTEGER
*
version
;
...
...
@@ -256,7 +259,7 @@ typedef struct X509_crl_info_st
X509_NAME
*
issuer
;
ASN1_UTCTIME
*
lastUpdate
;
ASN1_UTCTIME
*
nextUpdate
;
STACK
/* X509_REVOKED */
*
revoked
;
STACK
_OF
(
X509_REVOKED
)
*
revoked
;
STACK_OF
(
X509_EXTENSION
)
/* [0] */
*
extensions
;
}
X509_CRL_INFO
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录