mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 19:54:40 +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+= LICENSING
|
||||
EXTRA_DIST+= INSTALL
|
||||
EXTRA_DIST+= IPP/
|
||||
EXTRA_DIST+= IPP
|
||||
|
||||
# user crypto plug in example
|
||||
EXTRA_DIST+= wolfcrypt/user-crypto/configure.ac
|
||||
|
91
configure.ac
91
configure.ac
@@ -2285,8 +2285,9 @@ AC_ARG_WITH([cavium],
|
||||
|
||||
# Fast RSA using Intel IPP
|
||||
ippdir="${srcdir}/IPP"
|
||||
ipplib="lib" # if autoconf guesses 32 changes lib directory
|
||||
fastRSA_headers=no
|
||||
ipplib="lib" # if autoconf guesses 32bit system changes lib directory
|
||||
fastRSA_found=no
|
||||
abs_path=`pwd`
|
||||
|
||||
# set up variables used
|
||||
IPPLIBS=
|
||||
@@ -2301,11 +2302,12 @@ AC_ARG_ENABLE([fast-rsa],
|
||||
|
||||
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
|
||||
ipplib="lib_32" # 32 bit OS detected
|
||||
fi
|
||||
|
||||
# Use static IPP Libraries
|
||||
if test "$enable_shared" = "no" && test "$ENABLED_FAST_RSA" = "yes"; then
|
||||
case $host_os in
|
||||
*darwin*)
|
||||
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/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
|
||||
AC_MSG_ERROR([Could not find fast rsa libraries])
|
||||
fi
|
||||
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
|
||||
AS_UNSET([ac_cv_header_ippcp_h])
|
||||
AS_UNSET([ac_cv_header_ipp_h])
|
||||
|
||||
if test "$fastRSA_headers" = "no"; then
|
||||
dnl set default paths
|
||||
# Check for and use bundled IPP libraries
|
||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
||||
AC_MSG_NOTICE([Using local IPP crypto library])
|
||||
|
||||
AC_CHECK_FILES([$abs_path/IPP/include/ippcp.h],
|
||||
[
|
||||
# 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
|
||||
# was succesfull so add tested LDFLAGS to AM_ flags
|
||||
AM_LDFLAGS="${AM_LDFLAGS} ${LDFLAGS}"
|
||||
AM_CPPFLAGS="${AM_CPPFLAGS} ${CPPFLAGS}"
|
||||
|
||||
AC_CHECK_HEADERS([ippcp.h], [AC_CHECK_LIB([ippcp], [ippsRSAEncrypt_PKCSv15], [fastRSA_found=yes], [fastRSA_found=no])], [fastRSA_found=no])
|
||||
name="$ippdir/$ipplib/libippcp"
|
||||
case $host_os in
|
||||
*darwin*)
|
||||
name="$ippdir/$ipplib/libippcp"
|
||||
# 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*)
|
||||
# check file existence and conditionally set variables
|
||||
AC_CHECK_FILES([$abs_path/IPP/$ipplib/libippcp.so.9.0], [
|
||||
if test "$ac_cv_sizeof_long" = "4" && test "$ac_cv_sizeof_long_long" = "8"; then
|
||||
name="$ippdir/$ipplib/libippcp"
|
||||
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"
|
||||
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"
|
||||
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"
|
||||
else
|
||||
name="$ippdir/$ipplib/libippcp"
|
||||
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"
|
||||
fi
|
||||
], [fastRSA_found=no])
|
||||
break;;
|
||||
*)
|
||||
ENABLED_FAST_RSA=no
|
||||
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
|
||||
|
||||
# restore LDFLAGS to user set
|
||||
LDFLAGS=${STORE_LDFLAGS}
|
||||
CPPFLAGS=${STORE_CPPFLAGS}
|
||||
IPPHEADERS="${srcdir}/IPP/include/*.h"
|
||||
], [fastRSA_found=no])
|
||||
fi
|
||||
|
||||
# Don't cache the result so it can be checked
|
||||
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
|
||||
if test "$ENABLED_FAST_RSA" = "no"; then
|
||||
if test "$fastRSA_found" = "no"; then
|
||||
AC_MSG_ERROR([Could not find fast rsa libraries])
|
||||
fi
|
||||
fi
|
||||
fi # end of if found exported paths
|
||||
fi # end of if for shared library
|
||||
else # if user rsa is set than do not use fast rsa option
|
||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
||||
AC_MSG_ERROR([Could not use fast rsa libraries with user crypto or fips])
|
||||
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])
|
||||
if test "$ENABLED_FAST_RSA" = "yes"; then
|
||||
AM_CFLAGS="$AM_CFLAGS -DHAVE_FAST_RSA -DHAVE_USER_RSA"
|
||||
# add in user crypto header that uses Intel IPP
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS -I$srcdir/wolfcrypt/user-crypto/include"
|
||||
if test "$enable_shared" = "yes"; then
|
||||
LIBS="$LIBS -lippcore"
|
||||
LIBS="$LIBS -lippcore -lippcp"
|
||||
LIB_ADD="-lippcp -lippcore $LIB_ADD"
|
||||
else
|
||||
LIB_ADD="$srcdir/IPP/$ipplib/libippcp.a $srcdir/IPP/$ipplib/libippcore.a $LIB_ADD"
|
||||
@@ -2420,7 +2430,6 @@ fi
|
||||
AC_SUBST([IPPLIBS])
|
||||
AC_SUBST([IPPHEADERS])
|
||||
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"])
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user