Another beecrypt-3.0.0 merge.

CVS patchset: 6875
CVS date: 2003/05/27 21:34:03
This commit is contained in:
jbj 2003-05-27 21:34:03 +00:00
parent 9e1e00f00a
commit 0148a73a15
13 changed files with 225 additions and 97 deletions

View File

@ -1,4 +1,4 @@
Note: timings are average values and may vary under different conditions,
BeeCrypt 3.0.0 | gcc-3.3 | SuSE Linux 8.2 | Pentium 3 600 | 512 MB: 1447 (--with-arch=pentium3)
i.e. the amount of free memory, swapped memory, amount of cpu cache, etc.
I've tried to make them as accurate as possible, within limits.
@ -10,13 +10,14 @@ Linux - I'm just a little cramped for space...
BENCHmark Modular Exponentation (more is better):
BeeCrypt 3.0.0 | gcc-3.2.2 | Debian Linux 3.0 | Itanium 2 900 | 12 GB: 6992 ()
BeeCrypt 3.0.0 | gcc-3.2.2 | Debian Linux 3.0 | Itanium 2 900 | 12 GB: 7317 ()
BeeCrypt 3.0.0 | gcc-3.3 | RedHat AS 2.1 | P4 Xeon 2400 | 4 GB: 6920 (--with-arch=pentium4)
BeeCrypt 3.0.0 | gcc-2.95.4 | Debian Linux 3.0 | Alpha EV6.7 666 | 2 GB: 5742 ()
BeeCrypt 3.0.0 | gcc-2.96 | RedHat AS 2.1 | P4 Xeon 2400 | 4 GB: 3280 (--with-arch=pentiumpro)
BeeCrypt 3.0.0 | gcc-3.2.2 | AIX 5.1 | POWER3-II 333 | 512 MB: 1782 (--with-arch=powerpc64)
BeeCrypt 3.0.0 | gcc-3.3 | SuSE Linux 8.2 | Pentium 3 600 | 512 MB: 1447 (--with-arch=pentium3)
BeeCrypt 3.0.0 | gcc-3.2.2 | AIX 5.1 | POWER3-II 333 | 512 MB: 756 ()
BeeCrypt 3.0.0 | Forte C 5.1 | Solaris 8 | UltraSparc II 400 | 4 GB: 425 (--with-arch=sparcv8plus)
BeeCrypt 3.0.0 | | Debian Linux 3.0 | StrongARM 1110 128 | 32 MB: 341 ()
BeeCrypt 3.0.0 | gcc-2.95.4 | Debian Linux 3.0r1 | M68030 25 | 36 MB: 8 ()

View File

