Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
3d85668b
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3d85668b
编写于
7月 26, 2010
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
eng_aesni.c: switch to CRYPTO_ctr128_encrypt_ctr32.
上级
058d83cf
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
3 addition
and
48 deletion
+3
-48
crypto/engine/eng_aesni.c
crypto/engine/eng_aesni.c
+3
-48
未找到文件。
crypto/engine/eng_aesni.c
浏览文件 @
3d85668b
...
...
@@ -401,55 +401,10 @@ static int aesni_counter(EVP_CIPHER_CTX *ctx, unsigned char *out,
const
unsigned
char
*
in
,
size_t
len
)
{
AES_KEY
*
key
=
AESNI_ALIGN
(
ctx
->
cipher_data
);
u32
n
,
ctr32
;
n
=
ctx
->
num
;
while
(
n
&&
len
)
{
*
(
out
++
)
=
*
(
in
++
)
^
ctx
->
buf
[
n
];
--
len
;
n
=
(
n
+
1
)
%
16
;
}
ctr32
=
GETU32
(
ctx
->
iv
+
12
);
while
(
len
>=
16
)
{
size_t
blocks
=
len
/
16
;
/*
* 1<<24 is just a not-so-small yet not-so-large number...
*/
if
(
blocks
>
(
1U
<<
24
))
blocks
=
(
1U
<<
24
);
/*
* As aesni_ctr32 operates on 32-bit counter, caller
* has to handle overflow. 'if' below detects the
* overflow, which is then handled by limiting the
* amount of blocks to the exact overflow point...
*/
ctr32
+=
(
u32
)
blocks
;
if
(
ctr32
<
blocks
)
{
blocks
-=
ctr32
;
ctr32
=
0
;
}
aesni_ctr32_encrypt_blocks
(
in
,
out
,
blocks
,
key
,
ctx
->
iv
);
/* aesni_ctr32 does not update ctx->iv, caller does: */
PUTU32
(
ctx
->
iv
+
12
,
ctr32
);
/* ... overflow was detected, propogate carry. */
if
(
ctr32
==
0
)
ctr96_inc
(
ctx
->
iv
);
blocks
*=
16
;
len
-=
blocks
;
out
+=
blocks
;
in
+=
blocks
;
}
if
(
len
)
{
aesni_encrypt
(
ctx
->
iv
,
ctx
->
buf
,
key
);
++
ctr32
;
PUTU32
(
ctx
->
iv
+
12
,
ctr32
);
if
(
ctr32
==
0
)
ctr96_inc
(
ctx
->
iv
);
while
(
len
--
)
{
out
[
n
]
=
in
[
n
]
^
ctx
->
buf
[
n
];
++
n
;
}
}
ctx
->
num
=
n
;
CRYPTO_ctr128_encrypt_ctr32
(
in
,
out
,
len
,
key
,
ctx
->
iv
,
ctx
->
buf
,
&
ctx
->
num
,
aesni_ctr32_encrypt_blocks
);
return
1
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录