Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
c5f6da54
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看板
提交
c5f6da54
编写于
10月 06, 2012
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add SPARC T4 AES support.
Submitted by: David Miller
上级
f11d0c79
变更
6
展开全部
隐藏空白更改
内联
并排
Showing
6 changed file
with
2072 addition
and
41 deletion
+2072
-41
Configure
Configure
+1
-1
TABLE
TABLE
+13
-13
crypto/aes/Makefile
crypto/aes/Makefile
+2
-0
crypto/aes/asm/aest4-sparcv9.pl
crypto/aes/asm/aest4-sparcv9.pl
+1590
-0
crypto/evp/e_aes.c
crypto/evp/e_aes.c
+400
-27
test/test_t4
test/test_t4
+66
-0
未找到文件。
Configure
浏览文件 @
c5f6da54
...
...
@@ -130,7 +130,7 @@ my $x86_elf_asm="$x86_asm:elf";
my $x86_64_asm="x86_64cpuid.o:x86_64-gcc.o x86_64-mont.o x86_64-mont5.o x86_64-gf2m.o modexp512-x86_64.o::aes-x86_64.o vpaes-x86_64.o bsaes-x86_64.o aesni-x86_64.o aesni-sha1-x86_64.o::md5-x86_64.o:sha1-x86_64.o sha256-x86_64.o sha512-x86_64.o::rc4-x86_64.o rc4-md5-x86_64.o:::wp-x86_64.o:cmll-x86_64.o cmll_misc.o:ghash-x86_64.o:e_padlock-x86_64.o";
my $ia64_asm="ia64cpuid.o:bn-ia64.o ia64-mont.o::aes_core.o aes_cbc.o aes-ia64.o::md5-ia64.o:sha1-ia64.o sha256-ia64.o sha512-ia64.o::rc4-ia64.o rc4_skey.o:::::ghash-ia64.o::void";
my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o::md5-sparcv9.o:sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::::ghash-sparcv9.o::void";
my $sparcv9_asm="sparcv9cap.o sparccpuid.o:bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o:des_enc-sparc.o fcrypt_b.o:aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
::md5-sparcv9.o:sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o:::::::ghash-sparcv9.o::void";
my $sparcv8_asm=":sparcv8.o:des_enc-sparc.o fcrypt_b.o:::::::::::::void";
my $alpha_asm="alphacpuid.o:bn_asm.o alpha-mont.o:::::sha1-alpha.o:::::::ghash-alpha.o::void";
my $mips64_asm=":bn-mips.o mips-mont.o::aes_cbc.o aes-mips.o:::sha1-mips.o sha256-mips.o sha512-mips.o::::::::";
...
...
TABLE
浏览文件 @
c5f6da54
...
...
@@ -176,7 +176,7 @@ $bn_ops = BN_LLONG RC2_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC2 BF_PTR
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -2114,7 +2114,7 @@ $multilib =
*** debug-levitte-linux-elf
$cc = gcc
$cflags = -DLEVITTE_DEBUG -D
REF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
$cflags = -DLEVITTE_DEBUG -D
BN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -ggdb -g3 -Wall
$unistd =
$thread_cflag = -D_REENTRANT
$sys_id =
...
...
@@ -2147,7 +2147,7 @@ $multilib =
*** debug-levitte-linux-elf-extreme
$cc = gcc
$cflags = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D
_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486
-pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
$cflags = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DL_ENDIAN -DTERMIO -D
PEDANTIC -ggdb -g3
-pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
$unistd =
$thread_cflag = -D_REENTRANT
$sys_id =
...
...
@@ -2180,7 +2180,7 @@ $multilib =
*** debug-levitte-linux-noasm
$cc = gcc
$cflags = -DLEVITTE_DEBUG -D
REF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486 -pedantic -ansi -Wall -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
$cflags = -DLEVITTE_DEBUG -D
BN_DEBUG -DREF_CHECK -DCONF_DEBUG -DCRYPTO_MDEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -ggdb -g3 -Wall
$unistd =
$thread_cflag = -D_REENTRANT
$sys_id =
...
...
@@ -2213,7 +2213,7 @@ $multilib =
*** debug-levitte-linux-noasm-extreme
$cc = gcc
$cflags = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D
_POSIX_SOURCE -DPEDANTIC -ggdb -g3 -mcpu=i486
-pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
$cflags = -DLEVITTE_DEBUG -DREF_CHECK -DCONF_DEBUG -DBN_DEBUG -DBN_DEBUG_RAND -DCRYPTO_MDEBUG -DENGINE_CONF_DEBUG -DOPENSSL_NO_ASM -DL_ENDIAN -DTERMIO -D
PEDANTIC -ggdb -g3
-pedantic -ansi -Wall -W -Wundef -Wshadow -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wno-long-long -Wundef -Wconversion -pipe
$unistd =
$thread_cflag = -D_REENTRANT
$sys_id =
...
...
@@ -2618,7 +2618,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_P
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -2651,7 +2651,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -4400,7 +4400,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -4598,7 +4598,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -5456,7 +5456,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK_LL DES_PTR DES_RISC1 DES_UNROLL BF_P
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -5489,7 +5489,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_UNROLL BF_PTR
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -5588,7 +5588,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
@@ -5621,7 +5621,7 @@ $bn_ops = BN_LLONG RC4_CHAR RC4_CHUNK DES_INT DES_PTR DES_RISC1 DES_UNROLL
$cpuid_obj = sparcv9cap.o sparccpuid.o
$bn_obj = bn-sparcv9.o sparcv9-mont.o sparcv9a-mont.o
$des_obj = des_enc-sparc.o fcrypt_b.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
$aes_obj = aes_core.o aes_cbc.o aes-sparcv9.o
aest4-sparcv9.o
$bf_obj =
$md5_obj = md5-sparcv9.o
$sha1_obj = sha1-sparcv9.o sha256-sparcv9.o sha512-sparcv9.o
...
...
crypto/aes/Makefile
浏览文件 @
c5f6da54
...
...
@@ -68,6 +68,8 @@ aesni-sha1-x86_64.s: asm/aesni-sha1-x86_64.pl
aes-sparcv9.s
:
asm/aes-sparcv9.pl
$(PERL)
asm/aes-sparcv9.pl
$(CFLAGS)
>
$@
aest4-sparcv9.s
:
asm/aest4-sparcv9.pl
$(PERL)
asm/aest4-sparcv9.pl
$(CFLAGS)
>
$@
aes-ppc.s
:
asm/aes-ppc.pl
$(PERL)
asm/aes-ppc.pl
$(PERLASM_SCHEME)
$@
...
...
crypto/aes/asm/aest4-sparcv9.pl
0 → 100644
浏览文件 @
c5f6da54
此差异已折叠。
点击以展开。
crypto/evp/e_aes.c
浏览文件 @
c5f6da54
...
...
@@ -63,7 +63,7 @@
typedef
struct
{
AES_KEY
ks
;
union
{
double
align
;
AES_KEY
ks
;
}
ks
;
block128_f
block
;
union
{
cbc128_f
cbc
;
...
...
@@ -73,7 +73,7 @@ typedef struct
typedef
struct
{
AES_KEY
ks
;
/* AES key schedule to use */
union
{
double
align
;
AES_KEY
ks
;
}
ks
;
/* AES key schedule to use */
int
key_set
;
/* Set if key initialised */
int
iv_set
;
/* Set if an iv is set */
GCM128_CONTEXT
gcm
;
...
...
@@ -87,7 +87,7 @@ typedef struct
typedef
struct
{
AES_KEY
ks1
,
ks2
;
/* AES key schedules to use */
union
{
double
align
;
AES_KEY
ks
;
}
ks1
,
ks2
;
/* AES key schedules to use */
XTS128_CONTEXT
xts
;
void
(
*
stream
)(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
length
,
...
...
@@ -97,7 +97,7 @@ typedef struct
typedef
struct
{
AES_KEY
ks
;
/* AES key schedule to use */
union
{
double
align
;
AES_KEY
ks
;
}
ks
;
/* AES key schedule to use */
int
key_set
;
/* Set if key initialised */
int
iv_set
;
/* Set if an iv is set */
int
tag_set
;
/* Set if tag is valid */
...
...
@@ -161,7 +161,7 @@ void AES_xts_decrypt(const char *inp,char *out,size_t len,
defined(_M_AMD64) || defined(_M_X64) || \
defined(__INTEL__) )
extern
unsigned
int
OPENSSL_ia32cap_P
[
2
];
extern
unsigned
int
OPENSSL_ia32cap_P
[];
#ifdef VPAES_ASM
#define VPAES_CAPABLE (OPENSSL_ia32cap_P[1]&(1<<(41-32)))
...
...
@@ -311,7 +311,7 @@ static int aesni_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
return
1
;
if
(
key
)
{
aesni_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
);
aesni_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
.
ks
);
CRYPTO_gcm128_init
(
&
gctx
->
gcm
,
&
gctx
->
ks
,
(
block128_f
)
aesni_encrypt
);
gctx
->
ctr
=
(
ctr128_f
)
aesni_ctr32_encrypt_blocks
;
...
...
@@ -356,19 +356,19 @@ static int aesni_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
/* key_len is two AES keys */
if
(
enc
)
{
aesni_set_encrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
);
aesni_set_encrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
aesni_encrypt
;
xctx
->
stream
=
aesni_xts_encrypt
;
}
else
{
aesni_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
);
aesni_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
aesni_decrypt
;
xctx
->
stream
=
aesni_xts_decrypt
;
}
aesni_set_encrypt_key
(
key
+
ctx
->
key_len
/
2
,
ctx
->
key_len
*
4
,
&
xctx
->
ks2
);
ctx
->
key_len
*
4
,
&
xctx
->
ks2
.
ks
);
xctx
->
xts
.
block2
=
(
block128_f
)
aesni_encrypt
;
xctx
->
xts
.
key1
=
&
xctx
->
ks1
;
...
...
@@ -395,7 +395,7 @@ static int aesni_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
return
1
;
if
(
key
)
{
aesni_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
cctx
->
ks
);
aesni_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
cctx
->
ks
.
ks
);
CRYPTO_ccm128_init
(
&
cctx
->
ccm
,
cctx
->
M
,
cctx
->
L
,
&
cctx
->
ks
,
(
block128_f
)
aesni_encrypt
);
cctx
->
str
=
enc
?
(
ccm128_f
)
aesni_ccm64_encrypt_blocks
:
...
...
@@ -457,6 +457,379 @@ static const EVP_CIPHER aes_##keylen##_##mode = { \
const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \
{ return AESNI_CAPABLE?&aesni_##keylen##_##mode:&aes_##keylen##_##mode; }
#elif defined(AES_ASM) && (defined(__sparc) || defined(__sparc__))
#include "sparc_arch.h"
extern
unsigned
int
OPENSSL_sparcv9cap_P
[];
#define SPARC_AES_CAPABLE (OPENSSL_sparcv9cap_P[1] & CFR_AES)
void
aes_t4_set_encrypt_key
(
const
unsigned
char
*
key
,
int
bits
,
AES_KEY
*
ks
);
void
aes_t4_set_decrypt_key
(
const
unsigned
char
*
key
,
int
bits
,
AES_KEY
*
ks
);
void
aes_t4_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
const
AES_KEY
*
key
);
void
aes_t4_decrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
const
AES_KEY
*
key
);
/*
* Key-length specific subroutines were chosen for following reason.
* Each SPARC T4 core can execute up to 8 threads which share core's
* resources. Loading as much key material to registers allows to
* minimize references to shared memory interface, as well as amount
* of instructions in inner loops [much needed on T4]. But then having
* non-key-length specific routines would require conditional branches
* either in inner loops or on subroutines' entries. Former is hardly
* acceptable, while latter means code size increase to size occupied
* by multiple key-length specfic subroutines, so why fight?
*/
void
aes128_t4_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes128_t4_cbc_decrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes192_t4_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes192_t4_cbc_decrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes256_t4_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes256_t4_cbc_decrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes128_t4_ctr32_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
blocks
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes192_t4_ctr32_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
blocks
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
void
aes256_t4_ctr32_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
blocks
,
const
AES_KEY
*
key
,
unsigned
char
*
ivec
);
static
int
aes_t4_init_key
(
EVP_CIPHER_CTX
*
ctx
,
const
unsigned
char
*
key
,
const
unsigned
char
*
iv
,
int
enc
)
{
int
ret
,
mode
,
bits
;
EVP_AES_KEY
*
dat
=
(
EVP_AES_KEY
*
)
ctx
->
cipher_data
;
mode
=
ctx
->
cipher
->
flags
&
EVP_CIPH_MODE
;
bits
=
ctx
->
key_len
*
8
;
if
((
mode
==
EVP_CIPH_ECB_MODE
||
mode
==
EVP_CIPH_CBC_MODE
)
&&
!
enc
)
{
ret
=
0
;
aes_t4_set_decrypt_key
(
key
,
bits
,
ctx
->
cipher_data
);
dat
->
block
=
(
block128_f
)
aes_t4_decrypt
;
switch
(
bits
)
{
case
128
:
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
aes128_t4_cbc_decrypt
:
NULL
;
break
;
case
192
:
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
aes192_t4_cbc_decrypt
:
NULL
;
break
;
case
256
:
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
aes256_t4_cbc_decrypt
:
NULL
;
break
;
default:
ret
=
-
1
;
}
}
else
{
ret
=
0
;
aes_t4_set_encrypt_key
(
key
,
bits
,
ctx
->
cipher_data
);
dat
->
block
=
(
block128_f
)
aes_t4_encrypt
;
switch
(
bits
)
{
case
128
:
if
(
mode
==
EVP_CIPH_CBC_MODE
)
dat
->
stream
.
cbc
=
(
cbc128_f
)
aes128_t4_cbc_encrypt
;
else
if
(
mode
==
EVP_CIPH_CTR_MODE
)
dat
->
stream
.
ctr
=
(
ctr128_f
)
aes128_t4_ctr32_encrypt
;
else
dat
->
stream
.
cbc
=
NULL
;
break
;
case
192
:
if
(
mode
==
EVP_CIPH_CBC_MODE
)
dat
->
stream
.
cbc
=
(
cbc128_f
)
aes192_t4_cbc_encrypt
;
else
if
(
mode
==
EVP_CIPH_CTR_MODE
)
dat
->
stream
.
ctr
=
(
ctr128_f
)
aes192_t4_ctr32_encrypt
;
else
dat
->
stream
.
cbc
=
NULL
;
break
;
case
256
:
if
(
mode
==
EVP_CIPH_CBC_MODE
)
dat
->
stream
.
cbc
=
(
cbc128_f
)
aes256_t4_cbc_encrypt
;
else
if
(
mode
==
EVP_CIPH_CTR_MODE
)
dat
->
stream
.
ctr
=
(
ctr128_f
)
aes256_t4_ctr32_encrypt
;
else
dat
->
stream
.
cbc
=
NULL
;
break
;
default:
ret
=
-
1
;
}
}
if
(
ret
<
0
)
{
EVPerr
(
EVP_F_AES_INIT_KEY
,
EVP_R_AES_KEY_SETUP_FAILED
);
return
0
;
}
return
1
;
}
#define aes_t4_cbc_cipher aes_cbc_cipher
static
int
aes_t4_cbc_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define aes_t4_ecb_cipher aes_ecb_cipher
static
int
aes_t4_ecb_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define aes_t4_ofb_cipher aes_ofb_cipher
static
int
aes_t4_ofb_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define aes_t4_cfb_cipher aes_cfb_cipher
static
int
aes_t4_cfb_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define aes_t4_cfb8_cipher aes_cfb8_cipher
static
int
aes_t4_cfb8_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define aes_t4_cfb1_cipher aes_cfb1_cipher
static
int
aes_t4_cfb1_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define aes_t4_ctr_cipher aes_ctr_cipher
static
int
aes_t4_ctr_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
static
int
aes_t4_gcm_init_key
(
EVP_CIPHER_CTX
*
ctx
,
const
unsigned
char
*
key
,
const
unsigned
char
*
iv
,
int
enc
)
{
EVP_AES_GCM_CTX
*
gctx
=
ctx
->
cipher_data
;
if
(
!
iv
&&
!
key
)
return
1
;
if
(
key
)
{
int
bits
=
ctx
->
key_len
*
8
;
aes_t4_set_encrypt_key
(
key
,
bits
,
&
gctx
->
ks
.
ks
);
CRYPTO_gcm128_init
(
&
gctx
->
gcm
,
&
gctx
->
ks
,
(
block128_f
)
aes_t4_encrypt
);
switch
(
bits
)
{
case
128
:
gctx
->
ctr
=
(
ctr128_f
)
aes128_t4_ctr32_encrypt
;
break
;
case
192
:
gctx
->
ctr
=
(
ctr128_f
)
aes192_t4_ctr32_encrypt
;
break
;
case
256
:
gctx
->
ctr
=
(
ctr128_f
)
aes256_t4_ctr32_encrypt
;
break
;
default:
return
0
;
}
/* If we have an iv can set it directly, otherwise use
* saved IV.
*/
if
(
iv
==
NULL
&&
gctx
->
iv_set
)
iv
=
gctx
->
iv
;
if
(
iv
)
{
CRYPTO_gcm128_setiv
(
&
gctx
->
gcm
,
iv
,
gctx
->
ivlen
);
gctx
->
iv_set
=
1
;
}
gctx
->
key_set
=
1
;
}
else
{
/* If key set use IV, otherwise copy */
if
(
gctx
->
key_set
)
CRYPTO_gcm128_setiv
(
&
gctx
->
gcm
,
iv
,
gctx
->
ivlen
);
else
memcpy
(
gctx
->
iv
,
iv
,
gctx
->
ivlen
);
gctx
->
iv_set
=
1
;
gctx
->
iv_gen
=
0
;
}
return
1
;
}
#define aes_t4_gcm_cipher aes_gcm_cipher
static
int
aes_t4_gcm_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
static
int
aes_t4_xts_init_key
(
EVP_CIPHER_CTX
*
ctx
,
const
unsigned
char
*
key
,
const
unsigned
char
*
iv
,
int
enc
)
{
EVP_AES_XTS_CTX
*
xctx
=
ctx
->
cipher_data
;
if
(
!
iv
&&
!
key
)
return
1
;
if
(
key
)
{
int
bits
=
ctx
->
key_len
*
4
;
/* key_len is two AES keys */
if
(
enc
)
{
aes_t4_set_encrypt_key
(
key
,
bits
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
aes_t4_encrypt
;
#if 0 /* not yet */
switch (bits) {
case 128:
xctx->stream = aes128_t4_xts_encrypt;
break;
case 192:
xctx->stream = aes192_t4_xts_encrypt;
break;
case 256:
xctx->stream = aes256_t4_xts_encrypt;
break;
default:
return 0;
}
#endif
}
else
{
aes_t4_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
aes_t4_decrypt
;
#if 0 /* not yet */
switch (bits) {
case 128:
xctx->stream = aes128_t4_xts_decrypt;
break;
case 192:
xctx->stream = aes192_t4_xts_decrypt;
break;
case 256:
xctx->stream = aes256_t4_xts_decrypt;
break;
default:
return 0;
}
#endif
}
aes_t4_set_encrypt_key
(
key
+
ctx
->
key_len
/
2
,
ctx
->
key_len
*
4
,
&
xctx
->
ks2
.
ks
);
xctx
->
xts
.
block2
=
(
block128_f
)
aes_t4_encrypt
;
xctx
->
xts
.
key1
=
&
xctx
->
ks1
;
}
if
(
iv
)
{
xctx
->
xts
.
key2
=
&
xctx
->
ks2
;
memcpy
(
ctx
->
iv
,
iv
,
16
);
}
return
1
;
}
#define aes_t4_xts_cipher aes_xts_cipher
static
int
aes_t4_xts_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
static
int
aes_t4_ccm_init_key
(
EVP_CIPHER_CTX
*
ctx
,
const
unsigned
char
*
key
,
const
unsigned
char
*
iv
,
int
enc
)
{
EVP_AES_CCM_CTX
*
cctx
=
ctx
->
cipher_data
;
if
(
!
iv
&&
!
key
)
return
1
;
if
(
key
)
{
int
bits
=
ctx
->
key_len
*
8
;
aes_t4_set_encrypt_key
(
key
,
bits
,
&
cctx
->
ks
.
ks
);
CRYPTO_ccm128_init
(
&
cctx
->
ccm
,
cctx
->
M
,
cctx
->
L
,
&
cctx
->
ks
,
(
block128_f
)
aes_t4_encrypt
);
#if 0 /* not yet */
switch (bits) {
case 128:
cctx->str = enc?(ccm128_f)aes128_t4_ccm64_encrypt :
(ccm128_f)ae128_t4_ccm64_decrypt;
break;
case 192:
cctx->str = enc?(ccm128_f)aes192_t4_ccm64_encrypt :
(ccm128_f)ae192_t4_ccm64_decrypt;
break;
case 256:
cctx->str = enc?(ccm128_f)aes256_t4_ccm64_encrypt :
(ccm128_f)ae256_t4_ccm64_decrypt;
break;
default:
return 0;
}
#endif
cctx
->
key_set
=
1
;
}
if
(
iv
)
{
memcpy
(
ctx
->
iv
,
iv
,
15
-
cctx
->
L
);
cctx
->
iv_set
=
1
;
}
return
1
;
}
#define aes_t4_ccm_cipher aes_ccm_cipher
static
int
aes_t4_ccm_cipher
(
EVP_CIPHER_CTX
*
ctx
,
unsigned
char
*
out
,
const
unsigned
char
*
in
,
size_t
len
);
#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \
static const EVP_CIPHER aes_t4_##keylen##_##mode = { \
nid##_##keylen##_##nmode,blocksize,keylen/8,ivlen, \
flags|EVP_CIPH_##MODE##_MODE, \
aes_t4_init_key, \
aes_t4_##mode##_cipher, \
NULL, \
sizeof(EVP_AES_KEY), \
NULL,NULL,NULL,NULL }; \
static const EVP_CIPHER aes_##keylen##_##mode = { \
nid##_##keylen##_##nmode,blocksize, \
keylen/8,ivlen, \
flags|EVP_CIPH_##MODE##_MODE, \
aes_init_key, \
aes_##mode##_cipher, \
NULL, \
sizeof(EVP_AES_KEY), \
NULL,NULL,NULL,NULL }; \
const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \
{ return SPARC_AES_CAPABLE?&aes_t4_##keylen##_##mode:&aes_##keylen##_##mode; }
#define BLOCK_CIPHER_custom(nid,keylen,blocksize,ivlen,mode,MODE,flags) \
static const EVP_CIPHER aes_t4_##keylen##_##mode = { \
nid##_##keylen##_##mode,blocksize, \
(EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \
flags|EVP_CIPH_##MODE##_MODE, \
aes_t4_##mode##_init_key, \
aes_t4_##mode##_cipher, \
aes_##mode##_cleanup, \
sizeof(EVP_AES_##MODE##_CTX), \
NULL,NULL,aes_##mode##_ctrl,NULL }; \
static const EVP_CIPHER aes_##keylen##_##mode = { \
nid##_##keylen##_##mode,blocksize, \
(EVP_CIPH_##MODE##_MODE==EVP_CIPH_XTS_MODE?2:1)*keylen/8, ivlen, \
flags|EVP_CIPH_##MODE##_MODE, \
aes_##mode##_init_key, \
aes_##mode##_cipher, \
aes_##mode##_cleanup, \
sizeof(EVP_AES_##MODE##_CTX), \
NULL,NULL,aes_##mode##_ctrl,NULL }; \
const EVP_CIPHER *EVP_aes_##keylen##_##mode(void) \
{ return SPARC_AES_CAPABLE?&aes_t4_##keylen##_##mode:&aes_##keylen##_##mode; }
#else
#define BLOCK_CIPHER_generic(nid,keylen,blocksize,ivlen,nmode,mode,MODE,flags) \
...
...
@@ -506,7 +879,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef BSAES_CAPABLE
if
(
BSAES_CAPABLE
&&
mode
==
EVP_CIPH_CBC_MODE
)
{
ret
=
AES_set_decrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
);
ret
=
AES_set_decrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
.
ks
);
dat
->
block
=
(
block128_f
)
AES_decrypt
;
dat
->
stream
.
cbc
=
(
cbc128_f
)
bsaes_cbc_encrypt
;
}
...
...
@@ -515,7 +888,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef VPAES_CAPABLE
if
(
VPAES_CAPABLE
)
{
ret
=
vpaes_set_decrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
);
ret
=
vpaes_set_decrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
.
ks
);
dat
->
block
=
(
block128_f
)
vpaes_decrypt
;
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
vpaes_cbc_encrypt
:
...
...
@@ -524,7 +897,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
else
#endif
{
ret
=
AES_set_decrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
);
ret
=
AES_set_decrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
.
ks
);
dat
->
block
=
(
block128_f
)
AES_decrypt
;
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
AES_cbc_encrypt
:
...
...
@@ -534,7 +907,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef BSAES_CAPABLE
if
(
BSAES_CAPABLE
&&
mode
==
EVP_CIPH_CTR_MODE
)
{
ret
=
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
);
ret
=
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
.
ks
);
dat
->
block
=
(
block128_f
)
AES_encrypt
;
dat
->
stream
.
ctr
=
(
ctr128_f
)
bsaes_ctr32_encrypt_blocks
;
}
...
...
@@ -543,7 +916,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef VPAES_CAPABLE
if
(
VPAES_CAPABLE
)
{
ret
=
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
);
ret
=
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
.
ks
);
dat
->
block
=
(
block128_f
)
vpaes_encrypt
;
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
vpaes_cbc_encrypt
:
...
...
@@ -552,7 +925,7 @@ static int aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
else
#endif
{
ret
=
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
);
ret
=
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
dat
->
ks
.
ks
);
dat
->
block
=
(
block128_f
)
AES_encrypt
;
dat
->
stream
.
cbc
=
mode
==
EVP_CIPH_CBC_MODE
?
(
cbc128_f
)
AES_cbc_encrypt
:
...
...
@@ -826,7 +1199,7 @@ static int aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef BSAES_CAPABLE
if
(
BSAES_CAPABLE
)
{
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
);
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
.
ks
);
CRYPTO_gcm128_init
(
&
gctx
->
gcm
,
&
gctx
->
ks
,
(
block128_f
)
AES_encrypt
);
gctx
->
ctr
=
(
ctr128_f
)
bsaes_ctr32_encrypt_blocks
;
...
...
@@ -837,14 +1210,14 @@ static int aes_gcm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef VPAES_CAPABLE
if
(
VPAES_CAPABLE
)
{
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
);
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
.
ks
);
CRYPTO_gcm128_init
(
&
gctx
->
gcm
,
&
gctx
->
ks
,
(
block128_f
)
vpaes_encrypt
);
gctx
->
ctr
=
NULL
;
break
;
}
#endif
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
);
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
gctx
->
ks
.
ks
);
CRYPTO_gcm128_init
(
&
gctx
->
gcm
,
&
gctx
->
ks
,
(
block128_f
)
AES_encrypt
);
#ifdef AES_CTR_ASM
gctx
->
ctr
=
(
ctr128_f
)
AES_ctr32_encrypt
;
...
...
@@ -1075,17 +1448,17 @@ static int aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
{
if
(
enc
)
{
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
);
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
vpaes_encrypt
;
}
else
{
vpaes_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
);
vpaes_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
vpaes_decrypt
;
}
vpaes_set_encrypt_key
(
key
+
ctx
->
key_len
/
2
,
ctx
->
key_len
*
4
,
&
xctx
->
ks2
);
ctx
->
key_len
*
4
,
&
xctx
->
ks2
.
ks
);
xctx
->
xts
.
block2
=
(
block128_f
)
vpaes_encrypt
;
xctx
->
xts
.
key1
=
&
xctx
->
ks1
;
...
...
@@ -1094,17 +1467,17 @@ static int aes_xts_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#endif
if
(
enc
)
{
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
);
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
AES_encrypt
;
}
else
{
AES_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
);
AES_set_decrypt_key
(
key
,
ctx
->
key_len
*
4
,
&
xctx
->
ks1
.
ks
);
xctx
->
xts
.
block1
=
(
block128_f
)
AES_decrypt
;
}
AES_set_encrypt_key
(
key
+
ctx
->
key_len
/
2
,
ctx
->
key_len
*
4
,
&
xctx
->
ks2
);
ctx
->
key_len
*
4
,
&
xctx
->
ks2
.
ks
);
xctx
->
xts
.
block2
=
(
block128_f
)
AES_encrypt
;
xctx
->
xts
.
key1
=
&
xctx
->
ks1
;
...
...
@@ -1215,7 +1588,7 @@ static int aes_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
#ifdef VPAES_CAPABLE
if
(
VPAES_CAPABLE
)
{
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
cctx
->
ks
);
vpaes_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
cctx
->
ks
.
ks
);
CRYPTO_ccm128_init
(
&
cctx
->
ccm
,
cctx
->
M
,
cctx
->
L
,
&
cctx
->
ks
,
(
block128_f
)
vpaes_encrypt
);
cctx
->
str
=
NULL
;
...
...
@@ -1223,7 +1596,7 @@ static int aes_ccm_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
break
;
}
#endif
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
cctx
->
ks
);
AES_set_encrypt_key
(
key
,
ctx
->
key_len
*
8
,
&
cctx
->
ks
.
ks
);
CRYPTO_ccm128_init
(
&
cctx
->
ccm
,
cctx
->
M
,
cctx
->
L
,
&
cctx
->
ks
,
(
block128_f
)
AES_encrypt
);
cctx
->
str
=
NULL
;
...
...
test/test_t4
0 → 100755
浏览文件 @
c5f6da54
#!/bin/sh
PROG
=
$1
if
[
-x
$PROG
]
;
then
if
expr
"x
`
$PROG
version
`
"
:
"xOpenSSL"
>
/dev/null
;
then
:
else
echo
"
$PROG
is not OpenSSL executable"
exit
1
fi
else
echo
"
$PROG
is not executable"
exit
1
;
fi
if
[
1
]
;
then
HASH
=
`
cat
$PROG
|
$PROG
dgst
-hex
`
AES_ALGS
=
" aes-128-ctr aes-128-ecb aes-128-cbc aes-128-cfb aes-128-ofb
\
aes-192-ctr aes-192-ecb aes-192-cbc aes-192-cfb aes-192-ofb
\
aes-256-ctr aes-256-ecb aes-256-cbc aes-256-cfb aes-256-ofb"
BUFSIZE
=
"16 32 48 999"
nerr
=
0
for
alg
in
$AES_ALGS
;
do
echo
$alg
for
bufsize
in
$BUFSIZE
;
do
TEST
=
`
(
cat
$PROG
|
\
$PROG
enc
-e
-k
"
$HASH
"
-
$alg
-bufsize
$bufsize
|
\
env
OPENSSL_sparcv9cap
=
0
$PROG
enc
-d
-k
"
$HASH
"
-
$alg
|
\
$PROG
dgst
-hex
)
2>/dev/null
`
if
[
"
$TEST
"
!=
"
$HASH
"
]
;
then
echo
"-
$alg
/
$bufsize
encrypt test failed"
nerr
=
`
expr
$nerr
+ 1
`
fi
done
for
bufsize
in
$BUFSIZE
;
do
TEST
=
`
(
cat
$PROG
|
\
env
OPENSSL_sparcv9cap
=
0
$PROG
enc
-e
-k
"
$HASH
"
-
$alg
|
\
$PROG
enc
-d
-k
"
$HASH
"
-
$alg
-bufsize
$bufsize
|
\
$PROG
dgst
-hex
)
2>/dev/null
`
if
[
"
$TEST
"
!=
"
$HASH
"
]
;
then
echo
"-
$alg
/
$bufsize
decrypt test failed"
nerr
=
`
expr
$nerr
+ 1
`
fi
done
TEST
=
`
(
cat
$PROG
|
\
$PROG
enc
-e
-k
"
$HASH
"
-
$alg
|
\
$PROG
enc
-d
-k
"
$HASH
"
-
$alg
|
\
$PROG
dgst
-hex
)
2>/dev/null
`
if
[
"
$TEST
"
!=
"
$HASH
"
]
;
then
echo
"-
$alg
en/decrypt test failed"
nerr
=
`
expr
$nerr
+ 1
`
fi
done
if
[
$nerr
-gt
0
]
;
then
echo
"SPARC T4 test failed."
exit
1
fi
fi
exit
0
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录