@ -36,7 +36,7 @@ AUTOMAKE_OPTIONS = gnu check-news no-dependencies
LINT = splint
SUBDIRS = . docs gas masm python tests
SUBDIRS = . docs gas masm python tests $(MAYBE_OPT)
SUFFIXES = .s
@ -45,14 +45,12 @@ SUFFIXES = .s
BEECRYPT_OBJECTS = aes.lo aesopt.lo base64.lo beecrypt.lo blockmode.lo blockpad.lo blowfish.lo blowfishopt.lo dhaes.lo dldp.lo dlkp.lo dlpk.lo dlsvdp-dh.lo dsa.lo elgamal.lo endianness.lo entropy.lo fips186.lo hmac.lo hmacmd5.lo hmacsha1.lo hmacsha256.lo md5.lo memchunk.lo mp.lo mpbarrett.lo mpnumber.lo mpopt.lo mpprime.lo mtprng.lo rsa.lo rsakp.lo rsapk.lo sha1.lo sha1opt.lo sha256.lo timestamp.lo
BEECRYPT_JAVA_OBJECTS = javaglue.lo
usrlibdir = $(libdir)@MARK64@
usrlib_LTLIBRARIES = libbeecrypt.la
libbeecrypt_la_SOURCES = aes.c base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhaes.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c dsa.c elgamal.c endianness.c entropy.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha256.c javaglue.c md5.c memchunk.c mp.c mpbarrett.c mpnumber.c mpprime.c mtprng.c rsa.c rsakp.c rsapk.c sha1.c sha256.c timestamp.c
libbeecrypt_la_SOURCES = aes.c base64.c beecrypt.c blockmode.c blockpad.c blowfish.c dhaes.c dldp.c dlkp.c dlpk.c dlsvdp-dh.c dsa.c elgamal.c endianness.c entropy.c fips186.c hmac.c hmacmd5.c hmacsha1.c hmacsha256.c md5.c memchunk.c mp.c mpbarrett.c mpnumber.c mpprime.c mtprng.c rsa.c rsakp.c rsapk.c sha1.c sha256.c timestamp.c
libbeecrypt_la_DEPENDENCIES = $(BEECRYPT_OBJECTS) $(BEECRYPT_JAVA_OBJECTS)
libbeecrypt_la_DEPENDENCIES = $(BEECRYPT_OBJECTS)
libbeecrypt_la_LIBADD = aesopt.lo blowfishopt.lo mpopt.lo sha1opt.lo
@ -63,7 +61,7 @@ pkginclude_HEADERS = aes.h base64.h beecrypt.h beecrypt.api.h beecrypt.gnu.h blo
noinst_HEADERS = aesopt.h beecrypt.win.h \
blowfishopt.h debug.h mpopt.h sha1opt.h system.h
EXTRA_DIST = BENCHMARKS BUGS CONTRIBUTORS Doxyfile.in Doxyheader README README.DLL README.WIN32 beecrypt.gnu.h.in beecrypt.rc beecrypt.spec javaglue.h autogen.sh Makefile.mak
EXTRA_DIST = BENCHMARKS BUGS CONTRIBUTORS Doxyfile.in Doxyheader README README.DLL README.WIN32 beecrypt.gnu.h.in beecrypt.rc beecrypt.spec autogen.sh Makefile.mak
DISTCLEANFILES = mpopt.s aesopt.s blowfishopt.s sha1opt.s

View File

@ -1,12 +1,13 @@
#
# Makefile.mak for the beecrypt library
#
# To be used with Microsoft's nmake utility;
# Will need the Visual C Processor Pack installed.
#
# Copyright (c) 2000, 2001, 2002, 2003 Virtual Unlimited B.V.
# Copyright (c) 2000, 2001, 2002 Virtual Unlimited B.V.
#
# Author: Bob Deblier <bob@virtualunlimited.com>
# Author: Bob Deblier <bob.deblier@pandora.be>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@ -39,13 +40,15 @@ LIBPATH="C:\Program Files\Microsoft Visual Studio\VC98\Lib"
JAVAPATH="C:\j2sdk1.4.0\include"
# To enable SSE2 optimization, add switch /DOPTIMIZE_SSE2 to ASFLAGS
ASFLAGS=/nologo /c /coff /Gd
# To enable SSE2 optimization, add switch /DUSE_SSE2 to ASFLAGS
ASFLAGS=/nologo /c /coff /Gd # /DUSE_SSE2
CFLAGS=/nologo /TC /MT /GM /Ox /G6 /I.
LDFLAGS=/nologo /machine:IX86 /libpath:$(LIBPATH) $(LIBS) # /DEBUG
# CFLAGS=/nologo /TC /MT /GM /ZI /G6 /I.
LDFLAGS=/nologo /fixed:no /machine:IX86 /libpath:$(LIBPATH) $(LIBS) # /DEBUG
RCFLAGS=/r /L 0x409 /FObeecrypt.res
JAVAFLAGS=/DJAVAGLUE=1 /I$(JAVAPATH) /I$(JAVAPATH)\win32
# To compile Java support, add file javaglue.obj to this list
OBJECTS= \
aes.obj \
aesopt.obj \
@ -69,14 +72,13 @@ OBJECTS= \
hmacmd5.obj \
hmacsha1.obj \
hmacsha256.obj \
javaglue.obj \
md5.obj \
memchunk.obj \
mp32.obj \
mp32opt.obj \
mp32barrett.obj \
mp32number.obj \
mp32prime.obj \
mp.obj \
mpopt.obj \
mpbarrett.obj \
mpnumber.obj \
mpprime.obj \
mtprng.obj \
rsa.obj \
rsakp.obj \
@ -87,17 +89,10 @@ OBJECTS= \
timestamp.obj \
beecrypt.res
all: .\beecrypt.dll .\beetest.exe
all: .\beecrypt.dll
beecrypt.dll: $(OBJECTS)
$(LD) $(LDFLAGS) $(OBJECTS) /dll /def:beecrypt.def /out:beecrypt.dll /implib:beecrypt.lib
beetest.obj: tests\beetest.c
$(CC) $(CFLAGS) /Fobeetest.obj /c tests\beetest.c
beetest.exe: beecrypt.lib beetest.obj
$(LD) $(LDFLAGS) beetest.obj beecrypt.lib
$(LD) $(LDFLAGS) $(OBJECTS) /dll /out:beecrypt.dll /implib:beecrypt.lib
beecrypt.res: beecrypt.rc
$(RC) $(RCFLAGS) beecrypt.rc
@ -114,8 +109,8 @@ blowfishopt.obj: masm\blowfishopt.i586.asm
sha1opt.obj: masm\sha1opt.i586.asm
$(AS) $(ASFLAGS) /Fosha1opt.obj /c masm\sha1opt.i586.asm
mp32opt.obj: masm\mp32opt.i386.asm
$(AS) $(ASFLAGS) /Fomp32opt.obj /c masm\mp32opt.i386.asm
mpopt.obj: masm\mpopt.x86.asm
$(AS) $(ASFLAGS) /Fompopt.obj /c masm\mpopt.x86.asm
clean:
del *.obj

