From abbfcde0dc207c34b7989248ca086a8a6c25701d Mon Sep 17 00:00:00 2001 From: toddouska Date: Thu, 8 May 2014 10:26:31 -0700 Subject: [PATCH] add fips in core first/last files for code/data hashing --- configure.ac | 4 +++ ctaocrypt/src/wolfcrypt_first.c | 47 +++++++++++++++++++++++++++++++++ ctaocrypt/src/wolfcrypt_last.c | 47 +++++++++++++++++++++++++++++++++ src/include.am | 12 ++++++++- 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 ctaocrypt/src/wolfcrypt_first.c create mode 100644 ctaocrypt/src/wolfcrypt_last.c diff --git a/configure.ac b/configure.ac index 7b48aaa67..73b620a25 100644 --- a/configure.ac +++ b/configure.ac @@ -1651,6 +1651,10 @@ AC_OUTPUT echo "---" echo "Running make clean..." make clean >/dev/null 2>&1 +# Touch files that may not be in repository +echo "Touching File..." +touch ctaocrypt/src/fips.c +touch ctaocrypt/src/fips_test.c echo # generate user options header diff --git a/ctaocrypt/src/wolfcrypt_first.c b/ctaocrypt/src/wolfcrypt_first.c new file mode 100644 index 000000000..08d5ee0a9 --- /dev/null +++ b/ctaocrypt/src/wolfcrypt_first.c @@ -0,0 +1,47 @@ +/* wolfcrypt_first.c + * + * Copyright (C) 2006-2014 wolfSSL Inc. + * + * This file is part of CyaSSL. + * + * CyaSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * CyaSSL 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* This file needs to be linked first in order to work correctly */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +/* in case user set HAVE_FIPS there */ +#include + +#ifdef HAVE_FIPS + +/* read only start address */ +const unsigned int wolfCrypt_FIPS_ro_start[] = +{ 0x1a2b3c4d, 0x00000001 }; + + +/* first function of text/code segment */ +int wolfCrypt_FIPS_first(void); +int wolfCrypt_FIPS_first(void) +{ + return 0; +} + + +#endif /* HAVE_FIPS */ + diff --git a/ctaocrypt/src/wolfcrypt_last.c b/ctaocrypt/src/wolfcrypt_last.c new file mode 100644 index 000000000..8c555e655 --- /dev/null +++ b/ctaocrypt/src/wolfcrypt_last.c @@ -0,0 +1,47 @@ +/* wolfcrypt_last.c + * + * Copyright (C) 2006-2014 wolfSSL Inc. + * + * This file is part of CyaSSL. + * + * CyaSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * CyaSSL 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + */ + +/* This file needs to be linked last in order to work correctly */ + +#ifdef HAVE_CONFIG_H + #include +#endif + +/* in case user set HAVE_FIPS there */ +#include + +#ifdef HAVE_FIPS + +/* last function of text/code segment */ +int wolfCrypt_FIPS_last(void); +int wolfCrypt_FIPS_last(void) +{ + return 0; +} + + +/* read only end address */ +const unsigned int wolfCrypt_FIPS_ro_end[] = +{ 0x1a2b3c4d, 0xffffffff }; + + +#endif /* HAVE_FIPS */ + diff --git a/src/include.am b/src/include.am index 0673e151b..ba5010588 100644 --- a/src/include.am +++ b/src/include.am @@ -3,7 +3,13 @@ # All paths should be given relative to the root lib_LTLIBRARIES+= src/libcyassl.la -src_libcyassl_la_SOURCES = \ +src_libcyassl_la_SOURCES = + +if BUILD_FIPS +src_libcyassl_la_SOURCES += ctaocrypt/src/wolfcrypt_first.c +endif + +src_libcyassl_la_SOURCES += \ src/internal.c \ src/io.c \ src/keys.c \ @@ -145,3 +151,7 @@ if BUILD_PKCS7 src_libcyassl_la_SOURCES += ctaocrypt/src/pkcs7.c endif +if BUILD_FIPS +src_libcyassl_la_SOURCES += ctaocrypt/src/wolfcrypt_last.c +endif +