Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
f93a4187
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
12 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
f93a4187
编写于
2月 08, 2013
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
s3_cbc.c: make CBC_MAC_ROTATE_IN_PLACE universal.
上级
c98a4545
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
8 deletion
+9
-8
ssl/s3_cbc.c
ssl/s3_cbc.c
+9
-8
未找到文件。
ssl/s3_cbc.c
浏览文件 @
f93a4187
...
@@ -229,10 +229,6 @@ int tls1_cbc_remove_padding(const SSL* s,
...
@@ -229,10 +229,6 @@ int tls1_cbc_remove_padding(const SSL* s,
return
(
int
)((
good
&
1
)
|
(
~
good
&
-
1
));
return
(
int
)((
good
&
1
)
|
(
~
good
&
-
1
));
}
}
#if defined(_M_AMD64) || defined(__x86_64__)
#define CBC_MAC_ROTATE_IN_PLACE
#endif
/* ssl3_cbc_copy_mac copies |md_size| bytes from the end of |rec| to |out| in
/* ssl3_cbc_copy_mac copies |md_size| bytes from the end of |rec| to |out| in
* constant time (independent of the concrete value of rec->length, which may
* constant time (independent of the concrete value of rec->length, which may
* vary within a 256-byte window).
* vary within a 256-byte window).
...
@@ -246,15 +242,18 @@ int tls1_cbc_remove_padding(const SSL* s,
...
@@ -246,15 +242,18 @@ int tls1_cbc_remove_padding(const SSL* s,
*
*
* If CBC_MAC_ROTATE_IN_PLACE is defined then the rotation is performed with
* If CBC_MAC_ROTATE_IN_PLACE is defined then the rotation is performed with
* variable accesses in a 64-byte-aligned buffer. Assuming that this fits into
* variable accesses in a 64-byte-aligned buffer. Assuming that this fits into
* a single cache-line, then the variable memory accesses don't actually affect
* a single or pair of cache-lines, then the variable memory accesses don't
* the timing. This has been tested to be true on Intel amd64 chips.
* actually affect the timing. CPUs with smaller cache-lines [if any] are
* not multi-core and are not considered vulnerable to cache-timing attacks.
*/
*/
#define CBC_MAC_ROTATE_IN_PLACE
void
ssl3_cbc_copy_mac
(
unsigned
char
*
out
,
void
ssl3_cbc_copy_mac
(
unsigned
char
*
out
,
const
SSL3_RECORD
*
rec
,
const
SSL3_RECORD
*
rec
,
unsigned
md_size
)
unsigned
md_size
)
{
{
#if defined(CBC_MAC_ROTATE_IN_PLACE)
#if defined(CBC_MAC_ROTATE_IN_PLACE)
unsigned
char
rotated_mac_buf
[
EVP_MAX_MD_SIZE
*
2
];
unsigned
char
rotated_mac_buf
[
64
+
EVP_MAX_MD_SIZE
];
unsigned
char
*
rotated_mac
;
unsigned
char
*
rotated_mac
;
#else
#else
unsigned
char
rotated_mac
[
EVP_MAX_MD_SIZE
];
unsigned
char
rotated_mac
[
EVP_MAX_MD_SIZE
];
...
@@ -274,7 +273,7 @@ void ssl3_cbc_copy_mac(unsigned char* out,
...
@@ -274,7 +273,7 @@ void ssl3_cbc_copy_mac(unsigned char* out,
OPENSSL_assert
(
md_size
<=
EVP_MAX_MD_SIZE
);
OPENSSL_assert
(
md_size
<=
EVP_MAX_MD_SIZE
);
#if defined(CBC_MAC_ROTATE_IN_PLACE)
#if defined(CBC_MAC_ROTATE_IN_PLACE)
rotated_mac
=
(
unsigned
char
*
)
(((
intptr_t
)(
rotated_mac_buf
+
64
))
&
~
63
);
rotated_mac
=
rotated_mac_buf
+
((
0
-
(
size_t
)
rotated_mac_buf
)
&
63
);
#endif
#endif
/* This information is public so it's safe to branch based on it. */
/* This information is public so it's safe to branch based on it. */
...
@@ -306,6 +305,8 @@ void ssl3_cbc_copy_mac(unsigned char* out,
...
@@ -306,6 +305,8 @@ void ssl3_cbc_copy_mac(unsigned char* out,
j
=
0
;
j
=
0
;
for
(
i
=
0
;
i
<
md_size
;
i
++
)
for
(
i
=
0
;
i
<
md_size
;
i
++
)
{
{
/* in case cache-line is 32 bytes, touch second line */
((
volatile
unsigned
char
*
)
rotated_mac
)[
rotate_offset
^
32
];
out
[
j
++
]
=
rotated_mac
[
rotate_offset
++
];
out
[
j
++
]
=
rotated_mac
[
rotate_offset
++
];
rotate_offset
&=
constant_time_lt
(
rotate_offset
,
md_size
);
rotate_offset
&=
constant_time_lt
(
rotate_offset
,
md_size
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录