mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 12:14:38 +02:00
Merge pull request #201 from JacobBarthelmeh/fast-rsa
modification to fast-rsa sign operation and make key
This commit is contained in:
@@ -59,7 +59,7 @@ EXTRA_DIST+= gencertbuf.pl
|
|||||||
EXTRA_DIST+= README.md
|
EXTRA_DIST+= README.md
|
||||||
EXTRA_DIST+= LICENSING
|
EXTRA_DIST+= LICENSING
|
||||||
EXTRA_DIST+= INSTALL
|
EXTRA_DIST+= INSTALL
|
||||||
EXTRA_DIST+= IPP/
|
EXTRA_DIST+= IPP
|
||||||
|
|
||||||
# user crypto plug in example
|
# user crypto plug in example
|
||||||
EXTRA_DIST+= wolfcrypt/user-crypto/configure.ac
|
EXTRA_DIST+= wolfcrypt/user-crypto/configure.ac
|
||||||
|
131
configure.ac
131
configure.ac
@@ -2285,8 +2285,9 @@ AC_ARG_WITH([cavium],
|
|||||||
|
|
||||||
# Fast RSA using Intel IPP
|
# Fast RSA using Intel IPP
|
||||||
ippdir="${srcdir}/IPP"
|
ippdir="${srcdir}/IPP"
|
||||||
ipplib="lib" # if autoconf guesses 32 changes lib directory
|
ipplib="lib" # if autoconf guesses 32bit system changes lib directory
|
||||||
fastRSA_headers=no
|
fastRSA_found=no
|
||||||
|
abs_path=`pwd`
|
||||||
|
|
||||||
# set up variables used
|
# set up variables used
|
||||||
IPPLIBS=
|
IPPLIBS=
|
||||||
@@ -2301,11 +2302,12 @@ AC_ARG_ENABLE([fast-rsa],
|
|||||||
|
|
||||||
if test "$ENABLED_USER_RSA" = "no" && test "$ENABLED_FIPS" = "no"; then
|
if test "$ENABLED_USER_RSA" = "no" && test "$ENABLED_FIPS" = "no"; then
|
||||||
|
|
||||||
if test "$enable_shared" = "no" && test "$ENABLED_FAST_RSA" = "yes"; then
|
|
||||||
if test "$ac_cv_sizeof_long" = "4" && test "$ac_cv_sizeof_long_long" = "8"; then
|
if test "$ac_cv_sizeof_long" = "4" && test "$ac_cv_sizeof_long_long" = "8"; then
|
||||||
ipplib="lib_32" # 32 bit OS detected
|
ipplib="lib_32" # 32 bit OS detected
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Use static IPP Libraries
|
||||||
|
if test "$enable_shared" = "no" && test "$ENABLED_FAST_RSA" = "yes"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
*darwin*)
|
*darwin*)
|
||||||
ipplib="$ipplib/mac_static"
|
ipplib="$ipplib/mac_static"
|
||||||
@@ -2322,92 +2324,100 @@ if test "$enable_shared" = "no" && test "$ENABLED_FAST_RSA" = "yes"; then
|
|||||||
|
|
||||||
AC_CHECK_FILES([$srcdir/IPP/$ipplib/libippcore.a $srcdir/IPP/$ipplib/libippcp.a], [], [ENABLED_FAST_RSA=no])
|
AC_CHECK_FILES([$srcdir/IPP/$ipplib/libippcore.a $srcdir/IPP/$ipplib/libippcp.a], [], [ENABLED_FAST_RSA=no])
|
||||||
AC_CHECK_FILES([$srcdir/IPP/include/ipp.h $srcdir/IPP/include/ippcp.h], [AM_CPPFLAGS="-I$srcdir/IPP/include $AM_CPPFLAGS"], [ENABLED_FAST_RSA=no])
|
AC_CHECK_FILES([$srcdir/IPP/include/ipp.h $srcdir/IPP/include/ippcp.h], [AM_CPPFLAGS="-I$srcdir/IPP/include $AM_CPPFLAGS"], [ENABLED_FAST_RSA=no])
|
||||||
LIB_STATIC_ADD="$srcdir/IPP/$ipplib/libippcp.a $srcdir/IPP/$ipplib/libippcore.a"
|
LIB_STATIC_ADD="$srcdir/IPP/$ipplib/libippcp.a $srcdir/IPP/$ipplib/libippcore.a $LIB_STATIC_ADD"
|
||||||
if test "$ENABLED_FAST_RSA" = "no"; then
|
if test "$ENABLED_FAST_RSA" = "no"; then
|
||||||
AC_MSG_ERROR([Could not find fast rsa libraries])
|
AC_MSG_ERROR([Could not find fast rsa libraries])
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# just check link and see if user has already exported paths
|
|
||||||
if test "$ENABLED_FAST_RSA" = "yes"
|
|
||||||
then
|
|
||||||
AC_MSG_NOTICE([Checking if IPP crypto library installed])
|
|
||||||
AC_CHECK_HEADER([ippcp.h], [AC_CHECK_LIB([ippcp], [ippsRSAEncrypt_PKCSv15], [LIBS="$LIBS -lippcore"; fastRSA_headers=yes], [AS_UNSET([ac_cv_lib_ippcp_ippsRSAEncrypt_PKCSv15]); fastRSA_headers=no])], [fastRSA_headers=no])
|
|
||||||
if test "$fastRSA_headers" = "yes"; then
|
|
||||||
AM_LDFLAGS="${AM_LDFLAGS} -lippcore -lippcp"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Don't cache the result so it can be checked again
|
# Check for and use bundled IPP libraries
|
||||||
AS_UNSET([ac_cv_header_ippcp_h])
|
|
||||||
AS_UNSET([ac_cv_header_ipp_h])
|
|
||||||
|
|
||||||
if test "$fastRSA_headers" = "no"; then
|
|
||||||
dnl set default paths
|
|
||||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
if test "$ENABLED_FAST_RSA" = "yes"; then
|
||||||
AC_MSG_NOTICE([Using local IPP crypto library])
|
AC_MSG_NOTICE([Using local IPP crypto library])
|
||||||
# build and default locations on linux and mac
|
|
||||||
STORE_LDFLAGS=${LDFLAGS}
|
|
||||||
STORE_CPPFLAGS=${CPPFLAGS}
|
|
||||||
if test "$ac_cv_sizeof_long" = "4" && test "$ac_cv_sizeof_long_long" = "8"; then
|
|
||||||
ipplib="lib_32" # 32 bit OS detected
|
|
||||||
fi
|
|
||||||
# using LDFLAGS instead of AM_ temporarily to test link to library
|
|
||||||
LDFLAGS="-L$ippdir/$ipplib -lippcp -lippcore"
|
|
||||||
CPPFLAGS="-I$ippdir/include"
|
|
||||||
AC_CHECK_HEADERS([ippcp.h], [AC_CHECK_LIB([ippcp], [ippsRSAEncrypt_PKCSv15], [], [ENABLED_FAST_RSA=no])], [ENABLED_FAST_RSA=no])
|
|
||||||
|
|
||||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
AC_CHECK_FILES([$abs_path/IPP/include/ippcp.h],
|
||||||
# was succesfull so add tested LDFLAGS to AM_ flags
|
[
|
||||||
AM_LDFLAGS="${AM_LDFLAGS} ${LDFLAGS}"
|
# build and default locations on linux and mac
|
||||||
AM_CPPFLAGS="${AM_CPPFLAGS} ${CPPFLAGS}"
|
STORE_LDFLAGS=${LDFLAGS}
|
||||||
|
STORE_CPPFLAGS=${CPPFLAGS}
|
||||||
|
|
||||||
case $host_os in
|
# using LDFLAGS instead of AM_ temporarily to test link to library
|
||||||
*darwin*)
|
LDFLAGS="-L$ippdir/$ipplib -lippcp -lippcore"
|
||||||
|
CPPFLAGS="-I$ippdir/include"
|
||||||
|
AC_CHECK_HEADERS([ippcp.h], [AC_CHECK_LIB([ippcp], [ippsRSAEncrypt_PKCSv15], [fastRSA_found=yes], [fastRSA_found=no])], [fastRSA_found=no])
|
||||||
name="$ippdir/$ipplib/libippcp"
|
name="$ippdir/$ipplib/libippcp"
|
||||||
IPPLIBS="${name}.dylib ${name}-9.0.dylib ${name}e9-9.0.dylib ${name}g9-9.0.dylib ${name}h9-9.0.dylib ${name}k0-9.0.dylib ${name}l9-9.0.dylib ${name}n8-9.0.dylib ${name}p8-9.0.dylib ${name}s8-9.0.dylib ${name}y8-9.0.dylib IPP/lib/libippcore.dylib IPP/lib/libippcore-9.0.dylib"
|
case $host_os in
|
||||||
IPPLINK="mkdir -p src/.libs && ln -f ${name}.dylib src/.libs/libippcp.dylib && ln -f ${srcdir}/${name}-9.0.dylib src/.libs/libippcp-9.0.dylib && ln -f ${srcdir}/${name}e9-9.0.dylib src/.libs/libippcpe9-9.0.dylib && ln -f ${srcdir}/${name}g9-9.0.dylib src/.libs/libippcpg9-9.0.dylib && ln -f ${srcdir}/${name}h9-9.0.dylib src/.libs/libippcph9-9.0.dylib && ln -f ${srcdir}/${name}k0-9.0.dylib src/.libs/libippcpk0-9.0.dylib && ln -f ${srcdir}/${name}l9-9.0.dylib src/.libs/libippcpl9-9.0.dylib && ln -f ${srcdir}/${name}n8-9.0.dylib src/.libs/libippcpn8-9.0.dylib && ln -f ${srcdir}/${name}p8-9.0.dylib src/.libs/libippcpp8-9.0.dylib && ln -f ${srcdir}/${name}s8-9.0.dylib src/.libs/libippcps8-9.0.dylib && ln -f ${srcdir}/${name}y8-9.0.dylib src/.libs/libippcpy8-9.0.dylib && ln -f ${srcdir}/IPP/lib/libippcore.dylib src/.libs/libippcore.dylib && ln -f ${srcdir}/IPP/lib/libippcore-9.0.dylib src/.libs/libippcore-9.0.dylib"
|
*darwin*)
|
||||||
break;;
|
# check file existence and conditionally set variables
|
||||||
|
AC_CHECK_FILES([$abs_path/IPP/$ipplib/libippcp.dylib], [
|
||||||
|
IPPLIBS="${name}.dylib ${name}-9.0.dylib ${name}e9-9.0.dylib ${name}g9-9.0.dylib ${name}h9-9.0.dylib ${name}k0-9.0.dylib ${name}l9-9.0.dylib ${name}n8-9.0.dylib ${name}p8-9.0.dylib ${name}s8-9.0.dylib ${name}y8-9.0.dylib IPP/lib/libippcore.dylib IPP/lib/libippcore-9.0.dylib"
|
||||||
|
IPPLINK="mkdir -p src/.libs && ln -f ${name}.dylib src/.libs/libippcp.dylib && ln -f ${srcdir}/${name}-9.0.dylib src/.libs/libippcp-9.0.dylib && ln -f ${srcdir}/${name}e9-9.0.dylib src/.libs/libippcpe9-9.0.dylib && ln -f ${srcdir}/${name}g9-9.0.dylib src/.libs/libippcpg9-9.0.dylib && ln -f ${srcdir}/${name}h9-9.0.dylib src/.libs/libippcph9-9.0.dylib && ln -f ${srcdir}/${name}k0-9.0.dylib src/.libs/libippcpk0-9.0.dylib && ln -f ${srcdir}/${name}l9-9.0.dylib src/.libs/libippcpl9-9.0.dylib && ln -f ${srcdir}/${name}n8-9.0.dylib src/.libs/libippcpn8-9.0.dylib && ln -f ${srcdir}/${name}p8-9.0.dylib src/.libs/libippcpp8-9.0.dylib && ln -f ${srcdir}/${name}s8-9.0.dylib src/.libs/libippcps8-9.0.dylib && ln -f ${srcdir}/${name}y8-9.0.dylib src/.libs/libippcpy8-9.0.dylib && ln -f ${srcdir}/IPP/lib/libippcore.dylib src/.libs/libippcore.dylib && ln -f ${srcdir}/IPP/lib/libippcore-9.0.dylib src/.libs/libippcore-9.0.dylib"
|
||||||
|
], [fastRSA_found=no])
|
||||||
|
break;;
|
||||||
|
|
||||||
*linux*)
|
*linux*)
|
||||||
if test "$ac_cv_sizeof_long" = "4" && test "$ac_cv_sizeof_long_long" = "8"; then
|
# check file existence and conditionally set variables
|
||||||
name="$ippdir/$ipplib/libippcp"
|
AC_CHECK_FILES([$abs_path/IPP/$ipplib/libippcp.so.9.0], [
|
||||||
IPPLIBS="${name}.so.9.0 ${name}g9.so.9.0 ${name}h9.so.9.0 ${name}p8.so.9.0 ${name}px.so.9.0 ${name}s8.so.9.0 ${name}.so ${name}w7.so.9.0 IPP/$ipplib/libippcore.so"
|
if test "$ac_cv_sizeof_long" = "4" && test "$ac_cv_sizeof_long_long" = "8"; then
|
||||||
IPPLINK="mkdir -p src/.libs && ln -f ${name}.so.9.0 src/.libs/libippcp.so.9.0 && ln -f ${name}g9.so.9.0 src/.libs/libippcpg9.so.9.0 && ln -f ${name}h9.so.9.0 src/.libs/libippcph9.so.9.0 && ln -f ${name}p8.so.9.0 src/.libs/libippcpp8.so.9.0 && ln -f ${name}px.so.9.0 src/.libs/libippcppx.so.9.0 && ln -f ${name}s8.so.9.0 src/.libs/libippcps8.so.9.0 && ln -f ${name}.so src/.libs/libippcp.so && ln -f ${name}w7.so.9.0 src/.libs/libippcpw7.so.9.0 && ln -f IPP/$ipplib/libippcore.so src/.libs/libippcore.so && ln -f IPP/$ipplib/libippcore.so.9.0 src/.libs/libippcore.so.9.0"
|
IPPLIBS="${name}.so.9.0 ${name}g9.so.9.0 ${name}h9.so.9.0 ${name}p8.so.9.0 ${name}px.so.9.0 ${name}s8.so.9.0 ${name}.so ${name}w7.so.9.0 IPP/$ipplib/libippcore.so IPP/$ipplib/libippcore.so.9.0"
|
||||||
else
|
IPPLINK="mkdir -p src/.libs && ln -f ${name}.so.9.0 src/.libs/libippcp.so.9.0 && ln -f ${name}g9.so.9.0 src/.libs/libippcpg9.so.9.0 && ln -f ${name}h9.so.9.0 src/.libs/libippcph9.so.9.0 && ln -f ${name}p8.so.9.0 src/.libs/libippcpp8.so.9.0 && ln -f ${name}px.so.9.0 src/.libs/libippcppx.so.9.0 && ln -f ${name}s8.so.9.0 src/.libs/libippcps8.so.9.0 && ln -f ${name}.so src/.libs/libippcp.so && ln -f ${name}w7.so.9.0 src/.libs/libippcpw7.so.9.0 && ln -f IPP/$ipplib/libippcore.so src/.libs/libippcore.so && ln -f IPP/$ipplib/libippcore.so.9.0 src/.libs/libippcore.so.9.0"
|
||||||
name="$ippdir/$ipplib/libippcp"
|
else
|
||||||
IPPLIBS="${name}.so.9.0 ${name}e9.so.9.0 ${name}k0.so.9.0 ${name}l9.so.9.0 ${name}m7.so.9.0 ${name}mx.so.9.0 ${name}.so ${name}n8.so.9.0 ${name}y8.so.9.0 IPP/lib/libippcore.so"
|
IPPLIBS="${name}.so.9.0 ${name}e9.so.9.0 ${name}k0.so.9.0 ${name}l9.so.9.0 ${name}m7.so.9.0 ${name}mx.so.9.0 ${name}.so ${name}n8.so.9.0 ${name}y8.so.9.0 IPP/lib/libippcore.so IPP/lib/libippcore.so.9.0"
|
||||||
IPPLINK="mkdir -p src/.libs && ln -f ${name}.so.9.0 src/.libs/libippcp.so.9.0 && ln -f ${name}e9.so.9.0 src/.libs/libippcpe9.so.9.0 && ln -f ${name}k0.so.9.0 src/.libs/libippcpk0.so.9.0 && ln -f ${name}l9.so.9.0 src/.libs/libippcpl9.so.9.0 && ln -f ${name}m7.so.9.0 src/.libs/libippcpm7.so.9.0 && ln -f ${name}mx.so.9.0 src/.libs/libippcpmx.so.9.0 && ln -f ${name}.so src/.libs/libippcp.so && ln -f ${name}n8.so.9.0 src/.libs/libippcpn8.so.9.0 && ln -f ${name}y8.so.9.0 src/.libs/libippcpy8.so.9.0 && ln -f IPP/lib/libippcore.so src/.libs/libippcore.so && ln -f IPP/lib/libippcore.so.9.0 src/.libs/libippcore.so.9.0"
|
IPPLINK="mkdir -p src/.libs && ln -f ${name}.so.9.0 src/.libs/libippcp.so.9.0 && ln -f ${name}e9.so.9.0 src/.libs/libippcpe9.so.9.0 && ln -f ${name}k0.so.9.0 src/.libs/libippcpk0.so.9.0 && ln -f ${name}l9.so.9.0 src/.libs/libippcpl9.so.9.0 && ln -f ${name}m7.so.9.0 src/.libs/libippcpm7.so.9.0 && ln -f ${name}mx.so.9.0 src/.libs/libippcpmx.so.9.0 && ln -f ${name}.so src/.libs/libippcp.so && ln -f ${name}n8.so.9.0 src/.libs/libippcpn8.so.9.0 && ln -f ${name}y8.so.9.0 src/.libs/libippcpy8.so.9.0 && ln -f IPP/lib/libippcore.so src/.libs/libippcore.so && ln -f IPP/lib/libippcore.so.9.0 src/.libs/libippcore.so.9.0"
|
||||||
|
fi
|
||||||
|
], [fastRSA_found=no])
|
||||||
|
break;;
|
||||||
|
*)
|
||||||
|
fastRSA_found=no
|
||||||
|
esac
|
||||||
|
|
||||||
|
if test "$fastRSA_found" = "yes"; then
|
||||||
|
# was succesfull so add tested LDFLAGS to AM_ flags
|
||||||
|
AM_LDFLAGS="${AM_LDFLAGS} ${LDFLAGS}"
|
||||||
|
AM_CPPFLAGS="${AM_CPPFLAGS} ${CPPFLAGS}"
|
||||||
|
IPPHEADERS="${srcdir}/IPP/include/*.h"
|
||||||
fi
|
fi
|
||||||
break;;
|
|
||||||
*)
|
# restore LDFLAGS to user set
|
||||||
ENABLED_FAST_RSA=no
|
LDFLAGS=${STORE_LDFLAGS}
|
||||||
esac
|
CPPFLAGS=${STORE_CPPFLAGS}
|
||||||
fi
|
], [fastRSA_found=no])
|
||||||
# restore LDFLAGS to user set
|
fi
|
||||||
LDFLAGS=${STORE_LDFLAGS}
|
|
||||||
CPPFLAGS=${STORE_CPPFLAGS}
|
# Don't cache the result so it can be checked
|
||||||
IPPHEADERS="${srcdir}/IPP/include/*.h"
|
AS_UNSET([ac_cv_header_ippcp_h])
|
||||||
|
AS_UNSET([ac_cv_header_ipp_h])
|
||||||
|
AS_UNSET([ac_cv_lib_ippcp_ippsRSAEncrypt_PKCSv15]);
|
||||||
|
|
||||||
|
# Check link and see if user has pre-existing IPP Libraries if not using local
|
||||||
|
if test "$ENABLED_FAST_RSA" = "yes" && test "$fastRSA_found" = "no"; then
|
||||||
|
AC_MSG_NOTICE([Checking if IPP crypto library installed])
|
||||||
|
AC_CHECK_HEADER([ippcp.h], [AC_CHECK_LIB([ippcp], [ippsRSAEncrypt_PKCSv15],
|
||||||
|
[
|
||||||
|
fastRSA_found=yes
|
||||||
|
AM_LDFLAGS="${AM_LDFLAGS} -lippcore -lippcp"
|
||||||
|
], [ fastRSA_found=no])
|
||||||
|
], [fastRSA_found=no])
|
||||||
|
|
||||||
# Error out on not finding libraries
|
# Error out on not finding libraries
|
||||||
if test "$ENABLED_FAST_RSA" = "no"; then
|
if test "$fastRSA_found" = "no"; then
|
||||||
AC_MSG_ERROR([Could not find fast rsa libraries])
|
AC_MSG_ERROR([Could not find fast rsa libraries])
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi # end of if found exported paths
|
|
||||||
fi # end of if for shared library
|
fi # end of if for shared library
|
||||||
else # if user rsa is set than do not use fast rsa option
|
else # if user rsa is set than do not use fast rsa option
|
||||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
if test "$ENABLED_FAST_RSA" = "yes"; then
|
||||||
AC_MSG_ERROR([Could not use fast rsa libraries with user crypto or fips])
|
AC_MSG_ERROR([Could not use fast rsa libraries with user crypto or fips])
|
||||||
fi
|
fi
|
||||||
fi # end of if for user rsa crypto
|
fi # end of if for user rsa crypto or fips
|
||||||
|
|
||||||
|
# End result of checking for IPP Libraries
|
||||||
AC_MSG_CHECKING([for fast RSA])
|
AC_MSG_CHECKING([for fast RSA])
|
||||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
if test "$ENABLED_FAST_RSA" = "yes"; then
|
||||||
AM_CFLAGS="$AM_CFLAGS -DHAVE_FAST_RSA -DHAVE_USER_RSA"
|
AM_CFLAGS="$AM_CFLAGS -DHAVE_FAST_RSA -DHAVE_USER_RSA"
|
||||||
# add in user crypto header that uses Intel IPP
|
# add in user crypto header that uses Intel IPP
|
||||||
AM_CPPFLAGS="$AM_CPPFLAGS -I$srcdir/wolfcrypt/user-crypto/include"
|
AM_CPPFLAGS="$AM_CPPFLAGS -I$srcdir/wolfcrypt/user-crypto/include"
|
||||||
if test "$enable_shared" = "yes"; then
|
if test "$enable_shared" = "yes"; then
|
||||||
LIBS="$LIBS -lippcore"
|
LIBS="$LIBS -lippcore -lippcp"
|
||||||
LIB_ADD="-lippcp -lippcore $LIB_ADD"
|
LIB_ADD="-lippcp -lippcore $LIB_ADD"
|
||||||
else
|
else
|
||||||
LIB_ADD="$srcdir/IPP/$ipplib/libippcp.a $srcdir/IPP/$ipplib/libippcore.a $LIB_ADD"
|
LIB_ADD="$srcdir/IPP/$ipplib/libippcp.a $srcdir/IPP/$ipplib/libippcore.a $LIB_ADD"
|
||||||
@@ -2420,7 +2430,6 @@ fi
|
|||||||
AC_SUBST([IPPLIBS])
|
AC_SUBST([IPPLIBS])
|
||||||
AC_SUBST([IPPHEADERS])
|
AC_SUBST([IPPHEADERS])
|
||||||
AC_SUBST([IPPLINK])
|
AC_SUBST([IPPLINK])
|
||||||
# Found IPP library now build in user crypto to use it
|
|
||||||
AM_CONDITIONAL([BUILD_FAST_RSA], [test "x$ENABLED_FAST_RSA" = "xyes"])
|
AM_CONDITIONAL([BUILD_FAST_RSA], [test "x$ENABLED_FAST_RSA" = "xyes"])
|
||||||
|
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user