[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/LIBAXTLS PATCH 1/2] Initial port of the axtls library (version 2.1.5)
Hi Sharan, Right, thanks for the review, I'll fix that in a v2. -- Felipe On 16.09.19, 16:17, "Minios-devel on behalf of Sharan Santhanam" <minios-devel-bounces@xxxxxxxxxxxxxxxxxxxx on behalf of sharan.santhanam@xxxxxxxxx> wrote: On 9/11/19 4:49 PM, Sharan Santhanam wrote: > Hello Felipe, > > Please find the comment inline: > > The patch fails to compile with following error: > > build/libaxtls/origin/axtls-code/ssl/os_port.h:137:24: fatal error: > netinet/in.h: No such file or directory #include <netinet/in.h> The library compile with newlib. It is wise to add dependency in Config.uk to newlib. > > Thanks & Regards > > Sharan > > On 7/13/19 7:36 AM, Felipe Huici wrote: >> Note lwip is required. >> >> Signed-off-by: Felipe Huici <felipe.huici@xxxxxxxxx> >> --- >> Config.uk | 4 ++ >> Makefile.uk | 117 >> +++++++++++++++++++++++++++++++++++++++++++++++ >> glue.c | 12 +++++ >> include/asm/byteorder.h | 86 +++++++++++++++++++++++++++++++++++ >> include/config.h | 118 >> ++++++++++++++++++++++++++++++++++++++++++++++++ >> 5 files changed, 337 insertions(+) >> create mode 100644 Config.uk >> create mode 100644 Makefile.uk >> create mode 100644 glue.c >> create mode 100644 include/asm/byteorder.h >> create mode 100644 include/config.h >> >> diff --git a/Config.uk b/Config.uk >> new file mode 100644 >> index 0000000..ec8da21 >> --- /dev/null >> +++ b/Config.uk >> @@ -0,0 +1,4 @@ >> +menuconfig LIBAXTLS >> + bool "axTLS Embedded SSL" >> + default n >> + select LIBNOLIBC if !HAVE_LIBC > Select LIBLWIP >> diff --git a/Makefile.uk b/Makefile.uk >> new file mode 100644 >> index 0000000..cf513a0 >> --- /dev/null >> +++ b/Makefile.uk >> @@ -0,0 +1,117 @@ >> +# libaxtls Makefile.uc >> +# >> +# Authors: Felipe Huici <felipe.huici@xxxxxxxxx> >> +# >> +# >> +# Copyright (c) 2019, NEC Europe Ltd., NEC Corporation. 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. Neither the name of the copyright holder 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 THE COPYRIGHT HOLDERS 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 THE COPYRIGHT HOLDER 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. >> +# >> +# THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. >> +# >> + >> +################################################################################ >> >> +# Library registration >> +################################################################################ >> >> +$(eval $(call addlib_s,libaxtls,$(CONFIG_LIBAXTLS))) >> + >> +################################################################################ >> >> +# Sources >> +################################################################################ >> >> +LIBAXTLS_VERSION=2.1.5 >> +LIBAXTLS_URL=https://sourceforge.net/projects/axtls/files/2.1.5/axTLS-2.1.5.tar.gz/download >> > s/2.1.5/$(LIBAXTLS_VERSION) >> +LIBAXTLS_PATCHDIR=$(LIBAXTLS_BASE)/patches >> +$(eval $(call >> fetchas,libaxtls,$(LIBAXTLS_URL),$(LIBAXTLS_VERSION).tgz)) >> +$(eval $(call >> patch,libaxtls,$(LIBAXTLS_PATCHDIR),libaxtls-$(LIBAXTLS_VERSION))) >> + >> +################################################################################ >> >> +# Helpers >> +################################################################################ >> >> +LIBAXTLS_SRC=$(LIBAXTLS_ORIGIN)/axtls-code >> + >> +################################################################################ >> >> +# Library includes >> +################################################################################ >> >> +CINCLUDES-$(CONFIG_LIBAXTLS) += -I$(LIBAXTLS_SRC)/include \ >> + -I$(LIBAXTLS_SRC)/crypto \ >> + -I$(LIBAXTLS_SRC)/ssl \ >> + -I$(LIBAXTLS_BASE)/include > > Should the $(LIBAXTLS_BASE)/include be a global CINCLUDE or library > specific. This main functionality it provides are the config.h and > byteorder.h. Shouldn't the config.h be specific to the library. Since > we dont have a exportsym.uk. Do we want to add it as a CINCLUDES as > the implementation is going to hidden within this library. > > >> + >> +CXXINCLUDES-$(CONFIG_LIBAXTLS) += -I$(LIBAXTLS_SRC)/include \ >> + -I$(LIBAXTLS_SRC)/crypto \ >> + -I$(LIBAXTLS_SRC)/ssl \ >> + -I$(LIBAXTLS_BASE)/include >> + >> +################################################################################ >> >> +# Global flags >> +################################################################################ >> >> +LIBAXTLS_CFLAGS-y += -DHAVE_CONFIG_H >> + >> +# Suppress some warnings to make the build process look neater >> +SUPPRESS_FLAGS += -Wno-unused-parameter -Wno-unused-variable >> -Wno-nonnull \ >> +-Wno-unused-but-set-variable -Wno-unused-label >> -Wno-char-subscripts \ >> +-Wno-unused-function -Wno-missing-field-initializers >> -Wno-uninitialized \ >> +-Wno-array-bounds -Wno-maybe-uninitialized -Wno-pointer-sign >> -Wno-unused-value \ >> +-Wno-unused-macros -Wno-parentheses >> -Wno-implicit-function-declaration \ >> +-Wno-missing-braces -Wno-endif-labels >> -Wno-unused-but-set-variable \ >> +-Wno-implicit-function-declaration -Wno-type-limits -Wno-sign-compare > Wno-implicit-function-declaration, Wno-array-bounds, Wno-type-limits >> + >> +LIBAXTLS_CFLAGS-y += $(SUPPRESS_FLAGS) >> +LIBAXTLS_CXXFLAGS-y += $(SUPPRESS_FLAGS) >> + >> +################################################################################ >> >> +# OS dependencies code - Glue between Unikfraft and axtls >> +################################################################################ >> >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_BASE)/glue.c >> + >> +################################################################################ >> >> +# axtls code - crypto >> +################################################################################ >> >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/aes.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/bigint.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/crypto_misc.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/hmac.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/md5.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/rc4.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/rsa.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/sha1.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/sha256.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/sha384.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/crypto/sha512.c >> + >> +################################################################################ >> >> +# axtls code - ssl >> +################################################################################ >> >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/asn1.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/gen_cert.c > > Without this symbol CONFIG_SSL_GENERATE_X509_CERT, this is a empty > file? Since we undef it do we need this? > >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/loader.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/openssl.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/os_port.c > There are implementation specific to the WIN32. We probably don't need > this >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/p12.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/tls1.c >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/tls1_svr.c > >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/tls1_clnt.c > This depend on CONFIG_SSL_ENABLE_CLIENT which is disabled. >> +LIBAXTLS_SRCS-y += $(LIBAXTLS_SRC)/ssl/x509.c >> diff --git a/glue.c b/glue.c >> new file mode 100644 >> index 0000000..7138f9d >> --- /dev/null >> +++ b/glue.c >> @@ -0,0 +1,12 @@ >> +/* According to POSIX.1-2001, POSIX.1-2008 */ >> +#include <sys/select.h> >> + >> +/* According to earlier standards */ >> +#include <sys/time.h> >> +#include <sys/types.h> >> +#include <unistd.h> >> + >> +int select(int nfds, fd_set *readfds, fd_set *writefds, >> + fd_set *exceptfds, struct timeval *timeout) { >> + return -1; >> +} >> diff --git a/include/asm/byteorder.h b/include/asm/byteorder.h > > Would it be better to add this file within libcs? > >> new file mode 100644 >> index 0000000..f3747eb >> --- /dev/null >> +++ b/include/asm/byteorder.h >> @@ -0,0 +1,86 @@ >> +/* Taken from musl's endian.h */ >> + >> +#ifndef LIBAXTLS_GLUE_ENDIAN_H >> +#define LIBAXTLS_GLUE_ENDIAN_H >> + >> + >> +/* #include <features.h> */ >> + >> +#define __LITTLE_ENDIAN 1234 >> +#define __BIG_ENDIAN 4321 >> +#define __PDP_ENDIAN 3412 >> + >> +/* #if defined(__GNUC__) && defined(__BYTE_ORDER__) */ >> +#define __BYTE_ORDER __BYTE_ORDER__ >> +/* >> +#else >> +#include <bits/endian.h> >> +#endif >> +*/ >> +/* #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) */ >> + >> +#define BIG_ENDIAN __BIG_ENDIAN >> +#define LITTLE_ENDIAN __LITTLE_ENDIAN >> +#define PDP_ENDIAN __PDP_ENDIAN >> +#define BYTE_ORDER __BYTE_ORDER >> + >> +#include <stdint.h> >> + >> +static __inline uint16_t __bswap16(uint16_t __x) >> +{ >> + return __x<<8 | __x>>8; >> +} >> + >> +static __inline uint32_t __bswap32(uint32_t __x) >> +{ >> + return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24; >> +} >> + >> +static __inline uint64_t __bswap64(uint64_t __x) >> +{ >> + return __bswap32(__x)+0ULL<<32 | __bswap32(__x>>32); >> +} >> + >> +#if __BYTE_ORDER == __LITTLE_ENDIAN >> +#define htobe16(x) __bswap16(x) >> +#define be16toh(x) __bswap16(x) >> +#define betoh16(x) __bswap16(x) >> +#define htobe32(x) __bswap32(x) >> +#define be32toh(x) __bswap32(x) >> +#define betoh32(x) __bswap32(x) >> +#define htobe64(x) __bswap64(x) >> +#define be64toh(x) __bswap64(x) >> +#define betoh64(x) __bswap64(x) >> +#define htole16(x) (uint16_t)(x) >> +#define le16toh(x) (uint16_t)(x) >> +#define letoh16(x) (uint16_t)(x) >> +#define htole32(x) (uint32_t)(x) >> +#define le32toh(x) (uint32_t)(x) >> +#define letoh32(x) (uint32_t)(x) >> +#define htole64(x) (uint64_t)(x) >> +#define le64toh(x) (uint64_t)(x) >> +#define letoh64(x) (uint64_t)(x) >> +#else >> +#define htobe16(x) (uint16_t)(x) >> +#define be16toh(x) (uint16_t)(x) >> +#define betoh16(x) (uint16_t)(x) >> +#define htobe32(x) (uint32_t)(x) >> +#define be32toh(x) (uint32_t)(x) >> +#define betoh32(x) (uint32_t)(x) >> +#define htobe64(x) (uint64_t)(x) >> +#define be64toh(x) (uint64_t)(x) >> +#define betoh64(x) (uint64_t)(x) >> +#define htole16(x) __bswap16(x)v >> +#define le16toh(x) __bswap16(x) >> +#define letoh16(x) __bswap16(x) >> +#define htole32(x) __bswap32(x) >> +#define le32toh(x) __bswap32(x) >> +#define letoh32(x) __bswap32(x) >> +#define htole64(x) __bswap64(x) >> +#define le64toh(x) __bswap64(x) >> +#define letoh64(x) __bswap64(x) >> +#endif >> + >> +/* #endif */ >> + >> +#endif >> diff --git a/include/config.h b/include/config.h >> new file mode 100644 >> index 0000000..acd2973 >> --- /dev/null >> +++ b/include/config.h >> @@ -0,0 +1,118 @@ >> +/* >> + * Automatically generated header file: don't edit >> + */ >> + >> +#define HAVE_DOT_CONFIG 1 >> +#define CONFIG_PLATFORM_LINUX 1 > > Should we have this CONFIG_PLATFORM_LINUX? > > >> +#undef CONFIG_PLATFORM_CYGWIN >> +#undef CONFIG_PLATFORM_WIN32 >> + >> +/* >> + * General Configuration >> + */ >> +#define PREFIX "/usr/local" > We don't need PREFIX? >> +#undef CONFIG_DEBUG > > Should we have this > > #ifdef UK_DEBUG > > #define CONFIG_DEBUG > > #else > > #undef CONFIG_DEBUG > > #endif /* UK_DEBUG */ > >> +#define CONFIG_STRIP_UNWANTED_SECTIONS 1 >> +#undef CONFIG_VISUAL_STUDIO_7_0 >> +#undef CONFIG_VISUAL_STUDIO_8_0 >> +#undef CONFIG_VISUAL_STUDIO_10_0 >> +#define CONFIG_VISUAL_STUDIO_7_0_BASE "" >> +#define CONFIG_VISUAL_STUDIO_8_0_BASE "" >> +#define CONFIG_VISUAL_STUDIO_10_0_BASE "" >> +#define CONFIG_EXTRA_CFLAGS_OPTIONS "" >> +#define CONFIG_EXTRA_LDFLAGS_OPTIONS "" >> + >> +/* >> + * SSL Library >> + */ >> +#undef CONFIG_SSL_SERVER_ONLY >> +#undef CONFIG_SSL_CERT_VERIFICATION >> +#undef CONFIG_SSL_ENABLE_CLIENT >> +#define CONFIG_SSL_FULL_MODE 1 >> +#undef CONFIG_SSL_SKELETON_MODE >> +#undef CONFIG_SSL_PROT_LOW >> +#define CONFIG_SSL_PROT_MEDIUM 1 >> +#undef CONFIG_SSL_PROT_HIGH >> +#define CONFIG_SSL_USE_DEFAULT_KEY 1 >> +#define CONFIG_SSL_PRIVATE_KEY_LOCATION "" >> +#define CONFIG_SSL_PRIVATE_KEY_PASSWORD "" >> +#define CONFIG_SSL_X509_CERT_LOCATION "" >> +#undef CONFIG_SSL_GENERATE_X509_CERT >> +#define CONFIG_SSL_X509_COMMON_NAME "" >> +#define CONFIG_SSL_X509_ORGANIZATION_NAME "" >> +#define CONFIG_SSL_X509_ORGANIZATION_UNIT_NAME "" >> +#define CONFIG_SSL_HAS_PEM 1 >> +#define CONFIG_SSL_USE_PKCS12 1 >> +#define CONFIG_SSL_EXPIRY_TIME 24 >> +#define CONFIG_X509_MAX_CA_CERTS 150 >> +#define CONFIG_SSL_MAX_CERTS 3 >> +#undef CONFIG_SSL_CTX_MUTEXING >> +#define CONFIG_USE_DEV_URANDOM 1 > Do we need this configuration enabled? If so then don't we need the > devfs enabled. >> +#undef CONFIG_WIN32_USE_CRYPTO_LIB >> +#define CONFIG_OPENSSL_COMPATIBLE 1 >> +#undef CONFIG_PERFORMANCE_TESTING >> +#undef CONFIG_SSL_TEST >> +#define CONFIG_AXTLSWRAP 1 >> +#undef CONFIG_AXHTTPD >> +#undef CONFIG_HTTP_STATIC_BUILD >> +#define CONFIG_HTTP_PORT > Where would this be used since we don't include httpd source directories? >> +#define CONFIG_HTTP_HTTPS_PORT >> +#define CONFIG_HTTP_SESSION_CACHE_SIZE >> +#define CONFIG_HTTP_WEBROOT "" >> +#define CONFIG_HTTP_TIMEOUT >> +#undef CONFIG_HTTP_HAS_CGI >> +#define CONFIG_HTTP_CGI_EXTENSIONS "" >> +#undef CONFIG_HTTP_ENABLE_LUA >> +#define CONFIG_HTTP_LUA_PREFIX "" >> +#undef CONFIG_HTTP_BUILD_LUA >> +#define CONFIG_HTTP_CGI_LAUNCHER "" >> +#undef CONFIG_HTTP_DIRECTORIES >> +#undef CONFIG_HTTP_HAS_AUTHORIZATION >> +#undef CONFIG_HTTP_HAS_IPV6 >> +#undef CONFIG_HTTP_ENABLE_DIFFERENT_USER >> +#define CONFIG_HTTP_USER "" >> +#undef CONFIG_HTTP_VERBOSE >> +#undef CONFIG_HTTP_IS_DAEMON >> + >> +/* >> + * Language Bindings >> + */ >> +#undef CONFIG_BINDINGS >> +#undef CONFIG_CSHARP_BINDINGS >> +#undef CONFIG_VBNET_BINDINGS >> +#define CONFIG_DOT_NET_FRAMEWORK_BASE "" >> +#undef CONFIG_JAVA_BINDINGS >> +#define CONFIG_JAVA_HOME "" >> +#undef CONFIG_PERL_BINDINGS >> +#define CONFIG_PERL_CORE "" >> +#define CONFIG_PERL_LIB "" >> +#undef CONFIG_LUA_BINDINGS >> +#define CONFIG_LUA_CORE "" >> + >> +/* >> + * Samples >> + */ >> +#undef CONFIG_SAMPLES >> +#undef CONFIG_C_SAMPLES >> +#undef CONFIG_CSHARP_SAMPLES >> +#undef CONFIG_VBNET_SAMPLES >> +#undef CONFIG_JAVA_SAMPLES >> +#undef CONFIG_PERL_SAMPLES >> +#undef CONFIG_LUA_SAMPLES >> + >> +/* >> + * BigInt Options >> + */ >> +#undef CONFIG_BIGINT_CLASSICAL >> +#undef CONFIG_BIGINT_MONTGOMERY >> +#define CONFIG_BIGINT_BARRETT 1 >> +#define CONFIG_BIGINT_CRT 1 >> +#undef CONFIG_BIGINT_KARATSUBA >> +#define MUL_KARATSUBA_THRESH >> +#define SQU_KARATSUBA_THRESH >> +#define CONFIG_BIGINT_SLIDING_WINDOW 1 >> +#define CONFIG_BIGINT_SQUARE 1 >> +#undef CONFIG_BIGINT_CHECK_ON >> +#define CONFIG_INTEGER_32BIT 1 >> +#undef CONFIG_INTEGER_16BIT >> +#undef CONFIG_INTEGER_8BIT > > _______________________________________________ > Minios-devel mailing list > Minios-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/minios-devel _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |