mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-04-02 02:49:12 +00:00
gnutls: import from meta-shr
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
parent
eaf0b80d6b
commit
1c2cf0868b
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,129 @@
|
||||
---
|
||||
libextra/gnutls_openssl.c | 58 +++++++++++++++++++++++++++++++++++++
|
||||
libextra/includes/gnutls/openssl.h | 5 +++
|
||||
2 files changed, 63 insertions(+)
|
||||
|
||||
Index: gnutls-2.8.6/libextra/gnutls_openssl.c
|
||||
===================================================================
|
||||
--- gnutls-2.8.6.orig/libextra/gnutls_openssl.c 2009-11-06 00:39:42.000000000 -0800
|
||||
+++ gnutls-2.8.6/libextra/gnutls_openssl.c 2010-05-19 22:20:34.071283592 -0700
|
||||
@@ -258,12 +258,17 @@ SSL_new (SSL_CTX * ctx)
|
||||
ssl->rfd = (gnutls_transport_ptr_t) - 1;
|
||||
ssl->wfd = (gnutls_transport_ptr_t) - 1;
|
||||
|
||||
+ ssl->ssl_peek_buffer = NULL;
|
||||
+ ssl->ssl_peek_buffer_size = ssl->ssl_peek_avail = 0;
|
||||
+
|
||||
return ssl;
|
||||
}
|
||||
|
||||
void
|
||||
SSL_free (SSL * ssl)
|
||||
{
|
||||
+ if (ssl->ssl_peek_buffer)
|
||||
+ free(ssl->ssl_peek_buffer);
|
||||
gnutls_certificate_free_credentials (ssl->gnutls_cred);
|
||||
gnutls_deinit (ssl->gnutls_state);
|
||||
free (ssl);
|
||||
@@ -287,6 +292,7 @@ int
|
||||
SSL_set_fd (SSL * ssl, int fd)
|
||||
{
|
||||
gnutls_transport_set_ptr (ssl->gnutls_state, GNUTLS_INT_TO_POINTER (fd));
|
||||
+ ssl->rfd = ssl->wfd = fd;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -312,6 +318,17 @@ SSL_set_wfd (SSL * ssl, int fd)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+int SSL_get_rfd(SSL *ssl)
|
||||
+{
|
||||
+ return ssl->rfd;
|
||||
+}
|
||||
+
|
||||
+int SSL_get_wfd(SSL *ssl)
|
||||
+{
|
||||
+ return ssl->wfd;
|
||||
+}
|
||||
+
|
||||
+
|
||||
void
|
||||
SSL_set_bio (SSL * ssl, BIO * rbio, BIO * wbio)
|
||||
{
|
||||
@@ -327,6 +344,8 @@ SSL_set_connect_state (SSL * ssl)
|
||||
int
|
||||
SSL_pending (SSL * ssl)
|
||||
{
|
||||
+ if (ssl->ssl_peek_avail)
|
||||
+ return ssl->ssl_peek_avail;
|
||||
return gnutls_record_check_pending (ssl->gnutls_state);
|
||||
}
|
||||
|
||||
@@ -482,11 +501,50 @@ SSL_shutdown (SSL * ssl)
|
||||
return 1;
|
||||
}
|
||||
|
||||
+int SSL_peek(SSL *ssl, void *buf, int len)
|
||||
+{
|
||||
+ if (len > ssl->ssl_peek_buffer_size) {
|
||||
+ ssl->ssl_peek_buffer = realloc (ssl->ssl_peek_buffer, len);
|
||||
+ ssl->ssl_peek_buffer_size = len;
|
||||
+ }
|
||||
+
|
||||
+ if (ssl->ssl_peek_avail == 0) {
|
||||
+
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = gnutls_record_recv(ssl->gnutls_state, ssl->ssl_peek_buffer, len);
|
||||
+ ssl->last_error = ret;
|
||||
+
|
||||
+ if (ret > 0)
|
||||
+ ssl->ssl_peek_avail += ret;
|
||||
+ }
|
||||
+
|
||||
+ if (len > ssl->ssl_peek_avail)
|
||||
+ len = ssl->ssl_peek_avail;
|
||||
+
|
||||
+ memcpy (buf, ssl->ssl_peek_buffer, len);
|
||||
+
|
||||
+ return len;
|
||||
+}
|
||||
+
|
||||
int
|
||||
SSL_read (SSL * ssl, void *buf, int len)
|
||||
{
|
||||
int ret;
|
||||
|
||||
+ if (ssl->ssl_peek_avail) {
|
||||
+ int n = (ssl->ssl_peek_avail > len) ? len : ssl->ssl_peek_avail;
|
||||
+
|
||||
+ memcpy (buf, ssl->ssl_peek_buffer, n);
|
||||
+
|
||||
+ if (ssl->ssl_peek_avail > n)
|
||||
+ memmove (ssl->ssl_peek_buffer, ssl->ssl_peek_buffer + n, ssl->ssl_peek_avail - n);
|
||||
+
|
||||
+ ssl->ssl_peek_avail -= n;
|
||||
+
|
||||
+ return n;
|
||||
+ }
|
||||
+
|
||||
ret = gnutls_record_recv (ssl->gnutls_state, buf, len);
|
||||
ssl->last_error = ret;
|
||||
|
||||
Index: gnutls-2.8.6/libextra/includes/gnutls/openssl.h
|
||||
===================================================================
|
||||
--- gnutls-2.8.6.orig/libextra/includes/gnutls/openssl.h 2009-06-02 11:59:32.000000000 -0700
|
||||
+++ gnutls-2.8.6/libextra/includes/gnutls/openssl.h 2010-05-19 22:20:34.071283592 -0700
|
||||
@@ -164,6 +164,11 @@ extern "C"
|
||||
|
||||
gnutls_transport_ptr_t rfd;
|
||||
gnutls_transport_ptr_t wfd;
|
||||
+
|
||||
+ char *ssl_peek_buffer;
|
||||
+ size_t ssl_peek_buffer_size;
|
||||
+ size_t ssl_peek_avail;
|
||||
+
|
||||
};
|
||||
|
||||
#define rbio gnutls_state
|
||||
@ -0,0 +1,41 @@
|
||||
---
|
||||
src/tests.c | 12 ++++++++++--
|
||||
1 file changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: gnutls-2.8.6/src/tests.c
|
||||
===================================================================
|
||||
--- gnutls-2.8.6.orig/src/tests.c 2009-06-02 11:59:32.000000000 -0700
|
||||
+++ gnutls-2.8.6/src/tests.c 2010-05-19 22:20:51.703780601 -0700
|
||||
@@ -493,6 +493,7 @@ test_bye (gnutls_session_t session)
|
||||
int old, secs = 6;
|
||||
|
||||
#ifndef _WIN32
|
||||
+ struct sigaction act;
|
||||
signal (SIGALRM, got_alarm);
|
||||
#endif
|
||||
|
||||
@@ -513,7 +514,9 @@ test_bye (gnutls_session_t session)
|
||||
return TEST_FAILED;
|
||||
|
||||
#ifndef _WIN32
|
||||
- old = siginterrupt (SIGALRM, 1);
|
||||
+ (void) sigaction(SIGALRM, NULL, &act);
|
||||
+ act.sa_flags &= ~SA_RESTART;
|
||||
+ old = sigaction(SIGALRM, &act, NULL);
|
||||
alarm (secs);
|
||||
#else
|
||||
setsockopt ((int) gnutls_transport_get_ptr (session), SOL_SOCKET,
|
||||
@@ -527,7 +530,12 @@ test_bye (gnutls_session_t session)
|
||||
while (ret > 0);
|
||||
|
||||
#ifndef _WIN32
|
||||
- siginterrupt (SIGALRM, old);
|
||||
+ (void) sigaction(SIGALRM, NULL, &act);
|
||||
+ if (old)
|
||||
+ act.sa_flags &= ~SA_RESTART;
|
||||
+ else
|
||||
+ act.sa_flags |= SA_RESTART;
|
||||
+ sigaction(SIGALRM, &act, NULL);
|
||||
#else
|
||||
if (WSAGetLastError () == WSAETIMEDOUT ||
|
||||
WSAGetLastError () == WSAECONNABORTED)
|
||||
30
meta-oe/recipes-support/gnutls/gnutls.inc
Normal file
30
meta-oe/recipes-support/gnutls/gnutls.inc
Normal file
@ -0,0 +1,30 @@
|
||||
DESCRIPTION = "GNU Transport Layer Security Library"
|
||||
HOMEPAGE = "http://www.gnu.org/software/gnutls/"
|
||||
DEPENDS = "zlib libgcrypt lzo guile-native gtk-doc"
|
||||
LICENSE = "LGPL"
|
||||
LICENSE_${PN}-extra = "GPLv3"
|
||||
|
||||
SRC_URI = "ftp://ftp.gnutls.org/pub/gnutls/gnutls-${PV}.tar.bz2;name=gnutls"
|
||||
|
||||
inherit autotools binconfig pkgconfig gettext
|
||||
|
||||
INC_PR = "r11"
|
||||
|
||||
EXTRA_OECONF = "--with-included-opencdk --with-included-libtasn1 --disable-rpath"
|
||||
|
||||
PACKAGES =+ "${PN}-openssl ${PN}-extra ${PN}-bin ${PN}-xx"
|
||||
|
||||
FILES_${PN} = "${libdir}/libgnutls.so.*"
|
||||
FILES_${PN}-bin = "${bindir}/gnutls-serv \
|
||||
${bindir}/gnutls-cli \
|
||||
${bindir}/srptool \
|
||||
${bindir}/psktool \
|
||||
${bindir}/certtool \
|
||||
${bindir}/gnutls-srpcrypt"
|
||||
|
||||
FILES_${PN}-dev += "${bindir}/*-config ${bindir}/gnutls-cli-debug"
|
||||
FILES_${PN}-extra = "${libdir}/libgnutls-extra.so.*"
|
||||
FILES_${PN}-openssl = "${libdir}/libgnutls-openssl.so.*"
|
||||
FILES_${PN}-xx = "${libdir}/libgnutlsxx.so.*"
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
25
meta-oe/recipes-support/gnutls/gnutls_2.10.4.bb
Normal file
25
meta-oe/recipes-support/gnutls/gnutls_2.10.4.bb
Normal file
@ -0,0 +1,25 @@
|
||||
require gnutls.inc
|
||||
|
||||
PR = "${INC_PR}.0"
|
||||
|
||||
EXTRA_OECONF += " --without-libgcrypt-prefix "
|
||||
|
||||
SRC_URI += "file://gettextize-with-gettext-0.18.patch \
|
||||
file://gnutls-openssl.patch \
|
||||
file://gnutls-replace-siginterrupt.patch \
|
||||
"
|
||||
|
||||
do_configure_prepend() {
|
||||
|
||||
MACROS="libtool.m4 lt~obsolete.m4 ltoptions.m4 ltsugar.m4 ltversion.m4"
|
||||
|
||||
for i in ${MACROS}; do
|
||||
rm -f m4/$i
|
||||
rm -f lib/m4/$i
|
||||
rm -f libextra/m4/$i
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
SRC_URI[gnutls.md5sum] = "4e1517084018a8b1fdc96daabea40528"
|
||||
SRC_URI[gnutls.sha256sum] = "b8bfe36450fe671e99db5ff1e44e6b65fda8a79cacd9e77d550eff7da3745fc8"
|
||||
Loading…
x
Reference in New Issue
Block a user