Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
85c67492
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
9
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看板
提交
85c67492
编写于
2月 16, 2007
作者:
R
Richard Levitte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add STARTTLS support for IMAP and FTP.
Submitted by Kees Cook <kees@outflux.net>
上级
30e5e8ac
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
45 addition
and
9 deletion
+45
-9
apps/s_client.c
apps/s_client.c
+44
-8
doc/apps/s_client.pod
doc/apps/s_client.pod
+1
-1
未找到文件。
apps/s_client.c
浏览文件 @
85c67492
...
...
@@ -316,7 +316,7 @@ static void sc_usage(void)
BIO_printf
(
bio_err
,
" -starttls prot - use the STARTTLS command before starting TLS
\n
"
);
BIO_printf
(
bio_err
,
" for those protocols that support it, where
\n
"
);
BIO_printf
(
bio_err
,
" 'prot' defines which one to assume. Currently,
\n
"
);
BIO_printf
(
bio_err
,
" only
\"
smtp
\"
and
\"
pop3
\"
are supported.
\n
"
);
BIO_printf
(
bio_err
,
" only
\"
smtp
\"
,
\"
pop3
\"
,
\"
imap
\"
, and
\"
ftp
\"
are supported.
\n
"
);
#ifndef OPENSSL_NO_ENGINE
BIO_printf
(
bio_err
,
" -engine id - Initialise and use the specified engine
\n
"
);
#endif
...
...
@@ -348,6 +348,15 @@ static int MS_CALLBACK ssl_servername_cb(SSL *s, int *ad, void *arg)
}
#endif
enum
{
PROTO_OFF
=
0
,
PROTO_SMTP
,
PROTO_POP3
,
PROTO_IMAP
,
PROTO_FTP
,
};
int
MAIN
(
int
,
char
**
);
int
MAIN
(
int
argc
,
char
**
argv
)
...
...
@@ -374,12 +383,13 @@ int MAIN(int argc, char **argv)
int
write_tty
,
read_tty
,
write_ssl
,
read_ssl
,
tty_on
,
ssl_pending
;
SSL_CTX
*
ctx
=
NULL
;
int
ret
=
1
,
in_init
=
1
,
i
,
nbio_test
=
0
;
int
starttls_proto
=
0
;
int
starttls_proto
=
PROTO_OFF
;
int
prexit
=
0
,
vflags
=
0
;
const
SSL_METHOD
*
meth
=
NULL
;
int
socket_type
=
SOCK_STREAM
;
BIO
*
sbio
;
char
*
inrand
=
NULL
;
int
mbuf_len
=
0
;
#ifndef OPENSSL_NO_ENGINE
char
*
engine_id
=
NULL
;
ENGINE
*
e
=
NULL
;
...
...
@@ -610,9 +620,13 @@ int MAIN(int argc, char **argv)
if
(
--
argc
<
1
)
goto
bad
;
++
argv
;
if
(
strcmp
(
*
argv
,
"smtp"
)
==
0
)
starttls_proto
=
1
;
starttls_proto
=
PROTO_SMTP
;
else
if
(
strcmp
(
*
argv
,
"pop3"
)
==
0
)
starttls_proto
=
2
;
starttls_proto
=
PROTO_POP3
;
else
if
(
strcmp
(
*
argv
,
"imap"
)
==
0
)
starttls_proto
=
PROTO_IMAP
;
else
if
(
strcmp
(
*
argv
,
"ftp"
)
==
0
)
starttls_proto
=
PROTO_FTP
;
else
goto
bad
;
}
...
...
@@ -898,18 +912,40 @@ re_start:
sbuf_off
=
0
;
/* This is an ugly hack that does a lot of assumptions */
if
(
starttls_proto
==
1
)
if
(
starttls_proto
==
PROTO_SMTP
)
{
BIO_read
(
sbio
,
mbuf
,
BUFSIZZ
);
/* wait for multi-line response to end from SMTP */
do
{
mbuf_len
=
BIO_read
(
sbio
,
mbuf
,
BUFSIZZ
);
}
while
(
mbuf_len
>
3
&&
mbuf
[
3
]
==
'-'
);
BIO_printf
(
sbio
,
"STARTTLS
\r\n
"
);
BIO_read
(
sbio
,
sbuf
,
BUFSIZZ
);
}
if
(
starttls_proto
==
2
)
else
if
(
starttls_proto
==
PROTO_POP3
)
{
BIO_read
(
sbio
,
mbuf
,
BUFSIZZ
);
BIO_printf
(
sbio
,
"STLS
\r\n
"
);
BIO_read
(
sbio
,
sbuf
,
BUFSIZZ
);
}
else
if
(
starttls_proto
==
PROTO_IMAP
)
{
BIO_read
(
sbio
,
mbuf
,
BUFSIZZ
);
BIO_printf
(
sbio
,
"0 STARTTLS
\r\n
"
);
BIO_read
(
sbio
,
sbuf
,
BUFSIZZ
);
}
else
if
(
starttls_proto
==
PROTO_FTP
)
{
/* wait for multi-line response to end from FTP */
do
{
mbuf_len
=
BIO_read
(
sbio
,
mbuf
,
BUFSIZZ
);
}
while
(
mbuf_len
>
3
&&
mbuf
[
3
]
==
'-'
);
BIO_printf
(
sbio
,
"AUTH TLS
\r\n
"
);
BIO_read
(
sbio
,
sbuf
,
BUFSIZZ
);
}
for
(;;)
{
...
...
@@ -940,7 +976,7 @@ re_start:
{
BIO_printf
(
bio_err
,
"%s"
,
mbuf
);
/* We don't need to know any more */
starttls_proto
=
0
;
starttls_proto
=
PROTO_OFF
;
}
if
(
reconnect
)
...
...
doc/apps/s_client.pod
浏览文件 @
85c67492
...
...
@@ -194,7 +194,7 @@ command for more information.
send the protocol-specific message(s) to switch to TLS for communication.
B<protocol> is a keyword for the intended protocol. Currently, the only
supported keywords are "smtp"
and "pop3
".
supported keywords are "smtp"
, "pop3", "imap", and "ftp
".
=item B<-engine id>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录