Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
4083a229
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看板
提交
4083a229
编写于
7月 10, 2004
作者:
R
Richard Levitte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use the new directory reading functions.
上级
a2400fca
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
18 addition
and
109 deletion
+18
-109
ssl/ssl_cert.c
ssl/ssl_cert.c
+18
-109
未找到文件。
ssl/ssl_cert.c
浏览文件 @
4083a229
...
...
@@ -116,19 +116,7 @@
# include <sys/types.h>
#endif
#if !defined(OPENSSL_SYS_WIN32) && !defined(OPENSSL_SYS_VMS) && !defined(NeXT) && !defined(MAC_OS_pre_X)
#include <dirent.h>
#endif
#if defined(WIN32)
#include <windows.h>
#endif
#ifdef NeXT
#include <sys/dir.h>
#define dirent direct
#endif
#include "o_dir.h"
#include <openssl/objects.h>
#include <openssl/bio.h>
#include <openssl/pem.h>
...
...
@@ -761,131 +749,52 @@ err:
* certs may have been added to \c stack.
*/
#ifndef OPENSSL_SYS_WIN32
#ifndef OPENSSL_SYS_VMS
/* XXXX This may be fixed in the future */
#ifndef OPENSSL_SYS_MACINTOSH_CLASSIC
/* XXXXX: Better scheme needed! */
int
SSL_add_dir_cert_subjects_to_stack
(
STACK_OF
(
X509_NAME
)
*
stack
,
const
char
*
dir
)
{
DIR
*
d
;
struct
dirent
*
dstruct
;
OPENSSL_DIR_CTX
*
d
=
NULL
;
const
char
*
filename
;
int
ret
=
0
;
CRYPTO_w_lock
(
CRYPTO_LOCK_READDIR
);
d
=
opendir
(
dir
);
/* Note that a side effect is that the CAs will be sorted by name */
if
(
!
d
)
{
SYSerr
(
SYS_F_OPENDIR
,
get_last_sys_error
());
ERR_add_error_data
(
3
,
"opendir('"
,
dir
,
"')"
);
SSLerr
(
SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK
,
ERR_R_SYS_LIB
);
goto
err
;
}
while
((
dstruct
=
readdir
(
d
)))
while
((
filename
=
OPENSSL_DIR_read
(
&
d
,
dir
)))
{
char
buf
[
1024
];
int
r
;
if
(
strlen
(
dir
)
+
strlen
(
dstruct
->
d_
name
)
+
2
>
sizeof
buf
)
if
(
strlen
(
dir
)
+
strlen
(
file
name
)
+
2
>
sizeof
buf
)
{
SSLerr
(
SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK
,
SSL_R_PATH_TOO_LONG
);
goto
err
;
}
r
=
BIO_snprintf
(
buf
,
sizeof
buf
,
"%s/%s"
,
dir
,
dstruct
->
d_name
);
#ifdef OPENSSL_SYS_VMS
r
=
BIO_snprintf
(
buf
,
sizeof
buf
,
"%s%s"
,
dir
,
filename
);
#else
r
=
BIO_snprintf
(
buf
,
sizeof
buf
,
"%s/%s"
,
dir
,
filename
);
#endif
if
(
r
<=
0
||
r
>=
(
int
)
sizeof
(
buf
))
goto
err
;
if
(
!
SSL_add_file_cert_subjects_to_stack
(
stack
,
buf
))
goto
err
;
}
ret
=
1
;
err:
if
(
d
)
closedir
(
d
);
CRYPTO_w_unlock
(
CRYPTO_LOCK_READDIR
);
return
ret
;
}
#endif
#endif
#else
/* OPENSSL_SYS_WIN32 */
int
SSL_add_dir_cert_subjects_to_stack
(
STACK_OF
(
X509_NAME
)
*
stack
,
const
char
*
dir
)
{
WIN32_FIND_DATA
FindFileData
;
HANDLE
hFind
;
int
ret
=
0
;
#ifdef OPENSSL_SYS_WINCE
WCHAR
*
wdir
=
NULL
;
#endif
CRYPTO_w_lock
(
CRYPTO_LOCK_READDIR
);
#ifdef OPENSSL_SYS_WINCE
/* convert strings to UNICODE */
{
BOOL
result
=
FALSE
;
int
i
;
wdir
=
malloc
((
strlen
(
dir
)
+
1
)
*
2
);
if
(
wdir
==
NULL
)
goto
err_noclose
;
for
(
i
=
0
;
i
<
(
int
)
strlen
(
dir
)
+
1
;
i
++
)
wdir
[
i
]
=
(
short
)
dir
[
i
];
}
#endif
#ifdef OPENSSL_SYS_WINCE
hFind
=
FindFirstFile
(
wdir
,
&
FindFileData
);
#else
hFind
=
FindFirstFile
(
dir
,
&
FindFileData
);
#endif
/* Note that a side effect is that the CAs will be sorted by name */
if
(
hFind
==
INVALID_HANDLE_VALUE
)
if
(
errno
)
{
SYSerr
(
SYS_F_OPENDIR
,
get_last_sys_error
());
ERR_add_error_data
(
3
,
"
opendir(
'"
,
dir
,
"')"
);
ERR_add_error_data
(
3
,
"
OPENSSL_DIR_read(&ctx,
'"
,
dir
,
"')"
);
SSLerr
(
SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK
,
ERR_R_SYS_LIB
);
goto
err_noclose
;
}
do
{
char
buf
[
1024
];
int
r
;
#ifdef OPENSSL_SYS_WINCE
if
(
strlen
(
dir
)
+
_tcslen
(
FindFileData
.
cFileName
)
+
2
>
sizeof
buf
)
#else
if
(
strlen
(
dir
)
+
strlen
(
FindFileData
.
cFileName
)
+
2
>
sizeof
buf
)
#endif
{
SSLerr
(
SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK
,
SSL_R_PATH_TOO_LONG
);
goto
err
;
}
r
=
BIO_snprintf
(
buf
,
sizeof
buf
,
"%s/%s"
,
dir
,
FindFileData
.
cFileName
);
if
(
r
<=
0
||
r
>=
sizeof
buf
)
goto
err
;
if
(
!
SSL_add_file_cert_subjects_to_stack
(
stack
,
buf
))
goto
err
;
goto
err
;
}
while
(
FindNextFile
(
hFind
,
&
FindFileData
)
!=
FALSE
);
ret
=
1
;
err:
FindClose
(
hFind
);
err_noclose:
#ifdef OPENSSL_SYS_WINCE
if
(
wdir
!=
NULL
)
free
(
wdir
);
#endif
if
(
d
)
OPENSSL_DIR_end
(
&
d
);
CRYPTO_w_unlock
(
CRYPTO_LOCK_READDIR
);
return
ret
;
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录