Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
8382ec5d
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
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看板
提交
8382ec5d
编写于
4月 03, 2003
作者:
R
Richard Levitte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reindent for readability.
上级
0998cfaa
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
104 addition
and
86 deletion
+104
-86
crypto/x509v3/v3_akey.c
crypto/x509v3/v3_akey.c
+104
-86
未找到文件。
crypto/x509v3/v3_akey.c
浏览文件 @
8382ec5d
...
...
@@ -68,15 +68,17 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
static
AUTHORITY_KEYID
*
v2i_AUTHORITY_KEYID
(
X509V3_EXT_METHOD
*
method
,
X509V3_CTX
*
ctx
,
STACK_OF
(
CONF_VALUE
)
*
values
);
X509V3_EXT_METHOD
v3_akey_id
=
{
NID_authority_key_identifier
,
X509V3_EXT_MULTILINE
,
ASN1_ITEM_ref
(
AUTHORITY_KEYID
),
0
,
0
,
0
,
0
,
0
,
0
,
(
X509V3_EXT_I2V
)
i2v_AUTHORITY_KEYID
,
(
X509V3_EXT_V2I
)
v2i_AUTHORITY_KEYID
,
0
,
0
,
NULL
};
X509V3_EXT_METHOD
v3_akey_id
=
{
NID_authority_key_identifier
,
X509V3_EXT_MULTILINE
,
ASN1_ITEM_ref
(
AUTHORITY_KEYID
),
0
,
0
,
0
,
0
,
0
,
0
,
(
X509V3_EXT_I2V
)
i2v_AUTHORITY_KEYID
,
(
X509V3_EXT_V2I
)
v2i_AUTHORITY_KEYID
,
0
,
0
,
NULL
};
static
STACK_OF
(
CONF_VALUE
)
*
i2v_AUTHORITY_KEYID
(
X509V3_EXT_METHOD
*
method
,
AUTHORITY_KEYID
*
akeyid
,
STACK_OF
(
CONF_VALUE
)
*
extlist
)
...
...
@@ -108,83 +110,99 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
static
AUTHORITY_KEYID
*
v2i_AUTHORITY_KEYID
(
X509V3_EXT_METHOD
*
method
,
X509V3_CTX
*
ctx
,
STACK_OF
(
CONF_VALUE
)
*
values
)
{
char
keyid
=
0
,
issuer
=
0
;
int
i
;
CONF_VALUE
*
cnf
;
ASN1_OCTET_STRING
*
ikeyid
=
NULL
;
X509_NAME
*
isname
=
NULL
;
GENERAL_NAMES
*
gens
=
NULL
;
GENERAL_NAME
*
gen
=
NULL
;
ASN1_INTEGER
*
serial
=
NULL
;
X509_EXTENSION
*
ext
;
X509
*
cert
;
AUTHORITY_KEYID
*
akeyid
;
for
(
i
=
0
;
i
<
sk_CONF_VALUE_num
(
values
);
i
++
)
{
cnf
=
sk_CONF_VALUE_value
(
values
,
i
);
if
(
!
strcmp
(
cnf
->
name
,
"keyid"
))
{
keyid
=
1
;
if
(
cnf
->
value
&&
!
strcmp
(
cnf
->
value
,
"always"
))
keyid
=
2
;
}
else
if
(
!
strcmp
(
cnf
->
name
,
"issuer"
))
{
issuer
=
1
;
if
(
cnf
->
value
&&
!
strcmp
(
cnf
->
value
,
"always"
))
issuer
=
2
;
}
else
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_UNKNOWN_OPTION
);
ERR_add_error_data
(
2
,
"name="
,
cnf
->
name
);
{
char
keyid
=
0
,
issuer
=
0
;
int
i
;
CONF_VALUE
*
cnf
;
ASN1_OCTET_STRING
*
ikeyid
=
NULL
;
X509_NAME
*
isname
=
NULL
;
GENERAL_NAMES
*
gens
=
NULL
;
GENERAL_NAME
*
gen
=
NULL
;
ASN1_INTEGER
*
serial
=
NULL
;
X509_EXTENSION
*
ext
;
X509
*
cert
;
AUTHORITY_KEYID
*
akeyid
;
for
(
i
=
0
;
i
<
sk_CONF_VALUE_num
(
values
);
i
++
)
{
cnf
=
sk_CONF_VALUE_value
(
values
,
i
);
if
(
!
strcmp
(
cnf
->
name
,
"keyid"
))
{
keyid
=
1
;
if
(
cnf
->
value
&&
!
strcmp
(
cnf
->
value
,
"always"
))
keyid
=
2
;
}
else
if
(
!
strcmp
(
cnf
->
name
,
"issuer"
))
{
issuer
=
1
;
if
(
cnf
->
value
&&
!
strcmp
(
cnf
->
value
,
"always"
))
issuer
=
2
;
}
else
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_UNKNOWN_OPTION
);
ERR_add_error_data
(
2
,
"name="
,
cnf
->
name
);
return
NULL
;
}
}
if
(
!
ctx
||
!
ctx
->
issuer_cert
)
{
if
(
ctx
&&
(
ctx
->
flags
==
CTX_TEST
))
return
AUTHORITY_KEYID_new
();
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_NO_ISSUER_CERTIFICATE
);
return
NULL
;
}
}
if
(
!
ctx
||
!
ctx
->
issuer_cert
)
{
if
(
ctx
&&
(
ctx
->
flags
==
CTX_TEST
))
return
AUTHORITY_KEYID_new
();
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_NO_ISSUER_CERTIFICATE
);
}
cert
=
ctx
->
issuer_cert
;
if
(
keyid
)
{
i
=
X509_get_ext_by_NID
(
cert
,
NID_subject_key_identifier
,
-
1
);
if
((
i
>=
0
)
&&
(
ext
=
X509_get_ext
(
cert
,
i
)))
ikeyid
=
X509V3_EXT_d2i
(
ext
);
if
(
keyid
==
2
&&
!
ikeyid
)
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_UNABLE_TO_GET_ISSUER_KEYID
);
return
NULL
;
}
}
if
((
issuer
&&
!
ikeyid
)
||
(
issuer
==
2
))
{
isname
=
X509_NAME_dup
(
X509_get_issuer_name
(
cert
));
serial
=
M_ASN1_INTEGER_dup
(
X509_get_serialNumber
(
cert
));
if
(
!
isname
||
!
serial
)
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS
);
goto
err
;
}
}
if
(
!
(
akeyid
=
AUTHORITY_KEYID_new
()))
goto
err
;
if
(
isname
)
{
if
(
!
(
gens
=
sk_GENERAL_NAME_new_null
())
||
!
(
gen
=
GENERAL_NAME_new
())
||
!
sk_GENERAL_NAME_push
(
gens
,
gen
))
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
gen
->
type
=
GEN_DIRNAME
;
gen
->
d
.
dirn
=
isname
;
}
akeyid
->
issuer
=
gens
;
akeyid
->
serial
=
serial
;
akeyid
->
keyid
=
ikeyid
;
return
akeyid
;
err:
X509_NAME_free
(
isname
);
M_ASN1_INTEGER_free
(
serial
);
M_ASN1_OCTET_STRING_free
(
ikeyid
);
return
NULL
;
}
cert
=
ctx
->
issuer_cert
;
if
(
keyid
)
{
i
=
X509_get_ext_by_NID
(
cert
,
NID_subject_key_identifier
,
-
1
);
if
((
i
>=
0
)
&&
(
ext
=
X509_get_ext
(
cert
,
i
)))
ikeyid
=
X509V3_EXT_d2i
(
ext
);
if
(
keyid
==
2
&&
!
ikeyid
)
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_UNABLE_TO_GET_ISSUER_KEYID
);
return
NULL
;
}
}
if
((
issuer
&&
!
ikeyid
)
||
(
issuer
==
2
))
{
isname
=
X509_NAME_dup
(
X509_get_issuer_name
(
cert
));
serial
=
M_ASN1_INTEGER_dup
(
X509_get_serialNumber
(
cert
));
if
(
!
isname
||
!
serial
)
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
X509V3_R_UNABLE_TO_GET_ISSUER_DETAILS
);
goto
err
;
}
}
if
(
!
(
akeyid
=
AUTHORITY_KEYID_new
()))
goto
err
;
if
(
isname
)
{
if
(
!
(
gens
=
sk_GENERAL_NAME_new_null
())
||
!
(
gen
=
GENERAL_NAME_new
())
||
!
sk_GENERAL_NAME_push
(
gens
,
gen
))
{
X509V3err
(
X509V3_F_V2I_AUTHORITY_KEYID
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
gen
->
type
=
GEN_DIRNAME
;
gen
->
d
.
dirn
=
isname
;
}
akeyid
->
issuer
=
gens
;
akeyid
->
serial
=
serial
;
akeyid
->
keyid
=
ikeyid
;
return
akeyid
;
err:
X509_NAME_free
(
isname
);
M_ASN1_INTEGER_free
(
serial
);
M_ASN1_OCTET_STRING_free
(
ikeyid
);
return
NULL
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录