Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
com.ccwangluo.accelerator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sheteng
com.ccwangluo.accelerator
Commits
374893f5
Commit
374893f5
authored
Jun 24, 2013
by
Max Lv
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update openssl
parent
b84936e0
Changes
60
Show whitespace changes
Inline
Side-by-side
Showing
60 changed files
with
8182 additions
and
28 deletions
+8182
-28
project/Build.scala
project/Build.scala
+2
-2
src/main/assets/arm/shadowsocks
src/main/assets/arm/shadowsocks
+0
-0
src/main/assets/x86/shadowsocks
src/main/assets/x86/shadowsocks
+0
-0
src/main/jni/openssl/android-config.mk
src/main/jni/openssl/android-config.mk
+4
-4
src/main/jni/openssl/crypto/Android.mk
src/main/jni/openssl/crypto/Android.mk
+26
-0
src/main/jni/openssl/crypto/cast/Makefile
src/main/jni/openssl/crypto/cast/Makefile
+102
-0
src/main/jni/openssl/crypto/cast/asm/cast-586.pl
src/main/jni/openssl/crypto/cast/asm/cast-586.pl
+177
-0
src/main/jni/openssl/crypto/cast/asm/readme
src/main/jni/openssl/crypto/cast/asm/readme
+7
-0
src/main/jni/openssl/crypto/cast/c_cfb64.c
src/main/jni/openssl/crypto/cast/c_cfb64.c
+121
-0
src/main/jni/openssl/crypto/cast/c_ecb.c
src/main/jni/openssl/crypto/cast/c_ecb.c
+79
-0
src/main/jni/openssl/crypto/cast/c_enc.c
src/main/jni/openssl/crypto/cast/c_enc.c
+208
-0
src/main/jni/openssl/crypto/cast/c_ofb64.c
src/main/jni/openssl/crypto/cast/c_ofb64.c
+110
-0
src/main/jni/openssl/crypto/cast/c_skey.c
src/main/jni/openssl/crypto/cast/c_skey.c
+173
-0
src/main/jni/openssl/crypto/cast/cast.h
src/main/jni/openssl/crypto/cast/cast.h
+107
-0
src/main/jni/openssl/crypto/cast/cast_lcl.h
src/main/jni/openssl/crypto/cast/cast_lcl.h
+227
-0
src/main/jni/openssl/crypto/cast/cast_s.h
src/main/jni/openssl/crypto/cast/cast_s.h
+585
-0
src/main/jni/openssl/crypto/cast/cast_spd.c
src/main/jni/openssl/crypto/cast/cast_spd.c
+278
-0
src/main/jni/openssl/crypto/cast/castopts.c
src/main/jni/openssl/crypto/cast/castopts.c
+342
-0
src/main/jni/openssl/crypto/cast/casts.cpp
src/main/jni/openssl/crypto/cast/casts.cpp
+70
-0
src/main/jni/openssl/crypto/cast/casttest.c
src/main/jni/openssl/crypto/cast/casttest.c
+233
-0
src/main/jni/openssl/crypto/idea/Makefile
src/main/jni/openssl/crypto/idea/Makefile
+89
-0
src/main/jni/openssl/crypto/idea/i_cbc.c
src/main/jni/openssl/crypto/idea/i_cbc.c
+168
-0
src/main/jni/openssl/crypto/idea/i_cfb64.c
src/main/jni/openssl/crypto/idea/i_cfb64.c
+122
-0
src/main/jni/openssl/crypto/idea/i_ecb.c
src/main/jni/openssl/crypto/idea/i_ecb.c
+85
-0
src/main/jni/openssl/crypto/idea/i_ofb64.c
src/main/jni/openssl/crypto/idea/i_ofb64.c
+111
-0
src/main/jni/openssl/crypto/idea/i_skey.c
src/main/jni/openssl/crypto/idea/i_skey.c
+164
-0
src/main/jni/openssl/crypto/idea/idea.h
src/main/jni/openssl/crypto/idea/idea.h
+103
-0
src/main/jni/openssl/crypto/idea/idea_lcl.h
src/main/jni/openssl/crypto/idea/idea_lcl.h
+215
-0
src/main/jni/openssl/crypto/idea/idea_spd.c
src/main/jni/openssl/crypto/idea/idea_spd.c
+299
-0
src/main/jni/openssl/crypto/idea/ideatest.c
src/main/jni/openssl/crypto/idea/ideatest.c
+235
-0
src/main/jni/openssl/crypto/idea/version
src/main/jni/openssl/crypto/idea/version
+12
-0
src/main/jni/openssl/crypto/md2/Makefile
src/main/jni/openssl/crypto/md2/Makefile
+89
-0
src/main/jni/openssl/crypto/md2/md2.c
src/main/jni/openssl/crypto/md2/md2.c
+124
-0
src/main/jni/openssl/crypto/md2/md2.h
src/main/jni/openssl/crypto/md2/md2.h
+95
-0
src/main/jni/openssl/crypto/md2/md2_dgst.c
src/main/jni/openssl/crypto/md2/md2_dgst.c
+227
-0
src/main/jni/openssl/crypto/md2/md2_one.c
src/main/jni/openssl/crypto/md2/md2_one.c
+94
-0
src/main/jni/openssl/crypto/md2/md2test.c
src/main/jni/openssl/crypto/md2/md2test.c
+143
-0
src/main/jni/openssl/crypto/opensslconf.h
src/main/jni/openssl/crypto/opensslconf.h
+0
-12
src/main/jni/openssl/crypto/rc5/Makefile
src/main/jni/openssl/crypto/rc5/Makefile
+94
-0
src/main/jni/openssl/crypto/rc5/asm/rc5-586.pl
src/main/jni/openssl/crypto/rc5/asm/rc5-586.pl
+110
-0
src/main/jni/openssl/crypto/rc5/rc5.h
src/main/jni/openssl/crypto/rc5/rc5.h
+118
-0
src/main/jni/openssl/crypto/rc5/rc5_ecb.c
src/main/jni/openssl/crypto/rc5/rc5_ecb.c
+80
-0
src/main/jni/openssl/crypto/rc5/rc5_enc.c
src/main/jni/openssl/crypto/rc5/rc5_enc.c
+215
-0
src/main/jni/openssl/crypto/rc5/rc5_locl.h
src/main/jni/openssl/crypto/rc5/rc5_locl.h
+207
-0
src/main/jni/openssl/crypto/rc5/rc5_skey.c
src/main/jni/openssl/crypto/rc5/rc5_skey.c
+113
-0
src/main/jni/openssl/crypto/rc5/rc5cfb64.c
src/main/jni/openssl/crypto/rc5/rc5cfb64.c
+122
-0
src/main/jni/openssl/crypto/rc5/rc5ofb64.c
src/main/jni/openssl/crypto/rc5/rc5ofb64.c
+111
-0
src/main/jni/openssl/crypto/rc5/rc5s.cpp
src/main/jni/openssl/crypto/rc5/rc5s.cpp
+70
-0
src/main/jni/openssl/crypto/rc5/rc5speed.c
src/main/jni/openssl/crypto/rc5/rc5speed.c
+277
-0
src/main/jni/openssl/crypto/rc5/rc5test.c
src/main/jni/openssl/crypto/rc5/rc5test.c
+386
-0
src/main/jni/openssl/crypto/seed/Makefile
src/main/jni/openssl/crypto/seed/Makefile
+106
-0
src/main/jni/openssl/crypto/seed/seed.c
src/main/jni/openssl/crypto/seed/seed.c
+336
-0
src/main/jni/openssl/crypto/seed/seed.h
src/main/jni/openssl/crypto/seed/seed.h
+139
-0
src/main/jni/openssl/crypto/seed/seed_cbc.c
src/main/jni/openssl/crypto/seed/seed_cbc.c
+63
-0
src/main/jni/openssl/crypto/seed/seed_cfb.c
src/main/jni/openssl/crypto/seed/seed_cfb.c
+116
-0
src/main/jni/openssl/crypto/seed/seed_ecb.c
src/main/jni/openssl/crypto/seed/seed_ecb.c
+60
-0
src/main/jni/openssl/crypto/seed/seed_locl.h
src/main/jni/openssl/crypto/seed/seed_locl.h
+116
-0
src/main/jni/openssl/crypto/seed/seed_ofb.c
src/main/jni/openssl/crypto/seed/seed_ofb.c
+116
-0
src/main/jni/openssl/include/openssl/opensslconf.h
src/main/jni/openssl/include/openssl/opensslconf.h
+0
-9
src/main/jni/shadowsocks
src/main/jni/shadowsocks
+1
-1
No files found.
project/Build.scala
View file @
374893f5
...
...
@@ -5,8 +5,8 @@ import org.scalasbt.androidplugin._
import
org.scalasbt.androidplugin.AndroidKeys._
object
App
{
val
version
=
"1.
6.6
"
val
versionCode
=
3
6
val
version
=
"1.
7.0
"
val
versionCode
=
3
7
}
object
General
{
...
...
src/main/assets/arm/shadowsocks
View file @
374893f5
No preview for this file type
src/main/assets/x86/shadowsocks
View file @
374893f5
No preview for this file type
src/main/jni/openssl/android-config.mk
View file @
374893f5
...
...
@@ -5,14 +5,14 @@
#
# From CLFAG=
LOCAL_CFLAGS
+=
-DOPENSSL_THREADS
-D_REENTRANT
-DDSO_DLFCN
-DHAVE_DLFCN_H
-DL_ENDIAN
-O3
-fomit-frame-pointer
-Wall
#-DTERMIO
LOCAL_CFLAGS
+=
-DOPENSSL_THREADS
-D_REENTRANT
-DDSO_DLFCN
-DHAVE_DLFCN_H
-DL_ENDIAN
-O3
-f
no-strict-aliasing
-f
omit-frame-pointer
-Wall
#-DTERMIO
# From DEPFLAG=
LOCAL_CFLAGS
+=
-DOPENSSL_NO_EC_NISTP_64_GCC_128
-DOPENSSL_NO_SCTP
\
-DOPENSSL_NO_CA
MELLIA
-DOPENSSL_NO_CAPIENG
-DOPENSSL_NO_CAST
-DOPENSSL_NO_CMS
-DOPENSSL_NO_GMP
-DOPENSSL_NO_IDEA
-DOPENSSL_NO_JPAKE
-DOPENSSL_NO_MD2
-DOPENSSL_NO_MDC2
-DOPENSSL_NO_RC5
-DOPENSSL_NO_SHA0
-DOPENSSL_NO_RFC3779
-DOPENSSL_NO_SEED
-DOPENSSL_NO_STORE
-DOPENSSL_NO_WHIRLPOOL
-DOPENSSL_NO_CA
PIENG
-DOPENSSL_NO_CMS
-DOPENSSL_NO_GMP
-DOPENSSL_NO_JPAKE
-DOPENSSL_NO_MD2
-DOPENSSL_NO_MDC2
-DOPENSSL_NO_RC5
-DOPENSSL_NO_SHA0
-DOPENSSL_NO_RFC3779
-DOPENSSL_NO_STORE
-DOPENSSL_NO_WHIRLPOOL
#Copied by seaching for the OPENSSL_NO_
LOCAL_CFLAGS
+=
-DOPENSSL_NO_DEPRECATED
#
Copied by seaching for the OPENSSL_NO_
#
LOCAL_CFLAGS += -DOPENSSL_NO_DEPRECATED
# Extra
LOCAL_CFLAGS
+=
-DOPENSSL_NO_HW
-DOPENSSL_NO_ENGINE
-DZLIB
...
...
src/main/jni/openssl/crypto/Android.mk
View file @
374893f5
...
...
@@ -166,6 +166,19 @@ local_src_files := \
buffer/buf_err.c
\
buffer/buf_str.c
\
buffer/buffer.c
\
camellia/camellia.c
\
camellia/cmll_cbc.c
\
camellia/cmll_ctr.c
\
camellia/cmll_ofb.c
\
camellia/cmll_cfb.c
\
camellia/cmll_ecb.c
\
camellia/cmll_misc.c
\
camellia/cmll_utl.c
\
cast/c_cfb64.c
\
cast/c_ecb.c
\
cast/c_enc.c
\
cast/c_ofb64.c
\
cast/c_skey.c
\
cmac/cmac.c
\
cmac/cm_ameth.c
\
cmac/cm_pmeth.c
\
...
...
@@ -284,6 +297,7 @@ local_src_files := \
evp/digest.c
\
evp/e_aes.c
\
evp/e_bf.c
\
evp/e_camellia.c
\
evp/e_des.c
\
evp/e_des3.c
\
evp/e_null.c
\
...
...
@@ -336,6 +350,13 @@ local_src_files := \
hmac/hm_ameth.c
\
hmac/hm_pmeth.c
\
hmac/hmac.c
\
idea/i_cbc.c
\
idea/i_cfb64.c
\
idea/i_ecb.c
\
idea/i_ofb64.c
\
idea/i_skey.c
\
idea/idea_spd.c
\
idea/ideatest.c
\
krb5/krb5_asn.c
\
lhash/lh_stats.c
\
lhash/lhash.c
\
...
...
@@ -437,6 +458,11 @@ local_src_files := \
rsa/rsa_x931.c
\
rsa/rsa_depr.c
\
rsa/rsa_crpt.c
\
seed/seed.c
\
seed/seed_cbc.c
\
seed/seed_cfb.c
\
seed/seed_ecb.c
\
seed/seed_ofb.c
\
sha/sha1_one.c
\
sha/sha1dgst.c
\
sha/sha256.c
\
...
...
src/main/jni/openssl/crypto/cast/Makefile
0 → 100644
View file @
374893f5
#
# OpenSSL/crypto/cast/Makefile
#
DIR
=
cast
TOP
=
../..
CC
=
cc
CPP
=
$(CC)
-E
INCLUDES
=
CFLAG
=
-g
MAKEFILE
=
Makefile
AR
=
ar r
CAST_ENC
=
c_enc.o
CFLAGS
=
$(INCLUDES)
$(CFLAG)
ASFLAGS
=
$(INCLUDES)
$(ASFLAG)
AFLAGS
=
$(ASFLAGS)
GENERAL
=
Makefile
TEST
=
casttest.c
APPS
=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
c_skey.c c_ecb.c c_enc.c c_cfb64.c c_ofb64.c
LIBOBJ
=
c_skey.o c_ecb.o
$(CAST_ENC)
c_cfb64.o c_ofb64.o
SRC
=
$(LIBSRC)
EXHEADER
=
cast.h
HEADER
=
cast_s.h cast_lcl.h
$(EXHEADER)
ALL
=
$(GENERAL)
$(SRC)
$(HEADER)
top
:
(
cd
../..
;
$(MAKE)
DIRS
=
crypto
SDIRS
=
$(DIR)
sub_all
)
all
:
lib
lib
:
$(LIBOBJ)
$(AR)
$(LIB)
$(LIBOBJ)
$(RANLIB)
$(LIB)
||
echo
Never mind.
@
touch
lib
cast-586.s
:
asm/cast-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
$(PERL)
asm/cast-586.pl
$(PERLASM_SCHEME)
$(CLAGS)
$(PROCESSOR)
>
$@
files
:
$(PERL)
$(TOP)
/util/files.pl Makefile
>>
$(TOP)
/MINFO
links
:
@
$(PERL)
$(TOP)
/util/mklink.pl ../../include/openssl
$(EXHEADER)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../test
$(TEST)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../apps
$(APPS)
install
:
@
[
-n
"
$(INSTALLTOP)
"
]
# should be set by top Makefile...
@
headerlist
=
"
$(EXHEADER)
"
;
for
i
in
$$
headerlist
;
\
do
\
(
cp
$$
i
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
;
\
chmod
644
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
)
;
\
done
;
tags
:
ctags
$(SRC)
tests
:
lint
:
lint
-DLINT
$(INCLUDES)
$(SRC)
>
fluff
depend
:
@
[
-n
"
$(MAKEDEPEND)
"
]
# should be set by upper Makefile...
$(MAKEDEPEND)
--
$(CFLAG)
$(INCLUDES)
$(DEPFLAG)
--
$(PROGS)
$(LIBSRC)
dclean
:
$(PERL)
-pe
'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}'
$(MAKEFILE)
>
Makefile.new
mv
-f
Makefile.new
$(MAKEFILE)
clean
:
rm
-f
*
.s
*
.o
*
.obj lib tags core .pure .nfs
*
*
.old
*
.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
c_cfb64.o
:
../../e_os.h ../../include/openssl/cast.h
c_cfb64.o
:
../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
c_cfb64.o
:
c_cfb64.c cast_lcl.h
c_ecb.o
:
../../e_os.h ../../include/openssl/cast.h
c_ecb.o
:
../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
c_ecb.o
:
../../include/openssl/opensslv.h c_ecb.c cast_lcl.h
c_enc.o
:
../../e_os.h ../../include/openssl/cast.h
c_enc.o
:
../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
c_enc.o
:
c_enc.c cast_lcl.h
c_ofb64.o
:
../../e_os.h ../../include/openssl/cast.h
c_ofb64.o
:
../../include/openssl/e_os2.h ../../include/openssl/opensslconf.h
c_ofb64.o
:
c_ofb64.c cast_lcl.h
c_skey.o
:
../../e_os.h ../../include/openssl/cast.h
c_skey.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
c_skey.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
c_skey.o
:
../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
c_skey.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
c_skey.o
:
c_skey.c cast_lcl.h cast_s.h
src/main/jni/openssl/crypto/cast/asm/cast-586.pl
0 → 100644
View file @
374893f5
#!/usr/local/bin/perl
# define for pentium pro friendly version
$ppro
=
1
;
$0
=~
m/(.*[\/\\])[^\/\\]+$/
;
$dir
=
$1
;
push
(
@INC
,"
${dir}
","
${dir}
../../perlasm
");
require
"
x86asm.pl
";
require
"
cbc.pl
";
&
asm_init
(
$ARGV
[
0
],"
cast-586.pl
",
$ARGV
[
$#ARGV
]
eq
"
386
");
$CAST_ROUNDS
=
16
;
$L
=
"
edi
";
$R
=
"
esi
";
$K
=
"
ebp
";
$tmp1
=
"
ecx
";
$tmp2
=
"
ebx
";
$tmp3
=
"
eax
";
$tmp4
=
"
edx
";
$S1
=
"
CAST_S_table0
";
$S2
=
"
CAST_S_table1
";
$S3
=
"
CAST_S_table2
";
$S4
=
"
CAST_S_table3
";
@F1
=
("
add
","
xor
","
sub
");
@F2
=
("
xor
","
sub
","
add
");
@F3
=
("
sub
","
add
","
xor
");
&
CAST_encrypt
("
CAST_encrypt
",
1
);
&
CAST_encrypt
("
CAST_decrypt
",
0
);
&
cbc
("
CAST_cbc_encrypt
","
CAST_encrypt
","
CAST_decrypt
",
1
,
4
,
5
,
3
,
-
1
,
-
1
);
&
asm_finish
();
sub
CAST_encrypt
{
local
(
$name
,
$enc
)
=
@_
;
local
(
$win_ex
)
=
<<"EOF";
EXTERN _CAST_S_table0:DWORD
EXTERN _CAST_S_table1:DWORD
EXTERN _CAST_S_table2:DWORD
EXTERN _CAST_S_table3:DWORD
EOF
&
main::
external_label
(
"
CAST_S_table0
",
"
CAST_S_table1
",
"
CAST_S_table2
",
"
CAST_S_table3
",
);
&
function_begin_B
(
$name
,
$win_ex
);
&
comment
("");
&
push
("
ebp
");
&
push
("
ebx
");
&
mov
(
$tmp2
,
&
wparam
(
0
));
&
mov
(
$K
,
&
wparam
(
1
));
&
push
("
esi
");
&
push
("
edi
");
&
comment
("
Load the 2 words
");
&
mov
(
$L
,
&
DWP
(
0
,
$tmp2
,"",
0
));
&
mov
(
$R
,
&
DWP
(
4
,
$tmp2
,"",
0
));
&
comment
('
Get short key flag
');
&
mov
(
$tmp3
,
&
DWP
(
128
,
$K
,"",
0
));
if
(
$enc
)
{
&
push
(
$tmp3
);
}
else
{
&
or
(
$tmp3
,
$tmp3
);
&
jnz
(
&
label
('
cast_dec_skip
'));
}
&
xor
(
$tmp3
,
$tmp3
);
# encrypting part
if
(
$enc
)
{
&
E_CAST
(
0
,
$S
,
$L
,
$R
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
1
,
$S
,
$R
,
$L
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
2
,
$S
,
$L
,
$R
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
3
,
$S
,
$R
,
$L
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
4
,
$S
,
$L
,
$R
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
5
,
$S
,
$R
,
$L
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
6
,
$S
,
$L
,
$R
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
7
,
$S
,
$R
,
$L
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
8
,
$S
,
$L
,
$R
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
9
,
$S
,
$R
,
$L
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
10
,
$S
,
$L
,
$R
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
11
,
$S
,
$R
,
$L
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
comment
('
test short key flag
');
&
pop
(
$tmp4
);
&
or
(
$tmp4
,
$tmp4
);
&
jnz
(
&
label
('
cast_enc_done
'));
&
E_CAST
(
12
,
$S
,
$L
,
$R
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
13
,
$S
,
$R
,
$L
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
14
,
$S
,
$L
,
$R
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
15
,
$S
,
$R
,
$L
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
}
else
{
&
E_CAST
(
15
,
$S
,
$L
,
$R
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
14
,
$S
,
$R
,
$L
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
13
,
$S
,
$L
,
$R
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
12
,
$S
,
$R
,
$L
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
set_label
('
cast_dec_skip
');
&
E_CAST
(
11
,
$S
,
$L
,
$R
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
10
,
$S
,
$R
,
$L
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
9
,
$S
,
$L
,
$R
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
8
,
$S
,
$R
,
$L
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
7
,
$S
,
$L
,
$R
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
6
,
$S
,
$R
,
$L
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
5
,
$S
,
$L
,
$R
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
4
,
$S
,
$R
,
$L
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
3
,
$S
,
$L
,
$R
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
2
,
$S
,
$R
,
$L
,
$K
,
@F3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
1
,
$S
,
$L
,
$R
,
$K
,
@F2
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
&
E_CAST
(
0
,
$S
,
$R
,
$L
,
$K
,
@F1
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
);
}
&
set_label
('
cast_enc_done
')
if
$enc
;
# Why the nop? - Ben 17/1/99
&
nop
();
&
mov
(
$tmp3
,
&
wparam
(
0
));
&
mov
(
&
DWP
(
4
,
$tmp3
,"",
0
),
$L
);
&
mov
(
&
DWP
(
0
,
$tmp3
,"",
0
),
$R
);
&
function_end
(
$name
);
}
sub
E_CAST
{
local
(
$i
,
$S
,
$L
,
$R
,
$K
,
$OP1
,
$OP2
,
$OP3
,
$tmp1
,
$tmp2
,
$tmp3
,
$tmp4
)
=
@_
;
# Ri needs to have 16 pre added.
&
comment
("
round
$i
");
&
mov
(
$tmp4
,
&
DWP
(
$i
*
8
,
$K
,"",
1
));
&
mov
(
$tmp1
,
&
DWP
(
$i
*
8
+
4
,
$K
,"",
1
));
&
$OP1
(
$tmp4
,
$R
);
&
rotl
(
$tmp4
,
&
LB
(
$tmp1
));
if
(
$ppro
)
{
&
mov
(
$tmp2
,
$tmp4
);
# B
&
xor
(
$tmp1
,
$tmp1
);
&
movb
(
&
LB
(
$tmp1
),
&
HB
(
$tmp4
));
# A
&
and
(
$tmp2
,
0xff
);
&
shr
(
$tmp4
,
16
);
#
&
xor
(
$tmp3
,
$tmp3
);
}
else
{
&
mov
(
$tmp2
,
$tmp4
);
# B
&
movb
(
&
LB
(
$tmp1
),
&
HB
(
$tmp4
));
# A # BAD BAD BAD
&
shr
(
$tmp4
,
16
);
#
&
and
(
$tmp2
,
0xff
);
}
&
movb
(
&
LB
(
$tmp3
),
&
HB
(
$tmp4
));
# C # BAD BAD BAD
&
and
(
$tmp4
,
0xff
);
# D
&
mov
(
$tmp1
,
&
DWP
(
$S1
,"",
$tmp1
,
4
));
&
mov
(
$tmp2
,
&
DWP
(
$S2
,"",
$tmp2
,
4
));
&
$OP2
(
$tmp1
,
$tmp2
);
&
mov
(
$tmp2
,
&
DWP
(
$S3
,"",
$tmp3
,
4
));
&
$OP3
(
$tmp1
,
$tmp2
);
&
mov
(
$tmp2
,
&
DWP
(
$S4
,"",
$tmp4
,
4
));
&
$OP1
(
$tmp1
,
$tmp2
);
# XXX
&
xor
(
$L
,
$tmp1
);
# XXX
}
src/main/jni/openssl/crypto/cast/asm/readme
0 → 100644
View file @
374893f5
There is a ppro flag in cast-586 which turns on/off
generation of pentium pro/II friendly code
This flag makes the inner loop one cycle longer, but generates
code that runs %30 faster on the pentium pro/II, while only %7 slower
on the pentium. By default, this flag is on.
src/main/jni/openssl/crypto/cast/c_cfb64.c
0 → 100644
View file @
374893f5
/* crypto/cast/c_cfb64.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/cast.h>
#include "cast_lcl.h"
/* The input and output encrypted as though 64bit cfb mode is being
* used. The extra state information to record how much of the
* 64bit block we have used is contained in *num;
*/
void
CAST_cfb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
const
CAST_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
,
int
enc
)
{
register
CAST_LONG
v0
,
v1
,
t
;
register
int
n
=
*
num
;
register
long
l
=
length
;
CAST_LONG
ti
[
2
];
unsigned
char
*
iv
,
c
,
cc
;
iv
=
ivec
;
if
(
enc
)
{
while
(
l
--
)
{
if
(
n
==
0
)
{
n2l
(
iv
,
v0
);
ti
[
0
]
=
v0
;
n2l
(
iv
,
v1
);
ti
[
1
]
=
v1
;
CAST_encrypt
((
CAST_LONG
*
)
ti
,
schedule
);
iv
=
ivec
;
t
=
ti
[
0
];
l2n
(
t
,
iv
);
t
=
ti
[
1
];
l2n
(
t
,
iv
);
iv
=
ivec
;
}
c
=
*
(
in
++
)
^
iv
[
n
];
*
(
out
++
)
=
c
;
iv
[
n
]
=
c
;
n
=
(
n
+
1
)
&
0x07
;
}
}
else
{
while
(
l
--
)
{
if
(
n
==
0
)
{
n2l
(
iv
,
v0
);
ti
[
0
]
=
v0
;
n2l
(
iv
,
v1
);
ti
[
1
]
=
v1
;
CAST_encrypt
((
CAST_LONG
*
)
ti
,
schedule
);
iv
=
ivec
;
t
=
ti
[
0
];
l2n
(
t
,
iv
);
t
=
ti
[
1
];
l2n
(
t
,
iv
);
iv
=
ivec
;
}
cc
=
*
(
in
++
);
c
=
iv
[
n
];
iv
[
n
]
=
cc
;
*
(
out
++
)
=
c
^
cc
;
n
=
(
n
+
1
)
&
0x07
;
}
}
v0
=
v1
=
ti
[
0
]
=
ti
[
1
]
=
t
=
c
=
cc
=
0
;
*
num
=
n
;
}
src/main/jni/openssl/crypto/cast/c_ecb.c
0 → 100644
View file @
374893f5
/* crypto/cast/c_ecb.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/cast.h>
#include "cast_lcl.h"
#include <openssl/opensslv.h>
const
char
CAST_version
[]
=
"CAST"
OPENSSL_VERSION_PTEXT
;
void
CAST_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
const
CAST_KEY
*
ks
,
int
enc
)
{
CAST_LONG
l
,
d
[
2
];
n2l
(
in
,
l
);
d
[
0
]
=
l
;
n2l
(
in
,
l
);
d
[
1
]
=
l
;
if
(
enc
)
CAST_encrypt
(
d
,
ks
);
else
CAST_decrypt
(
d
,
ks
);
l
=
d
[
0
];
l2n
(
l
,
out
);
l
=
d
[
1
];
l2n
(
l
,
out
);
l
=
d
[
0
]
=
d
[
1
]
=
0
;
}
src/main/jni/openssl/crypto/cast/c_enc.c
0 → 100644
View file @
374893f5
/* crypto/cast/c_enc.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/cast.h>
#include "cast_lcl.h"
void
CAST_encrypt
(
CAST_LONG
*
data
,
const
CAST_KEY
*
key
)
{
register
CAST_LONG
l
,
r
,
t
;
const
register
CAST_LONG
*
k
;
k
=
&
(
key
->
data
[
0
]);
l
=
data
[
0
];
r
=
data
[
1
];
E_CAST
(
0
,
k
,
l
,
r
,
+
,
^
,
-
);
E_CAST
(
1
,
k
,
r
,
l
,
^
,
-
,
+
);
E_CAST
(
2
,
k
,
l
,
r
,
-
,
+
,
^
);
E_CAST
(
3
,
k
,
r
,
l
,
+
,
^
,
-
);
E_CAST
(
4
,
k
,
l
,
r
,
^
,
-
,
+
);
E_CAST
(
5
,
k
,
r
,
l
,
-
,
+
,
^
);
E_CAST
(
6
,
k
,
l
,
r
,
+
,
^
,
-
);
E_CAST
(
7
,
k
,
r
,
l
,
^
,
-
,
+
);
E_CAST
(
8
,
k
,
l
,
r
,
-
,
+
,
^
);
E_CAST
(
9
,
k
,
r
,
l
,
+
,
^
,
-
);
E_CAST
(
10
,
k
,
l
,
r
,
^
,
-
,
+
);
E_CAST
(
11
,
k
,
r
,
l
,
-
,
+
,
^
);
if
(
!
key
->
short_key
)
{
E_CAST
(
12
,
k
,
l
,
r
,
+
,
^
,
-
);
E_CAST
(
13
,
k
,
r
,
l
,
^
,
-
,
+
);
E_CAST
(
14
,
k
,
l
,
r
,
-
,
+
,
^
);
E_CAST
(
15
,
k
,
r
,
l
,
+
,
^
,
-
);
}
data
[
1
]
=
l
&
0xffffffffL
;
data
[
0
]
=
r
&
0xffffffffL
;
}
void
CAST_decrypt
(
CAST_LONG
*
data
,
const
CAST_KEY
*
key
)
{
register
CAST_LONG
l
,
r
,
t
;
const
register
CAST_LONG
*
k
;
k
=
&
(
key
->
data
[
0
]);
l
=
data
[
0
];
r
=
data
[
1
];
if
(
!
key
->
short_key
)
{
E_CAST
(
15
,
k
,
l
,
r
,
+
,
^
,
-
);
E_CAST
(
14
,
k
,
r
,
l
,
-
,
+
,
^
);
E_CAST
(
13
,
k
,
l
,
r
,
^
,
-
,
+
);
E_CAST
(
12
,
k
,
r
,
l
,
+
,
^
,
-
);
}
E_CAST
(
11
,
k
,
l
,
r
,
-
,
+
,
^
);
E_CAST
(
10
,
k
,
r
,
l
,
^
,
-
,
+
);
E_CAST
(
9
,
k
,
l
,
r
,
+
,
^
,
-
);
E_CAST
(
8
,
k
,
r
,
l
,
-
,
+
,
^
);
E_CAST
(
7
,
k
,
l
,
r
,
^
,
-
,
+
);
E_CAST
(
6
,
k
,
r
,
l
,
+
,
^
,
-
);
E_CAST
(
5
,
k
,
l
,
r
,
-
,
+
,
^
);
E_CAST
(
4
,
k
,
r
,
l
,
^
,
-
,
+
);
E_CAST
(
3
,
k
,
l
,
r
,
+
,
^
,
-
);
E_CAST
(
2
,
k
,
r
,
l
,
-
,
+
,
^
);
E_CAST
(
1
,
k
,
l
,
r
,
^
,
-
,
+
);
E_CAST
(
0
,
k
,
r
,
l
,
+
,
^
,
-
);
data
[
1
]
=
l
&
0xffffffffL
;
data
[
0
]
=
r
&
0xffffffffL
;
}
void
CAST_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
const
CAST_KEY
*
ks
,
unsigned
char
*
iv
,
int
enc
)
{
register
CAST_LONG
tin0
,
tin1
;
register
CAST_LONG
tout0
,
tout1
,
xor0
,
xor1
;
register
long
l
=
length
;
CAST_LONG
tin
[
2
];
if
(
enc
)
{
n2l
(
iv
,
tout0
);
n2l
(
iv
,
tout1
);
iv
-=
8
;
for
(
l
-=
8
;
l
>=
0
;
l
-=
8
)
{
n2l
(
in
,
tin0
);
n2l
(
in
,
tin1
);
tin0
^=
tout0
;
tin1
^=
tout1
;
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
CAST_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
];
tout1
=
tin
[
1
];
l2n
(
tout0
,
out
);
l2n
(
tout1
,
out
);
}
if
(
l
!=
-
8
)
{
n2ln
(
in
,
tin0
,
tin1
,
l
+
8
);
tin0
^=
tout0
;
tin1
^=
tout1
;
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
CAST_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
];
tout1
=
tin
[
1
];
l2n
(
tout0
,
out
);
l2n
(
tout1
,
out
);
}
l2n
(
tout0
,
iv
);
l2n
(
tout1
,
iv
);
}
else
{
n2l
(
iv
,
xor0
);
n2l
(
iv
,
xor1
);
iv
-=
8
;
for
(
l
-=
8
;
l
>=
0
;
l
-=
8
)
{
n2l
(
in
,
tin0
);
n2l
(
in
,
tin1
);
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
CAST_decrypt
(
tin
,
ks
);
tout0
=
tin
[
0
]
^
xor0
;
tout1
=
tin
[
1
]
^
xor1
;
l2n
(
tout0
,
out
);
l2n
(
tout1
,
out
);
xor0
=
tin0
;
xor1
=
tin1
;
}
if
(
l
!=
-
8
)
{
n2l
(
in
,
tin0
);
n2l
(
in
,
tin1
);
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
CAST_decrypt
(
tin
,
ks
);
tout0
=
tin
[
0
]
^
xor0
;
tout1
=
tin
[
1
]
^
xor1
;
l2nn
(
tout0
,
tout1
,
out
,
l
+
8
);
xor0
=
tin0
;
xor1
=
tin1
;
}
l2n
(
xor0
,
iv
);
l2n
(
xor1
,
iv
);
}
tin0
=
tin1
=
tout0
=
tout1
=
xor0
=
xor1
=
0
;
tin
[
0
]
=
tin
[
1
]
=
0
;
}
src/main/jni/openssl/crypto/cast/c_ofb64.c
0 → 100644
View file @
374893f5
/* crypto/cast/c_ofb64.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/cast.h>
#include "cast_lcl.h"
/* The input and output encrypted as though 64bit ofb mode is being
* used. The extra state information to record how much of the
* 64bit block we have used is contained in *num;
*/
void
CAST_ofb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
const
CAST_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
)
{
register
CAST_LONG
v0
,
v1
,
t
;
register
int
n
=
*
num
;
register
long
l
=
length
;
unsigned
char
d
[
8
];
register
char
*
dp
;
CAST_LONG
ti
[
2
];
unsigned
char
*
iv
;
int
save
=
0
;
iv
=
ivec
;
n2l
(
iv
,
v0
);
n2l
(
iv
,
v1
);
ti
[
0
]
=
v0
;
ti
[
1
]
=
v1
;
dp
=
(
char
*
)
d
;
l2n
(
v0
,
dp
);
l2n
(
v1
,
dp
);
while
(
l
--
)
{
if
(
n
==
0
)
{
CAST_encrypt
((
CAST_LONG
*
)
ti
,
schedule
);
dp
=
(
char
*
)
d
;
t
=
ti
[
0
];
l2n
(
t
,
dp
);
t
=
ti
[
1
];
l2n
(
t
,
dp
);
save
++
;
}
*
(
out
++
)
=
*
(
in
++
)
^
d
[
n
];
n
=
(
n
+
1
)
&
0x07
;
}
if
(
save
)
{
v0
=
ti
[
0
];
v1
=
ti
[
1
];
iv
=
ivec
;
l2n
(
v0
,
iv
);
l2n
(
v1
,
iv
);
}
t
=
v0
=
v1
=
ti
[
0
]
=
ti
[
1
]
=
0
;
*
num
=
n
;
}
src/main/jni/openssl/crypto/cast/c_skey.c
0 → 100644
View file @
374893f5
/* crypto/cast/c_skey.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/crypto.h>
#include <openssl/cast.h>
#include "cast_lcl.h"
#include "cast_s.h"
#define CAST_exp(l,A,a,n) \
A[n/4]=l; \
a[n+3]=(l )&0xff; \
a[n+2]=(l>> 8)&0xff; \
a[n+1]=(l>>16)&0xff; \
a[n+0]=(l>>24)&0xff;
#define S4 CAST_S_table4
#define S5 CAST_S_table5
#define S6 CAST_S_table6
#define S7 CAST_S_table7
void
CAST_set_key
(
CAST_KEY
*
key
,
int
len
,
const
unsigned
char
*
data
)
#ifdef OPENSSL_FIPS
{
fips_cipher_abort
(
CAST
);
private_CAST_set_key
(
key
,
len
,
data
);
}
void
private_CAST_set_key
(
CAST_KEY
*
key
,
int
len
,
const
unsigned
char
*
data
)
#endif
{
CAST_LONG
x
[
16
];
CAST_LONG
z
[
16
];
CAST_LONG
k
[
32
];
CAST_LONG
X
[
4
],
Z
[
4
];
CAST_LONG
l
,
*
K
;
int
i
;
for
(
i
=
0
;
i
<
16
;
i
++
)
x
[
i
]
=
0
;
if
(
len
>
16
)
len
=
16
;
for
(
i
=
0
;
i
<
len
;
i
++
)
x
[
i
]
=
data
[
i
];
if
(
len
<=
10
)
key
->
short_key
=
1
;
else
key
->
short_key
=
0
;
K
=
&
k
[
0
];
X
[
0
]
=
((
x
[
0
]
<<
24
)
|
(
x
[
1
]
<<
16
)
|
(
x
[
2
]
<<
8
)
|
x
[
3
])
&
0xffffffffL
;
X
[
1
]
=
((
x
[
4
]
<<
24
)
|
(
x
[
5
]
<<
16
)
|
(
x
[
6
]
<<
8
)
|
x
[
7
])
&
0xffffffffL
;
X
[
2
]
=
((
x
[
8
]
<<
24
)
|
(
x
[
9
]
<<
16
)
|
(
x
[
10
]
<<
8
)
|
x
[
11
])
&
0xffffffffL
;
X
[
3
]
=
((
x
[
12
]
<<
24
)
|
(
x
[
13
]
<<
16
)
|
(
x
[
14
]
<<
8
)
|
x
[
15
])
&
0xffffffffL
;
for
(;;)
{
l
=
X
[
0
]
^
S4
[
x
[
13
]]
^
S5
[
x
[
15
]]
^
S6
[
x
[
12
]]
^
S7
[
x
[
14
]]
^
S6
[
x
[
8
]];
CAST_exp
(
l
,
Z
,
z
,
0
);
l
=
X
[
2
]
^
S4
[
z
[
0
]]
^
S5
[
z
[
2
]]
^
S6
[
z
[
1
]]
^
S7
[
z
[
3
]]
^
S7
[
x
[
10
]];
CAST_exp
(
l
,
Z
,
z
,
4
);
l
=
X
[
3
]
^
S4
[
z
[
7
]]
^
S5
[
z
[
6
]]
^
S6
[
z
[
5
]]
^
S7
[
z
[
4
]]
^
S4
[
x
[
9
]];
CAST_exp
(
l
,
Z
,
z
,
8
);
l
=
X
[
1
]
^
S4
[
z
[
10
]]
^
S5
[
z
[
9
]]
^
S6
[
z
[
11
]]
^
S7
[
z
[
8
]]
^
S5
[
x
[
11
]];
CAST_exp
(
l
,
Z
,
z
,
12
);
K
[
0
]
=
S4
[
z
[
8
]]
^
S5
[
z
[
9
]]
^
S6
[
z
[
7
]]
^
S7
[
z
[
6
]]
^
S4
[
z
[
2
]];
K
[
1
]
=
S4
[
z
[
10
]]
^
S5
[
z
[
11
]]
^
S6
[
z
[
5
]]
^
S7
[
z
[
4
]]
^
S5
[
z
[
6
]];
K
[
2
]
=
S4
[
z
[
12
]]
^
S5
[
z
[
13
]]
^
S6
[
z
[
3
]]
^
S7
[
z
[
2
]]
^
S6
[
z
[
9
]];
K
[
3
]
=
S4
[
z
[
14
]]
^
S5
[
z
[
15
]]
^
S6
[
z
[
1
]]
^
S7
[
z
[
0
]]
^
S7
[
z
[
12
]];
l
=
Z
[
2
]
^
S4
[
z
[
5
]]
^
S5
[
z
[
7
]]
^
S6
[
z
[
4
]]
^
S7
[
z
[
6
]]
^
S6
[
z
[
0
]];
CAST_exp
(
l
,
X
,
x
,
0
);
l
=
Z
[
0
]
^
S4
[
x
[
0
]]
^
S5
[
x
[
2
]]
^
S6
[
x
[
1
]]
^
S7
[
x
[
3
]]
^
S7
[
z
[
2
]];
CAST_exp
(
l
,
X
,
x
,
4
);
l
=
Z
[
1
]
^
S4
[
x
[
7
]]
^
S5
[
x
[
6
]]
^
S6
[
x
[
5
]]
^
S7
[
x
[
4
]]
^
S4
[
z
[
1
]];
CAST_exp
(
l
,
X
,
x
,
8
);
l
=
Z
[
3
]
^
S4
[
x
[
10
]]
^
S5
[
x
[
9
]]
^
S6
[
x
[
11
]]
^
S7
[
x
[
8
]]
^
S5
[
z
[
3
]];
CAST_exp
(
l
,
X
,
x
,
12
);
K
[
4
]
=
S4
[
x
[
3
]]
^
S5
[
x
[
2
]]
^
S6
[
x
[
12
]]
^
S7
[
x
[
13
]]
^
S4
[
x
[
8
]];
K
[
5
]
=
S4
[
x
[
1
]]
^
S5
[
x
[
0
]]
^
S6
[
x
[
14
]]
^
S7
[
x
[
15
]]
^
S5
[
x
[
13
]];
K
[
6
]
=
S4
[
x
[
7
]]
^
S5
[
x
[
6
]]
^
S6
[
x
[
8
]]
^
S7
[
x
[
9
]]
^
S6
[
x
[
3
]];
K
[
7
]
=
S4
[
x
[
5
]]
^
S5
[
x
[
4
]]
^
S6
[
x
[
10
]]
^
S7
[
x
[
11
]]
^
S7
[
x
[
7
]];
l
=
X
[
0
]
^
S4
[
x
[
13
]]
^
S5
[
x
[
15
]]
^
S6
[
x
[
12
]]
^
S7
[
x
[
14
]]
^
S6
[
x
[
8
]];
CAST_exp
(
l
,
Z
,
z
,
0
);
l
=
X
[
2
]
^
S4
[
z
[
0
]]
^
S5
[
z
[
2
]]
^
S6
[
z
[
1
]]
^
S7
[
z
[
3
]]
^
S7
[
x
[
10
]];
CAST_exp
(
l
,
Z
,
z
,
4
);
l
=
X
[
3
]
^
S4
[
z
[
7
]]
^
S5
[
z
[
6
]]
^
S6
[
z
[
5
]]
^
S7
[
z
[
4
]]
^
S4
[
x
[
9
]];
CAST_exp
(
l
,
Z
,
z
,
8
);
l
=
X
[
1
]
^
S4
[
z
[
10
]]
^
S5
[
z
[
9
]]
^
S6
[
z
[
11
]]
^
S7
[
z
[
8
]]
^
S5
[
x
[
11
]];
CAST_exp
(
l
,
Z
,
z
,
12
);
K
[
8
]
=
S4
[
z
[
3
]]
^
S5
[
z
[
2
]]
^
S6
[
z
[
12
]]
^
S7
[
z
[
13
]]
^
S4
[
z
[
9
]];
K
[
9
]
=
S4
[
z
[
1
]]
^
S5
[
z
[
0
]]
^
S6
[
z
[
14
]]
^
S7
[
z
[
15
]]
^
S5
[
z
[
12
]];
K
[
10
]
=
S4
[
z
[
7
]]
^
S5
[
z
[
6
]]
^
S6
[
z
[
8
]]
^
S7
[
z
[
9
]]
^
S6
[
z
[
2
]];
K
[
11
]
=
S4
[
z
[
5
]]
^
S5
[
z
[
4
]]
^
S6
[
z
[
10
]]
^
S7
[
z
[
11
]]
^
S7
[
z
[
6
]];
l
=
Z
[
2
]
^
S4
[
z
[
5
]]
^
S5
[
z
[
7
]]
^
S6
[
z
[
4
]]
^
S7
[
z
[
6
]]
^
S6
[
z
[
0
]];
CAST_exp
(
l
,
X
,
x
,
0
);
l
=
Z
[
0
]
^
S4
[
x
[
0
]]
^
S5
[
x
[
2
]]
^
S6
[
x
[
1
]]
^
S7
[
x
[
3
]]
^
S7
[
z
[
2
]];
CAST_exp
(
l
,
X
,
x
,
4
);
l
=
Z
[
1
]
^
S4
[
x
[
7
]]
^
S5
[
x
[
6
]]
^
S6
[
x
[
5
]]
^
S7
[
x
[
4
]]
^
S4
[
z
[
1
]];
CAST_exp
(
l
,
X
,
x
,
8
);
l
=
Z
[
3
]
^
S4
[
x
[
10
]]
^
S5
[
x
[
9
]]
^
S6
[
x
[
11
]]
^
S7
[
x
[
8
]]
^
S5
[
z
[
3
]];
CAST_exp
(
l
,
X
,
x
,
12
);
K
[
12
]
=
S4
[
x
[
8
]]
^
S5
[
x
[
9
]]
^
S6
[
x
[
7
]]
^
S7
[
x
[
6
]]
^
S4
[
x
[
3
]];
K
[
13
]
=
S4
[
x
[
10
]]
^
S5
[
x
[
11
]]
^
S6
[
x
[
5
]]
^
S7
[
x
[
4
]]
^
S5
[
x
[
7
]];
K
[
14
]
=
S4
[
x
[
12
]]
^
S5
[
x
[
13
]]
^
S6
[
x
[
3
]]
^
S7
[
x
[
2
]]
^
S6
[
x
[
8
]];
K
[
15
]
=
S4
[
x
[
14
]]
^
S5
[
x
[
15
]]
^
S6
[
x
[
1
]]
^
S7
[
x
[
0
]]
^
S7
[
x
[
13
]];
if
(
K
!=
k
)
break
;
K
+=
16
;
}
for
(
i
=
0
;
i
<
16
;
i
++
)
{
key
->
data
[
i
*
2
]
=
k
[
i
];
key
->
data
[
i
*
2
+
1
]
=
((
k
[
i
+
16
])
+
16
)
&
0x1f
;
}
}
src/main/jni/openssl/crypto/cast/cast.h
0 → 100644
View file @
374893f5
/* crypto/cast/cast.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#ifndef HEADER_CAST_H
#define HEADER_CAST_H
#ifdef __cplusplus
extern
"C"
{
#endif
#include <openssl/opensslconf.h>
#ifdef OPENSSL_NO_CAST
#error CAST is disabled.
#endif
#define CAST_ENCRYPT 1
#define CAST_DECRYPT 0
#define CAST_LONG unsigned int
#define CAST_BLOCK 8
#define CAST_KEY_LENGTH 16
typedef
struct
cast_key_st
{
CAST_LONG
data
[
32
];
int
short_key
;
/* Use reduced rounds for short key */
}
CAST_KEY
;
#ifdef OPENSSL_FIPS
void
private_CAST_set_key
(
CAST_KEY
*
key
,
int
len
,
const
unsigned
char
*
data
);
#endif
void
CAST_set_key
(
CAST_KEY
*
key
,
int
len
,
const
unsigned
char
*
data
);
void
CAST_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
const
CAST_KEY
*
key
,
int
enc
);
void
CAST_encrypt
(
CAST_LONG
*
data
,
const
CAST_KEY
*
key
);
void
CAST_decrypt
(
CAST_LONG
*
data
,
const
CAST_KEY
*
key
);
void
CAST_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
const
CAST_KEY
*
ks
,
unsigned
char
*
iv
,
int
enc
);
void
CAST_cfb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
const
CAST_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
,
int
enc
);
void
CAST_ofb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
const
CAST_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
);
#ifdef __cplusplus
}
#endif
#endif
src/main/jni/openssl/crypto/cast/cast_lcl.h
0 → 100644
View file @
374893f5
/* crypto/cast/cast_lcl.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include "e_os.h"
#ifdef OPENSSL_SYS_WIN32
#include <stdlib.h>
#endif
#undef c2l
#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
l|=((unsigned long)(*((c)++)))<< 8L, \
l|=((unsigned long)(*((c)++)))<<16L, \
l|=((unsigned long)(*((c)++)))<<24L)
/* NOTE - c is not incremented as per c2l */
#undef c2ln
#define c2ln(c,l1,l2,n) { \
c+=n; \
l1=l2=0; \
switch (n) { \
case 8: l2 =((unsigned long)(*(--(c))))<<24L; \
case 7: l2|=((unsigned long)(*(--(c))))<<16L; \
case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \
case 5: l2|=((unsigned long)(*(--(c)))); \
case 4: l1 =((unsigned long)(*(--(c))))<<24L; \
case 3: l1|=((unsigned long)(*(--(c))))<<16L; \
case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \
case 1: l1|=((unsigned long)(*(--(c)))); \
} \
}
#undef l2c
#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
*((c)++)=(unsigned char)(((l)>>24L)&0xff))
/* NOTE - c is not incremented as per l2c */
#undef l2cn
#define l2cn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
} \
}
/* NOTE - c is not incremented as per n2l */
#define n2ln(c,l1,l2,n) { \
c+=n; \
l1=l2=0; \
switch (n) { \
case 8: l2 =((unsigned long)(*(--(c)))) ; \
case 7: l2|=((unsigned long)(*(--(c))))<< 8; \
case 6: l2|=((unsigned long)(*(--(c))))<<16; \
case 5: l2|=((unsigned long)(*(--(c))))<<24; \
case 4: l1 =((unsigned long)(*(--(c)))) ; \
case 3: l1|=((unsigned long)(*(--(c))))<< 8; \
case 2: l1|=((unsigned long)(*(--(c))))<<16; \
case 1: l1|=((unsigned long)(*(--(c))))<<24; \
} \
}
/* NOTE - c is not incremented as per l2n */
#define l2nn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
case 4: *(--(c))=(unsigned char)(((l1) )&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
} \
}
#undef n2l
#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \
l|=((unsigned long)(*((c)++)))<<16L, \
l|=((unsigned long)(*((c)++)))<< 8L, \
l|=((unsigned long)(*((c)++))))
#undef l2n
#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
*((c)++)=(unsigned char)(((l) )&0xff))
#if defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)
#define ROTL(a,n) (_lrotl(a,n))
#else
#define ROTL(a,n) ((((a)<<(n))&0xffffffffL)|((a)>>(32-(n))))
#endif
#define C_M 0x3fc
#define C_0 22L
#define C_1 14L
#define C_2 6L
#define C_3 2L
/* left shift */
/* The rotate has an extra 16 added to it to help the x86 asm */
#if defined(CAST_PTR)
#define E_CAST(n,key,L,R,OP1,OP2,OP3) \
{ \
int i; \
t=(key[n*2] OP1 R)&0xffffffffL; \
i=key[n*2+1]; \
t=ROTL(t,i); \
L^= (((((*(CAST_LONG *)((unsigned char *) \
CAST_S_table0+((t>>C_2)&C_M)) OP2 \
*(CAST_LONG *)((unsigned char *) \
CAST_S_table1+((t<<C_3)&C_M)))&0xffffffffL) OP3 \
*(CAST_LONG *)((unsigned char *) \
CAST_S_table2+((t>>C_0)&C_M)))&0xffffffffL) OP1 \
*(CAST_LONG *)((unsigned char *) \
CAST_S_table3+((t>>C_1)&C_M)))&0xffffffffL; \
}
#elif defined(CAST_PTR2)
#define E_CAST(n,key,L,R,OP1,OP2,OP3) \
{ \
int i; \
CAST_LONG u,v,w; \
w=(key[n*2] OP1 R)&0xffffffffL; \
i=key[n*2+1]; \
w=ROTL(w,i); \
u=w>>C_2; \
v=w<<C_3; \
u&=C_M; \
v&=C_M; \
t= *(CAST_LONG *)((unsigned char *)CAST_S_table0+u); \
u=w>>C_0; \
t=(t OP2 *(CAST_LONG *)((unsigned char *)CAST_S_table1+v))&0xffffffffL;\
v=w>>C_1; \
u&=C_M; \
v&=C_M; \
t=(t OP3 *(CAST_LONG *)((unsigned char *)CAST_S_table2+u)&0xffffffffL);\
t=(t OP1 *(CAST_LONG *)((unsigned char *)CAST_S_table3+v)&0xffffffffL);\
L^=(t&0xffffffff); \
}
#else
#define E_CAST(n,key,L,R,OP1,OP2,OP3) \
{ \
CAST_LONG a,b,c,d; \
t=(key[n*2] OP1 R)&0xffffffff; \
t=ROTL(t,(key[n*2+1])); \
a=CAST_S_table0[(t>> 8)&0xff]; \
b=CAST_S_table1[(t )&0xff]; \
c=CAST_S_table2[(t>>24)&0xff]; \
d=CAST_S_table3[(t>>16)&0xff]; \
L^=(((((a OP2 b)&0xffffffffL) OP3 c)&0xffffffffL) OP1 d)&0xffffffffL; \
}
#endif
extern
const
CAST_LONG
CAST_S_table0
[
256
];
extern
const
CAST_LONG
CAST_S_table1
[
256
];
extern
const
CAST_LONG
CAST_S_table2
[
256
];
extern
const
CAST_LONG
CAST_S_table3
[
256
];
extern
const
CAST_LONG
CAST_S_table4
[
256
];
extern
const
CAST_LONG
CAST_S_table5
[
256
];
extern
const
CAST_LONG
CAST_S_table6
[
256
];
extern
const
CAST_LONG
CAST_S_table7
[
256
];
src/main/jni/openssl/crypto/cast/cast_s.h
0 → 100644
View file @
374893f5
/* crypto/cast/cast_s.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table0
[
256
]
=
{
0x30fb40d4
,
0x9fa0ff0b
,
0x6beccd2f
,
0x3f258c7a
,
0x1e213f2f
,
0x9c004dd3
,
0x6003e540
,
0xcf9fc949
,
0xbfd4af27
,
0x88bbbdb5
,
0xe2034090
,
0x98d09675
,
0x6e63a0e0
,
0x15c361d2
,
0xc2e7661d
,
0x22d4ff8e
,
0x28683b6f
,
0xc07fd059
,
0xff2379c8
,
0x775f50e2
,
0x43c340d3
,
0xdf2f8656
,
0x887ca41a
,
0xa2d2bd2d
,
0xa1c9e0d6
,
0x346c4819
,
0x61b76d87
,
0x22540f2f
,
0x2abe32e1
,
0xaa54166b
,
0x22568e3a
,
0xa2d341d0
,
0x66db40c8
,
0xa784392f
,
0x004dff2f
,
0x2db9d2de
,
0x97943fac
,
0x4a97c1d8
,
0x527644b7
,
0xb5f437a7
,
0xb82cbaef
,
0xd751d159
,
0x6ff7f0ed
,
0x5a097a1f
,
0x827b68d0
,
0x90ecf52e
,
0x22b0c054
,
0xbc8e5935
,
0x4b6d2f7f
,
0x50bb64a2
,
0xd2664910
,
0xbee5812d
,
0xb7332290
,
0xe93b159f
,
0xb48ee411
,
0x4bff345d
,
0xfd45c240
,
0xad31973f
,
0xc4f6d02e
,
0x55fc8165
,
0xd5b1caad
,
0xa1ac2dae
,
0xa2d4b76d
,
0xc19b0c50
,
0x882240f2
,
0x0c6e4f38
,
0xa4e4bfd7
,
0x4f5ba272
,
0x564c1d2f
,
0xc59c5319
,
0xb949e354
,
0xb04669fe
,
0xb1b6ab8a
,
0xc71358dd
,
0x6385c545
,
0x110f935d
,
0x57538ad5
,
0x6a390493
,
0xe63d37e0
,
0x2a54f6b3
,
0x3a787d5f
,
0x6276a0b5
,
0x19a6fcdf
,
0x7a42206a
,
0x29f9d4d5
,
0xf61b1891
,
0xbb72275e
,
0xaa508167
,
0x38901091
,
0xc6b505eb
,
0x84c7cb8c
,
0x2ad75a0f
,
0x874a1427
,
0xa2d1936b
,
0x2ad286af
,
0xaa56d291
,
0xd7894360
,
0x425c750d
,
0x93b39e26
,
0x187184c9
,
0x6c00b32d
,
0x73e2bb14
,
0xa0bebc3c
,
0x54623779
,
0x64459eab
,
0x3f328b82
,
0x7718cf82
,
0x59a2cea6
,
0x04ee002e
,
0x89fe78e6
,
0x3fab0950
,
0x325ff6c2
,
0x81383f05
,
0x6963c5c8
,
0x76cb5ad6
,
0xd49974c9
,
0xca180dcf
,
0x380782d5
,
0xc7fa5cf6
,
0x8ac31511
,
0x35e79e13
,
0x47da91d0
,
0xf40f9086
,
0xa7e2419e
,
0x31366241
,
0x051ef495
,
0xaa573b04
,
0x4a805d8d
,
0x548300d0
,
0x00322a3c
,
0xbf64cddf
,
0xba57a68e
,
0x75c6372b
,
0x50afd341
,
0xa7c13275
,
0x915a0bf5
,
0x6b54bfab
,
0x2b0b1426
,
0xab4cc9d7
,
0x449ccd82
,
0xf7fbf265
,
0xab85c5f3
,
0x1b55db94
,
0xaad4e324
,
0xcfa4bd3f
,
0x2deaa3e2
,
0x9e204d02
,
0xc8bd25ac
,
0xeadf55b3
,
0xd5bd9e98
,
0xe31231b2
,
0x2ad5ad6c
,
0x954329de
,
0xadbe4528
,
0xd8710f69
,
0xaa51c90f
,
0xaa786bf6
,
0x22513f1e
,
0xaa51a79b
,
0x2ad344cc
,
0x7b5a41f0
,
0xd37cfbad
,
0x1b069505
,
0x41ece491
,
0xb4c332e6
,
0x032268d4
,
0xc9600acc
,
0xce387e6d
,
0xbf6bb16c
,
0x6a70fb78
,
0x0d03d9c9
,
0xd4df39de
,
0xe01063da
,
0x4736f464
,
0x5ad328d8
,
0xb347cc96
,
0x75bb0fc3
,
0x98511bfb
,
0x4ffbcc35
,
0xb58bcf6a
,
0xe11f0abc
,
0xbfc5fe4a
,
0xa70aec10
,
0xac39570a
,
0x3f04442f
,
0x6188b153
,
0xe0397a2e
,
0x5727cb79
,
0x9ceb418f
,
0x1cacd68d
,
0x2ad37c96
,
0x0175cb9d
,
0xc69dff09
,
0xc75b65f0
,
0xd9db40d8
,
0xec0e7779
,
0x4744ead4
,
0xb11c3274
,
0xdd24cb9e
,
0x7e1c54bd
,
0xf01144f9
,
0xd2240eb1
,
0x9675b3fd
,
0xa3ac3755
,
0xd47c27af
,
0x51c85f4d
,
0x56907596
,
0xa5bb15e6
,
0x580304f0
,
0xca042cf1
,
0x011a37ea
,
0x8dbfaadb
,
0x35ba3e4a
,
0x3526ffa0
,
0xc37b4d09
,
0xbc306ed9
,
0x98a52666
,
0x5648f725
,
0xff5e569d
,
0x0ced63d0
,
0x7c63b2cf
,
0x700b45e1
,
0xd5ea50f1
,
0x85a92872
,
0xaf1fbda7
,
0xd4234870
,
0xa7870bf3
,
0x2d3b4d79
,
0x42e04198
,
0x0cd0ede7
,
0x26470db8
,
0xf881814c
,
0x474d6ad7
,
0x7c0c5e5c
,
0xd1231959
,
0x381b7298
,
0xf5d2f4db
,
0xab838653
,
0x6e2f1e23
,
0x83719c9e
,
0xbd91e046
,
0x9a56456e
,
0xdc39200c
,
0x20c8c571
,
0x962bda1c
,
0xe1e696ff
,
0xb141ab08
,
0x7cca89b9
,
0x1a69e783
,
0x02cc4843
,
0xa2f7c579
,
0x429ef47d
,
0x427b169c
,
0x5ac9f049
,
0xdd8f0f00
,
0x5c8165bf
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table1
[
256
]
=
{
0x1f201094
,
0xef0ba75b
,
0x69e3cf7e
,
0x393f4380
,
0xfe61cf7a
,
0xeec5207a
,
0x55889c94
,
0x72fc0651
,
0xada7ef79
,
0x4e1d7235
,
0xd55a63ce
,
0xde0436ba
,
0x99c430ef
,
0x5f0c0794
,
0x18dcdb7d
,
0xa1d6eff3
,
0xa0b52f7b
,
0x59e83605
,
0xee15b094
,
0xe9ffd909
,
0xdc440086
,
0xef944459
,
0xba83ccb3
,
0xe0c3cdfb
,
0xd1da4181
,
0x3b092ab1
,
0xf997f1c1
,
0xa5e6cf7b
,
0x01420ddb
,
0xe4e7ef5b
,
0x25a1ff41
,
0xe180f806
,
0x1fc41080
,
0x179bee7a
,
0xd37ac6a9
,
0xfe5830a4
,
0x98de8b7f
,
0x77e83f4e
,
0x79929269
,
0x24fa9f7b
,
0xe113c85b
,
0xacc40083
,
0xd7503525
,
0xf7ea615f
,
0x62143154
,
0x0d554b63
,
0x5d681121
,
0xc866c359
,
0x3d63cf73
,
0xcee234c0
,
0xd4d87e87
,
0x5c672b21
,
0x071f6181
,
0x39f7627f
,
0x361e3084
,
0xe4eb573b
,
0x602f64a4
,
0xd63acd9c
,
0x1bbc4635
,
0x9e81032d
,
0x2701f50c
,
0x99847ab4
,
0xa0e3df79
,
0xba6cf38c
,
0x10843094
,
0x2537a95e
,
0xf46f6ffe
,
0xa1ff3b1f
,
0x208cfb6a
,
0x8f458c74
,
0xd9e0a227
,
0x4ec73a34
,
0xfc884f69
,
0x3e4de8df
,
0xef0e0088
,
0x3559648d
,
0x8a45388c
,
0x1d804366
,
0x721d9bfd
,
0xa58684bb
,
0xe8256333
,
0x844e8212
,
0x128d8098
,
0xfed33fb4
,
0xce280ae1
,
0x27e19ba5
,
0xd5a6c252
,
0xe49754bd
,
0xc5d655dd
,
0xeb667064
,
0x77840b4d
,
0xa1b6a801
,
0x84db26a9
,
0xe0b56714
,
0x21f043b7
,
0xe5d05860
,
0x54f03084
,
0x066ff472
,
0xa31aa153
,
0xdadc4755
,
0xb5625dbf
,
0x68561be6
,
0x83ca6b94
,
0x2d6ed23b
,
0xeccf01db
,
0xa6d3d0ba
,
0xb6803d5c
,
0xaf77a709
,
0x33b4a34c
,
0x397bc8d6
,
0x5ee22b95
,
0x5f0e5304
,
0x81ed6f61
,
0x20e74364
,
0xb45e1378
,
0xde18639b
,
0x881ca122
,
0xb96726d1
,
0x8049a7e8
,
0x22b7da7b
,
0x5e552d25
,
0x5272d237
,
0x79d2951c
,
0xc60d894c
,
0x488cb402
,
0x1ba4fe5b
,
0xa4b09f6b
,
0x1ca815cf
,
0xa20c3005
,
0x8871df63
,
0xb9de2fcb
,
0x0cc6c9e9
,
0x0beeff53
,
0xe3214517
,
0xb4542835
,
0x9f63293c
,
0xee41e729
,
0x6e1d2d7c
,
0x50045286
,
0x1e6685f3
,
0xf33401c6
,
0x30a22c95
,
0x31a70850
,
0x60930f13
,
0x73f98417
,
0xa1269859
,
0xec645c44
,
0x52c877a9
,
0xcdff33a6
,
0xa02b1741
,
0x7cbad9a2
,
0x2180036f
,
0x50d99c08
,
0xcb3f4861
,
0xc26bd765
,
0x64a3f6ab
,
0x80342676
,
0x25a75e7b
,
0xe4e6d1fc
,
0x20c710e6
,
0xcdf0b680
,
0x17844d3b
,
0x31eef84d
,
0x7e0824e4
,
0x2ccb49eb
,
0x846a3bae
,
0x8ff77888
,
0xee5d60f6
,
0x7af75673
,
0x2fdd5cdb
,
0xa11631c1
,
0x30f66f43
,
0xb3faec54
,
0x157fd7fa
,
0xef8579cc
,
0xd152de58
,
0xdb2ffd5e
,
0x8f32ce19
,
0x306af97a
,
0x02f03ef8
,
0x99319ad5
,
0xc242fa0f
,
0xa7e3ebb0
,
0xc68e4906
,
0xb8da230c
,
0x80823028
,
0xdcdef3c8
,
0xd35fb171
,
0x088a1bc8
,
0xbec0c560
,
0x61a3c9e8
,
0xbca8f54d
,
0xc72feffa
,
0x22822e99
,
0x82c570b4
,
0xd8d94e89
,
0x8b1c34bc
,
0x301e16e6
,
0x273be979
,
0xb0ffeaa6
,
0x61d9b8c6
,
0x00b24869
,
0xb7ffce3f
,
0x08dc283b
,
0x43daf65a
,
0xf7e19798
,
0x7619b72f
,
0x8f1c9ba4
,
0xdc8637a0
,
0x16a7d3b1
,
0x9fc393b7
,
0xa7136eeb
,
0xc6bcc63e
,
0x1a513742
,
0xef6828bc
,
0x520365d6
,
0x2d6a77ab
,
0x3527ed4b
,
0x821fd216
,
0x095c6e2e
,
0xdb92f2fb
,
0x5eea29cb
,
0x145892f5
,
0x91584f7f
,
0x5483697b
,
0x2667a8cc
,
0x85196048
,
0x8c4bacea
,
0x833860d4
,
0x0d23e0f9
,
0x6c387e8a
,
0x0ae6d249
,
0xb284600c
,
0xd835731d
,
0xdcb1c647
,
0xac4c56ea
,
0x3ebd81b3
,
0x230eabb0
,
0x6438bc87
,
0xf0b5b1fa
,
0x8f5ea2b3
,
0xfc184642
,
0x0a036b7a
,
0x4fb089bd
,
0x649da589
,
0xa345415e
,
0x5c038323
,
0x3e5d3bb9
,
0x43d79572
,
0x7e6dd07c
,
0x06dfdf1e
,
0x6c6cc4ef
,
0x7160a539
,
0x73bfbe70
,
0x83877605
,
0x4523ecf1
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table2
[
256
]
=
{
0x8defc240
,
0x25fa5d9f
,
0xeb903dbf
,
0xe810c907
,
0x47607fff
,
0x369fe44b
,
0x8c1fc644
,
0xaececa90
,
0xbeb1f9bf
,
0xeefbcaea
,
0xe8cf1950
,
0x51df07ae
,
0x920e8806
,
0xf0ad0548
,
0xe13c8d83
,
0x927010d5
,
0x11107d9f
,
0x07647db9
,
0xb2e3e4d4
,
0x3d4f285e
,
0xb9afa820
,
0xfade82e0
,
0xa067268b
,
0x8272792e
,
0x553fb2c0
,
0x489ae22b
,
0xd4ef9794
,
0x125e3fbc
,
0x21fffcee
,
0x825b1bfd
,
0x9255c5ed
,
0x1257a240
,
0x4e1a8302
,
0xbae07fff
,
0x528246e7
,
0x8e57140e
,
0x3373f7bf
,
0x8c9f8188
,
0xa6fc4ee8
,
0xc982b5a5
,
0xa8c01db7
,
0x579fc264
,
0x67094f31
,
0xf2bd3f5f
,
0x40fff7c1
,
0x1fb78dfc
,
0x8e6bd2c1
,
0x437be59b
,
0x99b03dbf
,
0xb5dbc64b
,
0x638dc0e6
,
0x55819d99
,
0xa197c81c
,
0x4a012d6e
,
0xc5884a28
,
0xccc36f71
,
0xb843c213
,
0x6c0743f1
,
0x8309893c
,
0x0feddd5f
,
0x2f7fe850
,
0xd7c07f7e
,
0x02507fbf
,
0x5afb9a04
,
0xa747d2d0
,
0x1651192e
,
0xaf70bf3e
,
0x58c31380
,
0x5f98302e
,
0x727cc3c4
,
0x0a0fb402
,
0x0f7fef82
,
0x8c96fdad
,
0x5d2c2aae
,
0x8ee99a49
,
0x50da88b8
,
0x8427f4a0
,
0x1eac5790
,
0x796fb449
,
0x8252dc15
,
0xefbd7d9b
,
0xa672597d
,
0xada840d8
,
0x45f54504
,
0xfa5d7403
,
0xe83ec305
,
0x4f91751a
,
0x925669c2
,
0x23efe941
,
0xa903f12e
,
0x60270df2
,
0x0276e4b6
,
0x94fd6574
,
0x927985b2
,
0x8276dbcb
,
0x02778176
,
0xf8af918d
,
0x4e48f79e
,
0x8f616ddf
,
0xe29d840e
,
0x842f7d83
,
0x340ce5c8
,
0x96bbb682
,
0x93b4b148
,
0xef303cab
,
0x984faf28
,
0x779faf9b
,
0x92dc560d
,
0x224d1e20
,
0x8437aa88
,
0x7d29dc96
,
0x2756d3dc
,
0x8b907cee
,
0xb51fd240
,
0xe7c07ce3
,
0xe566b4a1
,
0xc3e9615e
,
0x3cf8209d
,
0x6094d1e3
,
0xcd9ca341
,
0x5c76460e
,
0x00ea983b
,
0xd4d67881
,
0xfd47572c
,
0xf76cedd9
,
0xbda8229c
,
0x127dadaa
,
0x438a074e
,
0x1f97c090
,
0x081bdb8a
,
0x93a07ebe
,
0xb938ca15
,
0x97b03cff
,
0x3dc2c0f8
,
0x8d1ab2ec
,
0x64380e51
,
0x68cc7bfb
,
0xd90f2788
,
0x12490181
,
0x5de5ffd4
,
0xdd7ef86a
,
0x76a2e214
,
0xb9a40368
,
0x925d958f
,
0x4b39fffa
,
0xba39aee9
,
0xa4ffd30b
,
0xfaf7933b
,
0x6d498623
,
0x193cbcfa
,
0x27627545
,
0x825cf47a
,
0x61bd8ba0
,
0xd11e42d1
,
0xcead04f4
,
0x127ea392
,
0x10428db7
,
0x8272a972
,
0x9270c4a8
,
0x127de50b
,
0x285ba1c8
,
0x3c62f44f
,
0x35c0eaa5
,
0xe805d231
,
0x428929fb
,
0xb4fcdf82
,
0x4fb66a53
,
0x0e7dc15b
,
0x1f081fab
,
0x108618ae
,
0xfcfd086d
,
0xf9ff2889
,
0x694bcc11
,
0x236a5cae
,
0x12deca4d
,
0x2c3f8cc5
,
0xd2d02dfe
,
0xf8ef5896
,
0xe4cf52da
,
0x95155b67
,
0x494a488c
,
0xb9b6a80c
,
0x5c8f82bc
,
0x89d36b45
,
0x3a609437
,
0xec00c9a9
,
0x44715253
,
0x0a874b49
,
0xd773bc40
,
0x7c34671c
,
0x02717ef6
,
0x4feb5536
,
0xa2d02fff
,
0xd2bf60c4
,
0xd43f03c0
,
0x50b4ef6d
,
0x07478cd1
,
0x006e1888
,
0xa2e53f55
,
0xb9e6d4bc
,
0xa2048016
,
0x97573833
,
0xd7207d67
,
0xde0f8f3d
,
0x72f87b33
,
0xabcc4f33
,
0x7688c55d
,
0x7b00a6b0
,
0x947b0001
,
0x570075d2
,
0xf9bb88f8
,
0x8942019e
,
0x4264a5ff
,
0x856302e0
,
0x72dbd92b
,
0xee971b69
,
0x6ea22fde
,
0x5f08ae2b
,
0xaf7a616d
,
0xe5c98767
,
0xcf1febd2
,
0x61efc8c2
,
0xf1ac2571
,
0xcc8239c2
,
0x67214cb8
,
0xb1e583d1
,
0xb7dc3e62
,
0x7f10bdce
,
0xf90a5c38
,
0x0ff0443d
,
0x606e6dc6
,
0x60543a49
,
0x5727c148
,
0x2be98a1d
,
0x8ab41738
,
0x20e1be24
,
0xaf96da0f
,
0x68458425
,
0x99833be5
,
0x600d457d
,
0x282f9350
,
0x8334b362
,
0xd91d1120
,
0x2b6d8da0
,
0x642b1e31
,
0x9c305a00
,
0x52bce688
,
0x1b03588a
,
0xf7baefd5
,
0x4142ed9c
,
0xa4315c11
,
0x83323ec5
,
0xdfef4636
,
0xa133c501
,
0xe9d3531c
,
0xee353783
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table3
[
256
]
=
{
0x9db30420
,
0x1fb6e9de
,
0xa7be7bef
,
0xd273a298
,
0x4a4f7bdb
,
0x64ad8c57
,
0x85510443
,
0xfa020ed1
,
0x7e287aff
,
0xe60fb663
,
0x095f35a1
,
0x79ebf120
,
0xfd059d43
,
0x6497b7b1
,
0xf3641f63
,
0x241e4adf
,
0x28147f5f
,
0x4fa2b8cd
,
0xc9430040
,
0x0cc32220
,
0xfdd30b30
,
0xc0a5374f
,
0x1d2d00d9
,
0x24147b15
,
0xee4d111a
,
0x0fca5167
,
0x71ff904c
,
0x2d195ffe
,
0x1a05645f
,
0x0c13fefe
,
0x081b08ca
,
0x05170121
,
0x80530100
,
0xe83e5efe
,
0xac9af4f8
,
0x7fe72701
,
0xd2b8ee5f
,
0x06df4261
,
0xbb9e9b8a
,
0x7293ea25
,
0xce84ffdf
,
0xf5718801
,
0x3dd64b04
,
0xa26f263b
,
0x7ed48400
,
0x547eebe6
,
0x446d4ca0
,
0x6cf3d6f5
,
0x2649abdf
,
0xaea0c7f5
,
0x36338cc1
,
0x503f7e93
,
0xd3772061
,
0x11b638e1
,
0x72500e03
,
0xf80eb2bb
,
0xabe0502e
,
0xec8d77de
,
0x57971e81
,
0xe14f6746
,
0xc9335400
,
0x6920318f
,
0x081dbb99
,
0xffc304a5
,
0x4d351805
,
0x7f3d5ce3
,
0xa6c866c6
,
0x5d5bcca9
,
0xdaec6fea
,
0x9f926f91
,
0x9f46222f
,
0x3991467d
,
0xa5bf6d8e
,
0x1143c44f
,
0x43958302
,
0xd0214eeb
,
0x022083b8
,
0x3fb6180c
,
0x18f8931e
,
0x281658e6
,
0x26486e3e
,
0x8bd78a70
,
0x7477e4c1
,
0xb506e07c
,
0xf32d0a25
,
0x79098b02
,
0xe4eabb81
,
0x28123b23
,
0x69dead38
,
0x1574ca16
,
0xdf871b62
,
0x211c40b7
,
0xa51a9ef9
,
0x0014377b
,
0x041e8ac8
,
0x09114003
,
0xbd59e4d2
,
0xe3d156d5
,
0x4fe876d5
,
0x2f91a340
,
0x557be8de
,
0x00eae4a7
,
0x0ce5c2ec
,
0x4db4bba6
,
0xe756bdff
,
0xdd3369ac
,
0xec17b035
,
0x06572327
,
0x99afc8b0
,
0x56c8c391
,
0x6b65811c
,
0x5e146119
,
0x6e85cb75
,
0xbe07c002
,
0xc2325577
,
0x893ff4ec
,
0x5bbfc92d
,
0xd0ec3b25
,
0xb7801ab7
,
0x8d6d3b24
,
0x20c763ef
,
0xc366a5fc
,
0x9c382880
,
0x0ace3205
,
0xaac9548a
,
0xeca1d7c7
,
0x041afa32
,
0x1d16625a
,
0x6701902c
,
0x9b757a54
,
0x31d477f7
,
0x9126b031
,
0x36cc6fdb
,
0xc70b8b46
,
0xd9e66a48
,
0x56e55a79
,
0x026a4ceb
,
0x52437eff
,
0x2f8f76b4
,
0x0df980a5
,
0x8674cde3
,
0xedda04eb
,
0x17a9be04
,
0x2c18f4df
,
0xb7747f9d
,
0xab2af7b4
,
0xefc34d20
,
0x2e096b7c
,
0x1741a254
,
0xe5b6a035
,
0x213d42f6
,
0x2c1c7c26
,
0x61c2f50f
,
0x6552daf9
,
0xd2c231f8
,
0x25130f69
,
0xd8167fa2
,
0x0418f2c8
,
0x001a96a6
,
0x0d1526ab
,
0x63315c21
,
0x5e0a72ec
,
0x49bafefd
,
0x187908d9
,
0x8d0dbd86
,
0x311170a7
,
0x3e9b640c
,
0xcc3e10d7
,
0xd5cad3b6
,
0x0caec388
,
0xf73001e1
,
0x6c728aff
,
0x71eae2a1
,
0x1f9af36e
,
0xcfcbd12f
,
0xc1de8417
,
0xac07be6b
,
0xcb44a1d8
,
0x8b9b0f56
,
0x013988c3
,
0xb1c52fca
,
0xb4be31cd
,
0xd8782806
,
0x12a3a4e2
,
0x6f7de532
,
0x58fd7eb6
,
0xd01ee900
,
0x24adffc2
,
0xf4990fc5
,
0x9711aac5
,
0x001d7b95
,
0x82e5e7d2
,
0x109873f6
,
0x00613096
,
0xc32d9521
,
0xada121ff
,
0x29908415
,
0x7fbb977f
,
0xaf9eb3db
,
0x29c9ed2a
,
0x5ce2a465
,
0xa730f32c
,
0xd0aa3fe8
,
0x8a5cc091
,
0xd49e2ce7
,
0x0ce454a9
,
0xd60acd86
,
0x015f1919
,
0x77079103
,
0xdea03af6
,
0x78a8565e
,
0xdee356df
,
0x21f05cbe
,
0x8b75e387
,
0xb3c50651
,
0xb8a5c3ef
,
0xd8eeb6d2
,
0xe523be77
,
0xc2154529
,
0x2f69efdf
,
0xafe67afb
,
0xf470c4b2
,
0xf3e0eb5b
,
0xd6cc9876
,
0x39e4460c
,
0x1fda8538
,
0x1987832f
,
0xca007367
,
0xa99144f8
,
0x296b299e
,
0x492fc295
,
0x9266beab
,
0xb5676e69
,
0x9bd3ddda
,
0xdf7e052f
,
0xdb25701c
,
0x1b5e51ee
,
0xf65324e6
,
0x6afce36c
,
0x0316cc04
,
0x8644213e
,
0xb7dc59d0
,
0x7965291f
,
0xccd6fd43
,
0x41823979
,
0x932bcdf6
,
0xb657c34d
,
0x4edfd282
,
0x7ae5290c
,
0x3cb9536b
,
0x851e20fe
,
0x9833557e
,
0x13ecf0b0
,
0xd3ffb372
,
0x3f85c5c1
,
0x0aef7ed2
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table4
[
256
]
=
{
0x7ec90c04
,
0x2c6e74b9
,
0x9b0e66df
,
0xa6337911
,
0xb86a7fff
,
0x1dd358f5
,
0x44dd9d44
,
0x1731167f
,
0x08fbf1fa
,
0xe7f511cc
,
0xd2051b00
,
0x735aba00
,
0x2ab722d8
,
0x386381cb
,
0xacf6243a
,
0x69befd7a
,
0xe6a2e77f
,
0xf0c720cd
,
0xc4494816
,
0xccf5c180
,
0x38851640
,
0x15b0a848
,
0xe68b18cb
,
0x4caadeff
,
0x5f480a01
,
0x0412b2aa
,
0x259814fc
,
0x41d0efe2
,
0x4e40b48d
,
0x248eb6fb
,
0x8dba1cfe
,
0x41a99b02
,
0x1a550a04
,
0xba8f65cb
,
0x7251f4e7
,
0x95a51725
,
0xc106ecd7
,
0x97a5980a
,
0xc539b9aa
,
0x4d79fe6a
,
0xf2f3f763
,
0x68af8040
,
0xed0c9e56
,
0x11b4958b
,
0xe1eb5a88
,
0x8709e6b0
,
0xd7e07156
,
0x4e29fea7
,
0x6366e52d
,
0x02d1c000
,
0xc4ac8e05
,
0x9377f571
,
0x0c05372a
,
0x578535f2
,
0x2261be02
,
0xd642a0c9
,
0xdf13a280
,
0x74b55bd2
,
0x682199c0
,
0xd421e5ec
,
0x53fb3ce8
,
0xc8adedb3
,
0x28a87fc9
,
0x3d959981
,
0x5c1ff900
,
0xfe38d399
,
0x0c4eff0b
,
0x062407ea
,
0xaa2f4fb1
,
0x4fb96976
,
0x90c79505
,
0xb0a8a774
,
0xef55a1ff
,
0xe59ca2c2
,
0xa6b62d27
,
0xe66a4263
,
0xdf65001f
,
0x0ec50966
,
0xdfdd55bc
,
0x29de0655
,
0x911e739a
,
0x17af8975
,
0x32c7911c
,
0x89f89468
,
0x0d01e980
,
0x524755f4
,
0x03b63cc9
,
0x0cc844b2
,
0xbcf3f0aa
,
0x87ac36e9
,
0xe53a7426
,
0x01b3d82b
,
0x1a9e7449
,
0x64ee2d7e
,
0xcddbb1da
,
0x01c94910
,
0xb868bf80
,
0x0d26f3fd
,
0x9342ede7
,
0x04a5c284
,
0x636737b6
,
0x50f5b616
,
0xf24766e3
,
0x8eca36c1
,
0x136e05db
,
0xfef18391
,
0xfb887a37
,
0xd6e7f7d4
,
0xc7fb7dc9
,
0x3063fcdf
,
0xb6f589de
,
0xec2941da
,
0x26e46695
,
0xb7566419
,
0xf654efc5
,
0xd08d58b7
,
0x48925401
,
0xc1bacb7f
,
0xe5ff550f
,
0xb6083049
,
0x5bb5d0e8
,
0x87d72e5a
,
0xab6a6ee1
,
0x223a66ce
,
0xc62bf3cd
,
0x9e0885f9
,
0x68cb3e47
,
0x086c010f
,
0xa21de820
,
0xd18b69de
,
0xf3f65777
,
0xfa02c3f6
,
0x407edac3
,
0xcbb3d550
,
0x1793084d
,
0xb0d70eba
,
0x0ab378d5
,
0xd951fb0c
,
0xded7da56
,
0x4124bbe4
,
0x94ca0b56
,
0x0f5755d1
,
0xe0e1e56e
,
0x6184b5be
,
0x580a249f
,
0x94f74bc0
,
0xe327888e
,
0x9f7b5561
,
0xc3dc0280
,
0x05687715
,
0x646c6bd7
,
0x44904db3
,
0x66b4f0a3
,
0xc0f1648a
,
0x697ed5af
,
0x49e92ff6
,
0x309e374f
,
0x2cb6356a
,
0x85808573
,
0x4991f840
,
0x76f0ae02
,
0x083be84d
,
0x28421c9a
,
0x44489406
,
0x736e4cb8
,
0xc1092910
,
0x8bc95fc6
,
0x7d869cf4
,
0x134f616f
,
0x2e77118d
,
0xb31b2be1
,
0xaa90b472
,
0x3ca5d717
,
0x7d161bba
,
0x9cad9010
,
0xaf462ba2
,
0x9fe459d2
,
0x45d34559
,
0xd9f2da13
,
0xdbc65487
,
0xf3e4f94e
,
0x176d486f
,
0x097c13ea
,
0x631da5c7
,
0x445f7382
,
0x175683f4
,
0xcdc66a97
,
0x70be0288
,
0xb3cdcf72
,
0x6e5dd2f3
,
0x20936079
,
0x459b80a5
,
0xbe60e2db
,
0xa9c23101
,
0xeba5315c
,
0x224e42f2
,
0x1c5c1572
,
0xf6721b2c
,
0x1ad2fff3
,
0x8c25404e
,
0x324ed72f
,
0x4067b7fd
,
0x0523138e
,
0x5ca3bc78
,
0xdc0fd66e
,
0x75922283
,
0x784d6b17
,
0x58ebb16e
,
0x44094f85
,
0x3f481d87
,
0xfcfeae7b
,
0x77b5ff76
,
0x8c2302bf
,
0xaaf47556
,
0x5f46b02a
,
0x2b092801
,
0x3d38f5f7
,
0x0ca81f36
,
0x52af4a8a
,
0x66d5e7c0
,
0xdf3b0874
,
0x95055110
,
0x1b5ad7a8
,
0xf61ed5ad
,
0x6cf6e479
,
0x20758184
,
0xd0cefa65
,
0x88f7be58
,
0x4a046826
,
0x0ff6f8f3
,
0xa09c7f70
,
0x5346aba0
,
0x5ce96c28
,
0xe176eda3
,
0x6bac307f
,
0x376829d2
,
0x85360fa9
,
0x17e3fe2a
,
0x24b79767
,
0xf5a96b20
,
0xd6cd2595
,
0x68ff1ebf
,
0x7555442c
,
0xf19f06be
,
0xf9e0659a
,
0xeeb9491d
,
0x34010718
,
0xbb30cab8
,
0xe822fe15
,
0x88570983
,
0x750e6249
,
0xda627e55
,
0x5e76ffa8
,
0xb1534546
,
0x6d47de08
,
0xefe9e7d4
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table5
[
256
]
=
{
0xf6fa8f9d
,
0x2cac6ce1
,
0x4ca34867
,
0xe2337f7c
,
0x95db08e7
,
0x016843b4
,
0xeced5cbc
,
0x325553ac
,
0xbf9f0960
,
0xdfa1e2ed
,
0x83f0579d
,
0x63ed86b9
,
0x1ab6a6b8
,
0xde5ebe39
,
0xf38ff732
,
0x8989b138
,
0x33f14961
,
0xc01937bd
,
0xf506c6da
,
0xe4625e7e
,
0xa308ea99
,
0x4e23e33c
,
0x79cbd7cc
,
0x48a14367
,
0xa3149619
,
0xfec94bd5
,
0xa114174a
,
0xeaa01866
,
0xa084db2d
,
0x09a8486f
,
0xa888614a
,
0x2900af98
,
0x01665991
,
0xe1992863
,
0xc8f30c60
,
0x2e78ef3c
,
0xd0d51932
,
0xcf0fec14
,
0xf7ca07d2
,
0xd0a82072
,
0xfd41197e
,
0x9305a6b0
,
0xe86be3da
,
0x74bed3cd
,
0x372da53c
,
0x4c7f4448
,
0xdab5d440
,
0x6dba0ec3
,
0x083919a7
,
0x9fbaeed9
,
0x49dbcfb0
,
0x4e670c53
,
0x5c3d9c01
,
0x64bdb941
,
0x2c0e636a
,
0xba7dd9cd
,
0xea6f7388
,
0xe70bc762
,
0x35f29adb
,
0x5c4cdd8d
,
0xf0d48d8c
,
0xb88153e2
,
0x08a19866
,
0x1ae2eac8
,
0x284caf89
,
0xaa928223
,
0x9334be53
,
0x3b3a21bf
,
0x16434be3
,
0x9aea3906
,
0xefe8c36e
,
0xf890cdd9
,
0x80226dae
,
0xc340a4a3
,
0xdf7e9c09
,
0xa694a807
,
0x5b7c5ecc
,
0x221db3a6
,
0x9a69a02f
,
0x68818a54
,
0xceb2296f
,
0x53c0843a
,
0xfe893655
,
0x25bfe68a
,
0xb4628abc
,
0xcf222ebf
,
0x25ac6f48
,
0xa9a99387
,
0x53bddb65
,
0xe76ffbe7
,
0xe967fd78
,
0x0ba93563
,
0x8e342bc1
,
0xe8a11be9
,
0x4980740d
,
0xc8087dfc
,
0x8de4bf99
,
0xa11101a0
,
0x7fd37975
,
0xda5a26c0
,
0xe81f994f
,
0x9528cd89
,
0xfd339fed
,
0xb87834bf
,
0x5f04456d
,
0x22258698
,
0xc9c4c83b
,
0x2dc156be
,
0x4f628daa
,
0x57f55ec5
,
0xe2220abe
,
0xd2916ebf
,
0x4ec75b95
,
0x24f2c3c0
,
0x42d15d99
,
0xcd0d7fa0
,
0x7b6e27ff
,
0xa8dc8af0
,
0x7345c106
,
0xf41e232f
,
0x35162386
,
0xe6ea8926
,
0x3333b094
,
0x157ec6f2
,
0x372b74af
,
0x692573e4
,
0xe9a9d848
,
0xf3160289
,
0x3a62ef1d
,
0xa787e238
,
0xf3a5f676
,
0x74364853
,
0x20951063
,
0x4576698d
,
0xb6fad407
,
0x592af950
,
0x36f73523
,
0x4cfb6e87
,
0x7da4cec0
,
0x6c152daa
,
0xcb0396a8
,
0xc50dfe5d
,
0xfcd707ab
,
0x0921c42f
,
0x89dff0bb
,
0x5fe2be78
,
0x448f4f33
,
0x754613c9
,
0x2b05d08d
,
0x48b9d585
,
0xdc049441
,
0xc8098f9b
,
0x7dede786
,
0xc39a3373
,
0x42410005
,
0x6a091751
,
0x0ef3c8a6
,
0x890072d6
,
0x28207682
,
0xa9a9f7be
,
0xbf32679d
,
0xd45b5b75
,
0xb353fd00
,
0xcbb0e358
,
0x830f220a
,
0x1f8fb214
,
0xd372cf08
,
0xcc3c4a13
,
0x8cf63166
,
0x061c87be
,
0x88c98f88
,
0x6062e397
,
0x47cf8e7a
,
0xb6c85283
,
0x3cc2acfb
,
0x3fc06976
,
0x4e8f0252
,
0x64d8314d
,
0xda3870e3
,
0x1e665459
,
0xc10908f0
,
0x513021a5
,
0x6c5b68b7
,
0x822f8aa0
,
0x3007cd3e
,
0x74719eef
,
0xdc872681
,
0x073340d4
,
0x7e432fd9
,
0x0c5ec241
,
0x8809286c
,
0xf592d891
,
0x08a930f6
,
0x957ef305
,
0xb7fbffbd
,
0xc266e96f
,
0x6fe4ac98
,
0xb173ecc0
,
0xbc60b42a
,
0x953498da
,
0xfba1ae12
,
0x2d4bd736
,
0x0f25faab
,
0xa4f3fceb
,
0xe2969123
,
0x257f0c3d
,
0x9348af49
,
0x361400bc
,
0xe8816f4a
,
0x3814f200
,
0xa3f94043
,
0x9c7a54c2
,
0xbc704f57
,
0xda41e7f9
,
0xc25ad33a
,
0x54f4a084
,
0xb17f5505
,
0x59357cbe
,
0xedbd15c8
,
0x7f97c5ab
,
0xba5ac7b5
,
0xb6f6deaf
,
0x3a479c3a
,
0x5302da25
,
0x653d7e6a
,
0x54268d49
,
0x51a477ea
,
0x5017d55b
,
0xd7d25d88
,
0x44136c76
,
0x0404a8c8
,
0xb8e5a121
,
0xb81a928a
,
0x60ed5869
,
0x97c55b96
,
0xeaec991b
,
0x29935913
,
0x01fdb7f1
,
0x088e8dfa
,
0x9ab6f6f5
,
0x3b4cbf9f
,
0x4a5de3ab
,
0xe6051d35
,
0xa0e1d855
,
0xd36b4cf1
,
0xf544edeb
,
0xb0e93524
,
0xbebb8fbd
,
0xa2d762cf
,
0x49c92f54
,
0x38b5f331
,
0x7128a454
,
0x48392905
,
0xa65b1db8
,
0x851c97bd
,
0xd675cf2f
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table6
[
256
]
=
{
0x85e04019
,
0x332bf567
,
0x662dbfff
,
0xcfc65693
,
0x2a8d7f6f
,
0xab9bc912
,
0xde6008a1
,
0x2028da1f
,
0x0227bce7
,
0x4d642916
,
0x18fac300
,
0x50f18b82
,
0x2cb2cb11
,
0xb232e75c
,
0x4b3695f2
,
0xb28707de
,
0xa05fbcf6
,
0xcd4181e9
,
0xe150210c
,
0xe24ef1bd
,
0xb168c381
,
0xfde4e789
,
0x5c79b0d8
,
0x1e8bfd43
,
0x4d495001
,
0x38be4341
,
0x913cee1d
,
0x92a79c3f
,
0x089766be
,
0xbaeeadf4
,
0x1286becf
,
0xb6eacb19
,
0x2660c200
,
0x7565bde4
,
0x64241f7a
,
0x8248dca9
,
0xc3b3ad66
,
0x28136086
,
0x0bd8dfa8
,
0x356d1cf2
,
0x107789be
,
0xb3b2e9ce
,
0x0502aa8f
,
0x0bc0351e
,
0x166bf52a
,
0xeb12ff82
,
0xe3486911
,
0xd34d7516
,
0x4e7b3aff
,
0x5f43671b
,
0x9cf6e037
,
0x4981ac83
,
0x334266ce
,
0x8c9341b7
,
0xd0d854c0
,
0xcb3a6c88
,
0x47bc2829
,
0x4725ba37
,
0xa66ad22b
,
0x7ad61f1e
,
0x0c5cbafa
,
0x4437f107
,
0xb6e79962
,
0x42d2d816
,
0x0a961288
,
0xe1a5c06e
,
0x13749e67
,
0x72fc081a
,
0xb1d139f7
,
0xf9583745
,
0xcf19df58
,
0xbec3f756
,
0xc06eba30
,
0x07211b24
,
0x45c28829
,
0xc95e317f
,
0xbc8ec511
,
0x38bc46e9
,
0xc6e6fa14
,
0xbae8584a
,
0xad4ebc46
,
0x468f508b
,
0x7829435f
,
0xf124183b
,
0x821dba9f
,
0xaff60ff4
,
0xea2c4e6d
,
0x16e39264
,
0x92544a8b
,
0x009b4fc3
,
0xaba68ced
,
0x9ac96f78
,
0x06a5b79a
,
0xb2856e6e
,
0x1aec3ca9
,
0xbe838688
,
0x0e0804e9
,
0x55f1be56
,
0xe7e5363b
,
0xb3a1f25d
,
0xf7debb85
,
0x61fe033c
,
0x16746233
,
0x3c034c28
,
0xda6d0c74
,
0x79aac56c
,
0x3ce4e1ad
,
0x51f0c802
,
0x98f8f35a
,
0x1626a49f
,
0xeed82b29
,
0x1d382fe3
,
0x0c4fb99a
,
0xbb325778
,
0x3ec6d97b
,
0x6e77a6a9
,
0xcb658b5c
,
0xd45230c7
,
0x2bd1408b
,
0x60c03eb7
,
0xb9068d78
,
0xa33754f4
,
0xf430c87d
,
0xc8a71302
,
0xb96d8c32
,
0xebd4e7be
,
0xbe8b9d2d
,
0x7979fb06
,
0xe7225308
,
0x8b75cf77
,
0x11ef8da4
,
0xe083c858
,
0x8d6b786f
,
0x5a6317a6
,
0xfa5cf7a0
,
0x5dda0033
,
0xf28ebfb0
,
0xf5b9c310
,
0xa0eac280
,
0x08b9767a
,
0xa3d9d2b0
,
0x79d34217
,
0x021a718d
,
0x9ac6336a
,
0x2711fd60
,
0x438050e3
,
0x069908a8
,
0x3d7fedc4
,
0x826d2bef
,
0x4eeb8476
,
0x488dcf25
,
0x36c9d566
,
0x28e74e41
,
0xc2610aca
,
0x3d49a9cf
,
0xbae3b9df
,
0xb65f8de6
,
0x92aeaf64
,
0x3ac7d5e6
,
0x9ea80509
,
0xf22b017d
,
0xa4173f70
,
0xdd1e16c3
,
0x15e0d7f9
,
0x50b1b887
,
0x2b9f4fd5
,
0x625aba82
,
0x6a017962
,
0x2ec01b9c
,
0x15488aa9
,
0xd716e740
,
0x40055a2c
,
0x93d29a22
,
0xe32dbf9a
,
0x058745b9
,
0x3453dc1e
,
0xd699296e
,
0x496cff6f
,
0x1c9f4986
,
0xdfe2ed07
,
0xb87242d1
,
0x19de7eae
,
0x053e561a
,
0x15ad6f8c
,
0x66626c1c
,
0x7154c24c
,
0xea082b2a
,
0x93eb2939
,
0x17dcb0f0
,
0x58d4f2ae
,
0x9ea294fb
,
0x52cf564c
,
0x9883fe66
,
0x2ec40581
,
0x763953c3
,
0x01d6692e
,
0xd3a0c108
,
0xa1e7160e
,
0xe4f2dfa6
,
0x693ed285
,
0x74904698
,
0x4c2b0edd
,
0x4f757656
,
0x5d393378
,
0xa132234f
,
0x3d321c5d
,
0xc3f5e194
,
0x4b269301
,
0xc79f022f
,
0x3c997e7e
,
0x5e4f9504
,
0x3ffafbbd
,
0x76f7ad0e
,
0x296693f4
,
0x3d1fce6f
,
0xc61e45be
,
0xd3b5ab34
,
0xf72bf9b7
,
0x1b0434c0
,
0x4e72b567
,
0x5592a33d
,
0xb5229301
,
0xcfd2a87f
,
0x60aeb767
,
0x1814386b
,
0x30bcc33d
,
0x38a0c07d
,
0xfd1606f2
,
0xc363519b
,
0x589dd390
,
0x5479f8e6
,
0x1cb8d647
,
0x97fd61a9
,
0xea7759f4
,
0x2d57539d
,
0x569a58cf
,
0xe84e63ad
,
0x462e1b78
,
0x6580f87e
,
0xf3817914
,
0x91da55f4
,
0x40a230f3
,
0xd1988f35
,
0xb6e318d2
,
0x3ffa50bc
,
0x3d40f021
,
0xc3c0bdae
,
0x4958c24c
,
0x518f36b2
,
0x84b1d370
,
0x0fedce83
,
0x878ddada
,
0xf2a279c7
,
0x94e01be8
,
0x90716f4b
,
0x954b8aa3
,
};
OPENSSL_GLOBAL
const
CAST_LONG
CAST_S_table7
[
256
]
=
{
0xe216300d
,
0xbbddfffc
,
0xa7ebdabd
,
0x35648095
,
0x7789f8b7
,
0xe6c1121b
,
0x0e241600
,
0x052ce8b5
,
0x11a9cfb0
,
0xe5952f11
,
0xece7990a
,
0x9386d174
,
0x2a42931c
,
0x76e38111
,
0xb12def3a
,
0x37ddddfc
,
0xde9adeb1
,
0x0a0cc32c
,
0xbe197029
,
0x84a00940
,
0xbb243a0f
,
0xb4d137cf
,
0xb44e79f0
,
0x049eedfd
,
0x0b15a15d
,
0x480d3168
,
0x8bbbde5a
,
0x669ded42
,
0xc7ece831
,
0x3f8f95e7
,
0x72df191b
,
0x7580330d
,
0x94074251
,
0x5c7dcdfa
,
0xabbe6d63
,
0xaa402164
,
0xb301d40a
,
0x02e7d1ca
,
0x53571dae
,
0x7a3182a2
,
0x12a8ddec
,
0xfdaa335d
,
0x176f43e8
,
0x71fb46d4
,
0x38129022
,
0xce949ad4
,
0xb84769ad
,
0x965bd862
,
0x82f3d055
,
0x66fb9767
,
0x15b80b4e
,
0x1d5b47a0
,
0x4cfde06f
,
0xc28ec4b8
,
0x57e8726e
,
0x647a78fc
,
0x99865d44
,
0x608bd593
,
0x6c200e03
,
0x39dc5ff6
,
0x5d0b00a3
,
0xae63aff2
,
0x7e8bd632
,
0x70108c0c
,
0xbbd35049
,
0x2998df04
,
0x980cf42a
,
0x9b6df491
,
0x9e7edd53
,
0x06918548
,
0x58cb7e07
,
0x3b74ef2e
,
0x522fffb1
,
0xd24708cc
,
0x1c7e27cd
,
0xa4eb215b
,
0x3cf1d2e2
,
0x19b47a38
,
0x424f7618
,
0x35856039
,
0x9d17dee7
,
0x27eb35e6
,
0xc9aff67b
,
0x36baf5b8
,
0x09c467cd
,
0xc18910b1
,
0xe11dbf7b
,
0x06cd1af8
,
0x7170c608
,
0x2d5e3354
,
0xd4de495a
,
0x64c6d006
,
0xbcc0c62c
,
0x3dd00db3
,
0x708f8f34
,
0x77d51b42
,
0x264f620f
,
0x24b8d2bf
,
0x15c1b79e
,
0x46a52564
,
0xf8d7e54e
,
0x3e378160
,
0x7895cda5
,
0x859c15a5
,
0xe6459788
,
0xc37bc75f
,
0xdb07ba0c
,
0x0676a3ab
,
0x7f229b1e
,
0x31842e7b
,
0x24259fd7
,
0xf8bef472
,
0x835ffcb8
,
0x6df4c1f2
,
0x96f5b195
,
0xfd0af0fc
,
0xb0fe134c
,
0xe2506d3d
,
0x4f9b12ea
,
0xf215f225
,
0xa223736f
,
0x9fb4c428
,
0x25d04979
,
0x34c713f8
,
0xc4618187
,
0xea7a6e98
,
0x7cd16efc
,
0x1436876c
,
0xf1544107
,
0xbedeee14
,
0x56e9af27
,
0xa04aa441
,
0x3cf7c899
,
0x92ecbae6
,
0xdd67016d
,
0x151682eb
,
0xa842eedf
,
0xfdba60b4
,
0xf1907b75
,
0x20e3030f
,
0x24d8c29e
,
0xe139673b
,
0xefa63fb8
,
0x71873054
,
0xb6f2cf3b
,
0x9f326442
,
0xcb15a4cc
,
0xb01a4504
,
0xf1e47d8d
,
0x844a1be5
,
0xbae7dfdc
,
0x42cbda70
,
0xcd7dae0a
,
0x57e85b7a
,
0xd53f5af6
,
0x20cf4d8c
,
0xcea4d428
,
0x79d130a4
,
0x3486ebfb
,
0x33d3cddc
,
0x77853b53
,
0x37effcb5
,
0xc5068778
,
0xe580b3e6
,
0x4e68b8f4
,
0xc5c8b37e
,
0x0d809ea2
,
0x398feb7c
,
0x132a4f94
,
0x43b7950e
,
0x2fee7d1c
,
0x223613bd
,
0xdd06caa2
,
0x37df932b
,
0xc4248289
,
0xacf3ebc3
,
0x5715f6b7
,
0xef3478dd
,
0xf267616f
,
0xc148cbe4
,
0x9052815e
,
0x5e410fab
,
0xb48a2465
,
0x2eda7fa4
,
0xe87b40e4
,
0xe98ea084
,
0x5889e9e1
,
0xefd390fc
,
0xdd07d35b
,
0xdb485694
,
0x38d7e5b2
,
0x57720101
,
0x730edebc
,
0x5b643113
,
0x94917e4f
,
0x503c2fba
,
0x646f1282
,
0x7523d24a
,
0xe0779695
,
0xf9c17a8f
,
0x7a5b2121
,
0xd187b896
,
0x29263a4d
,
0xba510cdf
,
0x81f47c9f
,
0xad1163ed
,
0xea7b5965
,
0x1a00726e
,
0x11403092
,
0x00da6d77
,
0x4a0cdd61
,
0xad1f4603
,
0x605bdfb0
,
0x9eedc364
,
0x22ebe6a8
,
0xcee7d28a
,
0xa0e736a0
,
0x5564a6b9
,
0x10853209
,
0xc7eb8f37
,
0x2de705ca
,
0x8951570f
,
0xdf09822b
,
0xbd691a6c
,
0xaa12e4f2
,
0x87451c0f
,
0xe0f6a27a
,
0x3ada4819
,
0x4cf1764f
,
0x0d771c2b
,
0x67cdb156
,
0x350d8384
,
0x5938fa0f
,
0x42399ef3
,
0x36997b07
,
0x0e84093d
,
0x4aa93e61
,
0x8360d87b
,
0x1fa98b0c
,
0x1149382c
,
0xe97625a5
,
0x0614d1b7
,
0x0e25244b
,
0x0c768347
,
0x589e8d82
,
0x0d2059d1
,
0xa466bb1e
,
0xf8da0a82
,
0x04f19130
,
0xba6e4ec0
,
0x99265164
,
0x1ee7230d
,
0x50b2ad80
,
0xeaee6801
,
0x8db2a283
,
0xea8bf59e
,
};
src/main/jni/openssl/crypto/cast/cast_spd.c
0 → 100644
View file @
374893f5
/* crypto/cast/cast_spd.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
#define TIMES
#endif
#include <stdio.h>
#include <openssl/e_os2.h>
#include OPENSSL_UNISTD_IO
OPENSSL_DECLARE_EXIT
#ifndef OPENSSL_SYS_NETWARE
#include <signal.h>
#endif
#ifndef _IRIX
#include <time.h>
#endif
#ifdef TIMES
#include <sys/types.h>
#include <sys/times.h>
#endif
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif
#if defined(sun) || defined(__ultrix)
#define _POSIX_SOURCE
#include <limits.h>
#include <sys/param.h>
#endif
#include <openssl/cast.h>
/* The following if from times(3) man page. It may need to be changed */
#ifndef HZ
#ifndef CLK_TCK
#define HZ 100.0
#else
/* CLK_TCK */
#define HZ ((double)CLK_TCK)
#endif
#endif
#define BUFSIZE ((long)1024)
long
run
=
0
;
double
Time_F
(
int
s
);
#ifdef SIGALRM
#if defined(__STDC__) || defined(sgi) || defined(_AIX)
#define SIGRETTYPE void
#else
#define SIGRETTYPE int
#endif
SIGRETTYPE
sig_done
(
int
sig
);
SIGRETTYPE
sig_done
(
int
sig
)
{
signal
(
SIGALRM
,
sig_done
);
run
=
0
;
#ifdef LINT
sig
=
sig
;
#endif
}
#endif
#define START 0
#define STOP 1
double
Time_F
(
int
s
)
{
double
ret
;
#ifdef TIMES
static
struct
tms
tstart
,
tend
;
if
(
s
==
START
)
{
times
(
&
tstart
);
return
(
0
);
}
else
{
times
(
&
tend
);
ret
=
((
double
)(
tend
.
tms_utime
-
tstart
.
tms_utime
))
/
HZ
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#else
/* !times() */
static
struct
timeb
tstart
,
tend
;
long
i
;
if
(
s
==
START
)
{
ftime
(
&
tstart
);
return
(
0
);
}
else
{
ftime
(
&
tend
);
i
=
(
long
)
tend
.
millitm
-
(
long
)
tstart
.
millitm
;
ret
=
((
double
)(
tend
.
time
-
tstart
.
time
))
+
((
double
)
i
)
/
1e3
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#endif
}
int
main
(
int
argc
,
char
**
argv
)
{
long
count
;
static
unsigned
char
buf
[
BUFSIZE
];
static
unsigned
char
key
[]
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x9a
,
0xbc
,
0xde
,
0xf0
,
0xfe
,
0xdc
,
0xba
,
0x98
,
0x76
,
0x54
,
0x32
,
0x10
,
};
CAST_KEY
sch
;
double
a
,
b
,
c
,
d
;
#ifndef SIGALRM
long
ca
,
cb
,
cc
;
#endif
#ifndef TIMES
printf
(
"To get the most accurate results, try to run this
\n
"
);
printf
(
"program when this computer is idle.
\n
"
);
#endif
#ifndef SIGALRM
printf
(
"First we calculate the approximate speed ...
\n
"
);
CAST_set_key
(
&
sch
,
16
,
key
);
count
=
10
;
do
{
long
i
;
CAST_LONG
data
[
2
];
count
*=
2
;
Time_F
(
START
);
for
(
i
=
count
;
i
;
i
--
)
CAST_encrypt
(
data
,
&
sch
);
d
=
Time_F
(
STOP
);
}
while
(
d
<
3
.
0
);
ca
=
count
/
512
;
cb
=
count
;
cc
=
count
*
8
/
BUFSIZE
+
1
;
printf
(
"Doing CAST_set_key %ld times
\n
"
,
ca
);
#define COND(d) (count != (d))
#define COUNT(d) (d)
#else
#define COND(c) (run)
#define COUNT(d) (count)
signal
(
SIGALRM
,
sig_done
);
printf
(
"Doing CAST_set_key for 10 seconds
\n
"
);
alarm
(
10
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
ca
);
count
+=
4
)
{
CAST_set_key
(
&
sch
,
16
,
key
);
CAST_set_key
(
&
sch
,
16
,
key
);
CAST_set_key
(
&
sch
,
16
,
key
);
CAST_set_key
(
&
sch
,
16
,
key
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld cast set_key's in %.2f seconds
\n
"
,
count
,
d
);
a
=
((
double
)
COUNT
(
ca
))
/
d
;
#ifdef SIGALRM
printf
(
"Doing CAST_encrypt's for 10 seconds
\n
"
);
alarm
(
10
);
#else
printf
(
"Doing CAST_encrypt %ld times
\n
"
,
cb
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cb
);
count
+=
4
)
{
CAST_LONG
data
[
2
];
CAST_encrypt
(
data
,
&
sch
);
CAST_encrypt
(
data
,
&
sch
);
CAST_encrypt
(
data
,
&
sch
);
CAST_encrypt
(
data
,
&
sch
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld CAST_encrypt's in %.2f second
\n
"
,
count
,
d
);
b
=
((
double
)
COUNT
(
cb
)
*
8
)
/
d
;
#ifdef SIGALRM
printf
(
"Doing CAST_cbc_encrypt on %ld byte blocks for 10 seconds
\n
"
,
BUFSIZE
);
alarm
(
10
);
#else
printf
(
"Doing CAST_cbc_encrypt %ld times on %ld byte blocks
\n
"
,
cc
,
BUFSIZE
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cc
);
count
++
)
CAST_cbc_encrypt
(
buf
,
buf
,
BUFSIZE
,
&
sch
,
&
(
key
[
0
]),
CAST_ENCRYPT
);
d
=
Time_F
(
STOP
);
printf
(
"%ld CAST_cbc_encrypt's of %ld byte blocks in %.2f second
\n
"
,
count
,
BUFSIZE
,
d
);
c
=
((
double
)
COUNT
(
cc
)
*
BUFSIZE
)
/
d
;
printf
(
"CAST set_key per sec = %12.2f (%9.3fuS)
\n
"
,
a
,
1.0e6
/
a
);
printf
(
"CAST raw ecb bytes per sec = %12.2f (%9.3fuS)
\n
"
,
b
,
8.0e6
/
b
);
printf
(
"CAST cbc bytes per sec = %12.2f (%9.3fuS)
\n
"
,
c
,
8.0e6
/
c
);
exit
(
0
);
#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
return
(
0
);
#endif
}
src/main/jni/openssl/crypto/cast/castopts.c
0 → 100644
View file @
374893f5
/* crypto/cast/castopts.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
* This is for machines with 64k code segment size restrictions. */
#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC))
#define TIMES
#endif
#include <stdio.h>
#include <openssl/e_os2.h>
#include OPENSSL_UNISTD_IO
OPENSSL_DECLARE_EXIT
#ifndef OPENSSL_SYS_NETWARE
#include <signal.h>
#endif
#ifndef _IRIX
#include <time.h>
#endif
#ifdef TIMES
#include <sys/types.h>
#include <sys/times.h>
#endif
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif
#if defined(sun) || defined(__ultrix)
#define _POSIX_SOURCE
#include <limits.h>
#include <sys/param.h>
#endif
#include <openssl/cast.h>
#define CAST_DEFAULT_OPTIONS
#undef E_CAST
#define CAST_encrypt CAST_encrypt_normal
#define CAST_decrypt CAST_decrypt_normal
#define CAST_cbc_encrypt CAST_cbc_encrypt_normal
#undef HEADER_CAST_LOCL_H
#include "c_enc.c"
#define CAST_PTR
#undef CAST_PTR2
#undef E_CAST
#undef CAST_encrypt
#undef CAST_decrypt
#undef CAST_cbc_encrypt
#define CAST_encrypt CAST_encrypt_ptr
#define CAST_decrypt CAST_decrypt_ptr
#define CAST_cbc_encrypt CAST_cbc_encrypt_ptr
#undef HEADER_CAST_LOCL_H
#include "c_enc.c"
#undef CAST_PTR
#define CAST_PTR2
#undef E_CAST
#undef CAST_encrypt
#undef CAST_decrypt
#undef CAST_cbc_encrypt
#define CAST_encrypt CAST_encrypt_ptr2
#define CAST_decrypt CAST_decrypt_ptr2
#define CAST_cbc_encrypt CAST_cbc_encrypt_ptr2
#undef HEADER_CAST_LOCL_H
#include "c_enc.c"
/* The following if from times(3) man page. It may need to be changed */
#ifndef HZ
# ifndef CLK_TCK
# ifndef _BSD_CLK_TCK_
/* FreeBSD fix */
# define HZ 100.0
# else
/* _BSD_CLK_TCK_ */
# define HZ ((double)_BSD_CLK_TCK_)
# endif
# else
/* CLK_TCK */
# define HZ ((double)CLK_TCK)
# endif
#endif
#define BUFSIZE ((long)1024)
long
run
=
0
;
double
Time_F
(
int
s
);
#ifdef SIGALRM
#if defined(__STDC__) || defined(sgi)
#define SIGRETTYPE void
#else
#define SIGRETTYPE int
#endif
SIGRETTYPE
sig_done
(
int
sig
);
SIGRETTYPE
sig_done
(
int
sig
)
{
signal
(
SIGALRM
,
sig_done
);
run
=
0
;
#ifdef LINT
sig
=
sig
;
#endif
}
#endif
#define START 0
#define STOP 1
double
Time_F
(
int
s
)
{
double
ret
;
#ifdef TIMES
static
struct
tms
tstart
,
tend
;
if
(
s
==
START
)
{
times
(
&
tstart
);
return
(
0
);
}
else
{
times
(
&
tend
);
ret
=
((
double
)(
tend
.
tms_utime
-
tstart
.
tms_utime
))
/
HZ
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#else
/* !times() */
static
struct
timeb
tstart
,
tend
;
long
i
;
if
(
s
==
START
)
{
ftime
(
&
tstart
);
return
(
0
);
}
else
{
ftime
(
&
tend
);
i
=
(
long
)
tend
.
millitm
-
(
long
)
tstart
.
millitm
;
ret
=
((
double
)(
tend
.
time
-
tstart
.
time
))
+
((
double
)
i
)
/
1000
.
0
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#endif
}
#ifdef SIGALRM
#define print_name(name) fprintf(stderr,"Doing %s's for 10 seconds\n",name); alarm(10);
#else
#define print_name(name) fprintf(stderr,"Doing %s %ld times\n",name,cb);
#endif
#define time_it(func,name,index) \
print_name(name); \
Time_F(START); \
for (count=0,run=1; COND(cb); count+=4) \
{ \
unsigned long d[2]; \
func(d,&sch); \
func(d,&sch); \
func(d,&sch); \
func(d,&sch); \
} \
tm[index]=Time_F(STOP); \
fprintf(stderr,"%ld %s's in %.2f second\n",count,name,tm[index]); \
tm[index]=((double)COUNT(cb))/tm[index];
#define print_it(name,index) \
fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \
tm[index]*8,1.0e6/tm[index]);
int
main
(
int
argc
,
char
**
argv
)
{
long
count
;
static
unsigned
char
buf
[
BUFSIZE
];
static
char
key
[
16
]
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x9a
,
0xbc
,
0xde
,
0xf0
,
0x12
,
0x34
,
0x56
,
0x78
,
0x9a
,
0xbc
,
0xde
,
0xf0
};
CAST_KEY
sch
;
double
d
,
tm
[
16
],
max
=
0
;
int
rank
[
16
];
char
*
str
[
16
];
int
max_idx
=
0
,
i
,
num
=
0
,
j
;
#ifndef SIGALARM
long
ca
,
cb
,
cc
,
cd
,
ce
;
#endif
for
(
i
=
0
;
i
<
12
;
i
++
)
{
tm
[
i
]
=
0
.
0
;
rank
[
i
]
=
0
;
}
#ifndef TIMES
fprintf
(
stderr
,
"To get the most accurate results, try to run this
\n
"
);
fprintf
(
stderr
,
"program when this computer is idle.
\n
"
);
#endif
CAST_set_key
(
&
sch
,
16
,
key
);
#ifndef SIGALRM
fprintf
(
stderr
,
"First we calculate the approximate speed ...
\n
"
);
count
=
10
;
do
{
long
i
;
unsigned
long
data
[
2
];
count
*=
2
;
Time_F
(
START
);
for
(
i
=
count
;
i
;
i
--
)
CAST_encrypt
(
data
,
&
sch
);
d
=
Time_F
(
STOP
);
}
while
(
d
<
3
.
0
);
ca
=
count
;
cb
=
count
*
3
;
cc
=
count
*
3
*
8
/
BUFSIZE
+
1
;
cd
=
count
*
8
/
BUFSIZE
+
1
;
ce
=
count
/
20
+
1
;
#define COND(d) (count != (d))
#define COUNT(d) (d)
#else
#define COND(c) (run)
#define COUNT(d) (count)
signal
(
SIGALRM
,
sig_done
);
alarm
(
10
);
#endif
time_it
(
CAST_encrypt_normal
,
"CAST_encrypt_normal "
,
0
);
time_it
(
CAST_encrypt_ptr
,
"CAST_encrypt_ptr "
,
1
);
time_it
(
CAST_encrypt_ptr2
,
"CAST_encrypt_ptr2 "
,
2
);
num
+=
3
;
str
[
0
]
=
"<nothing>"
;
print_it
(
"CAST_encrypt_normal "
,
0
);
max
=
tm
[
0
];
max_idx
=
0
;
str
[
1
]
=
"ptr "
;
print_it
(
"CAST_encrypt_ptr "
,
1
);
if
(
max
<
tm
[
1
])
{
max
=
tm
[
1
];
max_idx
=
1
;
}
str
[
2
]
=
"ptr2 "
;
print_it
(
"CAST_encrypt_ptr2 "
,
2
);
if
(
max
<
tm
[
2
])
{
max
=
tm
[
2
];
max_idx
=
2
;
}
printf
(
"options CAST ecb/s
\n
"
);
printf
(
"%s %12.2f 100.0%%
\n
"
,
str
[
max_idx
],
tm
[
max_idx
]);
d
=
tm
[
max_idx
];
tm
[
max_idx
]
=
-
2
.
0
;
max
=
-
1
.
0
;
for
(;;)
{
for
(
i
=
0
;
i
<
3
;
i
++
)
{
if
(
max
<
tm
[
i
])
{
max
=
tm
[
i
];
j
=
i
;
}
}
if
(
max
<
0
.
0
)
break
;
printf
(
"%s %12.2f %4.1f%%
\n
"
,
str
[
j
],
tm
[
j
],
tm
[
j
]
/
d
*
100
.
0
);
tm
[
j
]
=
-
2
.
0
;
max
=
-
1
.
0
;
}
switch
(
max_idx
)
{
case
0
:
printf
(
"-DCAST_DEFAULT_OPTIONS
\n
"
);
break
;
case
1
:
printf
(
"-DCAST_PTR
\n
"
);
break
;
case
2
:
printf
(
"-DCAST_PTR2
\n
"
);
break
;
}
exit
(
0
);
#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
return
(
0
);
#endif
}
src/main/jni/openssl/crypto/cast/casts.cpp
0 → 100644
View file @
374893f5
//
// gettsc.inl
//
// gives access to the Pentium's (secret) cycle counter
//
// This software was written by Leonard Janke (janke@unixg.ubc.ca)
// in 1996-7 and is entered, by him, into the public domain.
#if defined(__WATCOMC__)
void
GetTSC
(
unsigned
long
&
);
#pragma aux GetTSC = 0x0f 0x31 "mov [edi], eax" parm [edi] modify [edx eax];
#elif defined(__GNUC__)
inline
void
GetTSC
(
unsigned
long
&
tsc
)
{
asm
volatile
(
".byte 15, 49
\n\t
"
:
"=eax"
(
tsc
)
:
:
"%edx"
,
"%eax"
);
}
#elif defined(_MSC_VER)
inline
void
GetTSC
(
unsigned
long
&
tsc
)
{
unsigned
long
a
;
__asm
_emit
0
fh
__asm
_emit
31h
__asm
mov
a
,
eax
;
tsc
=
a
;
}
#endif
#include <stdio.h>
#include <stdlib.h>
#include <openssl/cast.h>
void
main
(
int
argc
,
char
*
argv
[])
{
CAST_KEY
key
;
unsigned
long
s1
,
s2
,
e1
,
e2
;
unsigned
long
data
[
2
];
int
i
,
j
;
static
unsigned
char
d
[
16
]
=
{
0x01
,
0x23
,
0x45
,
0x67
,
0x89
,
0xAB
,
0xCD
,
0xEF
};
CAST_set_key
(
&
key
,
16
,
d
);
for
(
j
=
0
;
j
<
6
;
j
++
)
{
for
(
i
=
0
;
i
<
1000
;
i
++
)
/**/
{
CAST_encrypt
(
&
data
[
0
],
&
key
);
GetTSC
(
s1
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
GetTSC
(
e1
);
GetTSC
(
s2
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
GetTSC
(
e2
);
CAST_encrypt
(
&
data
[
0
],
&
key
);
}
printf
(
"cast %d %d (%d)
\n
"
,
e1
-
s1
,
e2
-
s2
,((
e2
-
s2
)
-
(
e1
-
s1
)));
}
}
src/main/jni/openssl/crypto/cast/casttest.c
0 → 100644
View file @
374893f5
/* crypto/cast/casttest.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <openssl/opensslconf.h>
/* To see if OPENSSL_NO_CAST is defined */
#include "../e_os.h"
#ifdef OPENSSL_NO_CAST
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"No CAST support
\n
"
);
return
(
0
);
}
#else
#include <openssl/cast.h>
#define FULL_TEST
static
unsigned
char
k
[
16
]
=
{
0x01
,
0x23
,
0x45
,
0x67
,
0x12
,
0x34
,
0x56
,
0x78
,
0x23
,
0x45
,
0x67
,
0x89
,
0x34
,
0x56
,
0x78
,
0x9A
};
static
unsigned
char
in
[
8
]
=
{
0x01
,
0x23
,
0x45
,
0x67
,
0x89
,
0xAB
,
0xCD
,
0xEF
};
static
int
k_len
[
3
]
=
{
16
,
10
,
5
};
static
unsigned
char
c
[
3
][
8
]
=
{
{
0x23
,
0x8B
,
0x4F
,
0xE5
,
0x84
,
0x7E
,
0x44
,
0xB2
},
{
0xEB
,
0x6A
,
0x71
,
0x1A
,
0x2C
,
0x02
,
0x27
,
0x1B
},
{
0x7A
,
0xC8
,
0x16
,
0xD1
,
0x6E
,
0x9B
,
0x30
,
0x2E
},
};
static
unsigned
char
out
[
80
];
static
unsigned
char
in_a
[
16
]
=
{
0x01
,
0x23
,
0x45
,
0x67
,
0x12
,
0x34
,
0x56
,
0x78
,
0x23
,
0x45
,
0x67
,
0x89
,
0x34
,
0x56
,
0x78
,
0x9A
};
static
unsigned
char
in_b
[
16
]
=
{
0x01
,
0x23
,
0x45
,
0x67
,
0x12
,
0x34
,
0x56
,
0x78
,
0x23
,
0x45
,
0x67
,
0x89
,
0x34
,
0x56
,
0x78
,
0x9A
};
static
unsigned
char
c_a
[
16
]
=
{
0xEE
,
0xA9
,
0xD0
,
0xA2
,
0x49
,
0xFD
,
0x3B
,
0xA6
,
0xB3
,
0x43
,
0x6F
,
0xB8
,
0x9D
,
0x6D
,
0xCA
,
0x92
};
static
unsigned
char
c_b
[
16
]
=
{
0xB2
,
0xC9
,
0x5E
,
0xB0
,
0x0C
,
0x31
,
0xAD
,
0x71
,
0x80
,
0xAC
,
0x05
,
0xB8
,
0xE8
,
0x3D
,
0x69
,
0x6E
};
#if 0
char *text="Hello to all people out there";
static unsigned char cfb_key[16]={
0xe1,0xf0,0xc3,0xd2,0xa5,0xb4,0x87,0x96,
0x69,0x78,0x4b,0x5a,0x2d,0x3c,0x0f,0x1e,
};
static unsigned char cfb_iv[80]={0x34,0x12,0x78,0x56,0xab,0x90,0xef,0xcd};
static unsigned char cfb_buf1[40],cfb_buf2[40],cfb_tmp[8];
#define CFB_TEST_SIZE 24
static unsigned char plain[CFB_TEST_SIZE]=
{
0x4e,0x6f,0x77,0x20,0x69,0x73,
0x20,0x74,0x68,0x65,0x20,0x74,
0x69,0x6d,0x65,0x20,0x66,0x6f,
0x72,0x20,0x61,0x6c,0x6c,0x20
};
static unsigned char cfb_cipher64[CFB_TEST_SIZE]={
0x59,0xD8,0xE2,0x65,0x00,0x58,0x6C,0x3F,
0x2C,0x17,0x25,0xD0,0x1A,0x38,0xB7,0x2A,
0x39,0x61,0x37,0xDC,0x79,0xFB,0x9F,0x45
/* 0xF9,0x78,0x32,0xB5,0x42,0x1A,0x6B,0x38,
0x9A,0x44,0xD6,0x04,0x19,0x43,0xC4,0xD9,
0x3D,0x1E,0xAE,0x47,0xFC,0xCF,0x29,0x0B,*/
};
#endif
int
main
(
int
argc
,
char
*
argv
[])
{
#ifdef FULL_TEST
long
l
;
CAST_KEY
key_b
;
#endif
int
i
,
z
,
err
=
0
;
CAST_KEY
key
;
for
(
z
=
0
;
z
<
3
;
z
++
)
{
CAST_set_key
(
&
key
,
k_len
[
z
],
k
);
CAST_ecb_encrypt
(
in
,
out
,
&
key
,
CAST_ENCRYPT
);
if
(
memcmp
(
out
,
&
(
c
[
z
][
0
]),
8
)
!=
0
)
{
printf
(
"ecb cast error encrypting for keysize %d
\n
"
,
k_len
[
z
]
*
8
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
out
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
c
[
z
][
i
]);
err
=
20
;
printf
(
"
\n
"
);
}
CAST_ecb_encrypt
(
out
,
out
,
&
key
,
CAST_DECRYPT
);
if
(
memcmp
(
out
,
in
,
8
)
!=
0
)
{
printf
(
"ecb cast error decrypting for keysize %d
\n
"
,
k_len
[
z
]
*
8
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
out
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
in
[
i
]);
printf
(
"
\n
"
);
err
=
3
;
}
}
if
(
err
==
0
)
printf
(
"ecb cast5 ok
\n
"
);
#ifdef FULL_TEST
{
unsigned
char
out_a
[
16
],
out_b
[
16
];
static
char
*
hex
=
"0123456789ABCDEF"
;
printf
(
"This test will take some time...."
);
fflush
(
stdout
);
memcpy
(
out_a
,
in_a
,
sizeof
(
in_a
));
memcpy
(
out_b
,
in_b
,
sizeof
(
in_b
));
i
=
1
;
for
(
l
=
0
;
l
<
1000000L
;
l
++
)
{
CAST_set_key
(
&
key_b
,
16
,
out_b
);
CAST_ecb_encrypt
(
&
(
out_a
[
0
]),
&
(
out_a
[
0
]),
&
key_b
,
CAST_ENCRYPT
);
CAST_ecb_encrypt
(
&
(
out_a
[
8
]),
&
(
out_a
[
8
]),
&
key_b
,
CAST_ENCRYPT
);
CAST_set_key
(
&
key
,
16
,
out_a
);
CAST_ecb_encrypt
(
&
(
out_b
[
0
]),
&
(
out_b
[
0
]),
&
key
,
CAST_ENCRYPT
);
CAST_ecb_encrypt
(
&
(
out_b
[
8
]),
&
(
out_b
[
8
]),
&
key
,
CAST_ENCRYPT
);
if
((
l
&
0xffff
)
==
0xffff
)
{
printf
(
"%c"
,
hex
[
i
&
0x0f
]);
fflush
(
stdout
);
i
++
;
}
}
if
(
(
memcmp
(
out_a
,
c_a
,
sizeof
(
c_a
))
!=
0
)
||
(
memcmp
(
out_b
,
c_b
,
sizeof
(
c_b
))
!=
0
))
{
printf
(
"
\n
"
);
printf
(
"Error
\n
"
);
printf
(
"A out ="
);
for
(
i
=
0
;
i
<
16
;
i
++
)
printf
(
"%02X "
,
out_a
[
i
]);
printf
(
"
\n
actual="
);
for
(
i
=
0
;
i
<
16
;
i
++
)
printf
(
"%02X "
,
c_a
[
i
]);
printf
(
"
\n
"
);
printf
(
"B out ="
);
for
(
i
=
0
;
i
<
16
;
i
++
)
printf
(
"%02X "
,
out_b
[
i
]);
printf
(
"
\n
actual="
);
for
(
i
=
0
;
i
<
16
;
i
++
)
printf
(
"%02X "
,
c_b
[
i
]);
printf
(
"
\n
"
);
}
else
printf
(
" ok
\n
"
);
}
#endif
EXIT
(
err
);
return
(
err
);
}
#endif
src/main/jni/openssl/crypto/idea/Makefile
0 → 100644
View file @
374893f5
#
# OpenSSL/crypto/idea/Makefile
#
DIR
=
idea
TOP
=
../..
CC
=
cc
INCLUDES
=
CFLAG
=
-g
MAKEFILE
=
Makefile
AR
=
ar r
CFLAGS
=
$(INCLUDES)
$(CFLAG)
GENERAL
=
Makefile
TEST
=
ideatest.c
APPS
=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
i_cbc.c i_cfb64.c i_ofb64.c i_ecb.c i_skey.c
LIBOBJ
=
i_cbc.o i_cfb64.o i_ofb64.o i_ecb.o i_skey.o
SRC
=
$(LIBSRC)
EXHEADER
=
idea.h
HEADER
=
idea_lcl.h
$(EXHEADER)
ALL
=
$(GENERAL)
$(SRC)
$(HEADER)
top
:
(
cd
../..
;
$(MAKE)
DIRS
=
crypto
SDIRS
=
$(DIR)
sub_all
)
all
:
lib
lib
:
$(LIBOBJ)
$(AR)
$(LIB)
$(LIBOBJ)
$(RANLIB)
$(LIB)
||
echo
Never mind.
@
touch
lib
files
:
$(PERL)
$(TOP)
/util/files.pl Makefile
>>
$(TOP)
/MINFO
links
:
@
$(PERL)
$(TOP)
/util/mklink.pl ../../include/openssl
$(EXHEADER)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../test
$(TEST)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../apps
$(APPS)
install
:
@
[
-n
"
$(INSTALLTOP)
"
]
# should be set by top Makefile...
@
headerlist
=
"
$(EXHEADER)
"
;
for
i
in
$$
headerlist
;
\
do
\
(
cp
$$
i
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
;
\
chmod
644
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
)
;
\
done
;
tags
:
ctags
$(SRC)
tests
:
lint
:
lint
-DLINT
$(INCLUDES)
$(SRC)
>
fluff
depend
:
@
[
-n
"
$(MAKEDEPEND)
"
]
# should be set by upper Makefile...
$(MAKEDEPEND)
--
$(CFLAG)
$(INCLUDES)
$(DEPFLAG)
--
$(PROGS)
$(LIBSRC)
dclean
:
$(PERL)
-pe
'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}'
$(MAKEFILE)
>
Makefile.new
mv
-f
Makefile.new
$(MAKEFILE)
clean
:
rm
-f
*
.o
*
.obj lib tags core .pure .nfs
*
*
.old
*
.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
i_cbc.o
:
../../include/openssl/idea.h ../../include/openssl/opensslconf.h
i_cbc.o
:
i_cbc.c idea_lcl.h
i_cfb64.o
:
../../include/openssl/idea.h ../../include/openssl/opensslconf.h
i_cfb64.o
:
i_cfb64.c idea_lcl.h
i_ecb.o
:
../../include/openssl/idea.h ../../include/openssl/opensslconf.h
i_ecb.o
:
../../include/openssl/opensslv.h i_ecb.c idea_lcl.h
i_ofb64.o
:
../../include/openssl/idea.h ../../include/openssl/opensslconf.h
i_ofb64.o
:
i_ofb64.c idea_lcl.h
i_skey.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
i_skey.o
:
../../include/openssl/idea.h ../../include/openssl/opensslconf.h
i_skey.o
:
../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
i_skey.o
:
../../include/openssl/safestack.h ../../include/openssl/stack.h
i_skey.o
:
../../include/openssl/symhacks.h i_skey.c idea_lcl.h
src/main/jni/openssl/crypto/idea/i_cbc.c
0 → 100644
View file @
374893f5
/* crypto/idea/i_cbc.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/idea.h>
#include "idea_lcl.h"
void
idea_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
IDEA_KEY_SCHEDULE
*
ks
,
unsigned
char
*
iv
,
int
encrypt
)
{
register
unsigned
long
tin0
,
tin1
;
register
unsigned
long
tout0
,
tout1
,
xor0
,
xor1
;
register
long
l
=
length
;
unsigned
long
tin
[
2
];
if
(
encrypt
)
{
n2l
(
iv
,
tout0
);
n2l
(
iv
,
tout1
);
iv
-=
8
;
for
(
l
-=
8
;
l
>=
0
;
l
-=
8
)
{
n2l
(
in
,
tin0
);
n2l
(
in
,
tin1
);
tin0
^=
tout0
;
tin1
^=
tout1
;
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
idea_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
];
l2n
(
tout0
,
out
);
tout1
=
tin
[
1
];
l2n
(
tout1
,
out
);
}
if
(
l
!=
-
8
)
{
n2ln
(
in
,
tin0
,
tin1
,
l
+
8
);
tin0
^=
tout0
;
tin1
^=
tout1
;
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
idea_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
];
l2n
(
tout0
,
out
);
tout1
=
tin
[
1
];
l2n
(
tout1
,
out
);
}
l2n
(
tout0
,
iv
);
l2n
(
tout1
,
iv
);
}
else
{
n2l
(
iv
,
xor0
);
n2l
(
iv
,
xor1
);
iv
-=
8
;
for
(
l
-=
8
;
l
>=
0
;
l
-=
8
)
{
n2l
(
in
,
tin0
);
tin
[
0
]
=
tin0
;
n2l
(
in
,
tin1
);
tin
[
1
]
=
tin1
;
idea_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
]
^
xor0
;
tout1
=
tin
[
1
]
^
xor1
;
l2n
(
tout0
,
out
);
l2n
(
tout1
,
out
);
xor0
=
tin0
;
xor1
=
tin1
;
}
if
(
l
!=
-
8
)
{
n2l
(
in
,
tin0
);
tin
[
0
]
=
tin0
;
n2l
(
in
,
tin1
);
tin
[
1
]
=
tin1
;
idea_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
]
^
xor0
;
tout1
=
tin
[
1
]
^
xor1
;
l2nn
(
tout0
,
tout1
,
out
,
l
+
8
);
xor0
=
tin0
;
xor1
=
tin1
;
}
l2n
(
xor0
,
iv
);
l2n
(
xor1
,
iv
);
}
tin0
=
tin1
=
tout0
=
tout1
=
xor0
=
xor1
=
0
;
tin
[
0
]
=
tin
[
1
]
=
0
;
}
void
idea_encrypt
(
unsigned
long
*
d
,
IDEA_KEY_SCHEDULE
*
key
)
{
register
IDEA_INT
*
p
;
register
unsigned
long
x1
,
x2
,
x3
,
x4
,
t0
,
t1
,
ul
;
x2
=
d
[
0
];
x1
=
(
x2
>>
16
);
x4
=
d
[
1
];
x3
=
(
x4
>>
16
);
p
=
&
(
key
->
data
[
0
][
0
]);
E_IDEA
(
0
);
E_IDEA
(
1
);
E_IDEA
(
2
);
E_IDEA
(
3
);
E_IDEA
(
4
);
E_IDEA
(
5
);
E_IDEA
(
6
);
E_IDEA
(
7
);
x1
&=
0xffff
;
idea_mul
(
x1
,
x1
,
*
p
,
ul
);
p
++
;
t0
=
x3
+
*
(
p
++
);
t1
=
x2
+
*
(
p
++
);
x4
&=
0xffff
;
idea_mul
(
x4
,
x4
,
*
p
,
ul
);
d
[
0
]
=
(
t0
&
0xffff
)
|
((
x1
&
0xffff
)
<<
16
);
d
[
1
]
=
(
x4
&
0xffff
)
|
((
t1
&
0xffff
)
<<
16
);
}
src/main/jni/openssl/crypto/idea/i_cfb64.c
0 → 100644
View file @
374893f5
/* crypto/idea/i_cfb64.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/idea.h>
#include "idea_lcl.h"
/* The input and output encrypted as though 64bit cfb mode is being
* used. The extra state information to record how much of the
* 64bit block we have used is contained in *num;
*/
void
idea_cfb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
IDEA_KEY_SCHEDULE
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
,
int
encrypt
)
{
register
unsigned
long
v0
,
v1
,
t
;
register
int
n
=
*
num
;
register
long
l
=
length
;
unsigned
long
ti
[
2
];
unsigned
char
*
iv
,
c
,
cc
;
iv
=
(
unsigned
char
*
)
ivec
;
if
(
encrypt
)
{
while
(
l
--
)
{
if
(
n
==
0
)
{
n2l
(
iv
,
v0
);
ti
[
0
]
=
v0
;
n2l
(
iv
,
v1
);
ti
[
1
]
=
v1
;
idea_encrypt
((
unsigned
long
*
)
ti
,
schedule
);
iv
=
(
unsigned
char
*
)
ivec
;
t
=
ti
[
0
];
l2n
(
t
,
iv
);
t
=
ti
[
1
];
l2n
(
t
,
iv
);
iv
=
(
unsigned
char
*
)
ivec
;
}
c
=
*
(
in
++
)
^
iv
[
n
];
*
(
out
++
)
=
c
;
iv
[
n
]
=
c
;
n
=
(
n
+
1
)
&
0x07
;
}
}
else
{
while
(
l
--
)
{
if
(
n
==
0
)
{
n2l
(
iv
,
v0
);
ti
[
0
]
=
v0
;
n2l
(
iv
,
v1
);
ti
[
1
]
=
v1
;
idea_encrypt
((
unsigned
long
*
)
ti
,
schedule
);
iv
=
(
unsigned
char
*
)
ivec
;
t
=
ti
[
0
];
l2n
(
t
,
iv
);
t
=
ti
[
1
];
l2n
(
t
,
iv
);
iv
=
(
unsigned
char
*
)
ivec
;
}
cc
=
*
(
in
++
);
c
=
iv
[
n
];
iv
[
n
]
=
cc
;
*
(
out
++
)
=
c
^
cc
;
n
=
(
n
+
1
)
&
0x07
;
}
}
v0
=
v1
=
ti
[
0
]
=
ti
[
1
]
=
t
=
c
=
cc
=
0
;
*
num
=
n
;
}
src/main/jni/openssl/crypto/idea/i_ecb.c
0 → 100644
View file @
374893f5
/* crypto/idea/i_ecb.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/idea.h>
#include "idea_lcl.h"
#include <openssl/opensslv.h>
const
char
IDEA_version
[]
=
"IDEA"
OPENSSL_VERSION_PTEXT
;
const
char
*
idea_options
(
void
)
{
if
(
sizeof
(
short
)
!=
sizeof
(
IDEA_INT
))
return
(
"idea(int)"
);
else
return
(
"idea(short)"
);
}
void
idea_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
IDEA_KEY_SCHEDULE
*
ks
)
{
unsigned
long
l0
,
l1
,
d
[
2
];
n2l
(
in
,
l0
);
d
[
0
]
=
l0
;
n2l
(
in
,
l1
);
d
[
1
]
=
l1
;
idea_encrypt
(
d
,
ks
);
l0
=
d
[
0
];
l2n
(
l0
,
out
);
l1
=
d
[
1
];
l2n
(
l1
,
out
);
l0
=
l1
=
d
[
0
]
=
d
[
1
]
=
0
;
}
src/main/jni/openssl/crypto/idea/i_ofb64.c
0 → 100644
View file @
374893f5
/* crypto/idea/i_ofb64.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/idea.h>
#include "idea_lcl.h"
/* The input and output encrypted as though 64bit ofb mode is being
* used. The extra state information to record how much of the
* 64bit block we have used is contained in *num;
*/
void
idea_ofb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
IDEA_KEY_SCHEDULE
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
)
{
register
unsigned
long
v0
,
v1
,
t
;
register
int
n
=
*
num
;
register
long
l
=
length
;
unsigned
char
d
[
8
];
register
char
*
dp
;
unsigned
long
ti
[
2
];
unsigned
char
*
iv
;
int
save
=
0
;
iv
=
(
unsigned
char
*
)
ivec
;
n2l
(
iv
,
v0
);
n2l
(
iv
,
v1
);
ti
[
0
]
=
v0
;
ti
[
1
]
=
v1
;
dp
=
(
char
*
)
d
;
l2n
(
v0
,
dp
);
l2n
(
v1
,
dp
);
while
(
l
--
)
{
if
(
n
==
0
)
{
idea_encrypt
((
unsigned
long
*
)
ti
,
schedule
);
dp
=
(
char
*
)
d
;
t
=
ti
[
0
];
l2n
(
t
,
dp
);
t
=
ti
[
1
];
l2n
(
t
,
dp
);
save
++
;
}
*
(
out
++
)
=
*
(
in
++
)
^
d
[
n
];
n
=
(
n
+
1
)
&
0x07
;
}
if
(
save
)
{
v0
=
ti
[
0
];
v1
=
ti
[
1
];
iv
=
(
unsigned
char
*
)
ivec
;
l2n
(
v0
,
iv
);
l2n
(
v1
,
iv
);
}
t
=
v0
=
v1
=
ti
[
0
]
=
ti
[
1
]
=
0
;
*
num
=
n
;
}
src/main/jni/openssl/crypto/idea/i_skey.c
0 → 100644
View file @
374893f5
/* crypto/idea/i_skey.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/crypto.h>
#include <openssl/idea.h>
#include "idea_lcl.h"
static
IDEA_INT
inverse
(
unsigned
int
xin
);
void
idea_set_encrypt_key
(
const
unsigned
char
*
key
,
IDEA_KEY_SCHEDULE
*
ks
)
#ifdef OPENSSL_FIPS
{
fips_cipher_abort
(
IDEA
);
private_idea_set_encrypt_key
(
key
,
ks
);
}
void
private_idea_set_encrypt_key
(
const
unsigned
char
*
key
,
IDEA_KEY_SCHEDULE
*
ks
)
#endif
{
int
i
;
register
IDEA_INT
*
kt
,
*
kf
,
r0
,
r1
,
r2
;
kt
=
&
(
ks
->
data
[
0
][
0
]);
n2s
(
key
,
kt
[
0
]);
n2s
(
key
,
kt
[
1
]);
n2s
(
key
,
kt
[
2
]);
n2s
(
key
,
kt
[
3
]);
n2s
(
key
,
kt
[
4
]);
n2s
(
key
,
kt
[
5
]);
n2s
(
key
,
kt
[
6
]);
n2s
(
key
,
kt
[
7
]);
kf
=
kt
;
kt
+=
8
;
for
(
i
=
0
;
i
<
6
;
i
++
)
{
r2
=
kf
[
1
];
r1
=
kf
[
2
];
*
(
kt
++
)
=
((
r2
<<
9
)
|
(
r1
>>
7
))
&
0xffff
;
r0
=
kf
[
3
];
*
(
kt
++
)
=
((
r1
<<
9
)
|
(
r0
>>
7
))
&
0xffff
;
r1
=
kf
[
4
];
*
(
kt
++
)
=
((
r0
<<
9
)
|
(
r1
>>
7
))
&
0xffff
;
r0
=
kf
[
5
];
*
(
kt
++
)
=
((
r1
<<
9
)
|
(
r0
>>
7
))
&
0xffff
;
r1
=
kf
[
6
];
*
(
kt
++
)
=
((
r0
<<
9
)
|
(
r1
>>
7
))
&
0xffff
;
r0
=
kf
[
7
];
*
(
kt
++
)
=
((
r1
<<
9
)
|
(
r0
>>
7
))
&
0xffff
;
r1
=
kf
[
0
];
if
(
i
>=
5
)
break
;
*
(
kt
++
)
=
((
r0
<<
9
)
|
(
r1
>>
7
))
&
0xffff
;
*
(
kt
++
)
=
((
r1
<<
9
)
|
(
r2
>>
7
))
&
0xffff
;
kf
+=
8
;
}
}
void
idea_set_decrypt_key
(
IDEA_KEY_SCHEDULE
*
ek
,
IDEA_KEY_SCHEDULE
*
dk
)
{
int
r
;
register
IDEA_INT
*
fp
,
*
tp
,
t
;
tp
=
&
(
dk
->
data
[
0
][
0
]);
fp
=
&
(
ek
->
data
[
8
][
0
]);
for
(
r
=
0
;
r
<
9
;
r
++
)
{
*
(
tp
++
)
=
inverse
(
fp
[
0
]);
*
(
tp
++
)
=
((
int
)(
0x10000L
-
fp
[
2
])
&
0xffff
);
*
(
tp
++
)
=
((
int
)(
0x10000L
-
fp
[
1
])
&
0xffff
);
*
(
tp
++
)
=
inverse
(
fp
[
3
]);
if
(
r
==
8
)
break
;
fp
-=
6
;
*
(
tp
++
)
=
fp
[
4
];
*
(
tp
++
)
=
fp
[
5
];
}
tp
=
&
(
dk
->
data
[
0
][
0
]);
t
=
tp
[
1
];
tp
[
1
]
=
tp
[
2
];
tp
[
2
]
=
t
;
t
=
tp
[
49
];
tp
[
49
]
=
tp
[
50
];
tp
[
50
]
=
t
;
}
/* taken directly from the 'paper' I'll have a look at it later */
static
IDEA_INT
inverse
(
unsigned
int
xin
)
{
long
n1
,
n2
,
q
,
r
,
b1
,
b2
,
t
;
if
(
xin
==
0
)
b2
=
0
;
else
{
n1
=
0x10001
;
n2
=
xin
;
b2
=
1
;
b1
=
0
;
do
{
r
=
(
n1
%
n2
);
q
=
(
n1
-
r
)
/
n2
;
if
(
r
==
0
)
{
if
(
b2
<
0
)
b2
=
0x10001
+
b2
;
}
else
{
n1
=
n2
;
n2
=
r
;
t
=
b2
;
b2
=
b1
-
q
*
b2
;
b1
=
t
;
}
}
while
(
r
!=
0
);
}
return
((
IDEA_INT
)
b2
);
}
src/main/jni/openssl/crypto/idea/idea.h
0 → 100644
View file @
374893f5
/* crypto/idea/idea.h */
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#ifndef HEADER_IDEA_H
#define HEADER_IDEA_H
#include <openssl/opensslconf.h>
/* IDEA_INT, OPENSSL_NO_IDEA */
#ifdef OPENSSL_NO_IDEA
#error IDEA is disabled.
#endif
#define IDEA_ENCRYPT 1
#define IDEA_DECRYPT 0
#define IDEA_BLOCK 8
#define IDEA_KEY_LENGTH 16
#ifdef __cplusplus
extern
"C"
{
#endif
typedef
struct
idea_key_st
{
IDEA_INT
data
[
9
][
6
];
}
IDEA_KEY_SCHEDULE
;
const
char
*
idea_options
(
void
);
void
idea_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
IDEA_KEY_SCHEDULE
*
ks
);
#ifdef OPENSSL_FIPS
void
private_idea_set_encrypt_key
(
const
unsigned
char
*
key
,
IDEA_KEY_SCHEDULE
*
ks
);
#endif
void
idea_set_encrypt_key
(
const
unsigned
char
*
key
,
IDEA_KEY_SCHEDULE
*
ks
);
void
idea_set_decrypt_key
(
IDEA_KEY_SCHEDULE
*
ek
,
IDEA_KEY_SCHEDULE
*
dk
);
void
idea_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
IDEA_KEY_SCHEDULE
*
ks
,
unsigned
char
*
iv
,
int
enc
);
void
idea_cfb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
IDEA_KEY_SCHEDULE
*
ks
,
unsigned
char
*
iv
,
int
*
num
,
int
enc
);
void
idea_ofb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
IDEA_KEY_SCHEDULE
*
ks
,
unsigned
char
*
iv
,
int
*
num
);
void
idea_encrypt
(
unsigned
long
*
in
,
IDEA_KEY_SCHEDULE
*
ks
);
#ifdef __cplusplus
}
#endif
#endif
src/main/jni/openssl/crypto/idea/idea_lcl.h
0 → 100644
View file @
374893f5
/* crypto/idea/idea_lcl.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* The new form of this macro (check if the a*b == 0) was suggested by
* Colin Plumb <colin@nyx10.cs.du.edu> */
/* Removal of the inner if from from Wei Dai 24/4/96 */
#define idea_mul(r,a,b,ul) \
ul=(unsigned long)a*b; \
if (ul != 0) \
{ \
r=(ul&0xffff)-(ul>>16); \
r-=((r)>>16); \
} \
else \
r=(-(int)a-b+1);
/* assuming a or b is 0 and in range */
#ifdef undef
#define idea_mul(r,a,b,ul,sl) \
if (a == 0) r=(0x10001-b)&0xffff; \
else if (b == 0) r=(0x10001-a)&0xffff; \
else { \
ul=(unsigned long)a*b; \
sl=(ul&0xffff)-(ul>>16); \
if (sl <= 0) sl+=0x10001; \
r=sl; \
}
#endif
/* 7/12/95 - Many thanks to Rhys Weatherley <rweather@us.oracle.com>
* for pointing out that I was assuming little endian
* byte order for all quantities what idea
* actually used bigendian. No where in the spec does it mention
* this, it is all in terms of 16 bit numbers and even the example
* does not use byte streams for the input example :-(.
* If you byte swap each pair of input, keys and iv, the functions
* would produce the output as the old version :-(.
*/
/* NOTE - c is not incremented as per n2l */
#define n2ln(c,l1,l2,n) { \
c+=n; \
l1=l2=0; \
switch (n) { \
case 8: l2 =((unsigned long)(*(--(c)))) ; \
case 7: l2|=((unsigned long)(*(--(c))))<< 8; \
case 6: l2|=((unsigned long)(*(--(c))))<<16; \
case 5: l2|=((unsigned long)(*(--(c))))<<24; \
case 4: l1 =((unsigned long)(*(--(c)))) ; \
case 3: l1|=((unsigned long)(*(--(c))))<< 8; \
case 2: l1|=((unsigned long)(*(--(c))))<<16; \
case 1: l1|=((unsigned long)(*(--(c))))<<24; \
} \
}
/* NOTE - c is not incremented as per l2n */
#define l2nn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
case 4: *(--(c))=(unsigned char)(((l1) )&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
} \
}
#undef n2l
#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \
l|=((unsigned long)(*((c)++)))<<16L, \
l|=((unsigned long)(*((c)++)))<< 8L, \
l|=((unsigned long)(*((c)++))))
#undef l2n
#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
*((c)++)=(unsigned char)(((l) )&0xff))
#undef s2n
#define s2n(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff))
#undef n2s
#define n2s(c,l) (l =((IDEA_INT)(*((c)++)))<< 8L, \
l|=((IDEA_INT)(*((c)++))) )
#ifdef undef
/* NOTE - c is not incremented as per c2l */
#define c2ln(c,l1,l2,n) { \
c+=n; \
l1=l2=0; \
switch (n) { \
case 8: l2 =((unsigned long)(*(--(c))))<<24; \
case 7: l2|=((unsigned long)(*(--(c))))<<16; \
case 6: l2|=((unsigned long)(*(--(c))))<< 8; \
case 5: l2|=((unsigned long)(*(--(c)))); \
case 4: l1 =((unsigned long)(*(--(c))))<<24; \
case 3: l1|=((unsigned long)(*(--(c))))<<16; \
case 2: l1|=((unsigned long)(*(--(c))))<< 8; \
case 1: l1|=((unsigned long)(*(--(c)))); \
} \
}
/* NOTE - c is not incremented as per l2c */
#define l2cn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
} \
}
#undef c2s
#define c2s(c,l) (l =((unsigned long)(*((c)++))) , \
l|=((unsigned long)(*((c)++)))<< 8L)
#undef s2c
#define s2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff))
#undef c2l
#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
l|=((unsigned long)(*((c)++)))<< 8L, \
l|=((unsigned long)(*((c)++)))<<16L, \
l|=((unsigned long)(*((c)++)))<<24L)
#undef l2c
#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
*((c)++)=(unsigned char)(((l)>>24L)&0xff))
#endif
#define E_IDEA(num) \
x1&=0xffff; \
idea_mul(x1,x1,*p,ul); p++; \
x2+= *(p++); \
x3+= *(p++); \
x4&=0xffff; \
idea_mul(x4,x4,*p,ul); p++; \
t0=(x1^x3)&0xffff; \
idea_mul(t0,t0,*p,ul); p++; \
t1=(t0+(x2^x4))&0xffff; \
idea_mul(t1,t1,*p,ul); p++; \
t0+=t1; \
x1^=t1; \
x4^=t0; \
ul=x2^t0;
/* do the swap to x3 */
\
x2=x3^t1; \
x3=ul;
src/main/jni/openssl/crypto/idea/idea_spd.c
0 → 100644
View file @
374893f5
/* crypto/idea/idea_spd.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
#define TIMES
#endif
#include <stdio.h>
#include <openssl/e_os2.h>
#include OPENSSL_UNISTD_IO
OPENSSL_DECLARE_EXIT
#ifndef OPENSSL_SYS_NETWARE
#include <signal.h>
#endif
#ifndef _IRIX
#include <time.h>
#endif
#ifdef TIMES
#include <sys/types.h>
#include <sys/times.h>
#endif
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif
#if defined(sun) || defined(__ultrix)
#define _POSIX_SOURCE
#include <limits.h>
#include <sys/param.h>
#endif
#include <openssl/idea.h>
/* The following if from times(3) man page. It may need to be changed */
#ifndef HZ
#ifndef CLK_TCK
#define HZ 100.0
#else
/* CLK_TCK */
#define HZ ((double)CLK_TCK)
#endif
#endif
#define BUFSIZE ((long)1024)
long
run
=
0
;
double
Time_F
(
int
s
);
#ifdef SIGALRM
#if defined(__STDC__) || defined(sgi) || defined(_AIX)
#define SIGRETTYPE void
#else
#define SIGRETTYPE int
#endif
SIGRETTYPE
sig_done
(
int
sig
);
SIGRETTYPE
sig_done
(
int
sig
)
{
signal
(
SIGALRM
,
sig_done
);
run
=
0
;
#ifdef LINT
sig
=
sig
;
#endif
}
#endif
#define START 0
#define STOP 1
double
Time_F
(
int
s
)
{
double
ret
;
#ifdef TIMES
static
struct
tms
tstart
,
tend
;
if
(
s
==
START
)
{
times
(
&
tstart
);
return
(
0
);
}
else
{
times
(
&
tend
);
ret
=
((
double
)(
tend
.
tms_utime
-
tstart
.
tms_utime
))
/
HZ
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#else
/* !times() */
static
struct
timeb
tstart
,
tend
;
long
i
;
if
(
s
==
START
)
{
ftime
(
&
tstart
);
return
(
0
);
}
else
{
ftime
(
&
tend
);
i
=
(
long
)
tend
.
millitm
-
(
long
)
tstart
.
millitm
;
ret
=
((
double
)(
tend
.
time
-
tstart
.
time
))
+
((
double
)
i
)
/
1e3
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#endif
}
int
main
(
int
argc
,
char
**
argv
)
{
long
count
;
static
unsigned
char
buf
[
BUFSIZE
];
static
unsigned
char
key
[]
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x9a
,
0xbc
,
0xde
,
0xf0
,
0xfe
,
0xdc
,
0xba
,
0x98
,
0x76
,
0x54
,
0x32
,
0x10
,
};
IDEA_KEY_SCHEDULE
sch
;
double
a
,
aa
,
b
,
c
,
d
;
#ifndef SIGALRM
long
ca
,
cca
,
cb
,
cc
;
#endif
#ifndef TIMES
printf
(
"To get the most accurate results, try to run this
\n
"
);
printf
(
"program when this computer is idle.
\n
"
);
#endif
#ifndef SIGALRM
printf
(
"First we calculate the approximate speed ...
\n
"
);
idea_set_encrypt_key
(
key
,
&
sch
);
count
=
10
;
do
{
long
i
;
IDEA_INT
data
[
2
];
count
*=
2
;
Time_F
(
START
);
for
(
i
=
count
;
i
;
i
--
)
idea_encrypt
(
data
,
&
sch
);
d
=
Time_F
(
STOP
);
}
while
(
d
<
3
.
0
);
ca
=
count
/
4
;
cca
=
count
/
200
;
cb
=
count
;
cc
=
count
*
8
/
BUFSIZE
+
1
;
printf
(
"idea_set_encrypt_key %ld times
\n
"
,
ca
);
#define COND(d) (count <= (d))
#define COUNT(d) (d)
#else
#define COND(c) (run)
#define COUNT(d) (count)
signal
(
SIGALRM
,
sig_done
);
printf
(
"Doing idea_set_encrypt_key for 10 seconds
\n
"
);
alarm
(
10
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
ca
);
count
+=
4
)
{
idea_set_encrypt_key
(
key
,
&
sch
);
idea_set_encrypt_key
(
key
,
&
sch
);
idea_set_encrypt_key
(
key
,
&
sch
);
idea_set_encrypt_key
(
key
,
&
sch
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld idea idea_set_encrypt_key's in %.2f seconds
\n
"
,
count
,
d
);
a
=
((
double
)
COUNT
(
ca
))
/
d
;
#ifdef SIGALRM
printf
(
"Doing idea_set_decrypt_key for 10 seconds
\n
"
);
alarm
(
10
);
#else
printf
(
"Doing idea_set_decrypt_key %ld times
\n
"
,
cca
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cca
);
count
+=
4
)
{
idea_set_decrypt_key
(
&
sch
,
&
sch
);
idea_set_decrypt_key
(
&
sch
,
&
sch
);
idea_set_decrypt_key
(
&
sch
,
&
sch
);
idea_set_decrypt_key
(
&
sch
,
&
sch
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld idea idea_set_decrypt_key's in %.2f seconds
\n
"
,
count
,
d
);
aa
=
((
double
)
COUNT
(
cca
))
/
d
;
#ifdef SIGALRM
printf
(
"Doing idea_encrypt's for 10 seconds
\n
"
);
alarm
(
10
);
#else
printf
(
"Doing idea_encrypt %ld times
\n
"
,
cb
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cb
);
count
+=
4
)
{
unsigned
long
data
[
2
];
idea_encrypt
(
data
,
&
sch
);
idea_encrypt
(
data
,
&
sch
);
idea_encrypt
(
data
,
&
sch
);
idea_encrypt
(
data
,
&
sch
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld idea_encrypt's in %.2f second
\n
"
,
count
,
d
);
b
=
((
double
)
COUNT
(
cb
)
*
8
)
/
d
;
#ifdef SIGALRM
printf
(
"Doing idea_cbc_encrypt on %ld byte blocks for 10 seconds
\n
"
,
BUFSIZE
);
alarm
(
10
);
#else
printf
(
"Doing idea_cbc_encrypt %ld times on %ld byte blocks
\n
"
,
cc
,
BUFSIZE
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cc
);
count
++
)
idea_cbc_encrypt
(
buf
,
buf
,
BUFSIZE
,
&
sch
,
&
(
key
[
0
]),
IDEA_ENCRYPT
);
d
=
Time_F
(
STOP
);
printf
(
"%ld idea_cbc_encrypt's of %ld byte blocks in %.2f second
\n
"
,
count
,
BUFSIZE
,
d
);
c
=
((
double
)
COUNT
(
cc
)
*
BUFSIZE
)
/
d
;
printf
(
"IDEA set_encrypt_key per sec = %12.2f (%9.3fuS)
\n
"
,
a
,
1.0e6
/
a
);
printf
(
"IDEA set_decrypt_key per sec = %12.2f (%9.3fuS)
\n
"
,
aa
,
1.0e6
/
aa
);
printf
(
"IDEA raw ecb bytes per sec = %12.2f (%9.3fuS)
\n
"
,
b
,
8.0e6
/
b
);
printf
(
"IDEA cbc bytes per sec = %12.2f (%9.3fuS)
\n
"
,
c
,
8.0e6
/
c
);
exit
(
0
);
#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
return
(
0
);
#endif
}
src/main/jni/openssl/crypto/idea/ideatest.c
0 → 100644
View file @
374893f5
/* crypto/idea/ideatest.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "../e_os.h"
#ifdef OPENSSL_NO_IDEA
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"No IDEA support
\n
"
);
return
(
0
);
}
#else
#include <openssl/idea.h>
unsigned
char
k
[
16
]
=
{
0x00
,
0x01
,
0x00
,
0x02
,
0x00
,
0x03
,
0x00
,
0x04
,
0x00
,
0x05
,
0x00
,
0x06
,
0x00
,
0x07
,
0x00
,
0x08
};
unsigned
char
in
[
8
]
=
{
0x00
,
0x00
,
0x00
,
0x01
,
0x00
,
0x02
,
0x00
,
0x03
};
unsigned
char
c
[
8
]
=
{
0x11
,
0xFB
,
0xED
,
0x2B
,
0x01
,
0x98
,
0x6D
,
0xE5
};
unsigned
char
out
[
80
];
char
*
text
=
"Hello to all people out there"
;
static
unsigned
char
cfb_key
[
16
]
=
{
0xe1
,
0xf0
,
0xc3
,
0xd2
,
0xa5
,
0xb4
,
0x87
,
0x96
,
0x69
,
0x78
,
0x4b
,
0x5a
,
0x2d
,
0x3c
,
0x0f
,
0x1e
,
};
static
unsigned
char
cfb_iv
[
80
]
=
{
0x34
,
0x12
,
0x78
,
0x56
,
0xab
,
0x90
,
0xef
,
0xcd
};
static
unsigned
char
cfb_buf1
[
40
],
cfb_buf2
[
40
],
cfb_tmp
[
8
];
#define CFB_TEST_SIZE 24
static
unsigned
char
plain
[
CFB_TEST_SIZE
]
=
{
0x4e
,
0x6f
,
0x77
,
0x20
,
0x69
,
0x73
,
0x20
,
0x74
,
0x68
,
0x65
,
0x20
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x20
,
0x66
,
0x6f
,
0x72
,
0x20
,
0x61
,
0x6c
,
0x6c
,
0x20
};
static
unsigned
char
cfb_cipher64
[
CFB_TEST_SIZE
]
=
{
0x59
,
0xD8
,
0xE2
,
0x65
,
0x00
,
0x58
,
0x6C
,
0x3F
,
0x2C
,
0x17
,
0x25
,
0xD0
,
0x1A
,
0x38
,
0xB7
,
0x2A
,
0x39
,
0x61
,
0x37
,
0xDC
,
0x79
,
0xFB
,
0x9F
,
0x45
/* 0xF9,0x78,0x32,0xB5,0x42,0x1A,0x6B,0x38,
0x9A,0x44,0xD6,0x04,0x19,0x43,0xC4,0xD9,
0x3D,0x1E,0xAE,0x47,0xFC,0xCF,0x29,0x0B,*/
};
static
int
cfb64_test
(
unsigned
char
*
cfb_cipher
);
static
char
*
pt
(
unsigned
char
*
p
);
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
,
err
=
0
;
IDEA_KEY_SCHEDULE
key
,
dkey
;
unsigned
char
iv
[
8
];
idea_set_encrypt_key
(
k
,
&
key
);
idea_ecb_encrypt
(
in
,
out
,
&
key
);
if
(
memcmp
(
out
,
c
,
8
)
!=
0
)
{
printf
(
"ecb idea error encrypting
\n
"
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
out
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
c
[
i
]);
err
=
20
;
printf
(
"
\n
"
);
}
idea_set_decrypt_key
(
&
key
,
&
dkey
);
idea_ecb_encrypt
(
c
,
out
,
&
dkey
);
if
(
memcmp
(
out
,
in
,
8
)
!=
0
)
{
printf
(
"ecb idea error decrypting
\n
"
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
out
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
in
[
i
]);
printf
(
"
\n
"
);
err
=
3
;
}
if
(
err
==
0
)
printf
(
"ecb idea ok
\n
"
);
memcpy
(
iv
,
k
,
8
);
idea_cbc_encrypt
((
unsigned
char
*
)
text
,
out
,
strlen
(
text
)
+
1
,
&
key
,
iv
,
1
);
memcpy
(
iv
,
k
,
8
);
idea_cbc_encrypt
(
out
,
out
,
8
,
&
dkey
,
iv
,
0
);
idea_cbc_encrypt
(
&
(
out
[
8
]),
&
(
out
[
8
]),
strlen
(
text
)
+
1
-
8
,
&
dkey
,
iv
,
0
);
if
(
memcmp
(
text
,
out
,
strlen
(
text
)
+
1
)
!=
0
)
{
printf
(
"cbc idea bad
\n
"
);
err
=
4
;
}
else
printf
(
"cbc idea ok
\n
"
);
printf
(
"cfb64 idea "
);
if
(
cfb64_test
(
cfb_cipher64
))
{
printf
(
"bad
\n
"
);
err
=
5
;
}
else
printf
(
"ok
\n
"
);
#ifdef OPENSSL_SYS_NETWARE
if
(
err
)
printf
(
"ERROR: %d
\n
"
,
err
);
#endif
EXIT
(
err
);
return
(
err
);
}
static
int
cfb64_test
(
unsigned
char
*
cfb_cipher
)
{
IDEA_KEY_SCHEDULE
eks
,
dks
;
int
err
=
0
,
i
,
n
;
idea_set_encrypt_key
(
cfb_key
,
&
eks
);
idea_set_decrypt_key
(
&
eks
,
&
dks
);
memcpy
(
cfb_tmp
,
cfb_iv
,
8
);
n
=
0
;
idea_cfb64_encrypt
(
plain
,
cfb_buf1
,(
long
)
12
,
&
eks
,
cfb_tmp
,
&
n
,
IDEA_ENCRYPT
);
idea_cfb64_encrypt
(
&
(
plain
[
12
]),
&
(
cfb_buf1
[
12
]),
(
long
)
CFB_TEST_SIZE
-
12
,
&
eks
,
cfb_tmp
,
&
n
,
IDEA_ENCRYPT
);
if
(
memcmp
(
cfb_cipher
,
cfb_buf1
,
CFB_TEST_SIZE
)
!=
0
)
{
err
=
1
;
printf
(
"idea_cfb64_encrypt encrypt error
\n
"
);
for
(
i
=
0
;
i
<
CFB_TEST_SIZE
;
i
+=
8
)
printf
(
"%s
\n
"
,
pt
(
&
(
cfb_buf1
[
i
])));
}
memcpy
(
cfb_tmp
,
cfb_iv
,
8
);
n
=
0
;
idea_cfb64_encrypt
(
cfb_buf1
,
cfb_buf2
,(
long
)
17
,
&
eks
,
cfb_tmp
,
&
n
,
IDEA_DECRYPT
);
idea_cfb64_encrypt
(
&
(
cfb_buf1
[
17
]),
&
(
cfb_buf2
[
17
]),
(
long
)
CFB_TEST_SIZE
-
17
,
&
dks
,
cfb_tmp
,
&
n
,
IDEA_DECRYPT
);
if
(
memcmp
(
plain
,
cfb_buf2
,
CFB_TEST_SIZE
)
!=
0
)
{
err
=
1
;
printf
(
"idea_cfb_encrypt decrypt error
\n
"
);
for
(
i
=
0
;
i
<
24
;
i
+=
8
)
printf
(
"%s
\n
"
,
pt
(
&
(
cfb_buf2
[
i
])));
}
return
(
err
);
}
static
char
*
pt
(
unsigned
char
*
p
)
{
static
char
bufs
[
10
][
20
];
static
int
bnum
=
0
;
char
*
ret
;
int
i
;
static
char
*
f
=
"0123456789ABCDEF"
;
ret
=
&
(
bufs
[
bnum
++
][
0
]);
bnum
%=
10
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
ret
[
i
*
2
]
=
f
[(
p
[
i
]
>>
4
)
&
0xf
];
ret
[
i
*
2
+
1
]
=
f
[
p
[
i
]
&
0xf
];
}
ret
[
16
]
=
'\0'
;
return
(
ret
);
}
#endif
src/main/jni/openssl/crypto/idea/version
0 → 100644
View file @
374893f5
1.1 07/12/95 - eay
Many thanks to Rhys Weatherley <rweather@us.oracle.com>
for pointing out that I was assuming little endian byte
order for all quantities what idea actually used
bigendian. No where in the spec does it mention
this, it is all in terms of 16 bit numbers and even the example
does not use byte streams for the input example :-(.
If you byte swap each pair of input, keys and iv, the functions
would produce the output as the old version :-(.
1.0 ??/??/95 - eay
First version.
src/main/jni/openssl/crypto/md2/Makefile
0 → 100644
View file @
374893f5
#
# OpenSSL/crypto/md/Makefile
#
DIR
=
md2
TOP
=
../..
CC
=
cc
INCLUDES
=
CFLAG
=
-g
MAKEFILE
=
Makefile
AR
=
ar r
CFLAGS
=
$(INCLUDES)
$(CFLAG)
GENERAL
=
Makefile
TEST
=
md2test.c
APPS
=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
md2_dgst.c md2_one.c
LIBOBJ
=
md2_dgst.o md2_one.o
SRC
=
$(LIBSRC)
EXHEADER
=
md2.h
HEADER
=
$(EXHEADER)
ALL
=
$(GENERAL)
$(SRC)
$(HEADER)
top
:
(
cd
../..
;
$(MAKE)
DIRS
=
crypto
SDIRS
=
$(DIR)
sub_all
)
all
:
lib
lib
:
$(LIBOBJ)
$(AR)
$(LIB)
$(LIBOBJ)
$(RANLIB)
$(LIB)
||
echo
Never mind.
@
touch
lib
files
:
$(PERL)
$(TOP)
/util/files.pl Makefile
>>
$(TOP)
/MINFO
links
:
@
$(PERL)
$(TOP)
/util/mklink.pl ../../include/openssl
$(EXHEADER)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../test
$(TEST)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../apps
$(APPS)
install
:
@
[
-n
"
$(INSTALLTOP)
"
]
# should be set by top Makefile...
@
headerlist
=
"
$(EXHEADER)
"
;
for
i
in
$$
headerlist
;
\
do
\
(
cp
$$
i
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
;
\
chmod
644
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
)
;
\
done
;
tags
:
ctags
$(SRC)
tests
:
lint
:
lint
-DLINT
$(INCLUDES)
$(SRC)
>
fluff
depend
:
@
[
-n
"
$(MAKEDEPEND)
"
]
# should be set by upper Makefile...
$(MAKEDEPEND)
--
$(CFLAG)
$(INCLUDES)
$(DEPFLAG)
--
$(PROGS)
$(LIBSRC)
dclean
:
$(PERL)
-pe
'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}'
$(MAKEFILE)
>
Makefile.new
mv
-f
Makefile.new
$(MAKEFILE)
clean
:
rm
-f
*
.o
*
.obj lib tags core .pure .nfs
*
*
.old
*
.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
md2_dgst.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
md2_dgst.o
:
../../include/openssl/md2.h ../../include/openssl/opensslconf.h
md2_dgst.o
:
../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
md2_dgst.o
:
../../include/openssl/safestack.h ../../include/openssl/stack.h
md2_dgst.o
:
../../include/openssl/symhacks.h md2_dgst.c
md2_one.o
:
../../e_os.h ../../include/openssl/bio.h
md2_one.o
:
../../include/openssl/buffer.h ../../include/openssl/crypto.h
md2_one.o
:
../../include/openssl/e_os2.h ../../include/openssl/err.h
md2_one.o
:
../../include/openssl/lhash.h ../../include/openssl/md2.h
md2_one.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
md2_one.o
:
../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
md2_one.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
md2_one.o
:
../cryptlib.h md2_one.c
src/main/jni/openssl/crypto/md2/md2.c
0 → 100644
View file @
374893f5
/* crypto/md2/md2.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include <stdlib.h>
#include <openssl/md2.h>
#define BUFSIZE 1024*16
void
do_fp
(
FILE
*
f
);
void
pt
(
unsigned
char
*
md
);
int
read
(
int
,
void
*
,
unsigned
int
);
void
exit
(
int
);
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
,
err
=
0
;
FILE
*
IN
;
if
(
argc
==
1
)
{
do_fp
(
stdin
);
}
else
{
for
(
i
=
1
;
i
<
argc
;
i
++
)
{
IN
=
fopen
(
argv
[
i
],
"r"
);
if
(
IN
==
NULL
)
{
perror
(
argv
[
i
]);
err
++
;
continue
;
}
printf
(
"MD2(%s)= "
,
argv
[
i
]);
do_fp
(
IN
);
fclose
(
IN
);
}
}
exit
(
err
);
return
(
err
);
}
void
do_fp
(
FILE
*
f
)
{
MD2_CTX
c
;
unsigned
char
md
[
MD2_DIGEST_LENGTH
];
int
fd
,
i
;
static
unsigned
char
buf
[
BUFSIZE
];
fd
=
fileno
(
f
);
MD2_Init
(
&
c
);
for
(;;)
{
i
=
read
(
fd
,
buf
,
BUFSIZE
);
if
(
i
<=
0
)
break
;
MD2_Update
(
&
c
,
buf
,(
unsigned
long
)
i
);
}
MD2_Final
(
&
(
md
[
0
]),
&
c
);
pt
(
md
);
}
void
pt
(
unsigned
char
*
md
)
{
int
i
;
for
(
i
=
0
;
i
<
MD2_DIGEST_LENGTH
;
i
++
)
printf
(
"%02x"
,
md
[
i
]);
printf
(
"
\n
"
);
}
src/main/jni/openssl/crypto/md2/md2.h
0 → 100644
View file @
374893f5
/* crypto/md/md2.h */
/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#ifndef HEADER_MD2_H
#define HEADER_MD2_H
#include <openssl/opensslconf.h>
/* OPENSSL_NO_MD2, MD2_INT */
#ifdef OPENSSL_NO_MD2
#error MD2 is disabled.
#endif
#include <stddef.h>
#define MD2_DIGEST_LENGTH 16
#define MD2_BLOCK 16
#ifdef __cplusplus
extern
"C"
{
#endif
typedef
struct
MD2state_st
{
unsigned
int
num
;
unsigned
char
data
[
MD2_BLOCK
];
MD2_INT
cksm
[
MD2_BLOCK
];
MD2_INT
state
[
MD2_BLOCK
];
}
MD2_CTX
;
const
char
*
MD2_options
(
void
);
#ifdef OPENSSL_FIPS
int
private_MD2_Init
(
MD2_CTX
*
c
);
#endif
int
MD2_Init
(
MD2_CTX
*
c
);
int
MD2_Update
(
MD2_CTX
*
c
,
const
unsigned
char
*
data
,
size_t
len
);
int
MD2_Final
(
unsigned
char
*
md
,
MD2_CTX
*
c
);
unsigned
char
*
MD2
(
const
unsigned
char
*
d
,
size_t
n
,
unsigned
char
*
md
);
#ifdef __cplusplus
}
#endif
#endif
src/main/jni/openssl/crypto/md2/md2_dgst.c
0 → 100644
View file @
374893f5
/* crypto/md2/md2_dgst.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md2.h>
#include <openssl/opensslv.h>
#include <openssl/crypto.h>
const
char
MD2_version
[]
=
"MD2"
OPENSSL_VERSION_PTEXT
;
/* Implemented from RFC1319 The MD2 Message-Digest Algorithm
*/
#define UCHAR unsigned char
static
void
md2_block
(
MD2_CTX
*
c
,
const
unsigned
char
*
d
);
/* The magic S table - I have converted it to hex since it is
* basically just a random byte string. */
static
const
MD2_INT
S
[
256
]
=
{
0x29
,
0x2E
,
0x43
,
0xC9
,
0xA2
,
0xD8
,
0x7C
,
0x01
,
0x3D
,
0x36
,
0x54
,
0xA1
,
0xEC
,
0xF0
,
0x06
,
0x13
,
0x62
,
0xA7
,
0x05
,
0xF3
,
0xC0
,
0xC7
,
0x73
,
0x8C
,
0x98
,
0x93
,
0x2B
,
0xD9
,
0xBC
,
0x4C
,
0x82
,
0xCA
,
0x1E
,
0x9B
,
0x57
,
0x3C
,
0xFD
,
0xD4
,
0xE0
,
0x16
,
0x67
,
0x42
,
0x6F
,
0x18
,
0x8A
,
0x17
,
0xE5
,
0x12
,
0xBE
,
0x4E
,
0xC4
,
0xD6
,
0xDA
,
0x9E
,
0xDE
,
0x49
,
0xA0
,
0xFB
,
0xF5
,
0x8E
,
0xBB
,
0x2F
,
0xEE
,
0x7A
,
0xA9
,
0x68
,
0x79
,
0x91
,
0x15
,
0xB2
,
0x07
,
0x3F
,
0x94
,
0xC2
,
0x10
,
0x89
,
0x0B
,
0x22
,
0x5F
,
0x21
,
0x80
,
0x7F
,
0x5D
,
0x9A
,
0x5A
,
0x90
,
0x32
,
0x27
,
0x35
,
0x3E
,
0xCC
,
0xE7
,
0xBF
,
0xF7
,
0x97
,
0x03
,
0xFF
,
0x19
,
0x30
,
0xB3
,
0x48
,
0xA5
,
0xB5
,
0xD1
,
0xD7
,
0x5E
,
0x92
,
0x2A
,
0xAC
,
0x56
,
0xAA
,
0xC6
,
0x4F
,
0xB8
,
0x38
,
0xD2
,
0x96
,
0xA4
,
0x7D
,
0xB6
,
0x76
,
0xFC
,
0x6B
,
0xE2
,
0x9C
,
0x74
,
0x04
,
0xF1
,
0x45
,
0x9D
,
0x70
,
0x59
,
0x64
,
0x71
,
0x87
,
0x20
,
0x86
,
0x5B
,
0xCF
,
0x65
,
0xE6
,
0x2D
,
0xA8
,
0x02
,
0x1B
,
0x60
,
0x25
,
0xAD
,
0xAE
,
0xB0
,
0xB9
,
0xF6
,
0x1C
,
0x46
,
0x61
,
0x69
,
0x34
,
0x40
,
0x7E
,
0x0F
,
0x55
,
0x47
,
0xA3
,
0x23
,
0xDD
,
0x51
,
0xAF
,
0x3A
,
0xC3
,
0x5C
,
0xF9
,
0xCE
,
0xBA
,
0xC5
,
0xEA
,
0x26
,
0x2C
,
0x53
,
0x0D
,
0x6E
,
0x85
,
0x28
,
0x84
,
0x09
,
0xD3
,
0xDF
,
0xCD
,
0xF4
,
0x41
,
0x81
,
0x4D
,
0x52
,
0x6A
,
0xDC
,
0x37
,
0xC8
,
0x6C
,
0xC1
,
0xAB
,
0xFA
,
0x24
,
0xE1
,
0x7B
,
0x08
,
0x0C
,
0xBD
,
0xB1
,
0x4A
,
0x78
,
0x88
,
0x95
,
0x8B
,
0xE3
,
0x63
,
0xE8
,
0x6D
,
0xE9
,
0xCB
,
0xD5
,
0xFE
,
0x3B
,
0x00
,
0x1D
,
0x39
,
0xF2
,
0xEF
,
0xB7
,
0x0E
,
0x66
,
0x58
,
0xD0
,
0xE4
,
0xA6
,
0x77
,
0x72
,
0xF8
,
0xEB
,
0x75
,
0x4B
,
0x0A
,
0x31
,
0x44
,
0x50
,
0xB4
,
0x8F
,
0xED
,
0x1F
,
0x1A
,
0xDB
,
0x99
,
0x8D
,
0x33
,
0x9F
,
0x11
,
0x83
,
0x14
,
};
const
char
*
MD2_options
(
void
)
{
if
(
sizeof
(
MD2_INT
)
==
1
)
return
(
"md2(char)"
);
else
return
(
"md2(int)"
);
}
fips_md_init
(
MD2
)
{
c
->
num
=
0
;
memset
(
c
->
state
,
0
,
sizeof
c
->
state
);
memset
(
c
->
cksm
,
0
,
sizeof
c
->
cksm
);
memset
(
c
->
data
,
0
,
sizeof
c
->
data
);
return
1
;
}
int
MD2_Update
(
MD2_CTX
*
c
,
const
unsigned
char
*
data
,
size_t
len
)
{
register
UCHAR
*
p
;
if
(
len
==
0
)
return
1
;
p
=
c
->
data
;
if
(
c
->
num
!=
0
)
{
if
((
c
->
num
+
len
)
>=
MD2_BLOCK
)
{
memcpy
(
&
(
p
[
c
->
num
]),
data
,
MD2_BLOCK
-
c
->
num
);
md2_block
(
c
,
c
->
data
);
data
+=
(
MD2_BLOCK
-
c
->
num
);
len
-=
(
MD2_BLOCK
-
c
->
num
);
c
->
num
=
0
;
/* drop through and do the rest */
}
else
{
memcpy
(
&
(
p
[
c
->
num
]),
data
,
len
);
/* data+=len; */
c
->
num
+=
(
int
)
len
;
return
1
;
}
}
/* we now can process the input data in blocks of MD2_BLOCK
* chars and save the leftovers to c->data. */
while
(
len
>=
MD2_BLOCK
)
{
md2_block
(
c
,
data
);
data
+=
MD2_BLOCK
;
len
-=
MD2_BLOCK
;
}
memcpy
(
p
,
data
,
len
);
c
->
num
=
(
int
)
len
;
return
1
;
}
static
void
md2_block
(
MD2_CTX
*
c
,
const
unsigned
char
*
d
)
{
register
MD2_INT
t
,
*
sp1
,
*
sp2
;
register
int
i
,
j
;
MD2_INT
state
[
48
];
sp1
=
c
->
state
;
sp2
=
c
->
cksm
;
j
=
sp2
[
MD2_BLOCK
-
1
];
for
(
i
=
0
;
i
<
16
;
i
++
)
{
state
[
i
]
=
sp1
[
i
];
state
[
i
+
16
]
=
t
=
d
[
i
];
state
[
i
+
32
]
=
(
t
^
sp1
[
i
]);
j
=
sp2
[
i
]
^=
S
[
t
^
j
];
}
t
=
0
;
for
(
i
=
0
;
i
<
18
;
i
++
)
{
for
(
j
=
0
;
j
<
48
;
j
+=
8
)
{
t
=
state
[
j
+
0
]
^=
S
[
t
];
t
=
state
[
j
+
1
]
^=
S
[
t
];
t
=
state
[
j
+
2
]
^=
S
[
t
];
t
=
state
[
j
+
3
]
^=
S
[
t
];
t
=
state
[
j
+
4
]
^=
S
[
t
];
t
=
state
[
j
+
5
]
^=
S
[
t
];
t
=
state
[
j
+
6
]
^=
S
[
t
];
t
=
state
[
j
+
7
]
^=
S
[
t
];
}
t
=
(
t
+
i
)
&
0xff
;
}
memcpy
(
sp1
,
state
,
16
*
sizeof
(
MD2_INT
));
OPENSSL_cleanse
(
state
,
48
*
sizeof
(
MD2_INT
));
}
int
MD2_Final
(
unsigned
char
*
md
,
MD2_CTX
*
c
)
{
int
i
,
v
;
register
UCHAR
*
cp
;
register
MD2_INT
*
p1
,
*
p2
;
cp
=
c
->
data
;
p1
=
c
->
state
;
p2
=
c
->
cksm
;
v
=
MD2_BLOCK
-
c
->
num
;
for
(
i
=
c
->
num
;
i
<
MD2_BLOCK
;
i
++
)
cp
[
i
]
=
(
UCHAR
)
v
;
md2_block
(
c
,
cp
);
for
(
i
=
0
;
i
<
MD2_BLOCK
;
i
++
)
cp
[
i
]
=
(
UCHAR
)
p2
[
i
];
md2_block
(
c
,
cp
);
for
(
i
=
0
;
i
<
16
;
i
++
)
md
[
i
]
=
(
UCHAR
)(
p1
[
i
]
&
0xff
);
memset
((
char
*
)
&
c
,
0
,
sizeof
(
c
));
return
1
;
}
src/main/jni/openssl/crypto/md2/md2_one.c
0 → 100644
View file @
374893f5
/* crypto/md2/md2_one.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include "cryptlib.h"
#include <openssl/md2.h>
/* This is a separate file so that #defines in cryptlib.h can
* map my MD functions to different names */
unsigned
char
*
MD2
(
const
unsigned
char
*
d
,
size_t
n
,
unsigned
char
*
md
)
{
MD2_CTX
c
;
static
unsigned
char
m
[
MD2_DIGEST_LENGTH
];
if
(
md
==
NULL
)
md
=
m
;
if
(
!
MD2_Init
(
&
c
))
return
NULL
;
#ifndef CHARSET_EBCDIC
MD2_Update
(
&
c
,
d
,
n
);
#else
{
char
temp
[
1024
];
unsigned
long
chunk
;
while
(
n
>
0
)
{
chunk
=
(
n
>
sizeof
(
temp
))
?
sizeof
(
temp
)
:
n
;
ebcdic2ascii
(
temp
,
d
,
chunk
);
MD2_Update
(
&
c
,
temp
,
chunk
);
n
-=
chunk
;
d
+=
chunk
;
}
}
#endif
MD2_Final
(
md
,
&
c
);
OPENSSL_cleanse
(
&
c
,
sizeof
(
c
));
/* Security consideration */
return
(
md
);
}
src/main/jni/openssl/crypto/md2/md2test.c
0 → 100644
View file @
374893f5
/* crypto/md2/md2test.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "../e_os.h"
#ifdef OPENSSL_NO_MD2
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"No MD2 support
\n
"
);
return
(
0
);
}
#else
#include <openssl/evp.h>
#include <openssl/md2.h>
#ifdef CHARSET_EBCDIC
#include <openssl/ebcdic.h>
#endif
static
char
*
test
[]
=
{
""
,
"a"
,
"abc"
,
"message digest"
,
"abcdefghijklmnopqrstuvwxyz"
,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
,
"12345678901234567890123456789012345678901234567890123456789012345678901234567890"
,
NULL
,
};
static
char
*
ret
[]
=
{
"8350e5a3e24c153df2275c9f80692773"
,
"32ec01ec4a6dac72c0ab96fb34c0b5d1"
,
"da853b0d3f88d99b30283a69e6ded6bb"
,
"ab4f496bfb2a530b219ff33031fe06b0"
,
"4e8ddff3650292ab5a4108c3aa47940b"
,
"da33def2a42df13975352846c30338cd"
,
"d5976f79d83d3a0dc9806c3c66f3efd8"
,
};
static
char
*
pt
(
unsigned
char
*
md
);
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
,
err
=
0
;
char
**
P
,
**
R
;
char
*
p
;
unsigned
char
md
[
MD2_DIGEST_LENGTH
];
P
=
test
;
R
=
ret
;
i
=
1
;
while
(
*
P
!=
NULL
)
{
EVP_Digest
((
unsigned
char
*
)
*
P
,
strlen
(
*
P
),
md
,
NULL
,
EVP_md2
(),
NULL
);
p
=
pt
(
md
);
if
(
strcmp
(
p
,
*
R
)
!=
0
)
{
printf
(
"error calculating MD2 on '%s'
\n
"
,
*
P
);
printf
(
"got %s instead of %s
\n
"
,
p
,
*
R
);
err
++
;
}
else
printf
(
"test %d ok
\n
"
,
i
);
i
++
;
R
++
;
P
++
;
}
#ifdef OPENSSL_SYS_NETWARE
if
(
err
)
printf
(
"ERROR: %d
\n
"
,
err
);
#endif
EXIT
(
err
);
return
err
;
}
static
char
*
pt
(
unsigned
char
*
md
)
{
int
i
;
static
char
buf
[
80
];
for
(
i
=
0
;
i
<
MD2_DIGEST_LENGTH
;
i
++
)
sprintf
(
&
(
buf
[
i
*
2
]),
"%02x"
,
md
[
i
]);
return
(
buf
);
}
#endif
src/main/jni/openssl/crypto/opensslconf.h
View file @
374893f5
...
...
@@ -5,21 +5,12 @@
#ifndef OPENSSL_DOING_MAKEDEPEND
#ifndef OPENSSL_NO_BF
# define OPENSSL_NO_BF
#endif
#ifndef OPENSSL_NO_CAST
# define OPENSSL_NO_CAST
#endif
#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
# define OPENSSL_NO_EC_NISTP_64_GCC_128
#endif
#ifndef OPENSSL_NO_GMP
# define OPENSSL_NO_GMP
#endif
#ifndef OPENSSL_NO_IDEA
# define OPENSSL_NO_IDEA
#endif
#ifndef OPENSSL_NO_JPAKE
# define OPENSSL_NO_JPAKE
#endif
...
...
@@ -38,9 +29,6 @@
#ifndef OPENSSL_NO_SCTP
# define OPENSSL_NO_SCTP
#endif
#ifndef OPENSSL_NO_SEED
# define OPENSSL_NO_SEED
#endif
#ifndef OPENSSL_NO_STORE
# define OPENSSL_NO_STORE
#endif
...
...
src/main/jni/openssl/crypto/rc5/Makefile
0 → 100644
View file @
374893f5
#
# OpenSSL/crypto/rc5/Makefile
#
DIR
=
rc5
TOP
=
../..
CC
=
cc
CPP
=
$(CC)
-E
INCLUDES
=
CFLAG
=
-g
MAKEFILE
=
Makefile
AR
=
ar r
RC5_ENC
=
rc5_enc.o
CFLAGS
=
$(INCLUDES)
$(CFLAG)
ASFLAGS
=
$(INCLUDES)
$(ASFLAG)
AFLAGS
=
$(ASFLAGS)
GENERAL
=
Makefile
TEST
=
rc5test.c
APPS
=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
rc5_skey.c rc5_ecb.c rc5_enc.c rc5cfb64.c rc5ofb64.c
LIBOBJ
=
rc5_skey.o rc5_ecb.o
$(RC5_ENC)
rc5cfb64.o rc5ofb64.o
SRC
=
$(LIBSRC)
EXHEADER
=
rc5.h
HEADER
=
rc5_locl.h
$(EXHEADER)
ALL
=
$(GENERAL)
$(SRC)
$(HEADER)
top
:
(
cd
../..
;
$(MAKE)
DIRS
=
crypto
SDIRS
=
$(DIR)
sub_all
)
all
:
lib
lib
:
$(LIBOBJ)
$(AR)
$(LIB)
$(LIBOBJ)
$(RANLIB)
$(LIB)
||
echo
Never mind.
@
touch
lib
rc5-586.s
:
asm/rc5-586.pl ../perlasm/x86asm.pl ../perlasm/cbc.pl
$(PERL)
asm/rc5-586.pl
$(PERLASM_SCHEME)
$(CFLAGS)
>
$@
files
:
$(PERL)
$(TOP)
/util/files.pl Makefile
>>
$(TOP)
/MINFO
links
:
@
$(PERL)
$(TOP)
/util/mklink.pl ../../include/openssl
$(EXHEADER)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../test
$(TEST)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../apps
$(APPS)
install
:
@
[
-n
"
$(INSTALLTOP)
"
]
# should be set by top Makefile...
@
headerlist
=
"
$(EXHEADER)
"
;
for
i
in
$$
headerlist
;
\
do
\
(
cp
$$
i
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
;
\
chmod
644
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
)
;
\
done
;
tags
:
ctags
$(SRC)
tests
:
lint
:
lint
-DLINT
$(INCLUDES)
$(SRC)
>
fluff
depend
:
@
[
-n
"
$(MAKEDEPEND)
"
]
# should be set by upper Makefile...
$(MAKEDEPEND)
--
$(CFLAG)
$(INCLUDES)
$(DEPFLAG)
--
$(PROGS)
$(LIBSRC)
dclean
:
$(PERL)
-pe
'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}'
$(MAKEFILE)
>
Makefile.new
mv
-f
Makefile.new
$(MAKEFILE)
clean
:
rm
-f
*
.s
*
.o
*
.obj lib tags core .pure .nfs
*
*
.old
*
.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
rc5_ecb.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
rc5_ecb.o
:
../../include/openssl/rc5.h rc5_ecb.c rc5_locl.h
rc5_enc.o
:
../../include/openssl/opensslconf.h ../../include/openssl/rc5.h
rc5_enc.o
:
rc5_enc.c rc5_locl.h
rc5_skey.o
:
../../include/openssl/opensslconf.h ../../include/openssl/rc5.h
rc5_skey.o
:
rc5_locl.h rc5_skey.c
rc5cfb64.o
:
../../include/openssl/opensslconf.h ../../include/openssl/rc5.h
rc5cfb64.o
:
rc5_locl.h rc5cfb64.c
rc5ofb64.o
:
../../include/openssl/opensslconf.h ../../include/openssl/rc5.h
rc5ofb64.o
:
rc5_locl.h rc5ofb64.c
src/main/jni/openssl/crypto/rc5/asm/rc5-586.pl
0 → 100644
View file @
374893f5
#!/usr/local/bin/perl
$0
=~
m/(.*[\/\\])[^\/\\]+$/
;
$dir
=
$1
;
push
(
@INC
,"
${dir}
","
${dir}
../../perlasm
");
require
"
x86asm.pl
";
require
"
cbc.pl
";
&
asm_init
(
$ARGV
[
0
],"
rc5-586.pl
");
$RC5_MAX_ROUNDS
=
16
;
$RC5_32_OFF
=
(
$RC5_MAX_ROUNDS
+
2
)
*
4
;
$A
=
"
edi
";
$B
=
"
esi
";
$S
=
"
ebp
";
$tmp1
=
"
eax
";
$r
=
"
ebx
";
$tmpc
=
"
ecx
";
$tmp4
=
"
edx
";
&
RC5_32_encrypt
("
RC5_32_encrypt
",
1
);
&
RC5_32_encrypt
("
RC5_32_decrypt
",
0
);
&
cbc
("
RC5_32_cbc_encrypt
","
RC5_32_encrypt
","
RC5_32_decrypt
",
0
,
4
,
5
,
3
,
-
1
,
-
1
);
&
asm_finish
();
sub
RC5_32_encrypt
{
local
(
$name
,
$enc
)
=
@_
;
&
function_begin_B
(
$name
,"");
&
comment
("");
&
push
("
ebp
");
&
push
("
esi
");
&
push
("
edi
");
&
mov
(
$tmp4
,
&
wparam
(
0
));
&
mov
(
$S
,
&
wparam
(
1
));
&
comment
("
Load the 2 words
");
&
mov
(
$A
,
&
DWP
(
0
,
$tmp4
,"",
0
));
&
mov
(
$B
,
&
DWP
(
4
,
$tmp4
,"",
0
));
&
push
(
$r
);
&
mov
(
$r
,
&
DWP
(
0
,
$S
,"",
0
));
# encrypting part
if
(
$enc
)
{
&
add
(
$A
,
&
DWP
(
4
+
0
,
$S
,"",
0
));
&
add
(
$B
,
&
DWP
(
4
+
4
,
$S
,"",
0
));
for
(
$i
=
0
;
$i
<
$RC5_MAX_ROUNDS
;
$i
++
)
{
&
xor
(
$A
,
$B
);
&
mov
(
$tmp1
,
&
DWP
(
12
+
$i
*
8
,
$S
,"",
0
));
&
mov
(
$tmpc
,
$B
);
&
rotl
(
$A
,
&
LB
("
ecx
"));
&
add
(
$A
,
$tmp1
);
&
xor
(
$B
,
$A
);
&
mov
(
$tmp1
,
&
DWP
(
16
+
$i
*
8
,
$S
,"",
0
));
&
mov
(
$tmpc
,
$A
);
&
rotl
(
$B
,
&
LB
("
ecx
"));
&
add
(
$B
,
$tmp1
);
if
((
$i
==
7
)
||
(
$i
==
11
))
{
&
cmp
(
$r
,
$i
+
1
);
&
je
(
&
label
("
rc5_exit
"));
}
}
}
else
{
&
cmp
(
$r
,
12
);
&
je
(
&
label
("
rc5_dec_12
"));
&
cmp
(
$r
,
8
);
&
je
(
&
label
("
rc5_dec_8
"));
for
(
$i
=
$RC5_MAX_ROUNDS
;
$i
>
0
;
$i
--
)
{
&
set_label
("
rc5_dec_
$i
")
if
(
$i
==
12
)
||
(
$i
==
8
);
&
mov
(
$tmp1
,
&
DWP
(
$i
*
8
+
8
,
$S
,"",
0
));
&
sub
(
$B
,
$tmp1
);
&
mov
(
$tmpc
,
$A
);
&
rotr
(
$B
,
&
LB
("
ecx
"));
&
xor
(
$B
,
$A
);
&
mov
(
$tmp1
,
&
DWP
(
$i
*
8
+
4
,
$S
,"",
0
));
&
sub
(
$A
,
$tmp1
);
&
mov
(
$tmpc
,
$B
);
&
rotr
(
$A
,
&
LB
("
ecx
"));
&
xor
(
$A
,
$B
);
}
&
sub
(
$B
,
&
DWP
(
4
+
4
,
$S
,"",
0
));
&
sub
(
$A
,
&
DWP
(
4
+
0
,
$S
,"",
0
));
}
&
set_label
("
rc5_exit
");
&
mov
(
&
DWP
(
0
,
$tmp4
,"",
0
),
$A
);
&
mov
(
&
DWP
(
4
,
$tmp4
,"",
0
),
$B
);
&
pop
("
ebx
");
&
pop
("
edi
");
&
pop
("
esi
");
&
pop
("
ebp
");
&
ret
();
&
function_end_B
(
$name
);
}
src/main/jni/openssl/crypto/rc5/rc5.h
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#ifndef HEADER_RC5_H
#define HEADER_RC5_H
#include <openssl/opensslconf.h>
/* OPENSSL_NO_RC5 */
#ifdef __cplusplus
extern
"C"
{
#endif
#ifdef OPENSSL_NO_RC5
#error RC5 is disabled.
#endif
#define RC5_ENCRYPT 1
#define RC5_DECRYPT 0
/* 32 bit. For Alpha, things may get weird */
#define RC5_32_INT unsigned long
#define RC5_32_BLOCK 8
#define RC5_32_KEY_LENGTH 16
/* This is a default, max is 255 */
/* This are the only values supported. Tweak the code if you want more
* The most supported modes will be
* RC5-32/12/16
* RC5-32/16/8
*/
#define RC5_8_ROUNDS 8
#define RC5_12_ROUNDS 12
#define RC5_16_ROUNDS 16
typedef
struct
rc5_key_st
{
/* Number of rounds */
int
rounds
;
RC5_32_INT
data
[
2
*
(
RC5_16_ROUNDS
+
1
)];
}
RC5_32_KEY
;
void
RC5_32_set_key
(
RC5_32_KEY
*
key
,
int
len
,
const
unsigned
char
*
data
,
int
rounds
);
void
RC5_32_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
RC5_32_KEY
*
key
,
int
enc
);
void
RC5_32_encrypt
(
unsigned
long
*
data
,
RC5_32_KEY
*
key
);
void
RC5_32_decrypt
(
unsigned
long
*
data
,
RC5_32_KEY
*
key
);
void
RC5_32_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
RC5_32_KEY
*
ks
,
unsigned
char
*
iv
,
int
enc
);
void
RC5_32_cfb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
RC5_32_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
,
int
enc
);
void
RC5_32_ofb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
RC5_32_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
);
#ifdef __cplusplus
}
#endif
#endif
src/main/jni/openssl/crypto/rc5/rc5_ecb.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5_ecb.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/rc5.h>
#include "rc5_locl.h"
#include <openssl/opensslv.h>
const
char
RC5_version
[]
=
"RC5"
OPENSSL_VERSION_PTEXT
;
void
RC5_32_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
RC5_32_KEY
*
ks
,
int
encrypt
)
{
unsigned
long
l
,
d
[
2
];
c2l
(
in
,
l
);
d
[
0
]
=
l
;
c2l
(
in
,
l
);
d
[
1
]
=
l
;
if
(
encrypt
)
RC5_32_encrypt
(
d
,
ks
);
else
RC5_32_decrypt
(
d
,
ks
);
l
=
d
[
0
];
l2c
(
l
,
out
);
l
=
d
[
1
];
l2c
(
l
,
out
);
l
=
d
[
0
]
=
d
[
1
]
=
0
;
}
src/main/jni/openssl/crypto/rc5/rc5_enc.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5_enc.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdio.h>
#include <openssl/rc5.h>
#include "rc5_locl.h"
void
RC5_32_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
RC5_32_KEY
*
ks
,
unsigned
char
*
iv
,
int
encrypt
)
{
register
unsigned
long
tin0
,
tin1
;
register
unsigned
long
tout0
,
tout1
,
xor0
,
xor1
;
register
long
l
=
length
;
unsigned
long
tin
[
2
];
if
(
encrypt
)
{
c2l
(
iv
,
tout0
);
c2l
(
iv
,
tout1
);
iv
-=
8
;
for
(
l
-=
8
;
l
>=
0
;
l
-=
8
)
{
c2l
(
in
,
tin0
);
c2l
(
in
,
tin1
);
tin0
^=
tout0
;
tin1
^=
tout1
;
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
RC5_32_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
];
l2c
(
tout0
,
out
);
tout1
=
tin
[
1
];
l2c
(
tout1
,
out
);
}
if
(
l
!=
-
8
)
{
c2ln
(
in
,
tin0
,
tin1
,
l
+
8
);
tin0
^=
tout0
;
tin1
^=
tout1
;
tin
[
0
]
=
tin0
;
tin
[
1
]
=
tin1
;
RC5_32_encrypt
(
tin
,
ks
);
tout0
=
tin
[
0
];
l2c
(
tout0
,
out
);
tout1
=
tin
[
1
];
l2c
(
tout1
,
out
);
}
l2c
(
tout0
,
iv
);
l2c
(
tout1
,
iv
);
}
else
{
c2l
(
iv
,
xor0
);
c2l
(
iv
,
xor1
);
iv
-=
8
;
for
(
l
-=
8
;
l
>=
0
;
l
-=
8
)
{
c2l
(
in
,
tin0
);
tin
[
0
]
=
tin0
;
c2l
(
in
,
tin1
);
tin
[
1
]
=
tin1
;
RC5_32_decrypt
(
tin
,
ks
);
tout0
=
tin
[
0
]
^
xor0
;
tout1
=
tin
[
1
]
^
xor1
;
l2c
(
tout0
,
out
);
l2c
(
tout1
,
out
);
xor0
=
tin0
;
xor1
=
tin1
;
}
if
(
l
!=
-
8
)
{
c2l
(
in
,
tin0
);
tin
[
0
]
=
tin0
;
c2l
(
in
,
tin1
);
tin
[
1
]
=
tin1
;
RC5_32_decrypt
(
tin
,
ks
);
tout0
=
tin
[
0
]
^
xor0
;
tout1
=
tin
[
1
]
^
xor1
;
l2cn
(
tout0
,
tout1
,
out
,
l
+
8
);
xor0
=
tin0
;
xor1
=
tin1
;
}
l2c
(
xor0
,
iv
);
l2c
(
xor1
,
iv
);
}
tin0
=
tin1
=
tout0
=
tout1
=
xor0
=
xor1
=
0
;
tin
[
0
]
=
tin
[
1
]
=
0
;
}
void
RC5_32_encrypt
(
unsigned
long
*
d
,
RC5_32_KEY
*
key
)
{
RC5_32_INT
a
,
b
,
*
s
;
s
=
key
->
data
;
a
=
d
[
0
]
+
s
[
0
];
b
=
d
[
1
]
+
s
[
1
];
E_RC5_32
(
a
,
b
,
s
,
2
);
E_RC5_32
(
a
,
b
,
s
,
4
);
E_RC5_32
(
a
,
b
,
s
,
6
);
E_RC5_32
(
a
,
b
,
s
,
8
);
E_RC5_32
(
a
,
b
,
s
,
10
);
E_RC5_32
(
a
,
b
,
s
,
12
);
E_RC5_32
(
a
,
b
,
s
,
14
);
E_RC5_32
(
a
,
b
,
s
,
16
);
if
(
key
->
rounds
==
12
)
{
E_RC5_32
(
a
,
b
,
s
,
18
);
E_RC5_32
(
a
,
b
,
s
,
20
);
E_RC5_32
(
a
,
b
,
s
,
22
);
E_RC5_32
(
a
,
b
,
s
,
24
);
}
else
if
(
key
->
rounds
==
16
)
{
/* Do a full expansion to avoid a jump */
E_RC5_32
(
a
,
b
,
s
,
18
);
E_RC5_32
(
a
,
b
,
s
,
20
);
E_RC5_32
(
a
,
b
,
s
,
22
);
E_RC5_32
(
a
,
b
,
s
,
24
);
E_RC5_32
(
a
,
b
,
s
,
26
);
E_RC5_32
(
a
,
b
,
s
,
28
);
E_RC5_32
(
a
,
b
,
s
,
30
);
E_RC5_32
(
a
,
b
,
s
,
32
);
}
d
[
0
]
=
a
;
d
[
1
]
=
b
;
}
void
RC5_32_decrypt
(
unsigned
long
*
d
,
RC5_32_KEY
*
key
)
{
RC5_32_INT
a
,
b
,
*
s
;
s
=
key
->
data
;
a
=
d
[
0
];
b
=
d
[
1
];
if
(
key
->
rounds
==
16
)
{
D_RC5_32
(
a
,
b
,
s
,
32
);
D_RC5_32
(
a
,
b
,
s
,
30
);
D_RC5_32
(
a
,
b
,
s
,
28
);
D_RC5_32
(
a
,
b
,
s
,
26
);
/* Do a full expansion to avoid a jump */
D_RC5_32
(
a
,
b
,
s
,
24
);
D_RC5_32
(
a
,
b
,
s
,
22
);
D_RC5_32
(
a
,
b
,
s
,
20
);
D_RC5_32
(
a
,
b
,
s
,
18
);
}
else
if
(
key
->
rounds
==
12
)
{
D_RC5_32
(
a
,
b
,
s
,
24
);
D_RC5_32
(
a
,
b
,
s
,
22
);
D_RC5_32
(
a
,
b
,
s
,
20
);
D_RC5_32
(
a
,
b
,
s
,
18
);
}
D_RC5_32
(
a
,
b
,
s
,
16
);
D_RC5_32
(
a
,
b
,
s
,
14
);
D_RC5_32
(
a
,
b
,
s
,
12
);
D_RC5_32
(
a
,
b
,
s
,
10
);
D_RC5_32
(
a
,
b
,
s
,
8
);
D_RC5_32
(
a
,
b
,
s
,
6
);
D_RC5_32
(
a
,
b
,
s
,
4
);
D_RC5_32
(
a
,
b
,
s
,
2
);
d
[
0
]
=
a
-
s
[
0
];
d
[
1
]
=
b
-
s
[
1
];
}
src/main/jni/openssl/crypto/rc5/rc5_locl.h
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5_locl.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <stdlib.h>
#undef c2l
#define c2l(c,l) (l =((unsigned long)(*((c)++))) , \
l|=((unsigned long)(*((c)++)))<< 8L, \
l|=((unsigned long)(*((c)++)))<<16L, \
l|=((unsigned long)(*((c)++)))<<24L)
/* NOTE - c is not incremented as per c2l */
#undef c2ln
#define c2ln(c,l1,l2,n) { \
c+=n; \
l1=l2=0; \
switch (n) { \
case 8: l2 =((unsigned long)(*(--(c))))<<24L; \
case 7: l2|=((unsigned long)(*(--(c))))<<16L; \
case 6: l2|=((unsigned long)(*(--(c))))<< 8L; \
case 5: l2|=((unsigned long)(*(--(c)))); \
case 4: l1 =((unsigned long)(*(--(c))))<<24L; \
case 3: l1|=((unsigned long)(*(--(c))))<<16L; \
case 2: l1|=((unsigned long)(*(--(c))))<< 8L; \
case 1: l1|=((unsigned long)(*(--(c)))); \
} \
}
#undef l2c
#define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
*((c)++)=(unsigned char)(((l)>>24L)&0xff))
/* NOTE - c is not incremented as per l2c */
#undef l2cn
#define l2cn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2)>>24L)&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>>16L)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>> 8L)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 4: *(--(c))=(unsigned char)(((l1)>>24L)&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>>16L)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>> 8L)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
} \
}
/* NOTE - c is not incremented as per n2l */
#define n2ln(c,l1,l2,n) { \
c+=n; \
l1=l2=0; \
switch (n) { \
case 8: l2 =((unsigned long)(*(--(c)))) ; \
case 7: l2|=((unsigned long)(*(--(c))))<< 8; \
case 6: l2|=((unsigned long)(*(--(c))))<<16; \
case 5: l2|=((unsigned long)(*(--(c))))<<24; \
case 4: l1 =((unsigned long)(*(--(c)))) ; \
case 3: l1|=((unsigned long)(*(--(c))))<< 8; \
case 2: l1|=((unsigned long)(*(--(c))))<<16; \
case 1: l1|=((unsigned long)(*(--(c))))<<24; \
} \
}
/* NOTE - c is not incremented as per l2n */
#define l2nn(l1,l2,c,n) { \
c+=n; \
switch (n) { \
case 8: *(--(c))=(unsigned char)(((l2) )&0xff); \
case 7: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
case 6: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
case 5: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
case 4: *(--(c))=(unsigned char)(((l1) )&0xff); \
case 3: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
case 2: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
case 1: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
} \
}
#undef n2l
#define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24L, \
l|=((unsigned long)(*((c)++)))<<16L, \
l|=((unsigned long)(*((c)++)))<< 8L, \
l|=((unsigned long)(*((c)++))))
#undef l2n
#define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24L)&0xff), \
*((c)++)=(unsigned char)(((l)>>16L)&0xff), \
*((c)++)=(unsigned char)(((l)>> 8L)&0xff), \
*((c)++)=(unsigned char)(((l) )&0xff))
#if (defined(OPENSSL_SYS_WIN32) && defined(_MSC_VER)) || defined(__ICC)
#define ROTATE_l32(a,n) _lrotl(a,n)
#define ROTATE_r32(a,n) _lrotr(a,n)
#elif defined(__GNUC__) && __GNUC__>=2 && !defined(__STRICT_ANSI__) && !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_NO_INLINE_ASM) && !defined(PEDANTIC)
# if defined(__i386) || defined(__i386__) || defined(__x86_64) || defined(__x86_64__)
# define ROTATE_l32(a,n) ({ register unsigned int ret; \
asm ("roll %%cl,%0" \
: "=r"(ret) \
: "c"(n),"0"((unsigned int)(a)) \
: "cc"); \
ret; \
})
# define ROTATE_r32(a,n) ({ register unsigned int ret; \
asm ("rorl %%cl,%0" \
: "=r"(ret) \
: "c"(n),"0"((unsigned int)(a)) \
: "cc"); \
ret; \
})
# endif
#endif
#ifndef ROTATE_l32
#define ROTATE_l32(a,n) (((a)<<(n&0x1f))|(((a)&0xffffffff)>>(32-(n&0x1f))))
#endif
#ifndef ROTATE_r32
#define ROTATE_r32(a,n) (((a)<<(32-(n&0x1f)))|(((a)&0xffffffff)>>(n&0x1f)))
#endif
#define RC5_32_MASK 0xffffffffL
#define RC5_16_P 0xB7E1
#define RC5_16_Q 0x9E37
#define RC5_32_P 0xB7E15163L
#define RC5_32_Q 0x9E3779B9L
#define RC5_64_P 0xB7E151628AED2A6BLL
#define RC5_64_Q 0x9E3779B97F4A7C15LL
#define E_RC5_32(a,b,s,n) \
a^=b; \
a=ROTATE_l32(a,b); \
a+=s[n]; \
a&=RC5_32_MASK; \
b^=a; \
b=ROTATE_l32(b,a); \
b+=s[n+1]; \
b&=RC5_32_MASK;
#define D_RC5_32(a,b,s,n) \
b-=s[n+1]; \
b&=RC5_32_MASK; \
b=ROTATE_r32(b,a); \
b^=a; \
a-=s[n]; \
a&=RC5_32_MASK; \
a=ROTATE_r32(a,b); \
a^=b;
src/main/jni/openssl/crypto/rc5/rc5_skey.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5_skey.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/rc5.h>
#include "rc5_locl.h"
void
RC5_32_set_key
(
RC5_32_KEY
*
key
,
int
len
,
const
unsigned
char
*
data
,
int
rounds
)
{
RC5_32_INT
L
[
64
],
l
,
ll
,
A
,
B
,
*
S
,
k
;
int
i
,
j
,
m
,
c
,
t
,
ii
,
jj
;
if
(
(
rounds
!=
RC5_16_ROUNDS
)
&&
(
rounds
!=
RC5_12_ROUNDS
)
&&
(
rounds
!=
RC5_8_ROUNDS
))
rounds
=
RC5_16_ROUNDS
;
key
->
rounds
=
rounds
;
S
=
&
(
key
->
data
[
0
]);
j
=
0
;
for
(
i
=
0
;
i
<=
(
len
-
8
);
i
+=
8
)
{
c2l
(
data
,
l
);
L
[
j
++
]
=
l
;
c2l
(
data
,
l
);
L
[
j
++
]
=
l
;
}
ii
=
len
-
i
;
if
(
ii
)
{
k
=
len
&
0x07
;
c2ln
(
data
,
l
,
ll
,
k
);
L
[
j
+
0
]
=
l
;
L
[
j
+
1
]
=
ll
;
}
c
=
(
len
+
3
)
/
4
;
t
=
(
rounds
+
1
)
*
2
;
S
[
0
]
=
RC5_32_P
;
for
(
i
=
1
;
i
<
t
;
i
++
)
S
[
i
]
=
(
S
[
i
-
1
]
+
RC5_32_Q
)
&
RC5_32_MASK
;
j
=
(
t
>
c
)
?
t
:
c
;
j
*=
3
;
ii
=
jj
=
0
;
A
=
B
=
0
;
for
(
i
=
0
;
i
<
j
;
i
++
)
{
k
=
(
S
[
ii
]
+
A
+
B
)
&
RC5_32_MASK
;
A
=
S
[
ii
]
=
ROTATE_l32
(
k
,
3
);
m
=
(
int
)(
A
+
B
);
k
=
(
L
[
jj
]
+
A
+
B
)
&
RC5_32_MASK
;
B
=
L
[
jj
]
=
ROTATE_l32
(
k
,
m
);
if
(
++
ii
>=
t
)
ii
=
0
;
if
(
++
jj
>=
c
)
jj
=
0
;
}
}
src/main/jni/openssl/crypto/rc5/rc5cfb64.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5cfb64.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/rc5.h>
#include "rc5_locl.h"
/* The input and output encrypted as though 64bit cfb mode is being
* used. The extra state information to record how much of the
* 64bit block we have used is contained in *num;
*/
void
RC5_32_cfb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
RC5_32_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
,
int
encrypt
)
{
register
unsigned
long
v0
,
v1
,
t
;
register
int
n
=
*
num
;
register
long
l
=
length
;
unsigned
long
ti
[
2
];
unsigned
char
*
iv
,
c
,
cc
;
iv
=
(
unsigned
char
*
)
ivec
;
if
(
encrypt
)
{
while
(
l
--
)
{
if
(
n
==
0
)
{
c2l
(
iv
,
v0
);
ti
[
0
]
=
v0
;
c2l
(
iv
,
v1
);
ti
[
1
]
=
v1
;
RC5_32_encrypt
((
unsigned
long
*
)
ti
,
schedule
);
iv
=
(
unsigned
char
*
)
ivec
;
t
=
ti
[
0
];
l2c
(
t
,
iv
);
t
=
ti
[
1
];
l2c
(
t
,
iv
);
iv
=
(
unsigned
char
*
)
ivec
;
}
c
=
*
(
in
++
)
^
iv
[
n
];
*
(
out
++
)
=
c
;
iv
[
n
]
=
c
;
n
=
(
n
+
1
)
&
0x07
;
}
}
else
{
while
(
l
--
)
{
if
(
n
==
0
)
{
c2l
(
iv
,
v0
);
ti
[
0
]
=
v0
;
c2l
(
iv
,
v1
);
ti
[
1
]
=
v1
;
RC5_32_encrypt
((
unsigned
long
*
)
ti
,
schedule
);
iv
=
(
unsigned
char
*
)
ivec
;
t
=
ti
[
0
];
l2c
(
t
,
iv
);
t
=
ti
[
1
];
l2c
(
t
,
iv
);
iv
=
(
unsigned
char
*
)
ivec
;
}
cc
=
*
(
in
++
);
c
=
iv
[
n
];
iv
[
n
]
=
cc
;
*
(
out
++
)
=
c
^
cc
;
n
=
(
n
+
1
)
&
0x07
;
}
}
v0
=
v1
=
ti
[
0
]
=
ti
[
1
]
=
t
=
c
=
cc
=
0
;
*
num
=
n
;
}
src/main/jni/openssl/crypto/rc5/rc5ofb64.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5ofb64.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/rc5.h>
#include "rc5_locl.h"
/* The input and output encrypted as though 64bit ofb mode is being
* used. The extra state information to record how much of the
* 64bit block we have used is contained in *num;
*/
void
RC5_32_ofb64_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
long
length
,
RC5_32_KEY
*
schedule
,
unsigned
char
*
ivec
,
int
*
num
)
{
register
unsigned
long
v0
,
v1
,
t
;
register
int
n
=
*
num
;
register
long
l
=
length
;
unsigned
char
d
[
8
];
register
char
*
dp
;
unsigned
long
ti
[
2
];
unsigned
char
*
iv
;
int
save
=
0
;
iv
=
(
unsigned
char
*
)
ivec
;
c2l
(
iv
,
v0
);
c2l
(
iv
,
v1
);
ti
[
0
]
=
v0
;
ti
[
1
]
=
v1
;
dp
=
(
char
*
)
d
;
l2c
(
v0
,
dp
);
l2c
(
v1
,
dp
);
while
(
l
--
)
{
if
(
n
==
0
)
{
RC5_32_encrypt
((
unsigned
long
*
)
ti
,
schedule
);
dp
=
(
char
*
)
d
;
t
=
ti
[
0
];
l2c
(
t
,
dp
);
t
=
ti
[
1
];
l2c
(
t
,
dp
);
save
++
;
}
*
(
out
++
)
=
*
(
in
++
)
^
d
[
n
];
n
=
(
n
+
1
)
&
0x07
;
}
if
(
save
)
{
v0
=
ti
[
0
];
v1
=
ti
[
1
];
iv
=
(
unsigned
char
*
)
ivec
;
l2c
(
v0
,
iv
);
l2c
(
v1
,
iv
);
}
t
=
v0
=
v1
=
ti
[
0
]
=
ti
[
1
]
=
0
;
*
num
=
n
;
}
src/main/jni/openssl/crypto/rc5/rc5s.cpp
0 → 100644
View file @
374893f5
//
// gettsc.inl
//
// gives access to the Pentium's (secret) cycle counter
//
// This software was written by Leonard Janke (janke@unixg.ubc.ca)
// in 1996-7 and is entered, by him, into the public domain.
#if defined(__WATCOMC__)
void
GetTSC
(
unsigned
long
&
);
#pragma aux GetTSC = 0x0f 0x31 "mov [edi], eax" parm [edi] modify [edx eax];
#elif defined(__GNUC__)
inline
void
GetTSC
(
unsigned
long
&
tsc
)
{
asm
volatile
(
".byte 15, 49
\n\t
"
:
"=eax"
(
tsc
)
:
:
"%edx"
,
"%eax"
);
}
#elif defined(_MSC_VER)
inline
void
GetTSC
(
unsigned
long
&
tsc
)
{
unsigned
long
a
;
__asm
_emit
0
fh
__asm
_emit
31h
__asm
mov
a
,
eax
;
tsc
=
a
;
}
#endif
#include <stdio.h>
#include <stdlib.h>
#include <openssl/rc5.h>
void
main
(
int
argc
,
char
*
argv
[])
{
RC5_32_KEY
key
;
unsigned
long
s1
,
s2
,
e1
,
e2
;
unsigned
long
data
[
2
];
int
i
,
j
;
static
unsigned
char
d
[
16
]
=
{
0x01
,
0x23
,
0x45
,
0x67
,
0x89
,
0xAB
,
0xCD
,
0xEF
};
RC5_32_set_key
(
&
key
,
16
,
d
,
12
);
for
(
j
=
0
;
j
<
6
;
j
++
)
{
for
(
i
=
0
;
i
<
1000
;
i
++
)
/**/
{
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
GetTSC
(
s1
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
GetTSC
(
e1
);
GetTSC
(
s2
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
GetTSC
(
e2
);
RC5_32_encrypt
(
&
data
[
0
],
&
key
);
}
printf
(
"cast %d %d (%d)
\n
"
,
e1
-
s1
,
e2
-
s2
,((
e2
-
s2
)
-
(
e1
-
s1
)));
}
}
src/main/jni/openssl/crypto/rc5/rc5speed.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5speed.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* 11-Sep-92 Andrew Daviel Support for Silicon Graphics IRIX added */
/* 06-Apr-92 Luke Brennan Support for VMS and add extra signal calls */
#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
#define TIMES
#endif
#include <stdio.h>
#include <openssl/e_os2.h>
#include OPENSSL_UNISTD_IO
OPENSSL_DECLARE_EXIT
#ifndef OPENSSL_SYS_NETWARE
#include <signal.h>
#endif
#ifndef _IRIX
#include <time.h>
#endif
#ifdef TIMES
#include <sys/types.h>
#include <sys/times.h>
#endif
/* Depending on the VMS version, the tms structure is perhaps defined.
The __TMS macro will show if it was. If it wasn't defined, we should
undefine TIMES, since that tells the rest of the program how things
should be handled. -- Richard Levitte */
#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
#undef TIMES
#endif
#ifndef TIMES
#include <sys/timeb.h>
#endif
#if defined(sun) || defined(__ultrix)
#define _POSIX_SOURCE
#include <limits.h>
#include <sys/param.h>
#endif
#include <openssl/rc5.h>
/* The following if from times(3) man page. It may need to be changed */
#ifndef HZ
#ifndef CLK_TCK
#define HZ 100.0
#else
/* CLK_TCK */
#define HZ ((double)CLK_TCK)
#endif
#endif
#define BUFSIZE ((long)1024)
long
run
=
0
;
double
Time_F
(
int
s
);
#ifdef SIGALRM
#if defined(__STDC__) || defined(sgi) || defined(_AIX)
#define SIGRETTYPE void
#else
#define SIGRETTYPE int
#endif
SIGRETTYPE
sig_done
(
int
sig
);
SIGRETTYPE
sig_done
(
int
sig
)
{
signal
(
SIGALRM
,
sig_done
);
run
=
0
;
#ifdef LINT
sig
=
sig
;
#endif
}
#endif
#define START 0
#define STOP 1
double
Time_F
(
int
s
)
{
double
ret
;
#ifdef TIMES
static
struct
tms
tstart
,
tend
;
if
(
s
==
START
)
{
times
(
&
tstart
);
return
(
0
);
}
else
{
times
(
&
tend
);
ret
=
((
double
)(
tend
.
tms_utime
-
tstart
.
tms_utime
))
/
HZ
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#else
/* !times() */
static
struct
timeb
tstart
,
tend
;
long
i
;
if
(
s
==
START
)
{
ftime
(
&
tstart
);
return
(
0
);
}
else
{
ftime
(
&
tend
);
i
=
(
long
)
tend
.
millitm
-
(
long
)
tstart
.
millitm
;
ret
=
((
double
)(
tend
.
time
-
tstart
.
time
))
+
((
double
)
i
)
/
1e3
;
return
((
ret
==
0
.
0
)
?
1e-6
:
ret
);
}
#endif
}
int
main
(
int
argc
,
char
**
argv
)
{
long
count
;
static
unsigned
char
buf
[
BUFSIZE
];
static
unsigned
char
key
[]
=
{
0x12
,
0x34
,
0x56
,
0x78
,
0x9a
,
0xbc
,
0xde
,
0xf0
,
0xfe
,
0xdc
,
0xba
,
0x98
,
0x76
,
0x54
,
0x32
,
0x10
,
};
RC5_32_KEY
sch
;
double
a
,
b
,
c
,
d
;
#ifndef SIGALRM
long
ca
,
cb
,
cc
;
#endif
#ifndef TIMES
printf
(
"To get the most accurate results, try to run this
\n
"
);
printf
(
"program when this computer is idle.
\n
"
);
#endif
#ifndef SIGALRM
printf
(
"First we calculate the approximate speed ...
\n
"
);
RC5_32_set_key
(
&
sch
,
16
,
key
,
12
);
count
=
10
;
do
{
long
i
;
unsigned
long
data
[
2
];
count
*=
2
;
Time_F
(
START
);
for
(
i
=
count
;
i
;
i
--
)
RC5_32_encrypt
(
data
,
&
sch
);
d
=
Time_F
(
STOP
);
}
while
(
d
<
3
.
0
);
ca
=
count
/
512
;
cb
=
count
;
cc
=
count
*
8
/
BUFSIZE
+
1
;
printf
(
"Doing RC5_32_set_key %ld times
\n
"
,
ca
);
#define COND(d) (count != (d))
#define COUNT(d) (d)
#else
#define COND(c) (run)
#define COUNT(d) (count)
signal
(
SIGALRM
,
sig_done
);
printf
(
"Doing RC5_32_set_key for 10 seconds
\n
"
);
alarm
(
10
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
ca
);
count
+=
4
)
{
RC5_32_set_key
(
&
sch
,
16
,
key
,
12
);
RC5_32_set_key
(
&
sch
,
16
,
key
,
12
);
RC5_32_set_key
(
&
sch
,
16
,
key
,
12
);
RC5_32_set_key
(
&
sch
,
16
,
key
,
12
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld RC5_32_set_key's in %.2f seconds
\n
"
,
count
,
d
);
a
=
((
double
)
COUNT
(
ca
))
/
d
;
#ifdef SIGALRM
printf
(
"Doing RC5_32_encrypt's for 10 seconds
\n
"
);
alarm
(
10
);
#else
printf
(
"Doing RC5_32_encrypt %ld times
\n
"
,
cb
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cb
);
count
+=
4
)
{
unsigned
long
data
[
2
];
RC5_32_encrypt
(
data
,
&
sch
);
RC5_32_encrypt
(
data
,
&
sch
);
RC5_32_encrypt
(
data
,
&
sch
);
RC5_32_encrypt
(
data
,
&
sch
);
}
d
=
Time_F
(
STOP
);
printf
(
"%ld RC5_32_encrypt's in %.2f second
\n
"
,
count
,
d
);
b
=
((
double
)
COUNT
(
cb
)
*
8
)
/
d
;
#ifdef SIGALRM
printf
(
"Doing RC5_32_cbc_encrypt on %ld byte blocks for 10 seconds
\n
"
,
BUFSIZE
);
alarm
(
10
);
#else
printf
(
"Doing RC5_32_cbc_encrypt %ld times on %ld byte blocks
\n
"
,
cc
,
BUFSIZE
);
#endif
Time_F
(
START
);
for
(
count
=
0
,
run
=
1
;
COND
(
cc
);
count
++
)
RC5_32_cbc_encrypt
(
buf
,
buf
,
BUFSIZE
,
&
sch
,
&
(
key
[
0
]),
RC5_ENCRYPT
);
d
=
Time_F
(
STOP
);
printf
(
"%ld RC5_32_cbc_encrypt's of %ld byte blocks in %.2f second
\n
"
,
count
,
BUFSIZE
,
d
);
c
=
((
double
)
COUNT
(
cc
)
*
BUFSIZE
)
/
d
;
printf
(
"RC5_32/12/16 set_key per sec = %12.2f (%9.3fuS)
\n
"
,
a
,
1.0e6
/
a
);
printf
(
"RC5_32/12/16 raw ecb bytes per sec = %12.2f (%9.3fuS)
\n
"
,
b
,
8.0e6
/
b
);
printf
(
"RC5_32/12/16 cbc bytes per sec = %12.2f (%9.3fuS)
\n
"
,
c
,
8.0e6
/
c
);
exit
(
0
);
#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
return
(
0
);
#endif
}
src/main/jni/openssl/crypto/rc5/rc5test.c
0 → 100644
View file @
374893f5
/* crypto/rc5/rc5test.c */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* This has been a quickly hacked 'ideatest.c'. When I add tests for other
* RC5 modes, more of the code will be uncommented. */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "../e_os.h"
#ifdef OPENSSL_NO_RC5
int
main
(
int
argc
,
char
*
argv
[])
{
printf
(
"No RC5 support
\n
"
);
return
(
0
);
}
#else
#include <openssl/rc5.h>
static
unsigned
char
RC5key
[
5
][
16
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x91
,
0x5f
,
0x46
,
0x19
,
0xbe
,
0x41
,
0xb2
,
0x51
,
0x63
,
0x55
,
0xa5
,
0x01
,
0x10
,
0xa9
,
0xce
,
0x91
},
{
0x78
,
0x33
,
0x48
,
0xe7
,
0x5a
,
0xeb
,
0x0f
,
0x2f
,
0xd7
,
0xb1
,
0x69
,
0xbb
,
0x8d
,
0xc1
,
0x67
,
0x87
},
{
0xdc
,
0x49
,
0xdb
,
0x13
,
0x75
,
0xa5
,
0x58
,
0x4f
,
0x64
,
0x85
,
0xb4
,
0x13
,
0xb5
,
0xf1
,
0x2b
,
0xaf
},
{
0x52
,
0x69
,
0xf1
,
0x49
,
0xd4
,
0x1b
,
0xa0
,
0x15
,
0x24
,
0x97
,
0x57
,
0x4d
,
0x7f
,
0x15
,
0x31
,
0x25
},
};
static
unsigned
char
RC5plain
[
5
][
8
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x21
,
0xA5
,
0xDB
,
0xEE
,
0x15
,
0x4B
,
0x8F
,
0x6D
},
{
0xF7
,
0xC0
,
0x13
,
0xAC
,
0x5B
,
0x2B
,
0x89
,
0x52
},
{
0x2F
,
0x42
,
0xB3
,
0xB7
,
0x03
,
0x69
,
0xFC
,
0x92
},
{
0x65
,
0xC1
,
0x78
,
0xB2
,
0x84
,
0xD1
,
0x97
,
0xCC
},
};
static
unsigned
char
RC5cipher
[
5
][
8
]
=
{
{
0x21
,
0xA5
,
0xDB
,
0xEE
,
0x15
,
0x4B
,
0x8F
,
0x6D
},
{
0xF7
,
0xC0
,
0x13
,
0xAC
,
0x5B
,
0x2B
,
0x89
,
0x52
},
{
0x2F
,
0x42
,
0xB3
,
0xB7
,
0x03
,
0x69
,
0xFC
,
0x92
},
{
0x65
,
0xC1
,
0x78
,
0xB2
,
0x84
,
0xD1
,
0x97
,
0xCC
},
{
0xEB
,
0x44
,
0xE4
,
0x15
,
0xDA
,
0x31
,
0x98
,
0x24
},
};
#define RC5_CBC_NUM 27
static
unsigned
char
rc5_cbc_cipher
[
RC5_CBC_NUM
][
8
]
=
{
{
0x7a
,
0x7b
,
0xba
,
0x4d
,
0x79
,
0x11
,
0x1d
,
0x1e
},
{
0x79
,
0x7b
,
0xba
,
0x4d
,
0x78
,
0x11
,
0x1d
,
0x1e
},
{
0x7a
,
0x7b
,
0xba
,
0x4d
,
0x79
,
0x11
,
0x1d
,
0x1f
},
{
0x7a
,
0x7b
,
0xba
,
0x4d
,
0x79
,
0x11
,
0x1d
,
0x1f
},
{
0x8b
,
0x9d
,
0xed
,
0x91
,
0xce
,
0x77
,
0x94
,
0xa6
},
{
0x2f
,
0x75
,
0x9f
,
0xe7
,
0xad
,
0x86
,
0xa3
,
0x78
},
{
0xdc
,
0xa2
,
0x69
,
0x4b
,
0xf4
,
0x0e
,
0x07
,
0x88
},
{
0xdc
,
0xa2
,
0x69
,
0x4b
,
0xf4
,
0x0e
,
0x07
,
0x88
},
{
0xdc
,
0xfe
,
0x09
,
0x85
,
0x77
,
0xec
,
0xa5
,
0xff
},
{
0x96
,
0x46
,
0xfb
,
0x77
,
0x63
,
0x8f
,
0x9c
,
0xa8
},
{
0xb2
,
0xb3
,
0x20
,
0x9d
,
0xb6
,
0x59
,
0x4d
,
0xa4
},
{
0x54
,
0x5f
,
0x7f
,
0x32
,
0xa5
,
0xfc
,
0x38
,
0x36
},
{
0x82
,
0x85
,
0xe7
,
0xc1
,
0xb5
,
0xbc
,
0x74
,
0x02
},
{
0xfc
,
0x58
,
0x6f
,
0x92
,
0xf7
,
0x08
,
0x09
,
0x34
},
{
0xcf
,
0x27
,
0x0e
,
0xf9
,
0x71
,
0x7f
,
0xf7
,
0xc4
},
{
0xe4
,
0x93
,
0xf1
,
0xc1
,
0xbb
,
0x4d
,
0x6e
,
0x8c
},
{
0x5c
,
0x4c
,
0x04
,
0x1e
,
0x0f
,
0x21
,
0x7a
,
0xc3
},
{
0x92
,
0x1f
,
0x12
,
0x48
,
0x53
,
0x73
,
0xb4
,
0xf7
},
{
0x5b
,
0xa0
,
0xca
,
0x6b
,
0xbe
,
0x7f
,
0x5f
,
0xad
},
{
0xc5
,
0x33
,
0x77
,
0x1c
,
0xd0
,
0x11
,
0x0e
,
0x63
},
{
0x29
,
0x4d
,
0xdb
,
0x46
,
0xb3
,
0x27
,
0x8d
,
0x60
},
{
0xda
,
0xd6
,
0xbd
,
0xa9
,
0xdf
,
0xe8
,
0xf7
,
0xe8
},
{
0x97
,
0xe0
,
0x78
,
0x78
,
0x37
,
0xed
,
0x31
,
0x7f
},
{
0x78
,
0x75
,
0xdb
,
0xf6
,
0x73
,
0x8c
,
0x64
,
0x78
},
{
0x8f
,
0x34
,
0xc3
,
0xc6
,
0x81
,
0xc9
,
0x96
,
0x95
},
{
0x7c
,
0xb3
,
0xf1
,
0xdf
,
0x34
,
0xf9
,
0x48
,
0x11
},
{
0x7f
,
0xd1
,
0xa0
,
0x23
,
0xa5
,
0xbb
,
0xa2
,
0x17
},
};
static
unsigned
char
rc5_cbc_key
[
RC5_CBC_NUM
][
17
]
=
{
{
1
,
0x00
},
{
1
,
0x00
},
{
1
,
0x00
},
{
1
,
0x00
},
{
1
,
0x00
},
{
1
,
0x11
},
{
1
,
0x00
},
{
4
,
0x00
,
0x00
,
0x00
,
0x00
},
{
1
,
0x00
},
{
1
,
0x00
},
{
1
,
0x00
},
{
1
,
0x00
},
{
4
,
0x01
,
0x02
,
0x03
,
0x04
},
{
4
,
0x01
,
0x02
,
0x03
,
0x04
},
{
4
,
0x01
,
0x02
,
0x03
,
0x04
},
{
8
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
8
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
8
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
8
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
16
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
16
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
16
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
,
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
5
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
},
{
5
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
},
{
5
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
},
{
5
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
},
{
5
,
0x01
,
0x02
,
0x03
,
0x04
,
0x05
},
};
static
unsigned
char
rc5_cbc_plain
[
RC5_CBC_NUM
][
8
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0x10
,
0x20
,
0x30
,
0x40
,
0x50
,
0x60
,
0x70
,
0x80
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
,
0xff
},
{
0x08
,
0x08
,
0x08
,
0x08
,
0x08
,
0x08
,
0x08
,
0x08
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x11
,
0x22
,
0x33
,
0x44
,
0x55
,
0x66
,
0x77
,
0x01
},
};
static
int
rc5_cbc_rounds
[
RC5_CBC_NUM
]
=
{
0
,
0
,
0
,
0
,
0
,
1
,
2
,
2
,
8
,
8
,
12
,
16
,
8
,
12
,
16
,
12
,
8
,
12
,
16
,
8
,
12
,
16
,
12
,
8
,
8
,
8
,
8
,
};
static
unsigned
char
rc5_cbc_iv
[
RC5_CBC_NUM
][
8
]
=
{
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x01
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x01
,
0x02
,
0x03
,
0x04
,
0x05
,
0x06
,
0x07
,
0x08
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x78
,
0x75
,
0xdb
,
0xf6
,
0x73
,
0x8c
,
0x64
,
0x78
},
{
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
},
{
0x7c
,
0xb3
,
0xf1
,
0xdf
,
0x34
,
0xf9
,
0x48
,
0x11
},
};
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
,
n
,
err
=
0
;
RC5_32_KEY
key
;
unsigned
char
buf
[
8
],
buf2
[
8
],
ivb
[
8
];
for
(
n
=
0
;
n
<
5
;
n
++
)
{
RC5_32_set_key
(
&
key
,
16
,
&
(
RC5key
[
n
][
0
]),
12
);
RC5_32_ecb_encrypt
(
&
(
RC5plain
[
n
][
0
]),
buf
,
&
key
,
RC5_ENCRYPT
);
if
(
memcmp
(
&
(
RC5cipher
[
n
][
0
]),
buf
,
8
)
!=
0
)
{
printf
(
"ecb RC5 error encrypting (%d)
\n
"
,
n
+
1
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
buf
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
RC5cipher
[
n
][
i
]);
err
=
20
;
printf
(
"
\n
"
);
}
RC5_32_ecb_encrypt
(
buf
,
buf2
,
&
key
,
RC5_DECRYPT
);
if
(
memcmp
(
&
(
RC5plain
[
n
][
0
]),
buf2
,
8
)
!=
0
)
{
printf
(
"ecb RC5 error decrypting (%d)
\n
"
,
n
+
1
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
buf2
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
RC5plain
[
n
][
i
]);
printf
(
"
\n
"
);
err
=
3
;
}
}
if
(
err
==
0
)
printf
(
"ecb RC5 ok
\n
"
);
for
(
n
=
0
;
n
<
RC5_CBC_NUM
;
n
++
)
{
i
=
rc5_cbc_rounds
[
n
];
if
(
i
<
8
)
continue
;
RC5_32_set_key
(
&
key
,
rc5_cbc_key
[
n
][
0
],
&
(
rc5_cbc_key
[
n
][
1
]),
i
);
memcpy
(
ivb
,
&
(
rc5_cbc_iv
[
n
][
0
]),
8
);
RC5_32_cbc_encrypt
(
&
(
rc5_cbc_plain
[
n
][
0
]),
buf
,
8
,
&
key
,
&
(
ivb
[
0
]),
RC5_ENCRYPT
);
if
(
memcmp
(
&
(
rc5_cbc_cipher
[
n
][
0
]),
buf
,
8
)
!=
0
)
{
printf
(
"cbc RC5 error encrypting (%d)
\n
"
,
n
+
1
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
buf
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
rc5_cbc_cipher
[
n
][
i
]);
err
=
30
;
printf
(
"
\n
"
);
}
memcpy
(
ivb
,
&
(
rc5_cbc_iv
[
n
][
0
]),
8
);
RC5_32_cbc_encrypt
(
buf
,
buf2
,
8
,
&
key
,
&
(
ivb
[
0
]),
RC5_DECRYPT
);
if
(
memcmp
(
&
(
rc5_cbc_plain
[
n
][
0
]),
buf2
,
8
)
!=
0
)
{
printf
(
"cbc RC5 error decrypting (%d)
\n
"
,
n
+
1
);
printf
(
"got :"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
buf2
[
i
]);
printf
(
"
\n
"
);
printf
(
"expected:"
);
for
(
i
=
0
;
i
<
8
;
i
++
)
printf
(
"%02X "
,
rc5_cbc_plain
[
n
][
i
]);
printf
(
"
\n
"
);
err
=
3
;
}
}
if
(
err
==
0
)
printf
(
"cbc RC5 ok
\n
"
);
EXIT
(
err
);
return
(
err
);
}
#ifdef undef
static
int
cfb64_test
(
unsigned
char
*
cfb_cipher
)
{
IDEA_KEY_SCHEDULE
eks
,
dks
;
int
err
=
0
,
i
,
n
;
idea_set_encrypt_key
(
cfb_key
,
&
eks
);
idea_set_decrypt_key
(
&
eks
,
&
dks
);
memcpy
(
cfb_tmp
,
cfb_iv
,
8
);
n
=
0
;
idea_cfb64_encrypt
(
plain
,
cfb_buf1
,(
long
)
12
,
&
eks
,
cfb_tmp
,
&
n
,
IDEA_ENCRYPT
);
idea_cfb64_encrypt
(
&
(
plain
[
12
]),
&
(
cfb_buf1
[
12
]),
(
long
)
CFB_TEST_SIZE
-
12
,
&
eks
,
cfb_tmp
,
&
n
,
IDEA_ENCRYPT
);
if
(
memcmp
(
cfb_cipher
,
cfb_buf1
,
CFB_TEST_SIZE
)
!=
0
)
{
err
=
1
;
printf
(
"idea_cfb64_encrypt encrypt error
\n
"
);
for
(
i
=
0
;
i
<
CFB_TEST_SIZE
;
i
+=
8
)
printf
(
"%s
\n
"
,
pt
(
&
(
cfb_buf1
[
i
])));
}
memcpy
(
cfb_tmp
,
cfb_iv
,
8
);
n
=
0
;
idea_cfb64_encrypt
(
cfb_buf1
,
cfb_buf2
,(
long
)
17
,
&
eks
,
cfb_tmp
,
&
n
,
IDEA_DECRYPT
);
idea_cfb64_encrypt
(
&
(
cfb_buf1
[
17
]),
&
(
cfb_buf2
[
17
]),
(
long
)
CFB_TEST_SIZE
-
17
,
&
dks
,
cfb_tmp
,
&
n
,
IDEA_DECRYPT
);
if
(
memcmp
(
plain
,
cfb_buf2
,
CFB_TEST_SIZE
)
!=
0
)
{
err
=
1
;
printf
(
"idea_cfb_encrypt decrypt error
\n
"
);
for
(
i
=
0
;
i
<
24
;
i
+=
8
)
printf
(
"%s
\n
"
,
pt
(
&
(
cfb_buf2
[
i
])));
}
return
(
err
);
}
static
char
*
pt
(
unsigned
char
*
p
)
{
static
char
bufs
[
10
][
20
];
static
int
bnum
=
0
;
char
*
ret
;
int
i
;
static
char
*
f
=
"0123456789ABCDEF"
;
ret
=
&
(
bufs
[
bnum
++
][
0
]);
bnum
%=
10
;
for
(
i
=
0
;
i
<
8
;
i
++
)
{
ret
[
i
*
2
]
=
f
[(
p
[
i
]
>>
4
)
&
0xf
];
ret
[
i
*
2
+
1
]
=
f
[
p
[
i
]
&
0xf
];
}
ret
[
16
]
=
'\0'
;
return
(
ret
);
}
#endif
#endif
src/main/jni/openssl/crypto/seed/Makefile
0 → 100644
View file @
374893f5
#
# crypto/seed/Makefile
#
DIR
=
seed
TOP
=
../..
CC
=
cc
CPP
=
$(CC)
-E
INCLUDES
=
CFLAG
=
-g
MAKEFILE
=
Makefile
AR
=
ar r
CFLAGS
=
$(INCLUDES)
$(CFLAG)
GENERAL
=
Makefile
TEST
=
APPS
=
LIB
=
$(TOP)
/libcrypto.a
LIBSRC
=
seed.c seed_ecb.c seed_cbc.c seed_cfb.c seed_ofb.c
LIBOBJ
=
seed.o seed_ecb.o seed_cbc.o seed_cfb.o seed_ofb.o
SRC
=
$(LIBSRC)
EXHEADER
=
seed.h
HEADER
=
seed_locl.h
$(EXHEADER)
ALL
=
$(GENERAL)
$(SRC)
$(HEADER)
top
:
(
cd
../..
;
$(MAKE)
DIRS
=
crypto
SDIRS
=
$(DIR)
sub_all
)
all
:
lib
lib
:
$(LIBOBJ)
$(AR)
$(LIB)
$(LIBOBJ)
$(RANLIB)
$(LIB)
||
echo
Never mind.
@
touch
lib
files
:
$(PERL)
$(TOP)
/util/files.pl Makefile
>>
$(TOP)
/MINFO
links
:
@
$(PERL)
$(TOP)
/util/mklink.pl ../../include/openssl
$(EXHEADER)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../test
$(TEST)
@
$(PERL)
$(TOP)
/util/mklink.pl ../../apps
$(APPS)
install
:
@
[
-n
"
$(INSTALLTOP)
"
]
# should be set by top Makefile...
@
headerlist
=
"
$(EXHEADER)
"
;
for
i
in
$$
headerlist
;
\
do
\
(
cp
$$
i
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
;
\
chmod
644
$(INSTALL_PREFIX)$(INSTALLTOP)
/include/openssl/
$$
i
)
;
\
done
;
tags
:
ctags
$(SRC)
tests
:
lint
:
lint
-DLINT
$(INCLUDES)
$(SRC)
>
fluff
depend
:
@
[
-n
"
$(MAKEDEPEND)
"
]
# should be set by upper Makefile...
$(MAKEDEPEND)
--
$(CFLAG)
$(INCLUDES)
$(DEPFLAG)
--
$(PROGS)
$(LIBSRC)
dclean
:
$(PERL)
-pe
'if (/^# DO NOT DELETE THIS LINE/) {print; exit(0);}'
$(MAKEFILE)
>
Makefile.new
mv
-f
Makefile.new
$(MAKEFILE)
clean
:
rm
-f
*
.o
*
.obj lib tags core .pure .nfs
*
*
.old
*
.bak fluff
# DO NOT DELETE THIS LINE -- make depend depends on it.
seed.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
seed.o
:
../../include/openssl/opensslconf.h ../../include/openssl/opensslv.h
seed.o
:
../../include/openssl/ossl_typ.h ../../include/openssl/safestack.h
seed.o
:
../../include/openssl/seed.h ../../include/openssl/stack.h
seed.o
:
../../include/openssl/symhacks.h seed.c seed_locl.h
seed_cbc.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
seed_cbc.o
:
../../include/openssl/modes.h ../../include/openssl/opensslconf.h
seed_cbc.o
:
../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
seed_cbc.o
:
../../include/openssl/safestack.h ../../include/openssl/seed.h
seed_cbc.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
seed_cbc.o
:
seed_cbc.c
seed_cfb.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
seed_cfb.o
:
../../include/openssl/modes.h ../../include/openssl/opensslconf.h
seed_cfb.o
:
../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
seed_cfb.o
:
../../include/openssl/safestack.h ../../include/openssl/seed.h
seed_cfb.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
seed_cfb.o
:
seed_cfb.c
seed_ecb.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
seed_ecb.o
:
../../include/openssl/opensslconf.h
seed_ecb.o
:
../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
seed_ecb.o
:
../../include/openssl/safestack.h ../../include/openssl/seed.h
seed_ecb.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
seed_ecb.o
:
seed_ecb.c
seed_ofb.o
:
../../include/openssl/crypto.h ../../include/openssl/e_os2.h
seed_ofb.o
:
../../include/openssl/modes.h ../../include/openssl/opensslconf.h
seed_ofb.o
:
../../include/openssl/opensslv.h ../../include/openssl/ossl_typ.h
seed_ofb.o
:
../../include/openssl/safestack.h ../../include/openssl/seed.h
seed_ofb.o
:
../../include/openssl/stack.h ../../include/openssl/symhacks.h
seed_ofb.o
:
seed_ofb.c
src/main/jni/openssl/crypto/seed/seed.c
0 → 100644
View file @
374893f5
/*
* Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Neither the name of author nor the names of its contributors may
* be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#ifndef OPENSSL_NO_SEED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef WIN32
#include <memory.h>
#endif
#include <openssl/crypto.h>
#include <openssl/seed.h>
#include "seed_locl.h"
#ifdef SS
/* can get defined on Solaris by inclusion of <stdlib.h> */
#undef SS
#endif
static
const
seed_word
SS
[
4
][
256
]
=
{
{
0x2989a1a8
,
0x05858184
,
0x16c6d2d4
,
0x13c3d3d0
,
0x14445054
,
0x1d0d111c
,
0x2c8ca0ac
,
0x25052124
,
0x1d4d515c
,
0x03434340
,
0x18081018
,
0x1e0e121c
,
0x11415150
,
0x3cccf0fc
,
0x0acac2c8
,
0x23436360
,
0x28082028
,
0x04444044
,
0x20002020
,
0x1d8d919c
,
0x20c0e0e0
,
0x22c2e2e0
,
0x08c8c0c8
,
0x17071314
,
0x2585a1a4
,
0x0f8f838c
,
0x03030300
,
0x3b4b7378
,
0x3b8bb3b8
,
0x13031310
,
0x12c2d2d0
,
0x2ecee2ec
,
0x30407070
,
0x0c8c808c
,
0x3f0f333c
,
0x2888a0a8
,
0x32023230
,
0x1dcdd1dc
,
0x36c6f2f4
,
0x34447074
,
0x2ccce0ec
,
0x15859194
,
0x0b0b0308
,
0x17475354
,
0x1c4c505c
,
0x1b4b5358
,
0x3d8db1bc
,
0x01010100
,
0x24042024
,
0x1c0c101c
,
0x33437370
,
0x18889098
,
0x10001010
,
0x0cccc0cc
,
0x32c2f2f0
,
0x19c9d1d8
,
0x2c0c202c
,
0x27c7e3e4
,
0x32427270
,
0x03838380
,
0x1b8b9398
,
0x11c1d1d0
,
0x06868284
,
0x09c9c1c8
,
0x20406060
,
0x10405050
,
0x2383a3a0
,
0x2bcbe3e8
,
0x0d0d010c
,
0x3686b2b4
,
0x1e8e929c
,
0x0f4f434c
,
0x3787b3b4
,
0x1a4a5258
,
0x06c6c2c4
,
0x38487078
,
0x2686a2a4
,
0x12021210
,
0x2f8fa3ac
,
0x15c5d1d4
,
0x21416160
,
0x03c3c3c0
,
0x3484b0b4
,
0x01414140
,
0x12425250
,
0x3d4d717c
,
0x0d8d818c
,
0x08080008
,
0x1f0f131c
,
0x19899198
,
0x00000000
,
0x19091118
,
0x04040004
,
0x13435350
,
0x37c7f3f4
,
0x21c1e1e0
,
0x3dcdf1fc
,
0x36467274
,
0x2f0f232c
,
0x27072324
,
0x3080b0b0
,
0x0b8b8388
,
0x0e0e020c
,
0x2b8ba3a8
,
0x2282a2a0
,
0x2e4e626c
,
0x13839390
,
0x0d4d414c
,
0x29496168
,
0x3c4c707c
,
0x09090108
,
0x0a0a0208
,
0x3f8fb3bc
,
0x2fcfe3ec
,
0x33c3f3f0
,
0x05c5c1c4
,
0x07878384
,
0x14041014
,
0x3ecef2fc
,
0x24446064
,
0x1eced2dc
,
0x2e0e222c
,
0x0b4b4348
,
0x1a0a1218
,
0x06060204
,
0x21012120
,
0x2b4b6368
,
0x26466264
,
0x02020200
,
0x35c5f1f4
,
0x12829290
,
0x0a8a8288
,
0x0c0c000c
,
0x3383b3b0
,
0x3e4e727c
,
0x10c0d0d0
,
0x3a4a7278
,
0x07474344
,
0x16869294
,
0x25c5e1e4
,
0x26062224
,
0x00808080
,
0x2d8da1ac
,
0x1fcfd3dc
,
0x2181a1a0
,
0x30003030
,
0x37073334
,
0x2e8ea2ac
,
0x36063234
,
0x15051114
,
0x22022220
,
0x38083038
,
0x34c4f0f4
,
0x2787a3a4
,
0x05454144
,
0x0c4c404c
,
0x01818180
,
0x29c9e1e8
,
0x04848084
,
0x17879394
,
0x35053134
,
0x0bcbc3c8
,
0x0ecec2cc
,
0x3c0c303c
,
0x31417170
,
0x11011110
,
0x07c7c3c4
,
0x09898188
,
0x35457174
,
0x3bcbf3f8
,
0x1acad2d8
,
0x38c8f0f8
,
0x14849094
,
0x19495158
,
0x02828280
,
0x04c4c0c4
,
0x3fcff3fc
,
0x09494148
,
0x39093138
,
0x27476364
,
0x00c0c0c0
,
0x0fcfc3cc
,
0x17c7d3d4
,
0x3888b0b8
,
0x0f0f030c
,
0x0e8e828c
,
0x02424240
,
0x23032320
,
0x11819190
,
0x2c4c606c
,
0x1bcbd3d8
,
0x2484a0a4
,
0x34043034
,
0x31c1f1f0
,
0x08484048
,
0x02c2c2c0
,
0x2f4f636c
,
0x3d0d313c
,
0x2d0d212c
,
0x00404040
,
0x3e8eb2bc
,
0x3e0e323c
,
0x3c8cb0bc
,
0x01c1c1c0
,
0x2a8aa2a8
,
0x3a8ab2b8
,
0x0e4e424c
,
0x15455154
,
0x3b0b3338
,
0x1cccd0dc
,
0x28486068
,
0x3f4f737c
,
0x1c8c909c
,
0x18c8d0d8
,
0x0a4a4248
,
0x16465254
,
0x37477374
,
0x2080a0a0
,
0x2dcde1ec
,
0x06464244
,
0x3585b1b4
,
0x2b0b2328
,
0x25456164
,
0x3acaf2f8
,
0x23c3e3e0
,
0x3989b1b8
,
0x3181b1b0
,
0x1f8f939c
,
0x1e4e525c
,
0x39c9f1f8
,
0x26c6e2e4
,
0x3282b2b0
,
0x31013130
,
0x2acae2e8
,
0x2d4d616c
,
0x1f4f535c
,
0x24c4e0e4
,
0x30c0f0f0
,
0x0dcdc1cc
,
0x08888088
,
0x16061214
,
0x3a0a3238
,
0x18485058
,
0x14c4d0d4
,
0x22426260
,
0x29092128
,
0x07070304
,
0x33033330
,
0x28c8e0e8
,
0x1b0b1318
,
0x05050104
,
0x39497178
,
0x10809090
,
0x2a4a6268
,
0x2a0a2228
,
0x1a8a9298
},
{
0x38380830
,
0xe828c8e0
,
0x2c2d0d21
,
0xa42686a2
,
0xcc0fcfc3
,
0xdc1eced2
,
0xb03383b3
,
0xb83888b0
,
0xac2f8fa3
,
0x60204060
,
0x54154551
,
0xc407c7c3
,
0x44044440
,
0x6c2f4f63
,
0x682b4b63
,
0x581b4b53
,
0xc003c3c3
,
0x60224262
,
0x30330333
,
0xb43585b1
,
0x28290921
,
0xa02080a0
,
0xe022c2e2
,
0xa42787a3
,
0xd013c3d3
,
0x90118191
,
0x10110111
,
0x04060602
,
0x1c1c0c10
,
0xbc3c8cb0
,
0x34360632
,
0x480b4b43
,
0xec2fcfe3
,
0x88088880
,
0x6c2c4c60
,
0xa82888a0
,
0x14170713
,
0xc404c4c0
,
0x14160612
,
0xf434c4f0
,
0xc002c2c2
,
0x44054541
,
0xe021c1e1
,
0xd416c6d2
,
0x3c3f0f33
,
0x3c3d0d31
,
0x8c0e8e82
,
0x98188890
,
0x28280820
,
0x4c0e4e42
,
0xf436c6f2
,
0x3c3e0e32
,
0xa42585a1
,
0xf839c9f1
,
0x0c0d0d01
,
0xdc1fcfd3
,
0xd818c8d0
,
0x282b0b23
,
0x64264662
,
0x783a4a72
,
0x24270723
,
0x2c2f0f23
,
0xf031c1f1
,
0x70324272
,
0x40024242
,
0xd414c4d0
,
0x40014141
,
0xc000c0c0
,
0x70334373
,
0x64274763
,
0xac2c8ca0
,
0x880b8b83
,
0xf437c7f3
,
0xac2d8da1
,
0x80008080
,
0x1c1f0f13
,
0xc80acac2
,
0x2c2c0c20
,
0xa82a8aa2
,
0x34340430
,
0xd012c2d2
,
0x080b0b03
,
0xec2ecee2
,
0xe829c9e1
,
0x5c1d4d51
,
0x94148490
,
0x18180810
,
0xf838c8f0
,
0x54174753
,
0xac2e8ea2
,
0x08080800
,
0xc405c5c1
,
0x10130313
,
0xcc0dcdc1
,
0x84068682
,
0xb83989b1
,
0xfc3fcff3
,
0x7c3d4d71
,
0xc001c1c1
,
0x30310131
,
0xf435c5f1
,
0x880a8a82
,
0x682a4a62
,
0xb03181b1
,
0xd011c1d1
,
0x20200020
,
0xd417c7d3
,
0x00020202
,
0x20220222
,
0x04040400
,
0x68284860
,
0x70314171
,
0x04070703
,
0xd81bcbd3
,
0x9c1d8d91
,
0x98198991
,
0x60214161
,
0xbc3e8eb2
,
0xe426c6e2
,
0x58194951
,
0xdc1dcdd1
,
0x50114151
,
0x90108090
,
0xdc1cccd0
,
0x981a8a92
,
0xa02383a3
,
0xa82b8ba3
,
0xd010c0d0
,
0x80018181
,
0x0c0f0f03
,
0x44074743
,
0x181a0a12
,
0xe023c3e3
,
0xec2ccce0
,
0x8c0d8d81
,
0xbc3f8fb3
,
0x94168692
,
0x783b4b73
,
0x5c1c4c50
,
0xa02282a2
,
0xa02181a1
,
0x60234363
,
0x20230323
,
0x4c0d4d41
,
0xc808c8c0
,
0x9c1e8e92
,
0x9c1c8c90
,
0x383a0a32
,
0x0c0c0c00
,
0x2c2e0e22
,
0xb83a8ab2
,
0x6c2e4e62
,
0x9c1f8f93
,
0x581a4a52
,
0xf032c2f2
,
0x90128292
,
0xf033c3f3
,
0x48094941
,
0x78384870
,
0xcc0cccc0
,
0x14150511
,
0xf83bcbf3
,
0x70304070
,
0x74354571
,
0x7c3f4f73
,
0x34350531
,
0x10100010
,
0x00030303
,
0x64244460
,
0x6c2d4d61
,
0xc406c6c2
,
0x74344470
,
0xd415c5d1
,
0xb43484b0
,
0xe82acae2
,
0x08090901
,
0x74364672
,
0x18190911
,
0xfc3ecef2
,
0x40004040
,
0x10120212
,
0xe020c0e0
,
0xbc3d8db1
,
0x04050501
,
0xf83acaf2
,
0x00010101
,
0xf030c0f0
,
0x282a0a22
,
0x5c1e4e52
,
0xa82989a1
,
0x54164652
,
0x40034343
,
0x84058581
,
0x14140410
,
0x88098981
,
0x981b8b93
,
0xb03080b0
,
0xe425c5e1
,
0x48084840
,
0x78394971
,
0x94178793
,
0xfc3cccf0
,
0x1c1e0e12
,
0x80028282
,
0x20210121
,
0x8c0c8c80
,
0x181b0b13
,
0x5c1f4f53
,
0x74374773
,
0x54144450
,
0xb03282b2
,
0x1c1d0d11
,
0x24250521
,
0x4c0f4f43
,
0x00000000
,
0x44064642
,
0xec2dcde1
,
0x58184850
,
0x50124252
,
0xe82bcbe3
,
0x7c3e4e72
,
0xd81acad2
,
0xc809c9c1
,
0xfc3dcdf1
,
0x30300030
,
0x94158591
,
0x64254561
,
0x3c3c0c30
,
0xb43686b2
,
0xe424c4e0
,
0xb83b8bb3
,
0x7c3c4c70
,
0x0c0e0e02
,
0x50104050
,
0x38390931
,
0x24260622
,
0x30320232
,
0x84048480
,
0x68294961
,
0x90138393
,
0x34370733
,
0xe427c7e3
,
0x24240420
,
0xa42484a0
,
0xc80bcbc3
,
0x50134353
,
0x080a0a02
,
0x84078783
,
0xd819c9d1
,
0x4c0c4c40
,
0x80038383
,
0x8c0f8f83
,
0xcc0ecec2
,
0x383b0b33
,
0x480a4a42
,
0xb43787b3
},
{
0xa1a82989
,
0x81840585
,
0xd2d416c6
,
0xd3d013c3
,
0x50541444
,
0x111c1d0d
,
0xa0ac2c8c
,
0x21242505
,
0x515c1d4d
,
0x43400343
,
0x10181808
,
0x121c1e0e
,
0x51501141
,
0xf0fc3ccc
,
0xc2c80aca
,
0x63602343
,
0x20282808
,
0x40440444
,
0x20202000
,
0x919c1d8d
,
0xe0e020c0
,
0xe2e022c2
,
0xc0c808c8
,
0x13141707
,
0xa1a42585
,
0x838c0f8f
,
0x03000303
,
0x73783b4b
,
0xb3b83b8b
,
0x13101303
,
0xd2d012c2
,
0xe2ec2ece
,
0x70703040
,
0x808c0c8c
,
0x333c3f0f
,
0xa0a82888
,
0x32303202
,
0xd1dc1dcd
,
0xf2f436c6
,
0x70743444
,
0xe0ec2ccc
,
0x91941585
,
0x03080b0b
,
0x53541747
,
0x505c1c4c
,
0x53581b4b
,
0xb1bc3d8d
,
0x01000101
,
0x20242404
,
0x101c1c0c
,
0x73703343
,
0x90981888
,
0x10101000
,
0xc0cc0ccc
,
0xf2f032c2
,
0xd1d819c9
,
0x202c2c0c
,
0xe3e427c7
,
0x72703242
,
0x83800383
,
0x93981b8b
,
0xd1d011c1
,
0x82840686
,
0xc1c809c9
,
0x60602040
,
0x50501040
,
0xa3a02383
,
0xe3e82bcb
,
0x010c0d0d
,
0xb2b43686
,
0x929c1e8e
,
0x434c0f4f
,
0xb3b43787
,
0x52581a4a
,
0xc2c406c6
,
0x70783848
,
0xa2a42686
,
0x12101202
,
0xa3ac2f8f
,
0xd1d415c5
,
0x61602141
,
0xc3c003c3
,
0xb0b43484
,
0x41400141
,
0x52501242
,
0x717c3d4d
,
0x818c0d8d
,
0x00080808
,
0x131c1f0f
,
0x91981989
,
0x00000000
,
0x11181909
,
0x00040404
,
0x53501343
,
0xf3f437c7
,
0xe1e021c1
,
0xf1fc3dcd
,
0x72743646
,
0x232c2f0f
,
0x23242707
,
0xb0b03080
,
0x83880b8b
,
0x020c0e0e
,
0xa3a82b8b
,
0xa2a02282
,
0x626c2e4e
,
0x93901383
,
0x414c0d4d
,
0x61682949
,
0x707c3c4c
,
0x01080909
,
0x02080a0a
,
0xb3bc3f8f
,
0xe3ec2fcf
,
0xf3f033c3
,
0xc1c405c5
,
0x83840787
,
0x10141404
,
0xf2fc3ece
,
0x60642444
,
0xd2dc1ece
,
0x222c2e0e
,
0x43480b4b
,
0x12181a0a
,
0x02040606
,
0x21202101
,
0x63682b4b
,
0x62642646
,
0x02000202
,
0xf1f435c5
,
0x92901282
,
0x82880a8a
,
0x000c0c0c
,
0xb3b03383
,
0x727c3e4e
,
0xd0d010c0
,
0x72783a4a
,
0x43440747
,
0x92941686
,
0xe1e425c5
,
0x22242606
,
0x80800080
,
0xa1ac2d8d
,
0xd3dc1fcf
,
0xa1a02181
,
0x30303000
,
0x33343707
,
0xa2ac2e8e
,
0x32343606
,
0x11141505
,
0x22202202
,
0x30383808
,
0xf0f434c4
,
0xa3a42787
,
0x41440545
,
0x404c0c4c
,
0x81800181
,
0xe1e829c9
,
0x80840484
,
0x93941787
,
0x31343505
,
0xc3c80bcb
,
0xc2cc0ece
,
0x303c3c0c
,
0x71703141
,
0x11101101
,
0xc3c407c7
,
0x81880989
,
0x71743545
,
0xf3f83bcb
,
0xd2d81aca
,
0xf0f838c8
,
0x90941484
,
0x51581949
,
0x82800282
,
0xc0c404c4
,
0xf3fc3fcf
,
0x41480949
,
0x31383909
,
0x63642747
,
0xc0c000c0
,
0xc3cc0fcf
,
0xd3d417c7
,
0xb0b83888
,
0x030c0f0f
,
0x828c0e8e
,
0x42400242
,
0x23202303
,
0x91901181
,
0x606c2c4c
,
0xd3d81bcb
,
0xa0a42484
,
0x30343404
,
0xf1f031c1
,
0x40480848
,
0xc2c002c2
,
0x636c2f4f
,
0x313c3d0d
,
0x212c2d0d
,
0x40400040
,
0xb2bc3e8e
,
0x323c3e0e
,
0xb0bc3c8c
,
0xc1c001c1
,
0xa2a82a8a
,
0xb2b83a8a
,
0x424c0e4e
,
0x51541545
,
0x33383b0b
,
0xd0dc1ccc
,
0x60682848
,
0x737c3f4f
,
0x909c1c8c
,
0xd0d818c8
,
0x42480a4a
,
0x52541646
,
0x73743747
,
0xa0a02080
,
0xe1ec2dcd
,
0x42440646
,
0xb1b43585
,
0x23282b0b
,
0x61642545
,
0xf2f83aca
,
0xe3e023c3
,
0xb1b83989
,
0xb1b03181
,
0x939c1f8f
,
0x525c1e4e
,
0xf1f839c9
,
0xe2e426c6
,
0xb2b03282
,
0x31303101
,
0xe2e82aca
,
0x616c2d4d
,
0x535c1f4f
,
0xe0e424c4
,
0xf0f030c0
,
0xc1cc0dcd
,
0x80880888
,
0x12141606
,
0x32383a0a
,
0x50581848
,
0xd0d414c4
,
0x62602242
,
0x21282909
,
0x03040707
,
0x33303303
,
0xe0e828c8
,
0x13181b0b
,
0x01040505
,
0x71783949
,
0x90901080
,
0x62682a4a
,
0x22282a0a
,
0x92981a8a
},
{
0x08303838
,
0xc8e0e828
,
0x0d212c2d
,
0x86a2a426
,
0xcfc3cc0f
,
0xced2dc1e
,
0x83b3b033
,
0x88b0b838
,
0x8fa3ac2f
,
0x40606020
,
0x45515415
,
0xc7c3c407
,
0x44404404
,
0x4f636c2f
,
0x4b63682b
,
0x4b53581b
,
0xc3c3c003
,
0x42626022
,
0x03333033
,
0x85b1b435
,
0x09212829
,
0x80a0a020
,
0xc2e2e022
,
0x87a3a427
,
0xc3d3d013
,
0x81919011
,
0x01111011
,
0x06020406
,
0x0c101c1c
,
0x8cb0bc3c
,
0x06323436
,
0x4b43480b
,
0xcfe3ec2f
,
0x88808808
,
0x4c606c2c
,
0x88a0a828
,
0x07131417
,
0xc4c0c404
,
0x06121416
,
0xc4f0f434
,
0xc2c2c002
,
0x45414405
,
0xc1e1e021
,
0xc6d2d416
,
0x0f333c3f
,
0x0d313c3d
,
0x8e828c0e
,
0x88909818
,
0x08202828
,
0x4e424c0e
,
0xc6f2f436
,
0x0e323c3e
,
0x85a1a425
,
0xc9f1f839
,
0x0d010c0d
,
0xcfd3dc1f
,
0xc8d0d818
,
0x0b23282b
,
0x46626426
,
0x4a72783a
,
0x07232427
,
0x0f232c2f
,
0xc1f1f031
,
0x42727032
,
0x42424002
,
0xc4d0d414
,
0x41414001
,
0xc0c0c000
,
0x43737033
,
0x47636427
,
0x8ca0ac2c
,
0x8b83880b
,
0xc7f3f437
,
0x8da1ac2d
,
0x80808000
,
0x0f131c1f
,
0xcac2c80a
,
0x0c202c2c
,
0x8aa2a82a
,
0x04303434
,
0xc2d2d012
,
0x0b03080b
,
0xcee2ec2e
,
0xc9e1e829
,
0x4d515c1d
,
0x84909414
,
0x08101818
,
0xc8f0f838
,
0x47535417
,
0x8ea2ac2e
,
0x08000808
,
0xc5c1c405
,
0x03131013
,
0xcdc1cc0d
,
0x86828406
,
0x89b1b839
,
0xcff3fc3f
,
0x4d717c3d
,
0xc1c1c001
,
0x01313031
,
0xc5f1f435
,
0x8a82880a
,
0x4a62682a
,
0x81b1b031
,
0xc1d1d011
,
0x00202020
,
0xc7d3d417
,
0x02020002
,
0x02222022
,
0x04000404
,
0x48606828
,
0x41717031
,
0x07030407
,
0xcbd3d81b
,
0x8d919c1d
,
0x89919819
,
0x41616021
,
0x8eb2bc3e
,
0xc6e2e426
,
0x49515819
,
0xcdd1dc1d
,
0x41515011
,
0x80909010
,
0xccd0dc1c
,
0x8a92981a
,
0x83a3a023
,
0x8ba3a82b
,
0xc0d0d010
,
0x81818001
,
0x0f030c0f
,
0x47434407
,
0x0a12181a
,
0xc3e3e023
,
0xcce0ec2c
,
0x8d818c0d
,
0x8fb3bc3f
,
0x86929416
,
0x4b73783b
,
0x4c505c1c
,
0x82a2a022
,
0x81a1a021
,
0x43636023
,
0x03232023
,
0x4d414c0d
,
0xc8c0c808
,
0x8e929c1e
,
0x8c909c1c
,
0x0a32383a
,
0x0c000c0c
,
0x0e222c2e
,
0x8ab2b83a
,
0x4e626c2e
,
0x8f939c1f
,
0x4a52581a
,
0xc2f2f032
,
0x82929012
,
0xc3f3f033
,
0x49414809
,
0x48707838
,
0xccc0cc0c
,
0x05111415
,
0xcbf3f83b
,
0x40707030
,
0x45717435
,
0x4f737c3f
,
0x05313435
,
0x00101010
,
0x03030003
,
0x44606424
,
0x4d616c2d
,
0xc6c2c406
,
0x44707434
,
0xc5d1d415
,
0x84b0b434
,
0xcae2e82a
,
0x09010809
,
0x46727436
,
0x09111819
,
0xcef2fc3e
,
0x40404000
,
0x02121012
,
0xc0e0e020
,
0x8db1bc3d
,
0x05010405
,
0xcaf2f83a
,
0x01010001
,
0xc0f0f030
,
0x0a22282a
,
0x4e525c1e
,
0x89a1a829
,
0x46525416
,
0x43434003
,
0x85818405
,
0x04101414
,
0x89818809
,
0x8b93981b
,
0x80b0b030
,
0xc5e1e425
,
0x48404808
,
0x49717839
,
0x87939417
,
0xccf0fc3c
,
0x0e121c1e
,
0x82828002
,
0x01212021
,
0x8c808c0c
,
0x0b13181b
,
0x4f535c1f
,
0x47737437
,
0x44505414
,
0x82b2b032
,
0x0d111c1d
,
0x05212425
,
0x4f434c0f
,
0x00000000
,
0x46424406
,
0xcde1ec2d
,
0x48505818
,
0x42525012
,
0xcbe3e82b
,
0x4e727c3e
,
0xcad2d81a
,
0xc9c1c809
,
0xcdf1fc3d
,
0x00303030
,
0x85919415
,
0x45616425
,
0x0c303c3c
,
0x86b2b436
,
0xc4e0e424
,
0x8bb3b83b
,
0x4c707c3c
,
0x0e020c0e
,
0x40505010
,
0x09313839
,
0x06222426
,
0x02323032
,
0x84808404
,
0x49616829
,
0x83939013
,
0x07333437
,
0xc7e3e427
,
0x04202424
,
0x84a0a424
,
0xcbc3c80b
,
0x43535013
,
0x0a02080a
,
0x87838407
,
0xc9d1d819
,
0x4c404c0c
,
0x83838003
,
0x8f838c0f
,
0xcec2cc0e
,
0x0b33383b
,
0x4a42480a
,
0x87b3b437
}
};
/* key schedule constants - golden ratio */
#define KC0 0x9e3779b9
#define KC1 0x3c6ef373
#define KC2 0x78dde6e6
#define KC3 0xf1bbcdcc
#define KC4 0xe3779b99
#define KC5 0xc6ef3733
#define KC6 0x8dde6e67
#define KC7 0x1bbcdccf
#define KC8 0x3779b99e
#define KC9 0x6ef3733c
#define KC10 0xdde6e678
#define KC11 0xbbcdccf1
#define KC12 0x779b99e3
#define KC13 0xef3733c6
#define KC14 0xde6e678d
#define KC15 0xbcdccf1b
#if defined(OPENSSL_SMALL_FOOTPRINT)
static
const
seed_word
KC
[]
=
{
KC0
,
KC1
,
KC2
,
KC3
,
KC4
,
KC5
,
KC6
,
KC7
,
KC8
,
KC9
,
KC10
,
KC11
,
KC12
,
KC13
,
KC14
,
KC15
};
#endif
void
SEED_set_key
(
const
unsigned
char
rawkey
[
SEED_KEY_LENGTH
],
SEED_KEY_SCHEDULE
*
ks
)
#ifdef OPENSSL_FIPS
{
fips_cipher_abort
(
SEED
);
private_SEED_set_key
(
rawkey
,
ks
);
}
void
private_SEED_set_key
(
const
unsigned
char
rawkey
[
SEED_KEY_LENGTH
],
SEED_KEY_SCHEDULE
*
ks
)
#endif
{
seed_word
x1
,
x2
,
x3
,
x4
;
seed_word
t0
,
t1
;
char2word
(
rawkey
,
x1
);
char2word
(
rawkey
+
4
,
x2
);
char2word
(
rawkey
+
8
,
x3
);
char2word
(
rawkey
+
12
,
x4
);
t0
=
(
x1
+
x3
-
KC0
)
&
0xffffffff
;
t1
=
(
x2
-
x4
+
KC0
)
&
0xffffffff
;
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
0
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC1
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
2
]);
#if !defined(OPENSSL_SMALL_FOOTPRINT)
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC2
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
4
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC3
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
6
]);
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC4
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
8
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC5
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
10
]);
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC6
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
12
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC7
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
14
]);
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC8
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
16
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC9
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
18
]);
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC10
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
20
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC11
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
22
]);
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC12
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
24
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC13
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
26
]);
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC14
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
28
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC15
);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
30
]);
#else
{
int
i
;
for
(
i
=
2
;
i
<
16
;
i
+=
2
)
{
KEYSCHEDULE_UPDATE0
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC
[
i
]);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
i
*
2
]);
KEYSCHEDULE_UPDATE1
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
KC
[
i
+
1
]);
KEYUPDATE_TEMP
(
t0
,
t1
,
&
ks
->
data
[
i
*
2
+
2
]);
}
}
#endif
}
void
SEED_encrypt
(
const
unsigned
char
s
[
SEED_BLOCK_SIZE
],
unsigned
char
d
[
SEED_BLOCK_SIZE
],
const
SEED_KEY_SCHEDULE
*
ks
)
{
seed_word
x1
,
x2
,
x3
,
x4
;
seed_word
t0
,
t1
;
char2word
(
s
,
x1
);
char2word
(
s
+
4
,
x2
);
char2word
(
s
+
8
,
x3
);
char2word
(
s
+
12
,
x4
);
#if !defined(OPENSSL_SMALL_FOOTPRINT)
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
0
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
2
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
4
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
6
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
8
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
10
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
12
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
14
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
16
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
18
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
20
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
22
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
24
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
26
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
28
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
30
);
#else
{
int
i
;
for
(
i
=
0
;
i
<
30
;
i
+=
4
)
{
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
i
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
i
+
2
);
}
}
#endif
word2char
(
x3
,
d
);
word2char
(
x4
,
d
+
4
);
word2char
(
x1
,
d
+
8
);
word2char
(
x2
,
d
+
12
);
}
void
SEED_decrypt
(
const
unsigned
char
s
[
SEED_BLOCK_SIZE
],
unsigned
char
d
[
SEED_BLOCK_SIZE
],
const
SEED_KEY_SCHEDULE
*
ks
)
{
seed_word
x1
,
x2
,
x3
,
x4
;
seed_word
t0
,
t1
;
char2word
(
s
,
x1
);
char2word
(
s
+
4
,
x2
);
char2word
(
s
+
8
,
x3
);
char2word
(
s
+
12
,
x4
);
#if !defined(OPENSSL_SMALL_FOOTPRINT)
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
30
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
28
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
26
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
24
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
22
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
20
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
18
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
16
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
14
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
12
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
10
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
8
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
6
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
4
);
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
2
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
0
);
#else
{
int
i
;
for
(
i
=
30
;
i
>
0
;
i
-=
4
)
{
E_SEED
(
t0
,
t1
,
x1
,
x2
,
x3
,
x4
,
i
);
E_SEED
(
t0
,
t1
,
x3
,
x4
,
x1
,
x2
,
i
-
2
);
}
}
#endif
word2char
(
x3
,
d
);
word2char
(
x4
,
d
+
4
);
word2char
(
x1
,
d
+
8
);
word2char
(
x2
,
d
+
12
);
}
#endif
/* OPENSSL_NO_SEED */
src/main/jni/openssl/crypto/seed/seed.h
0 → 100644
View file @
374893f5
/*
* Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Neither the name of author nor the names of its contributors may
* be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
/* ====================================================================
* Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
#ifndef HEADER_SEED_H
#define HEADER_SEED_H
#include <openssl/opensslconf.h>
#include <openssl/e_os2.h>
#include <openssl/crypto.h>
#ifdef OPENSSL_NO_SEED
#error SEED is disabled.
#endif
#ifdef AES_LONG
/* look whether we need 'long' to get 32 bits */
# ifndef SEED_LONG
# define SEED_LONG 1
# endif
#endif
#if !defined(NO_SYS_TYPES_H)
# include <sys/types.h>
#endif
#define SEED_BLOCK_SIZE 16
#define SEED_KEY_LENGTH 16
#ifdef __cplusplus
extern
"C"
{
#endif
typedef
struct
seed_key_st
{
#ifdef SEED_LONG
unsigned
long
data
[
32
];
#else
unsigned
int
data
[
32
];
#endif
}
SEED_KEY_SCHEDULE
;
#ifdef OPENSSL_FIPS
void
private_SEED_set_key
(
const
unsigned
char
rawkey
[
SEED_KEY_LENGTH
],
SEED_KEY_SCHEDULE
*
ks
);
#endif
void
SEED_set_key
(
const
unsigned
char
rawkey
[
SEED_KEY_LENGTH
],
SEED_KEY_SCHEDULE
*
ks
);
void
SEED_encrypt
(
const
unsigned
char
s
[
SEED_BLOCK_SIZE
],
unsigned
char
d
[
SEED_BLOCK_SIZE
],
const
SEED_KEY_SCHEDULE
*
ks
);
void
SEED_decrypt
(
const
unsigned
char
s
[
SEED_BLOCK_SIZE
],
unsigned
char
d
[
SEED_BLOCK_SIZE
],
const
SEED_KEY_SCHEDULE
*
ks
);
void
SEED_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
const
SEED_KEY_SCHEDULE
*
ks
,
int
enc
);
void
SEED_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
SEED_KEY_SCHEDULE
*
ks
,
unsigned
char
ivec
[
SEED_BLOCK_SIZE
],
int
enc
);
void
SEED_cfb128_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
SEED_KEY_SCHEDULE
*
ks
,
unsigned
char
ivec
[
SEED_BLOCK_SIZE
],
int
*
num
,
int
enc
);
void
SEED_ofb128_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
SEED_KEY_SCHEDULE
*
ks
,
unsigned
char
ivec
[
SEED_BLOCK_SIZE
],
int
*
num
);
#ifdef __cplusplus
}
#endif
#endif
/* HEADER_SEED_H */
src/main/jni/openssl/crypto/seed/seed_cbc.c
0 → 100644
View file @
374893f5
/* crypto/seed/seed_cbc.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
#include <openssl/seed.h>
#include <openssl/modes.h>
void
SEED_cbc_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
SEED_KEY_SCHEDULE
*
ks
,
unsigned
char
ivec
[
SEED_BLOCK_SIZE
],
int
enc
)
{
if
(
enc
)
CRYPTO_cbc128_encrypt
(
in
,
out
,
len
,
ks
,
ivec
,(
block128_f
)
SEED_encrypt
);
else
CRYPTO_cbc128_decrypt
(
in
,
out
,
len
,
ks
,
ivec
,(
block128_f
)
SEED_decrypt
);
}
src/main/jni/openssl/crypto/seed/seed_cfb.c
0 → 100644
View file @
374893f5
/* crypto/seed/seed_cfb.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/seed.h>
#include <openssl/modes.h>
void
SEED_cfb128_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
SEED_KEY_SCHEDULE
*
ks
,
unsigned
char
ivec
[
SEED_BLOCK_SIZE
],
int
*
num
,
int
enc
)
{
CRYPTO_cfb128_encrypt
(
in
,
out
,
len
,
ks
,
ivec
,
num
,
enc
,(
block128_f
)
SEED_encrypt
);
}
src/main/jni/openssl/crypto/seed/seed_ecb.c
0 → 100644
View file @
374893f5
/* crypto/seed/seed_ecb.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 2007 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
#include <openssl/seed.h>
void
SEED_ecb_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
const
SEED_KEY_SCHEDULE
*
ks
,
int
enc
)
{
if
(
enc
)
SEED_encrypt
(
in
,
out
,
ks
);
else
SEED_decrypt
(
in
,
out
,
ks
);
}
src/main/jni/openssl/crypto/seed/seed_locl.h
0 → 100644
View file @
374893f5
/*
* Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Neither the name of author nor the names of its contributors may
* be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
*/
#ifndef HEADER_SEED_LOCL_H
#define HEADER_SEED_LOCL_H
#include "openssl/e_os2.h"
#include <openssl/seed.h>
#ifdef SEED_LONG
/* need 32-bit type */
typedef
unsigned
long
seed_word
;
#else
typedef
unsigned
int
seed_word
;
#endif
#ifdef __cplusplus
extern
"C"
{
#endif
#define G_FUNC(v) \
SS[0][(unsigned char) (v) & 0xff] ^ SS[1][(unsigned char) ((v)>>8) & 0xff] ^ \
SS[2][(unsigned char)((v)>>16) & 0xff] ^ SS[3][(unsigned char)((v)>>24) & 0xff]
#define char2word(c, i) \
(i) = ((((seed_word)(c)[0]) << 24) | (((seed_word)(c)[1]) << 16) | (((seed_word)(c)[2]) << 8) | ((seed_word)(c)[3]))
#define word2char(l, c) \
*((c)+0) = (unsigned char)((l)>>24) & 0xff; \
*((c)+1) = (unsigned char)((l)>>16) & 0xff; \
*((c)+2) = (unsigned char)((l)>> 8) & 0xff; \
*((c)+3) = (unsigned char)((l)) & 0xff
#define KEYSCHEDULE_UPDATE0(T0, T1, X1, X2, X3, X4, KC) \
(T0) = (X3); \
(X3) = (((X3)<<8) ^ ((X4)>>24)) & 0xffffffff; \
(X4) = (((X4)<<8) ^ ((T0)>>24)) & 0xffffffff; \
(T0) = ((X1) + (X3) - (KC)) & 0xffffffff; \
(T1) = ((X2) + (KC) - (X4)) & 0xffffffff
#define KEYSCHEDULE_UPDATE1(T0, T1, X1, X2, X3, X4, KC) \
(T0) = (X1); \
(X1) = (((X1)>>8) ^ ((X2)<<24)) & 0xffffffff; \
(X2) = (((X2)>>8) ^ ((T0)<<24)) & 0xffffffff; \
(T0) = ((X1) + (X3) - (KC)) & 0xffffffff; \
(T1) = ((X2) + (KC) - (X4)) & 0xffffffff
#define KEYUPDATE_TEMP(T0, T1, K) \
(K)[0] = G_FUNC((T0)); \
(K)[1] = G_FUNC((T1))
#define XOR_SEEDBLOCK(DST, SRC) \
((DST))[0] ^= ((SRC))[0]; \
((DST))[1] ^= ((SRC))[1]; \
((DST))[2] ^= ((SRC))[2]; \
((DST))[3] ^= ((SRC))[3]
#define MOV_SEEDBLOCK(DST, SRC) \
((DST))[0] = ((SRC))[0]; \
((DST))[1] = ((SRC))[1]; \
((DST))[2] = ((SRC))[2]; \
((DST))[3] = ((SRC))[3]
# define CHAR2WORD(C, I) \
char2word((C), (I)[0]); \
char2word((C+4), (I)[1]); \
char2word((C+8), (I)[2]); \
char2word((C+12), (I)[3])
# define WORD2CHAR(I, C) \
word2char((I)[0], (C)); \
word2char((I)[1], (C+4)); \
word2char((I)[2], (C+8)); \
word2char((I)[3], (C+12))
# define E_SEED(T0, T1, X1, X2, X3, X4, rbase) \
(T0) = (X3) ^ (ks->data)[(rbase)]; \
(T1) = (X4) ^ (ks->data)[(rbase)+1]; \
(T1) ^= (T0); \
(T1) = G_FUNC((T1)); \
(T0) = ((T0) + (T1)) & 0xffffffff; \
(T0) = G_FUNC((T0)); \
(T1) = ((T1) + (T0)) & 0xffffffff; \
(T1) = G_FUNC((T1)); \
(T0) = ((T0) + (T1)) & 0xffffffff; \
(X1) ^= (T0); \
(X2) ^= (T1)
#ifdef __cplusplus
}
#endif
#endif
/* HEADER_SEED_LOCL_H */
src/main/jni/openssl/crypto/seed/seed_ofb.c
0 → 100644
View file @
374893f5
/* crypto/seed/seed_ofb.c -*- mode:C; c-file-style: "eay" -*- */
/* ====================================================================
* Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
*/
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
#include <openssl/seed.h>
#include <openssl/modes.h>
void
SEED_ofb128_encrypt
(
const
unsigned
char
*
in
,
unsigned
char
*
out
,
size_t
len
,
const
SEED_KEY_SCHEDULE
*
ks
,
unsigned
char
ivec
[
SEED_BLOCK_SIZE
],
int
*
num
)
{
CRYPTO_ofb128_encrypt
(
in
,
out
,
len
,
ks
,
ivec
,
num
,(
block128_f
)
SEED_encrypt
);
}
src/main/jni/openssl/include/openssl/opensslconf.h
View file @
374893f5
...
...
@@ -5,18 +5,12 @@
#ifndef OPENSSL_DOING_MAKEDEPEND
#ifndef OPENSSL_NO_CAST
# define OPENSSL_NO_CAST
#endif
#ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
# define OPENSSL_NO_EC_NISTP_64_GCC_128
#endif
#ifndef OPENSSL_NO_GMP
# define OPENSSL_NO_GMP
#endif
#ifndef OPENSSL_NO_IDEA
# define OPENSSL_NO_IDEA
#endif
#ifndef OPENSSL_NO_JPAKE
# define OPENSSL_NO_JPAKE
#endif
...
...
@@ -35,9 +29,6 @@
#ifndef OPENSSL_NO_SCTP
# define OPENSSL_NO_SCTP
#endif
#ifndef OPENSSL_NO_SEED
# define OPENSSL_NO_SEED
#endif
#ifndef OPENSSL_NO_SHA0
# define OPENSSL_NO_SHA0
#endif
...
...
shadowsocks
@
c97f5bbf
Subproject commit c9
f7a0d14323b585710d2d07c44ef2984328785a
Subproject commit c9
7f5bbf9acc7450f710fb15858abea0546f27d8
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment