|
[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 |