View File

@ -297,9 +297,7 @@ AC_DEFUN(BEECRYPT_GNU_CC,[
CFLAGS="$CFLAGS -mcpu=pentiumpro"
;;
ia64)
# -mcpu=... doesn't work on ia64, and -O3 can lead to invalid code
BEECRYPT_CFLAGS_REM([-O3])
CFLAGS="$CFLAGS -O"
# no -mcpu=... option on ia64
;;
pentium*)
CFLAGS="$CFLAGS -mcpu=$bc_target_arch"

View File

@ -163,13 +163,21 @@ AC_ARG_WITH(mtmalloc,[ --with-mtmalloc links against the mtmalloc libra
fi
],[ac_with_mtmalloc=no])
AC_ARG_WITH(javaglue,[ --with-javaglue creates the java glue code [default=yes]],[
AC_ARG_WITH(javaglue,[ --with-javaglue creates the java glue code [default=no]],[
if test "$withval" = no; then
ac_with_javaglue=no
else
ac_with_javaglue=yes
fi
],[ac_with_javaglue=yes])
],[ac_with_javaglue=no])
AC_ARG_WITH(python,[ --with-python creates the python bindings code [default=no]],[
if test "$withval" = no; then
ac_with_python=no
else
ac_with_python=yes
fi
],[ac_with_python=no])
# Check for Unix variants
AC_AIX
@ -439,7 +447,7 @@ EOF
if test X"$java_home" = X; then
java_home=/usr
fi
if test -d "$java_home" -a -d "$java_home/include" -a -f "$java_home/include/jni.h"; then
if test -d "$java_home" -a -d "$java_home/include"; then
ac_cv_java_headers=yes
ac_cv_java_include="-I$java_home/include"
gcjpath="$java_home/lib/gcc-lib/`gcj -dumpmachine`/`gcj -dumpversion`"
@ -689,6 +697,18 @@ if test "$ac_with_javaglue" = yes ; then
CFLAGS="$CFLAGS $ac_cv_java_include"
fi
MAYBE_OPT=
if test "$ac_with_javaglue" = yes; then
MAYBE_OPT="$MAYBE_OPT java"
fi
if test "$ac_with_python" = yes; then
MAYBE_OPT="$MAYBE_OPT python"
fi
AC_SUBST([MAYBE_OPT])
# Generate output files.
AC_CONFIG_FILES([Makefile
Doxyfile
@ -696,6 +716,7 @@ AC_CONFIG_FILES([Makefile
config.m4
docs/Makefile
gas/Makefile
java/Makefile
masm/Makefile
mwerks/Makefile
python/Makefile

View File

@ -22,14 +22,34 @@ dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
define(`saved_pfs',`r14')
define(`saved_lc',`r15')
ifelse(substr(ASM_OS,0,4),hpux,`
ifelse(substr(ASM_OS,0,5),linux,`
undefine(`C_FUNCTION_BEGIN')
define(C_FUNCTION_BEGIN,`
TEXTSEG
ALIGN
GLOBL SYMNAME($1)#
.proc SYMNAME($1)#
SYMNAME($1):
')
',`
.explicit
undefine(`C_FUNCTION_END')
define(C_FUNCTION_END,`
.endp SYMNAME($1)#
')
')
ifelse(substr(ASM_OS,0,4),hpux,`
undefine(`C_FUNCTION_BEGIN')
define(C_FUNCTION_BEGIN,`
TEXTSEG
ALIGN
GLOBL SYMNAME($1)
.proc SYMNAME($1)
SYMNAME($1):
')
undefine(`C_FUNCTION_END')
define(C_FUNCTION_END,`
.endp SYMNAME($1)
')
')
.explicit

View File

@ -21,15 +21,72 @@ dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
include(config.m4)
include(ASM_SRCDIR/ia64.m4)
define(`sze',`r16')
define(`dst',`r17')
define(`src',`r18')
define(`alt',`r19')
define(`sze',`r14')
define(`dst',`r15')
define(`src',`r16')
define(`alt',`r17')
C_FUNCTION_BEGIN(mpzero)
.prologue
alloc saved_pfs = ar.pfs,2,0,0,0
mov saved_lc = ar.lc
sub sze = in0,r0,1;;
dnl adjust address
shladd dst = sze,3,in1
dnl prepare loop
mov ar.lc = sze;;
.body
LOCAL(mpzero_loop):
st8 [dst] = r0,-8
br.ctop.dptk LOCAL(mpzero_loop);;
mov ar.lc = saved_lc
mov ar.pfs = saved_pfs
br.ret.sptk b0
C_FUNCTION_END(mpzero)
C_FUNCTION_BEGIN(mpcopy)
.prologue
alloc saved_pfs = ar.pfs,3,6,0,8
mov saved_lc = ar.lc
mov saved_pr = pr
sub sze = in0,r0,1;;
dnl adjust addresses
shladd dst = sze,3,in1
shladd src = sze,3,in2
dnl prepare modulo-scheduled loop
mov ar.lc = sze
mov ar.ec = 1
mov pr.rot = (1 << 16);;
LOCAL(mpcopy_loop):
(p16) ld8 r32 = [src],-8
(p17) st8 [dst] = r33,-8
br.ctop.dptk LOCAL(mpcopy_loop);;
dnl epilogue
(p17) st8 [dst] = r33,-8
;;
mov pr = saved_pr, -1
mov ar.lc = saved_lc
mov ar.pfs = saved_pfs
br.ret.sptk b0
C_FUNCTION_END(mpcopy)
C_FUNCTION_BEGIN(mpadd)
.prologue
alloc saved_pfs = ar.pfs,3,5,0,8
mov saved_lc = ar.lc
mov saved_pr = pr
sub sze = in0,r0,1;;
dnl adjust addresses
@ -42,7 +99,9 @@ dnl prepare modulo-scheduled loop
mov ar.ec = 2
mov pr.rot = ((1 << 16) | (1 << 19));;
.body
LOCAL(mpadd_loop):
.pred.rel.mutex p20,p22
(p16) ld8 r32 = [alt],-8
(p16) ld8 r35 = [src],-8
(p20) add r36 = r33,r36
@ -57,9 +116,11 @@ dnl loop epilogue: final store
(p18) st8 [dst] = r37,-8
dnl return carry
.pred.rel.mutex p20,p22
(p20) add ret0 = r0,r0
(p22) add ret0 = r0,r0,1
;;
mov pr = saved_pr, -1
mov ar.lc = saved_lc
mov ar.pfs = saved_pfs
br.ret.sptk b0
@ -67,8 +128,10 @@ C_FUNCTION_END(mpadd)
C_FUNCTION_BEGIN(mpsub)
.prologue
alloc saved_pfs = ar.pfs,3,5,0,8
mov saved_lc = ar.lc
mov saved_pr = pr
sub sze = in0,r0,1;;
dnl adjust addresses
@ -81,7 +144,9 @@ dnl prepare modulo-scheduled loop
mov ar.ec = 2
mov pr.rot = ((1 << 16) | (1 << 19));;
.body
LOCAL(mpsub_loop):
.pred.rel.mutex p20,p22
(p16) ld8 r32 = [alt],-8
(p16) ld8 r35 = [src],-8
(p20) sub r36 = r33,r36
@ -96,9 +161,11 @@ dnl loop epilogue: final store
(p18) st8 [dst] = r37,-8
dnl return carry
.pred.rel.mutex p20,p22
(p20) add ret0 = r0,r0
(p22) add ret0 = r0,r0,1
;;
mov pr = saved_pr, -1
mov ar.lc = saved_lc
mov ar.pfs = saved_pfs
br.ret.sptk b0
@ -106,8 +173,10 @@ C_FUNCTION_END(mpsub)
C_FUNCTION_BEGIN(mpsetmul)
.prologue
alloc saved_pfs = ar.pfs,4,4,0,8
mov saved_lc = ar.lc
mov saved_pr = pr
setf.sig f6 = in3
setf.sig f7 = r0
@ -122,16 +191,18 @@ dnl prepare modulo-scheduled loop
mov ar.ec = 3
mov pr.rot = (1 << 16);;
.body
LOCAL(mpsetmul_loop):
(p16) ldf8 f32 = [src],-8
(p18) stf8 [dst] = f35,-8
(p17) xma.lu f34 = f6,f33,f7
(p17) xma.hu f7 = f6,f33,f7;;
(p17) xma.hu f7 = f6,f33,f7
br.ctop.dptk LOCAL(mpsetmul_loop);;
dnl return carry
getf.sig ret0 = f7;;
mov pr = saved_pr, -1
mov ar.lc = saved_lc
mov ar.pfs = saved_pfs
br.ret.sptk b0
@ -139,8 +210,10 @@ C_FUNCTION_END(mpsetmul)
C_FUNCTION_BEGIN(mpaddmul)
.prologue
alloc saved_pfs = ar.pfs,4,4,0,8
mov saved_lc = ar.lc
mov saved_pr = pr
setf.sig f6 = in3
sub sze = in0,r0,1;;
@ -156,9 +229,11 @@ dnl prepare the rotate-in carry
dnl prepare modulo-scheduled loop
mov ar.lc = sze
mov ar.ec = 4
mov pr.rot = ((1 << 16) | (1 << 21));
mov pr.rot = ((1 << 16) | (1 << 21));;
.body
LOCAL(mpaddmul_loop):
.pred.rel.mutex p24,p26
(p18) getf.sig r37 = f35
(p24) add r35 = r38,r35
(p17) xma.lu f34 = f6,f33,f37
@ -178,9 +253,11 @@ dnl loop epilogue: final store
(p20) st8 [dst] = r36,-8
dnl return carry
.pred.rel.mutex p24,p26
(p24) add ret0 = r35,r0
(p26) add ret0 = r35,r0,1
mov pr = saved_pr, -1
mov ar.lc = saved_lc
mov ar.pfs = saved_pfs
br.ret.sptk b0
@ -190,6 +267,7 @@ C_FUNCTION_END(mpaddmul)
divert(-1)
C_FUNCTION_BEGIN(mpaddsqrtrc)
alloc saved_pfs = ar.pfs,4,4,0,8
mov saved_pr = pr
mov saved_lc = ar.lc
setf.sig f6 = in3
@ -206,7 +284,7 @@ dnl prepare the rotate-in carry
dnl prepare modulo-scheduled loop
mov ar.lc = sze
mov ar.ec = 5
mov pr.rot = ((1 << 16) | (1 << 21));
mov pr.rot = ((1 << 16) | (1 << 21));;
LOCAL(mpaddsqrtrc_loop):
(p16) ldf8 f32 = [src],-8

37
beecrypt/java/Makefile.am Normal file
View File

@ -0,0 +1,37 @@
#
# Copyright (c) 2003 Bob Deblier
#
# Author: Bob Deblier <bob.deblier@pandora.be>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
LIBBEECRYPT_LT_CURRENT = 6
LIBBEECRYPT_LT_AGE = 0
LIBBEECRYPT_LT_REVISION = 0
AUTOMAKE_OPTIONS = gnu no-dependencies
BEECRYPT_JAVA_OBJECTS = javaglue.lo
lib_LTLIBRARIES = libbeecrypt_java.la
noinst_HEADERS = javaglue.h
libbeecrypt_java_la_SOURCES = javaglue.c
libbeecrypt_java_la_DEPENDENCIES = $(BEECRYPT_JAVA_OBJECTS)
libbeecrypt_java_la_LDFLAGS = -no-undefined -version-info $(LIBBEECRYPT_LT_CURRENT):$(LIBBEECRYPT_LT_REVISION):$(LIBBEECRYPT_LT_AGE)

View File

@ -1,13 +1,22 @@
#define BEECRYPT_DLL_EXPORT
#include "system.h"
#if HAVE_CONFIG_H
# include "config.h"
#endif
#include "beecrypt.h"
#include "blockmode.h"
#include "javaglue.h"
#include "debug.h"
#if JAVAGLUE
#if HAVE_STDLIB_H
# include <stdlib.h>
#endif
#if HAVE_MALLOC_H
# include <malloc.h>
#endif
#include "javaglue.h"
#ifndef WORDS_BIGENDIAN
# define WORDS_BIGENDIAN 0
@ -402,12 +411,12 @@ void JNICALL Java_beecrypt_crypto_NativeBlockCipher_encryptECB(JNIEnv* env, jcla
return;
}
memcpy(datain, input+inputOffset, blocks * sizeof(uint32_t));
blockEncryptECB((const blockCipher*) ciph, (blockCipherParam*) param, blocks, dataout, datain);
blockEncryptECB((const blockCipher*) ciph, (blockCipherParam*) param, dataout, datain, blocks);
memcpy(output+outputOffset, dataout, blocks * sizeof(uint32_t));
}
else
{ /* aligned */
blockEncryptECB((const blockCipher*) ciph, (blockCipherParam*) param, blocks, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset));
blockEncryptECB((const blockCipher*) ciph, (blockCipherParam*) param, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset), blocks);
}
(*env)->ReleaseByteArrayElements(env, inputArray, input, JNI_ABORT);
@ -464,12 +473,12 @@ void JNICALL Java_beecrypt_crypto_NativeBlockCipher_decryptECB(JNIEnv* env, jcla
return;
}
memcpy(datain, input+inputOffset, blocks * sizeof(uint32_t));
blockDecryptECB((const blockCipher*) ciph, (blockCipherParam*) param, blocks, dataout, datain);
blockDecryptECB((const blockCipher*) ciph, (blockCipherParam*) param, dataout, datain, blocks);
memcpy(output+outputOffset, dataout, blocks * sizeof(uint32_t));
}
else
{ /* aligned */
blockDecryptECB((const blockCipher*) ciph, (blockCipherParam*) param, blocks, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset));
blockDecryptECB((const blockCipher*) ciph, (blockCipherParam*) param, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset), blocks);
}
(*env)->ReleaseByteArrayElements(env, inputArray, input, JNI_ABORT);
@ -526,12 +535,12 @@ void JNICALL Java_beecrypt_crypto_NativeBlockCipher_encryptCBC(JNIEnv* env, jcla
return;
}
memcpy(datain, input+inputOffset, blocks * sizeof(uint32_t));
blockEncryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, blocks, dataout, datain);
blockEncryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, dataout, datain, blocks);
memcpy(output+outputOffset, dataout, blocks * sizeof(uint32_t));
}
else
{ /* aligned */
blockEncryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, blocks, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset));
blockEncryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset), blocks);
}
(*env)->ReleaseByteArrayElements(env, inputArray, input, JNI_ABORT);
@ -588,12 +597,12 @@ void JNICALL Java_beecrypt_crypto_NativeBlockCipher_decryptCBC(JNIEnv* env, jcla
return;
}
memcpy(datain, input+inputOffset, blocks * sizeof(uint32_t));
blockDecryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, blocks, dataout, datain);
blockDecryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, dataout, datain, blocks);
memcpy(output+outputOffset, dataout, blocks * sizeof(uint32_t));
}
else
{ /* aligned */
blockDecryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, blocks, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset));
blockDecryptCBC((const blockCipher*) ciph, (blockCipherParam*) param, (uint32_t*)(output+outputOffset), (uint32_t*) (input+inputOffset), blocks);
}
(*env)->ReleaseByteArrayElements(env, inputArray, input, JNI_ABORT);

View File

@ -1,7 +1,3 @@
/** \ingroup JAVA_m
* \file javaglue.h
*/
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class javax_crypto_Cipher */

View File

@ -923,28 +923,6 @@ size_t mpmszcnt(size_t size, const mpw* data)
}
#endif
#ifndef ASM_MPBITCNT
size_t mpbitcnt(size_t size, const mpw* data)
{
register mpw xmask = (mpw)((*data & MP_MSBMASK) ? -1 : 0);
register size_t nbits = MP_WBITS * size;
register size_t i = 0;
while (i < size) {
register mpw temp = (data[i++] ^ xmask);
if (temp) {
while (!(temp & MP_MSBMASK)) {
nbits--;
temp <<= 1;
}
break;
} else
nbits -= MP_WBITS;
}
return nbits;
}
#endif
#ifndef ASM_MPLSZCNT
size_t mplszcnt(size_t size, const mpw* data)
{
@ -1197,7 +1175,7 @@ int mpextgcd_w(size_t size, const mpw* xdata, const mpw* ndata, mpw* result, mpw
{
mpdivtwo(sizep, udata);
if ((full && mpodd(sizep, adata)) || mpodd(sizep, bdata))
if (mpodd(sizep, bdata) || (full && mpodd(sizep, adata)))
{
if (full) (void) mpaddx(sizep, adata, size, xdata);
(void) mpsubx(sizep, bdata, size, ndata);
@ -1210,7 +1188,7 @@ int mpextgcd_w(size_t size, const mpw* xdata, const mpw* ndata, mpw* result, mpw
{
mpdivtwo(sizep, vdata);
if ((full && mpodd(sizep, cdata)) || mpodd(sizep, ddata))
if (mpodd(sizep, ddata) || (full && mpodd(sizep, cdata)))
{
if (full) (void) mpaddx(sizep, cdata, size, xdata);
(void) mpsubx(sizep, ddata, size, ndata);
@ -1362,8 +1340,10 @@ void mpndivmod(mpw* result, size_t xsize, const mpw* xdata, size_t ysize, const
*result = (mpge(ysize, xdata, ydata) ? 1 : 0);
mpcopy(xsize, result+1, xdata);
if (*result)
(void) mpsub(ysize, result+1, ydata);
result++;
while (qsize--)

View File

@ -534,12 +534,6 @@ BEECRYPTAPI
size_t mpmszcnt(size_t size, const mpw* data)
/*@*/;
/**
*/
BEECRYPTAPI /*@unused@*/
size_t mpbitcnt(size_t size, const mpw* data)
/*@*/;
/**
*/
/*@-exportlocal@*/

View File

@ -81,6 +81,7 @@
# define ASM_MPADDMUL
# define ASM_MPADDSQRTRC
# elif defined(OPTIMIZE_IA64)
# define ASM_MPZERO
# define ASM_MPADD
# define ASM_MPSUB
# define ASM_MPSETMUL