Commit 77fac9d3 authored by Ian Craggs's avatar Ian Craggs

Squashed commit of the following:

commit f6c276e1b334c43c3dc5a9bfe68ce4c4dc540d18
Author: Ian Craggs <icraggs@gmail.com>
Date:   Fri Mar 17 08:52:43 2017 +0000

    Fix up defines again

commit a8a50e3f3685913aeedb4d2b29e01e594f4938f8
Author: Ian Craggs <icraggs@gmail.com>
Date:   Thu Mar 16 22:45:25 2017 +0000

    Fix OSX compile definition in CMake config

commit 7b139247ff164f4f11faab41474442e5f0504452
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Thu Mar 16 18:52:45 2017 +0000

    Fix MacOS compile options

commit 9f1fceb28d3b6db25832da493da8fc1b5b7a5742
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Thu Mar 16 17:36:07 2017 +0000

    Accidentally removed OPENSSL compile flag

commit 213eeaa0439602d70383b16b4cff354a09136457
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Thu Mar 16 17:11:46 2017 +0000

    Change MacOS semaphore implementation and other build fixes

commit 4e00e4c322cb07285e559e736c579f0c2806d09e
Merge: 2baa87d 159c152
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Thu Mar 16 14:24:34 2017 +0000

    Merge branch 'fixes' of ssh://github.com/eclipse/paho.mqtt.c into fixes

commit 2baa87d83caf457bbf08a1fad34c06ef6e4820f3
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Thu Mar 16 14:18:19 2017 +0000

    Add USE_NAMED_SEMAPHORES compile flag for OSX

commit 159c1527be4e09fd42d0a4ae99d766d145f1a573
Author: Ian Craggs <icraggs@gmail.com>
Date:   Wed Mar 15 23:04:42 2017 +0000

    Correct test3 invocation

commit 15989ba1bdcf181cd9f9d21fbc0e952d046968b4
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 15 18:47:23 2017 +0000

    Run proxy for test9

commit 3c7cc3c4fcdb65b2a4d600859f8dd44aece641ed
Author: Ian Craggs <icraggs@paho-mbp.hursley.uk.ibm.com>
Date:   Wed Mar 15 12:06:42 2017 +0000

    More build/test changes

commit a4bbb576dc27a8dc96f0fc1cd0af097090270ffc
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 15 11:06:55 2017 +0000

    Stop mosquitto first

commit 3da32b8477c7fa2e0cdeab012288d8bac028eabe
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 15 09:16:54 2017 +0000

    Start mosquitto

commit c000141195426ddfd1c2c00d079c30b345a8f64a
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 15 09:09:27 2017 +0000

    Try starting mosquitto alternatively

commit 1a800225407aa9e8c989994f04a6d2410fa9edf9
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 15 08:58:45 2017 +0000

    Environment variable

commit bc5e4609e3ae0e636e7944ed4326a1e46dbab386
Author: Ian Craggs <icraggs@gmail.com>
Date:   Tue Mar 14 21:27:24 2017 +0000

    Environment variables

commit fea6358def6b4da465e9e6c79ab9ba0044824166
Author: Ian Craggs <icraggs@paho-mbp.hursley.uk.ibm.com>
Date:   Tue Mar 14 15:03:47 2017 +0000

    Fix certs dir

commit 0f7f8a47d94b9324edd7a2e14cdf7eb3c5c5db19
Author: Ian Craggs <icraggs@paho-mbp.hursley.uk.ibm.com>
Date:   Tue Mar 14 11:52:03 2017 +0000

    Update certs dir

commit eacb0b62b70880b3dc81468b525435866c7bcb65
Author: Ian Craggs <icraggs@paho-mbp.hursley.uk.ibm.com>
Date:   Tue Mar 14 11:35:39 2017 +0000

    Another attempt at updating Mosquitto

commit 8e2071d237186ba498b8f3c4f08327b6d7235f49
Author: Ian Craggs <icraggs@paho-mbp.hursley.uk.ibm.com>
Date:   Tue Mar 14 11:01:54 2017 +0000

    Allow mosquitto upgrade

commit 9d608cc9f0a6b1e1f784547c7595bd936bf5a29d
Author: Ian Craggs <icraggs@gmail.com>
Date:   Mon Mar 13 23:32:37 2017 +0000

    Other build fix attempt

commit 043d8e1eb79ea2b50b79a405bd9d52dd489dcf3f
Merge: f234399 80b3d30
Author: Ian Craggs <icraggs@gmail.com>
Date:   Mon Mar 13 23:21:56 2017 +0000

    Merge branch 'fixes' of ssh://github.com/eclipse/paho.mqtt.c into fixes

commit f234399d480d603d3e725c427d1c3c17ad2a76cc
Author: Ian Craggs <icraggs@gmail.com>
Date:   Mon Mar 13 23:18:32 2017 +0000

    MQTTClient unpersist fix and local mosquitto

commit 80b3d3057a1c06f5de64da8521123469afeb61d5
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 8 10:48:23 2017 +0000

    Try to fix up certs path

commit bb72cba38e2b5e9149715ae0fb523d765d867cab
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Wed Mar 8 10:24:12 2017 +0000

    Fix up test certificate paths

commit f26fb76633676493919b242721ba12a004265d75
Author: Ian Craggs <icraggs@gmail.com>
Date:   Wed Mar 8 00:28:13 2017 +0000

    Add OPENSSL compile definition to add the TLS code

commit 9ff1f033a6572700eb91efcb7e59448290223f66
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Mon Mar 6 11:06:05 2017 +0000

    Remove local mosquitto start

commit 500b4e0a51268ccc4ddb319fa4d7a0300edfeef3
Merge: 730cceb d710ad1
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Mon Mar 6 10:43:19 2017 +0000

    Merge branch 'fixes' of github.com:eclipse/paho.mqtt.c into fixes

commit 730cceb6bd2976cfc1ef7f7c7b22cac42f9826ed
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Mon Mar 6 10:37:00 2017 +0000

    Change test broker to mqtt.iotree.co.uk

commit d710ad1373689b9e0eba23c771a1045b1edceed9
Author: Ian Craggs <icraggs@gmail.com>
Date:   Mon Mar 6 00:12:36 2017 +0000

    More mosquitto config changes

commit a5e38b7cb60c94cc9c1564edf4360f96b7cb7d91
Merge: 011dace b3af687
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Sun Mar 5 23:51:00 2017 +0000

    Merge branch 'fixes' of github.com:eclipse/paho.mqtt.c into fixes

commit 011dace5a4f1d5a6ecb7699ce153079a28786434
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Sun Mar 5 23:50:17 2017 +0000

    Add mosquitto server config

commit b3af687a1a17eeceb0997a15a63dbe2a93c9c5d5
Author: Ian Craggs <icraggs@gmail.com>
Date:   Sun Mar 5 23:39:27 2017 +0000

    Change mosquitto config

commit 79c142f28f7b3f27b63cf96fdaa823b4d811088c
Author: Ian Craggs <icraggs@uk.ibm.com>
Date:   Sun Mar 5 23:20:53 2017 +0000

    Add mosquitto config for testing

commit 75ddf836924eed7a58b3a073ea0c92e48e4c4e84
Author: Ian Craggs <icraggs@gmail.com>
Date:   Sun Mar 5 18:55:47 2017 +0000

    Update CMake version on Ubuntu

commit ce88bd235d63037c88372f0c433b6f8bc0bfd505
Author: Ian Craggs <icraggs@gmail.com>
Date:   Sun Mar 5 13:45:09 2017 +0000

    Print out CMake version number

commit 8bacd62993341fbc033bae94994b44f8e36e826b
Author: Ian Craggs <icraggs@gmail.com>
Date:   Sat Mar 4 23:20:50 2017 +0000

    Run tests on Linux

commit bb64075c41e27a957b23f6dc8b151919037bfb73
Merge: fee1c80e d923d0e
Author: Ian Craggs <icraggs@gmail.com>
Date:   Sat Mar 4 16:09:17 2017 +0000

    Merge branch 'cmake-tests-travis' of https://github.com/orpiske/paho.mqtt.c into fixes

commit d923d0e972c5333e90a10303f3649b09fa739557
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Tue Feb 14 13:23:08 2017 +0100

    Remove duplicated build code for Travis CI
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit d630ed1f7cb61c571771da8e7a6305897ebff9c7
Author: Otavio R. Piske <opiske@redhat.com>
Date:   Mon Feb 13 22:03:44 2017 +0100

    Include the OpenSSL directories earlier in the build/configuration

    Compilation may fail when cross-compiling due to CMake/compilers forcely
    excluding /usr/include from the include path. Therefore, in this case it's
    required to add the include path for OpenSSL earlier in the process so that
    OpenSSL-dependent code can access the headers.
Signed-off-by: 's avatarOtavio R. Piske <opiske@redhat.com>

commit 74d3af9e58b505298434c451d48bde1952029073
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Tue Feb 7 17:50:54 2017 +0100

    Do use the OpenSSL crypto library otherwise linking of SSL versions of the libraries fail due to missing symbols
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 99aecbfbf8f1cebf30ba9178031270ae089d4bda
Author: Ryan Pendleton <me@ryanp.me>
Date:   Mon Jun 20 13:26:50 2016 -0600

    add missing OPENSSL define to CMakeLists.txt
Signed-off-by: 's avatarRyan Pendleton <me@ryanp.me>

commit 9f883456189c1f83f0208688a88ce6251bed21bc
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Mon Feb 6 10:49:16 2017 +0100

    Link w/ compat library on FreeBSD otherwise it fails due to missing ftime function
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit f6bba5e326905ac320aa4c38d79f9d72a49f9203
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Thu Feb 2 10:16:40 2017 +0100

    Start mosquitto daemon accordingly to what is used on each support Travis CI OS
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit adcf8220bfc8098facf2023da26fdfd166eb1c95
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Thu Feb 2 09:33:38 2017 +0100

    Enable mosquitto installation on OS X and do execute it on all available Travis CI OSes
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 683c6a0b98d87896fb016250207bce7574e4fc54
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 17:56:07 2017 +0100

    Removed the non-existent test7
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 78b8ebd2f672631f87bc7c2fd9e217be6161b761
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 17:49:31 2017 +0100

    Prevent all the tests from running for too long otherwise it can cause the Travis CI build to fail
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit dcf574164afa538f3c2694b77bb21e7b1654085b
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 17:02:09 2017 +0100

    Use a timeout for the test, otherwise Travis CI abort the execution
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 9b7b3c27a7be3e2b2b61b384d2457020c91bc158
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 16:36:41 2017 +0100

    Conditionally resolve POSIX thread library to allow a more flexible linkage handling in systems that do not use pthreads
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 8ba0271b1eeffbc9f689efac3b140c8ad162fa23
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 16:30:55 2017 +0100

    Changed the build to only build SSL test cases if building with SSL support
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 2cef15f31c1fe7fbf070ad6451cb2e00bcb3aabc
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 16:14:24 2017 +0100

    Added missing make command to the build script
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 08eb556549fd0d01665c732933135539cb8e1a73
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 16:06:08 2017 +0100

    Use the APT addon from Travis to install the Mosquitto dependency
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 60a1f4e61b07dcbdd15282170d8913f1c2756ab4
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 16:00:28 2017 +0100

    Sudo is required on Travis build since we need to install mosquitto to run the unit tests
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 779460cd0659426c4038a602b51f1323490e193b
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 15:55:54 2017 +0100

    Adjusted the build on Travis CI so that unit tests are also run
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 7afe13bcb6e1050fb7961214a180f9089849475c
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Wed Feb 1 09:27:32 2017 +0100

    Initial work towards supporting unit tests with the CMake build system
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit e54b44dd62aa69a98564d315837907492c5e0db7
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Sat Dec 31 17:06:55 2016 +0100

    Decrease mininum required version so that it can be built on EL7
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 21e320399423e863ceceab132cab114bf766407e
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Sat Dec 31 15:39:20 2016 +0100

    Fix the library directory name for RHEL and Fedora
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>

commit 56199edfdec3aab17966e1658636e4a75141385e
Author: Otavio Rodolfo Piske <opiske@redhat.com>
Date:   Tue Jan 17 08:27:27 2017 +0100

    Added missing make command to Travis build script
Signed-off-by: 's avatarOtavio Rodolfo Piske <opiske@redhat.com>
parent fee1c80e
sudo: true
language: c
compiler:
......@@ -11,7 +12,7 @@ os:
sudo: required
before_install:
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install openssl ; fi
- ./travis-install.sh
env:
global:
......@@ -32,4 +33,15 @@ addons:
build_command_prepend: "make clean"
build_command: "make -j 4"
branch_pattern: coverity-.*
addons:
apt:
sources:
- george-edison55-precise-backports # cmake 3.2.3 / doxygen 1.8.3
- sourceline: 'ppa:mosquitto-dev/mosquitto-ppa'
packages:
- cmake
- cmake-data
- mosquitto
- doxygen
#*******************************************************************************
# Copyright (c) 2015 logi.cals GmbH
# Copyright (c) 2015, 2017 logi.cals GmbH and others
#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
......@@ -18,11 +18,12 @@
PROJECT("paho" C)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
MESSAGE(STATUS "CMake version: " ${CMAKE_VERSION})
## build settings
SET(PAHO_VERSION_MAJOR 1)
SET(PAHO_VERSION_MINOR 0)
SET(PAHO_VERSION_PATCH 3)
SET(PAHO_VERSION_MINOR 1)
SET(PAHO_VERSION_PATCH 0)
SET(CLIENT_VERSION ${PAHO_VERSION_MAJOR}.${PAHO_VERSION_MINOR}.${PAHO_VERSION_PATCH})
IF(WIN32)
......@@ -72,4 +73,5 @@ INCLUDE(CPack)
ENABLE_TESTING()
INCLUDE_DIRECTORIES(test src)
ADD_SUBDIRECTORY(test)
\ No newline at end of file
ADD_SUBDIRECTORY(test)
......@@ -28,6 +28,31 @@ CONFIGURE_FILE(VersionInfo.h.in
@ONLY
)
IF (PAHO_WITH_SSL)
SET(OPENSSL_LIB_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL libraries")
SET(OPENSSL_INC_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL includes")
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET(OPENSSL_BREW_PATH "/usr/local/opt/openssl")
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
FIND_PATH(OPENSSL_INCLUDE_DIR openssl/ssl.h
HINTS ${OPENSSL_INC_SEARCH_PATH}/include ${OPENSSL_BREW_PATH}/include/)
FIND_LIBRARY(OPENSSL_LIB NAMES ssl libssl
HINTS ${OPENSSL_BREW_PATH}/lib ${OPENSSL_DIR}/lib ${OPENSSL_DIR}/lib64)
FIND_LIBRARY(OPENSSLCRYPTO_LIB NAMES crypto libcrypto
HINTS ${OPENSSL_BREW_PATH}/lib ${OPENSSL_DIR}/lib ${OPENSSL_DIR}/lib64)
MESSAGE(STATUS "OpenSSL hint ${PENSSL_INC_SEARCH_PATH} (includes) / ")
MESSAGE(STATUS "OpenSSL headers found at ${OPENSSL_INCLUDE_DIR}")
MESSAGE(STATUS "OpenSSL library found at ${OPENSSL_LIB}")
MESSAGE(STATUS "OpenSSL Crypto library found at ${OPENSSLCRYPTO_LIB}")
INCLUDE_DIRECTORIES(
${OPENSSL_INCLUDE_DIR}
)
ENDIF()
SET(common_src
MQTTProtocolClient.c
Clients.c
......@@ -60,16 +85,25 @@ ELSEIF (UNIX)
ENDIF()
ENDIF()
IF (UNIX)
SET(THREAD_LIBS_SYSTEM pthread)
ENDIF()
## common compilation for libpaho-mqtt3c and libpaho-mqtt3a
ADD_LIBRARY(common_obj OBJECT ${common_src})
SET_PROPERTY(TARGET common_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET_PROPERTY(TARGET common_obj PROPERTY
COMPILE_DEFINITIONS "OSX=1")
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ADD_EXECUTABLE(MQTTVersion MQTTVersion.c)
ADD_LIBRARY(paho-mqtt3c SHARED $<TARGET_OBJECTS:common_obj> MQTTClient.c)
ADD_LIBRARY(paho-mqtt3a SHARED $<TARGET_OBJECTS:common_obj> MQTTAsync.c)
TARGET_LINK_LIBRARIES(paho-mqtt3c pthread ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3a pthread ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3c ${THREAD_LIBS_SYSTEM} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3a ${THREAD_LIBS_SYSTEM} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(MQTTVersion paho-mqtt3a paho-mqtt3c ${LIBS_SYSTEM})
SET_TARGET_PROPERTIES(
......@@ -130,11 +164,16 @@ SET(OPENSSL_LIB_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL librarie
## Note: SSL libraries must be recompiled due ifdefs
ADD_LIBRARY(common_ssl_obj OBJECT ${common_src})
SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;OSX=1")
ELSE (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1")
ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
ADD_LIBRARY(paho-mqtt3cs SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTClient.c SSLSocket.c)
ADD_LIBRARY(paho-mqtt3as SHARED $<TARGET_OBJECTS:common_ssl_obj> MQTTAsync.c SSLSocket.c)
TARGET_LINK_LIBRARIES(paho-mqtt3cs pthread ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3as pthread ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3cs ${THREAD_LIBS_SYSTEM} ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
TARGET_LINK_LIBRARIES(paho-mqtt3as ${THREAD_LIBS_SYSTEM} ${OPENSSL_LIB} ${OPENSSLCRYPTO_LIB} ${LIBS_SYSTEM})
SET_TARGET_PROPERTIES(
paho-mqtt3cs paho-mqtt3as PROPERTIES
VERSION ${CLIENT_VERSION}
......
......@@ -29,7 +29,7 @@
* Ian Craggs - fix for bug 459791 - deadlock in WaitForCompletion for bad client
* Ian Craggs - fix for bug 474905 - insufficient synchronization for subscribe, unsubscribe, connect
* Ian Craggs - make it clear that yield and receive are not intended for multi-threaded mode (bug 474748)
* Ian Craggs - SNI support
* Ian Craggs - SNI support, message queue unpersist bug
*******************************************************************************/
/**
......@@ -569,7 +569,13 @@ thread_return_type WINAPI MQTTClient_run(void* n)
* so we must be careful how we use it.
*/
if (rc)
{
#if !defined(NO_PERSISTENCE)
if (m->c->persistence)
MQTTPersistence_unpersistQueueEntry(m->c, (MQTTPersistence_qEntry*)qe);
#endif
ListRemove(m->c->messageQueue, qe);
}
else
Log(TRACE_MIN, -1, "False returned from messageArrived for client %s, message remains on queue",
m->c->clientID);
......
/*******************************************************************************
* Copyright (c) 2009, 2014 IBM Corp.
* Copyright (c) 2009, 2017 IBM Corp.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v1.0 which accompany this distribution.
* and Eclipse Distribution License v1.0 which accompany this distribution.
*
* The Eclipse Public License is available at
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
......@@ -15,6 +15,7 @@
* Ian Craggs, Allan Stockdill-Mander - async client updates
* Ian Craggs - bug #415042 - start Linux thread as disconnected
* Ian Craggs - fix for bug #420851
* Ian Craggs - change MacOS semaphore implementation
*******************************************************************************/
/**
......@@ -176,20 +177,6 @@ thread_id_type Thread_getid()
}
#if defined(USE_NAMED_SEMAPHORES)
#define MAX_NAMED_SEMAPHORES 10
static int named_semaphore_count = 0;
static struct
{
sem_type sem;
char name[NAME_MAX-4];
} named_semaphores[MAX_NAMED_SEMAPHORES];
#endif
/**
* Create a new semaphore
* @return the new condition variable
......@@ -207,27 +194,9 @@ sem_type Thread_create_sem()
FALSE, // initial state is nonsignaled
NULL // object name
);
#elif defined(USE_NAMED_SEMAPHORES)
if (named_semaphore_count == 0)
memset(named_semaphores, '\0', sizeof(named_semaphores));
char* name = &(strrchr(tempnam("/", "MQTT"), '/'))[1]; /* skip first slash of name */
if ((sem = sem_open(name, O_CREAT, S_IRWXU, 0)) == SEM_FAILED)
rc = -1;
else
{
int i;
named_semaphore_count++;
for (i = 0; i < MAX_NAMED_SEMAPHORES; ++i)
{
if (named_semaphores[i].name[0] == '\0')
{
named_semaphores[i].sem = sem;
strcpy(named_semaphores[i].name, name);
break;
}
}
}
#elif defined(OSX)
sem = dispatch_semaphore_create(0L);
rc = (sem == NULL) ? -1 : 0;
#else
sem = malloc(sizeof(sem_t));
rc = sem_init(sem, 0, 0);
......@@ -263,6 +232,8 @@ int Thread_wait_sem(sem_type sem, int timeout)
FUNC_ENTRY;
#if defined(WIN32) || defined(WIN64)
rc = WaitForSingleObject(sem, timeout);
#elif defined(OSX)
rc = (int)dispatch_semaphore_wait(sem, dispatch_time(DISPATCH_TIME_NOW, timeout*1000));
#elif defined(USE_TRYWAIT)
while (++i < count && (rc = sem_trywait(sem)) != 0)
{
......@@ -295,6 +266,8 @@ int Thread_check_sem(sem_type sem)
{
#if defined(WIN32) || defined(WIN64)
return WaitForSingleObject(sem, 0) == WAIT_OBJECT_0;
#elif defined(OSX)
return dispatch_semaphore_wait(sem, DISPATCH_TIME_NOW) == 0;
#else
int semval = -1;
sem_getvalue(sem, &semval);
......@@ -316,6 +289,8 @@ int Thread_post_sem(sem_type sem)
#if defined(WIN32) || defined(WIN64)
if (SetEvent(sem) == 0)
rc = GetLastError();
#elif defined(OSX)
rc = (int)dispatch_semaphore_signal(sem);
#else
if (sem_post(sem) == -1)
rc = errno;
......@@ -337,19 +312,8 @@ int Thread_destroy_sem(sem_type sem)
FUNC_ENTRY;
#if defined(WIN32) || defined(WIN64)
rc = CloseHandle(sem);
#elif defined(USE_NAMED_SEMAPHORES)
int i;
rc = sem_close(sem);
for (i = 0; i < MAX_NAMED_SEMAPHORES; ++i)
{
if (named_semaphores[i].sem == sem)
{
rc = sem_unlink(named_semaphores[i].name);
named_semaphores[i].name[0] = '\0';
break;
}
}
named_semaphore_count--;
#elif defined(OSX)
dispatch_release(sem);
#else
rc = sem_destroy(sem);
free(sem);
......
/*******************************************************************************
* Copyright (c) 2009, 2014 IBM Corp.
* Copyright (c) 2009, 2017 IBM Corp.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v1.0 which accompany this distribution.
* and Eclipse Distribution License v1.0 which accompany this distribution.
*
* The Eclipse Public License is available at
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Ian Craggs - initial implementation
* Ian Craggs, Allan Stockdill-Mander - async client updates
* Ian Craggs - fix for bug #420851
* Ian Craggs - change MacOS semaphore implementation
*******************************************************************************/
#if !defined(THREAD_H)
......@@ -30,7 +31,7 @@
#define sem_type HANDLE
#else
#include <pthread.h>
#include <semaphore.h>
#define thread_type pthread_t
#define thread_id_type pthread_t
#define thread_return_type void*
......@@ -38,7 +39,13 @@
#define mutex_type pthread_mutex_t*
typedef struct { pthread_cond_t cond; pthread_mutex_t mutex; } cond_type_struct;
typedef cond_type_struct *cond_type;
typedef sem_t *sem_type;
#if defined(OSX)
#include <dispatch/dispatch.h>
typedef dispatch_semaphore_t sem_type;
#else
#include <semaphore.h>
typedef sem_t *sem_type;
#endif
cond_type Thread_create_cond();
int Thread_signal_cond(cond_type);
......
SET(MQTT_TEST_BROKER "tcp://localhost:1883" CACHE STRING "Hostname of a test MQTT broker to use")
SET(MQTT_TEST_PROXY "tcp://localhost:1884" CACHE STRING "Hostname of the test proxy to use")
SET(MQTT_SSL_HOSTNAME "localhost" CACHE STRING "Hostname of a test SSL MQTT broker to use")
SET(CERTDIR $ENV{TRAVIS_BUILD_DIR}/test/ssl )
ADD_EXECUTABLE(
test1
......@@ -13,7 +17,7 @@ TARGET_LINK_LIBRARIES(
ADD_TEST(
NAME test1
COMMAND "test1" "--connection" ${MQTT_TEST_BROKER}
COMMAND "test1" "--connection" ${MQTT_TEST_BROKER}
)
ADD_EXECUTABLE(
......@@ -31,20 +35,24 @@ ADD_TEST(
COMMAND test2 "--connection" ${MQTT_TEST_BROKER}
)
ADD_EXECUTABLE(
test3
test3.c
)
IF (PAHO_WITH_SSL)
ADD_EXECUTABLE(
test3
test3.c
)
TARGET_LINK_LIBRARIES(
test3
paho-mqtt3cs
)
TARGET_LINK_LIBRARIES(
test3
paho-mqtt3cs
)
ADD_TEST(
NAME test3
COMMAND test3 "--connection" ${MQTT_TEST_BROKER}
)
ADD_TEST(
NAME test3
COMMAND test3 "--hostname" ${MQTT_SSL_HOSTNAME} "--client_key" "${CERTDIR}/client.pem" "--server_key" "${CERTDIR}/test-root-ca.crt"
)
SET_TESTS_PROPERTIES(test3 PROPERTIES TIMEOUT 540)
ENDIF()
ADD_EXECUTABLE(
test4
......@@ -61,21 +69,24 @@ ADD_TEST(
COMMAND test4 "--connection" ${MQTT_TEST_BROKER}
)
IF (PAHO_WITH_SSL)
ADD_EXECUTABLE(
test5
test5.c
)
ADD_EXECUTABLE(
test5
test5.c
)
TARGET_LINK_LIBRARIES(
test5
paho-mqtt3as
)
TARGET_LINK_LIBRARIES(
test5
paho-mqtt3as
)
ADD_TEST(
NAME test5
COMMAND test5 "--hostname" ${MQTT_SSL_HOSTNAME} "--client_key" "${CERTDIR}/client.pem" "--server_key" "${CERTDIR}/test-root-ca.crt"
)
ADD_TEST(
NAME test5
COMMAND test5 "--hostname" ${MQTT_SSL_HOSTNAME}
)
SET_TESTS_PROPERTIES(test5 PROPERTIES TIMEOUT 540)
ENDIF()
ADD_EXECUTABLE(
test6
......@@ -119,5 +130,11 @@ TARGET_LINK_LIBRARIES(
ADD_TEST(
NAME test9
COMMAND test9 "--connection" ${MQTT_TEST_BROKER}
)
\ No newline at end of file
COMMAND test9 "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY}
)
# Times out after 9 minutes
SET_TESTS_PROPERTIES(
test1 test2 test4 test6 test8 test9
PROPERTIES TIMEOUT 540)
......@@ -729,7 +729,7 @@ class Subacks(Packets):
self.data = []
while leftlen > 0:
qos = buffer[-leftlen]
assert qos in [0, 1, 2, 0x80], "[MQTT-3.9.3-2] return code in QoS must be 0, 1, 2 or 0x80"
assert ord(qos) in [0, 1, 2, 0x80], "[MQTT-3.9.3-2] return code in QoS must be 0, 1, 2 or 0x80, was "+ord(qos)
leftlen -= 1
self.data.append(qos)
assert leftlen == 0
......
......@@ -3,11 +3,11 @@
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v1.0 which accompany this distribution.
* and Eclipse Distribution License v1.0 which accompany this distribution.
*
* The Eclipse Public License is available at
* The Eclipse Public License is available at
* http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
......@@ -51,7 +51,7 @@ struct
{
char* connection; /**< connection to system under test. */
char** connections; /**< HA connection list */
int connection_count;
int connection_count;
char* control_connection; /**< MQTT control connection, for test sync */
char* topic;
char* control_topic;
......@@ -84,7 +84,7 @@ struct
void getopts(int argc, char** argv)
{
int count = 1;
while (count < argc)
{
if (strcmp(argv[count], "--qos") == 0)
......@@ -191,7 +191,7 @@ void MyLog(int log_level, char* format, ...)
if (log_level == LOGA_DEBUG && opts.verbose == 0)
return;
ftime(&ts);
timeinfo = localtime(&ts.time);
strftime(msg_buf, 80, "%Y%m%d %H%M%S", timeinfo);
......@@ -298,7 +298,7 @@ void control_connectionLost(void* context, char* cause)
* @param topicName the name of the topic on which the message is received
* @param topicLen the length of the topic name (in case of embedded nulls)
* @param m pointer to the message received
* @return boolean
* @return boolean
*/
int control_messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* m)
{
......@@ -325,6 +325,21 @@ int control_messageArrived(void* context, char* topicName, int topicLen, MQTTAsy
}
int control_send(char* message)
{
char buf[156];
int rc = 0;
MQTTAsync_responseOptions ropts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "%s: %s", opts.clientid, message);
rc = MQTTAsync_send(control_client, pub_topic, strlen(buf),
buf, 1, 0, &ropts);
MyLog(LOGA_DEBUG, "Control message sent: %s", buf);
return rc;
}
/* wait for a specific message on the control topic. */
int control_wait(char* message)
{
......@@ -336,7 +351,7 @@ int control_wait(char* message)
sprintf(buf, "waiting for: %s", message);
control_send(buf);
while (control_found == 0 && stopping == 0)
{
if (++count == 300)
......@@ -369,20 +384,6 @@ int control_which(char* message1, char* message2)
}
int control_send(char* message)
{
char buf[156];
int rc = 0;
MQTTAsync_responseOptions ropts = MQTTAsync_responseOptions_initializer;
sprintf(buf, "%s: %s", opts.clientid, message);
rc = MQTTAsync_send(control_client, pub_topic, strlen(buf),
buf, 1, 0, &ropts);
MyLog(LOGA_DEBUG, "Control message sent: %s", buf);
return rc;
}
START_TIME_TYPE global_start_time;
int messageArrived(void* context, char* topicName, int topicLen,
......@@ -508,14 +509,14 @@ int recreateReconnect()
MyLog(LOGA_ALWAYS, "Recreating client");
MQTTAsync_destroy(&client); /* destroy the client object so that we force persistence to be read on recreate */
rc = MQTTAsync_create(&client, opts.connection, opts.clientid, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL);
if (rc != MQTTASYNC_SUCCESS)
{
MyLog(LOGA_ALWAYS, "MQTTAsync_create failed, rc %d", rc);
goto exit;
}
if ((rc = MQTTAsync_setCallbacks(client, client, connectionLost,
messageArrived, NULL)) != MQTTASYNC_SUCCESS)
{
......@@ -537,7 +538,7 @@ int recreateReconnect()
MyLog(LOGA_ALWAYS, "MQTTAsync_connect failed, rc %d", rc);
else
connection_lost = 0;
exit:
return rc;
}
......@@ -546,7 +547,7 @@ exit:
int success(int count)
{
int rc = 1;
if (errors)
{
MyLog(LOGA_ALWAYS, "Workload test failed because the callback had errors");
......@@ -576,7 +577,7 @@ int waitForCompletion(START_TIME_TYPE start_time)
int lastreport = 0;
int wait_count = 0;
int limit = 120;
mqsleep(1);
while (arrivedCount < expectedCount)
{
......@@ -632,7 +633,7 @@ void one_iteration()
for (i = 1; i <= test_count; ++i)
{
char payload[128];
sprintf(payload, "message number %d", i);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
......@@ -660,17 +661,17 @@ void one_iteration()
/* Now set a target of 30 seconds total round trip */
if (last_completion_time == -1)
{
{
MyLog(LOGA_ALWAYS, "Round trip time for %d messages is %d ms", test_count, roundtrip_time);
expectedCount = 1000 * test_count * test_interval / roundtrip_time / 2;
}
else
{
{
MyLog(LOGA_ALWAYS, "Last time, %d messages took %d s.", last_expected_count, last_completion_time);
expectedCount = last_expected_count * test_interval / last_completion_time;
expectedCount = last_expected_count * test_interval / last_completion_time;
}
MyLog(LOGA_ALWAYS, "Therefore %d messages needed for 30 seconds", expectedCount);
if (control_wait("start_test") == 0) /* now synchronize the test interval */
goto exit;
......@@ -682,11 +683,11 @@ void one_iteration()
{
MQTTAsync_responseOptions ropts = MQTTAsync_responseOptions_initializer;
char payload[128];
ropts.onSuccess = messageSent;
seqno++;
sprintf(payload, "message number %d", seqno);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
opts.qos, opts.retained, &ropts);
while (rc != MQTTASYNC_SUCCESS)
{
......@@ -696,7 +697,7 @@ void one_iteration()
if (stopping)
goto exit;
mqsleep(1);
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload,
opts.qos, opts.retained, &ropts);
}
//MyLog(LOGA_DEBUG, "Successful publish with payload %s", payload);
......@@ -704,7 +705,7 @@ void one_iteration()
mqsleep(1);
}
MyLog(LOGA_ALWAYS, "%d messages sent in %d seconds", expectedCount, elapsed(start_time) / 1000);
waitForCompletion(start_time);
control_wait("test finished");
exit:
......@@ -717,7 +718,7 @@ static int client_subscribed = 0;
void client_onSubscribe(void* context, MQTTAsync_successData* response)
{
MQTTAsync c = (MQTTAsync)context;
MyLog(LOGA_DEBUG, "In client subscribe onSuccess callback %p granted qos %d", c, response->alt.qos);
client_subscribed = 1;
......@@ -739,7 +740,7 @@ void client_onConnect(void* context, MQTTAsync_successData* response)
int rc;
sprintf(sub_topic, "%s/send", opts.control_topic);
sprintf(pub_topic, "%s/receive", opts.control_topic);
sprintf(pub_topic, "%s/receive", opts.control_topic);
ropts.context = context;
ropts.onSuccess = client_onSubscribe;
ropts.onFailure = client_onFailure;
......@@ -763,7 +764,7 @@ void client_onCleaned(void* context, MQTTAsync_successData* response)
MQTTAsync c = (MQTTAsync)context;
MQTTAsync_disconnectOptions dopts = MQTTAsync_disconnectOptions_initializer;
int rc;
dopts.context = context;
dopts.onSuccess = client_onCleanedDisconnected;
dopts.onFailure = client_onFailure;
......@@ -780,7 +781,7 @@ int sendAndReceive(void)
{
int rc = 0;
int persistence = MQTTCLIENT_PERSISTENCE_NONE;
MyLog(LOGA_ALWAYS, "v3 async C client topic workload using QoS %d", opts.qos);
MyLog(LOGA_DEBUG, "Connecting to %s", opts.connection);
......@@ -794,8 +795,8 @@ int sendAndReceive(void)
rc = 99;
goto exit;
}
if ((rc = MQTTAsync_setCallbacks(client, client, connectionLost,
if ((rc = MQTTAsync_setCallbacks(client, client, connectionLost,
messageArrived, NULL)) != MQTTASYNC_SUCCESS)
{
MyLog(LOGA_ALWAYS, "MQTTAsync_setCallbacks failed, rc %d", rc);
......@@ -865,15 +866,15 @@ int sendAndReceive(void)
while (!stopping)
{
one_iteration(client);
one_iteration();
}
disconnect_exit:
MQTTAsync_disconnect(client, 0);
destroy_exit:
MQTTAsync_destroy(&client);
exit:
return rc;
}
......@@ -884,7 +885,7 @@ static int control_subscribed = 0;
void control_onSubscribe(void* context, MQTTAsync_successData* response)
{
MQTTAsync c = (MQTTAsync)context;
MyLog(LOGA_DEBUG, "In control subscribe onSuccess callback %p granted qos %d", c, response->alt.qos);
control_subscribed = 1;
......@@ -905,7 +906,7 @@ void control_onConnect(void* context, MQTTAsync_successData* response)
int rc;
sprintf(sub_topic, "%s/send", opts.control_topic);
sprintf(pub_topic, "%s/receive", opts.control_topic);
sprintf(pub_topic, "%s/receive", opts.control_topic);
ropts.onSuccess = control_onSubscribe;
ropts.onFailure = control_onFailure;
ropts.context = c;
......@@ -939,10 +940,10 @@ int main(int argc, char** argv)
{
MyLog(LOGA_ALWAYS, "%s: %s\n", info->name, info->value);
info++;
}
}
getopts(argc, argv);
sprintf(topic_buf, "%s_%d", opts.topic, opts.slot_no);
opts.topic = topic_buf;
......@@ -962,7 +963,7 @@ int main(int argc, char** argv)
rc = 99;
goto exit;
}
if ((rc = MQTTAsync_setCallbacks(control_client, control_client, control_connectionLost,
control_messageArrived, NULL)) != MQTTASYNC_SUCCESS)
{
......@@ -989,14 +990,14 @@ int main(int argc, char** argv)
if (control_subscribed != 1)
goto destroy_exit;
sendAndReceive();
exit:
MQTTAsync_disconnect(control_client, 0);
destroy_exit:
MQTTAsync_destroy(&control_client);
return 0;
}
......@@ -915,13 +915,13 @@ int main(int argc, char** argv)
for (options.test_no = 1; options.test_no < ARRAY_SIZE(tests); ++options.test_no)
{
failures = 0;
//MQTTAsync_setTraceLevel(MQTTASYNC_TRACE_ERROR);
MQTTAsync_setTraceLevel(MQTTASYNC_TRACE_ERROR);
rc += tests[options.test_no](options); /* return number of failures. 0 = test succeeded */
}
}
else
{
//MQTTAsync_setTraceLevel(MQTTASYNC_TRACE_ERROR);
MQTTAsync_setTraceLevel(MQTTASYNC_TRACE_ERROR);
rc = tests[options.test_no](options); /* run just the selected test */
}
......
/*******************************************************************************
* Copyright (c) 2012, 2016 IBM Corp.
* Copyright (c) 2012, 2017 IBM Corp.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
......@@ -12,6 +12,7 @@
*
* Contributors:
* Ian Craggs - initial API and implementation and/or initial documentation
* Ian Craggs - correct some compile warnings
*******************************************************************************/
......@@ -88,6 +89,13 @@ void getopts(int argc, char** argv)
else
usage();
}
else if (strcmp(argv[count], "--proxy_connection") == 0)
{
if (++count < argc)
options.proxy_connection = argv[count];
else
usage();
}
else if (strcmp(argv[count], "--verbose") == 0)
options.verbose = 1;
count++;
......@@ -501,7 +509,7 @@ int test1(struct Options options)
assert("Good rc from reconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc);
/* wait for client to be reconnected */
while (!test1c_connected == 0 && ++count < 10000)
while (!test1c_connected && ++count < 10000)
MySleep(100);
/* wait for success or failure callback */
......@@ -778,7 +786,7 @@ int test2(struct Options options)
assert("Good rc from reconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc);
/* wait for client to be reconnected */
while (!test2c_connected == 0 && ++count < 10000)
while (!test2c_connected && ++count < 10000)
MySleep(100);
/* wait for success or failure callback */
......@@ -1051,7 +1059,7 @@ int test3(struct Options options)
assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i);
/* wait for client to be reconnected */
while (!test3c_connected == 0 && ++count < 10000)
while (!test3c_connected && ++count < 10000)
MySleep(100);
/* wait for success or failure callback */
......@@ -1326,7 +1334,7 @@ int test4(struct Options options)
assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i);
/* wait for client to be reconnected */
while (!test4c_connected == 0 && ++count < 10000)
while (!test4c_connected && ++count < 10000)
MySleep(100);
/* wait for success or failure callback */
......@@ -1606,7 +1614,7 @@ int test5(struct Options options)
assert("Good rc from reconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc);
/* wait for client to be reconnected */
while (!test5c_connected == 0 && ++count < 10000)
while (!test5c_connected && ++count < 10000)
MySleep(100);
/* wait for success or failure callback */
......
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=GB, ST=Derbyshire, L=Derby, O=Paho Project, OU=Testing, CN=Root CA
Validity
Not Before: Jul 29 19:21:30 2013 GMT
Not After : Jul 28 19:21:30 2018 GMT
Subject: C=GB, ST=Derbyshire, O=Paho Project, OU=Testing, CN=Signing CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:dc:26:78:40:ae:b2:ad:2f:26:12:0a:d5:b1:18:
80:16:d8:88:be:0b:42:ce:32:ad:12:d5:f5:78:1b:
35:28:f2:13:1b:05:09:fb:7e:d7:d9:a1:8a:0d:4a:
fe:95:37:d4:16:75:83:e4:6a:44:34:33:57:2e:49:
ba:bc:b4:cf:d0:c0:87:e0:bc:f0:60:76:14:00:d6:
eb:cb:f6:db:b3:43:f1:c8:4d:4a:0a:bb:e0:37:7c:
8e:93:1f:a0:87:68:59:fe:0c:25:40:f3:7c:fd:71:
90:55:ef:de:18:b4:08:86:c9:75:c2:99:2f:ce:12:
bf:c5:5e:cf:5f:f1:06:53:07
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
29:4D:6E:C7:F2:F7:71:72:DA:27:9C:9C:AB:DA:07:1D:47:9C:D8:41
X509v3 Authority Key Identifier:
keyid:4A:2B:69:D6:31:1D:A3:68:E8:46:6F:FB:4B:F3:8E:B6:8D:51:0E:BF
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
48:ec:d7:80:8a:8f:82:a6:42:b1:89:2c:b9:4b:6d:0a:37:b8:
72:19:05:de:75:80:0c:d6:41:97:b2:d7:fe:99:cb:7e:c4:0e:
77:97:09:a8:9f:87:ff:0b:de:3f:1c:dc:1e:fe:09:36:a7:f5:
54:9a:85:4e:fb:6f:27:fe:0f:29:45:61:8d:07:c6:0c:da:37:
3d:a3:69:4b:82:71:e6:24:e0:87:a6:ee:d5:87:61:dd:8f:08:
fe:33:a6:1f:ae:b2:ae:1f:d8:2c:20:c8:a6:fc:33:0e:82:68:
80:23:61:10:ad:5c:1d:80:d6:b1:5f:e4:af:66:6d:63:10:e4:
96:e4
-----BEGIN CERTIFICATE-----
MIICkzCCAfygAwIBAgIBATANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwJHQjET
MBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkxFTATBgNVBAoMDFBh
aG8gUHJvamVjdDEQMA4GA1UECwwHVGVzdGluZzEQMA4GA1UEAwwHUm9vdCBDQTAe
Fw0xMzA3MjkxOTIxMzBaFw0xODA3MjgxOTIxMzBaMGAxCzAJBgNVBAYTAkdCMRMw
EQYDVQQIDApEZXJieXNoaXJlMRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNV
BAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBANwmeECusq0vJhIK1bEYgBbYiL4LQs4yrRLV9XgbNSjyExsF
Cft+19mhig1K/pU31BZ1g+RqRDQzVy5Jury0z9DAh+C88GB2FADW68v227ND8chN
Sgq74Dd8jpMfoIdoWf4MJUDzfP1xkFXv3hi0CIbJdcKZL84Sv8Vez1/xBlMHAgMB
AAGjUDBOMB0GA1UdDgQWBBQpTW7H8vdxctonnJyr2gcdR5zYQTAfBgNVHSMEGDAW
gBRKK2nWMR2jaOhGb/tL8462jVEOvzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEB
BQUAA4GBAEjs14CKj4KmQrGJLLlLbQo3uHIZBd51gAzWQZey1/6Zy37EDneXCaif
h/8L3j8c3B7+CTan9VSahU77byf+DylFYY0HxgzaNz2jaUuCceYk4Iem7tWHYd2P
CP4zph+usq4f2CwgyKb8Mw6CaIAjYRCtXB2A1rFf5K9mbWMQ5Jbk
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICqDCCAhGgAwIBAgIJAKrzwmdXIUxsMA0GCSqGSIb3DQEBBQUAMG0xCzAJBgNV
BAYTAkdCMRMwEQYDVQQIDApEZXJieXNoaXJlMQ4wDAYDVQQHDAVEZXJieTEVMBMG
A1UECgwMUGFobyBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAwDgYDVQQDDAdS
b290IENBMB4XDTEzMDcyOTE5MjEyOVoXDTIzMDcyNzE5MjEyOVowbTELMAkGA1UE
BhMCR0IxEzARBgNVBAgMCkRlcmJ5c2hpcmUxDjAMBgNVBAcMBURlcmJ5MRUwEwYD
VQQKDAxQYWhvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3RpbmcxEDAOBgNVBAMMB1Jv
b3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKbPzEEWCKsjjwjJ787u
Q32k5EdqoDddMEjSVbZNSNEwUew1L7O8NTbmtCEeVFQjOLAdmdiF3rQbXHV+Zew0
jt2g4vtPpl1GOG6jA/6YznKAyQdvGCdYfGZUN2tN+mbtVxWqkHZitQDQGaSHnx24
NX649La2uyFy+7l9o8++xPONAgMBAAGjUDBOMB0GA1UdDgQWBBRKK2nWMR2jaOhG
b/tL8462jVEOvzAfBgNVHSMEGDAWgBRKK2nWMR2jaOhGb/tL8462jVEOvzAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAEd+gW86/W+fisz5PFHAeEw7zn9q
dzLHm7+QZgNLZ9h7/ZbhObRUFMRtU2xm4amyh85h7hUE5R2E2uW2OXumic7/D4ZD
6unjr4m5jwVWDTqTUYIcNSriyoDWAVlPfOWaU5NyUhqS1DM28tvOWVHVLCxmVcZl
tJQqo5eHbQ/+Hjfx
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=GB, ST=Derbyshire, O=Paho Project, OU=Testing, CN=Signing CA
Validity
Not Before: Aug 19 14:03:57 2013 GMT
Not After : Aug 18 14:03:57 2018 GMT
Subject: C=GB, ST=Nottinghamshire, L=Nottingham, O=Server, OU=Production, CN=m2m.example.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:9f:f2:ee:40:bb:b6:e9:f9:2f:c1:79:ef:9b:a7:
39:27:15:09:bd:48:44:b6:df:1e:92:eb:dd:1d:4e:
36:d9:3a:06:80:d3:d1:33:c3:d7:6b:70:01:76:a0:
53:2b:31:8e:96:6c:72:3a:ae:df:52:19:12:9b:ae:
55:0b:0a:49:f4:52:b4:34:4c:24:39:45:f6:35:89:
42:f8:92:86:82:9f:a4:fb:fd:db:b1:19:60:6f:fc:
1e:22:a7:02:ec:61:07:57:f8:8c:cb:24:64:d7:89:
39:ee:d0:da:40:04:55:16:8c:a0:78:38:7f:df:59:
3e:75:6a:53:01:39:f8:3f:f5
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
22:EC:63:4C:22:BF:83:04:5D:37:AA:46:49:5D:03:39:AE:50:56:95
X509v3 Authority Key Identifier:
keyid:29:4D:6E:C7:F2:F7:71:72:DA:27:9C:9C:AB:DA:07:1D:47:9C:D8:41
Signature Algorithm: sha1WithRSAEncryption
b6:b6:65:ec:fe:35:7d:b9:ce:45:2d:be:78:e2:55:79:a0:b0:
4c:df:07:43:9f:ce:2f:77:61:b8:a0:43:f4:e4:33:51:a1:2d:
f7:d9:cb:1f:b9:ba:a5:33:2e:18:e1:51:29:26:d6:32:93:3d:
f9:19:ac:31:1a:90:1c:1a:56:8b:96:d3:a4:0b:ae:0a:e3:00:
09:82:81:3f:d7:3a:52:de:9c:84:d7:bb:83:d1:0a:f2:28:be:
1d:a2:a8:4b:0d:05:7a:e5:ca:cf:f7:23:7d:b3:65:0a:23:cb:
6a:78:a6:8e:4d:29:2c:b2:5d:98:96:10:b7:cc:fd:04:04:d8:
7f:7b
-----BEGIN CERTIFICATE-----
MIICzTCCAjagAwIBAgIBAjANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJHQjET
MBEGA1UECAwKRGVyYnlzaGlyZTEVMBMGA1UECgwMUGFobyBQcm9qZWN0MRAwDgYD
VQQLDAdUZXN0aW5nMRMwEQYDVQQDDApTaWduaW5nIENBMB4XDTEzMDgxOTE0MDM1
N1oXDTE4MDgxODE0MDM1N1owfDELMAkGA1UEBhMCR0IxGDAWBgNVBAgMD05vdHRp
bmdoYW1zaGlyZTETMBEGA1UEBwwKTm90dGluZ2hhbTEPMA0GA1UECgwGU2VydmVy
MRMwEQYDVQQLDApQcm9kdWN0aW9uMRgwFgYDVQQDDA9tMm0uZXhhbXBsZS5vcmcw
gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJ/y7kC7tun5L8F575unOScVCb1I
RLbfHpLr3R1ONtk6BoDT0TPD12twAXagUysxjpZscjqu31IZEpuuVQsKSfRStDRM
JDlF9jWJQviShoKfpPv927EZYG/8HiKnAuxhB1f4jMskZNeJOe7Q2kAEVRaMoHg4
f99ZPnVqUwE5+D/1AgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8W
HU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQi7GNMIr+D
BF03qkZJXQM5rlBWlTAfBgNVHSMEGDAWgBQpTW7H8vdxctonnJyr2gcdR5zYQTAN
BgkqhkiG9w0BAQUFAAOBgQC2tmXs/jV9uc5FLb544lV5oLBM3wdDn84vd2G4oEP0
5DNRoS332csfubqlMy4Y4VEpJtYykz35GawxGpAcGlaLltOkC64K4wAJgoE/1zpS
3pyE17uD0QryKL4doqhLDQV65crP9yN9s2UKI8tqeKaOTSkssl2YlhC3zP0EBNh/
ew==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCf8u5Au7bp+S/Bee+bpzknFQm9SES23x6S690dTjbZOgaA09Ez
w9drcAF2oFMrMY6WbHI6rt9SGRKbrlULCkn0UrQ0TCQ5RfY1iUL4koaCn6T7/dux
GWBv/B4ipwLsYQdX+IzLJGTXiTnu0NpABFUWjKB4OH/fWT51alMBOfg/9QIDAQAB
AoGBAJq4AOM5MQxOcHV0n+Qu88fsP8mKuH00gnyYDwEkAUZLLLM9MaYjEKPqal/3
YbvsagLzz+MX+QmPG0LgdX8CatmV+Y1Ot1aSUykB3y4xJ0K4r5UdgXq3VjQHe0Es
HcFEfd4i+U/TV2XAMi1T70XDE/B1tL7pR8PH1Ut/+jtL4RRBAkEAzwv4zQPcvc5k
oGt6EHhOZCMtdMNhzmlJM6cqOTkzxtAzPo7f18UZ4xVfnL3RVgzDI9ygxQUq2fGn
JP2Y6vd1uQJBAMXEPpjMhb9Z6shK9piEs9trhkuO0rGbCrf1lSnYTTdzojtGM0pV
WiHf61sNq3aB8fvyIBlPkomNhGPjVIdkOh0CQBU1O7n8UEsc7g/Eko9HU3hMZiaU
sNsMy9O/psKPym7t+qHIzsLyTJGHKfELPHsc+Ywd2FX2Doqehylx1I0U5fkCQQC/
OjT09r5U+pMFPUcYzyhCgMQIh3+/cJV6r6KeJaL0fYFfI1AxDjrrCmO/VYZ4PspH
viW/k6u0Cfz7wTNY/1cZAkBGSivOyQ3Hocj/6aWPWgagMeEwdS9/+7xyeQunigV6
zf+0RkX0jzHv2uvrpVECt97BLBOmKdQFogKw24XQ9+B4
-----END RSA PRIVATE KEY-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=GB, ST=Derbyshire, O=Paho Project, OU=Testing, CN=Signing CA
Validity
Not Before: Aug 19 14:03:57 2013 GMT
Not After : Aug 18 14:03:57 2018 GMT
Subject: C=GB, ST=Nottinghamshire, L=Nottingham, O=Server, OU=Production, CN=m2m.eclipse.org
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:a1:17:38:47:00:53:78:7d:b5:28:46:08:76:ed:
df:c0:87:6b:01:7d:5f:40:e6:36:c7:33:bd:e6:c5:
15:0c:55:60:b8:4d:05:2f:19:0b:29:d6:d6:b9:e7:
15:a3:2f:1b:e1:61:49:87:23:db:c1:ad:1d:5c:8a:
4c:2f:1e:60:0b:1f:16:fa:37:a6:e0:76:ff:d2:b2:
84:dd:b1:be:f5:39:7a:bc:40:0d:1b:fb:08:12:31:
d4:97:89:d0:23:3b:6b:24:35:95:72:d4:bb:f9:f6:
b4:8b:3e:98:f5:76:17:0e:11:27:f3:a3:8a:6f:02:
e8:3e:1d:2a:b0:20:62:ac:17
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
10:9A:A2:BA:80:4A:70:31:1B:EB:92:A0:77:FA:1F:56:A1:7C:E7:C8
X509v3 Authority Key Identifier:
keyid:29:4D:6E:C7:F2:F7:71:72:DA:27:9C:9C:AB:DA:07:1D:47:9C:D8:41
Signature Algorithm: sha1WithRSAEncryption
6d:33:28:7c:11:50:1c:c9:10:81:61:e1:bd:ff:5f:ec:d6:90:
6c:48:7f:a2:30:7c:55:db:f1:11:4e:58:ca:e2:51:b2:91:c3:
da:6a:22:48:e6:6f:5e:6d:39:b6:e5:ab:ec:1a:bb:2a:d3:be:
a0:06:8b:f6:a2:00:a9:5f:22:8c:54:31:b0:99:c2:6b:b4:92:
9b:f1:08:29:e8:93:0a:1d:e3:e5:7e:0e:9d:ce:b6:cc:fd:29:
8a:5f:e5:df:54:62:7e:53:d8:65:69:c5:88:a5:26:c2:25:5f:
73:9a:79:3c:56:a6:23:fc:8d:60:93:bc:3d:76:f2:cc:18:89:
5a:4d
-----BEGIN CERTIFICATE-----
MIICzTCCAjagAwIBAgIBATANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJHQjET
MBEGA1UECAwKRGVyYnlzaGlyZTEVMBMGA1UECgwMUGFobyBQcm9qZWN0MRAwDgYD
VQQLDAdUZXN0aW5nMRMwEQYDVQQDDApTaWduaW5nIENBMB4XDTEzMDgxOTE0MDM1
N1oXDTE4MDgxODE0MDM1N1owfDELMAkGA1UEBhMCR0IxGDAWBgNVBAgMD05vdHRp
bmdoYW1zaGlyZTETMBEGA1UEBwwKTm90dGluZ2hhbTEPMA0GA1UECgwGU2VydmVy
MRMwEQYDVQQLDApQcm9kdWN0aW9uMRgwFgYDVQQDDA9tMm0uZWNsaXBzZS5vcmcw
gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKEXOEcAU3h9tShGCHbt38CHawF9
X0DmNsczvebFFQxVYLhNBS8ZCynW1rnnFaMvG+FhSYcj28GtHVyKTC8eYAsfFvo3
puB2/9KyhN2xvvU5erxADRv7CBIx1JeJ0CM7ayQ1lXLUu/n2tIs+mPV2Fw4RJ/Oj
im8C6D4dKrAgYqwXAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8W
HU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBQQmqK6gEpw
MRvrkqB3+h9WoXznyDAfBgNVHSMEGDAWgBQpTW7H8vdxctonnJyr2gcdR5zYQTAN
BgkqhkiG9w0BAQUFAAOBgQBtMyh8EVAcyRCBYeG9/1/s1pBsSH+iMHxV2/ERTljK
4lGykcPaaiJI5m9ebTm25avsGrsq076gBov2ogCpXyKMVDGwmcJrtJKb8Qgp6JMK
HePlfg6dzrbM/SmKX+XfVGJ+U9hlacWIpSbCJV9zmnk8VqYj/I1gk7w9dvLMGIla
TQ==
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQChFzhHAFN4fbUoRgh27d/Ah2sBfV9A5jbHM73mxRUMVWC4TQUv
GQsp1ta55xWjLxvhYUmHI9vBrR1cikwvHmALHxb6N6bgdv/SsoTdsb71OXq8QA0b
+wgSMdSXidAjO2skNZVy1Lv59rSLPpj1dhcOESfzo4pvAug+HSqwIGKsFwIDAQAB
AoGAF+3CD1HuFDzgFw5oHXpyPUAgVgVQi+xmgKqf79KgsMdR6a6PMZLPxLRECzNX
VHkf9Beme2uJLjjP3rowXONvMptVj2U6IQPic4J7H/xIso4q4eqYz2Z3zH6ou95/
MzqdlGx5Xrq68eZO4Hjjf440DVBURKTcBen6aiH1+LhNBlkCQQDUA3Uwfj2iylP1
K92rME5eBT3TDQ+nFCN5gidOlzI3tGJLIYmff9vd5FMZ7+Wq94OPEWFSjOCDRYl1
QptebqvLAkEAwoMhcoPaf8Ho9FgRQ/67ttea8f2aRWfMJ2TbzkXOzqAkIho0/i2B
mP17Y/Ut8ABxzi0OWvc5nLzQyJ38IvgPZQJAFJMhVEtr/9hSvYA8StitQkKP9WNX
GYfCyY/v8JiLrww6XcArcucdlzMJPYMibq0Gf2PYZgJ150dgR5jnKwricQJAcjm7
bJpNt/TRrpwBF6MB7S/UCAPbkqKP2xp5kjqgZerZDUXClPl4P7Wrvll+7o/0RRVk
drr0FD01hnpwVMDDmQJAYWRBkvXHx/u6N1VHutwW9KtpC5ONxydDwhjv5DS07gjq
xir50wrdoaYKwgPxE7jRRASDjJ75aHUhQSC99Q22EQ==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICqDCCAhGgAwIBAgIJAKrzwmdXIUxsMA0GCSqGSIb3DQEBBQUAMG0xCzAJBgNV
BAYTAkdCMRMwEQYDVQQIDApEZXJieXNoaXJlMQ4wDAYDVQQHDAVEZXJieTEVMBMG
A1UECgwMUGFobyBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAwDgYDVQQDDAdS
b290IENBMB4XDTEzMDcyOTE5MjEyOVoXDTIzMDcyNzE5MjEyOVowbTELMAkGA1UE
BhMCR0IxEzARBgNVBAgMCkRlcmJ5c2hpcmUxDjAMBgNVBAcMBURlcmJ5MRUwEwYD
VQQKDAxQYWhvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3RpbmcxEDAOBgNVBAMMB1Jv
b3QgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKbPzEEWCKsjjwjJ787u
Q32k5EdqoDddMEjSVbZNSNEwUew1L7O8NTbmtCEeVFQjOLAdmdiF3rQbXHV+Zew0
jt2g4vtPpl1GOG6jA/6YznKAyQdvGCdYfGZUN2tN+mbtVxWqkHZitQDQGaSHnx24
NX649La2uyFy+7l9o8++xPONAgMBAAGjUDBOMB0GA1UdDgQWBBRKK2nWMR2jaOhG
b/tL8462jVEOvzAfBgNVHSMEGDAWgBRKK2nWMR2jaOhGb/tL8462jVEOvzAMBgNV
HRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAEd+gW86/W+fisz5PFHAeEw7zn9q
dzLHm7+QZgNLZ9h7/ZbhObRUFMRtU2xm4amyh85h7hUE5R2E2uW2OXumic7/D4ZD
6unjr4m5jwVWDTqTUYIcNSriyoDWAVlPfOWaU5NyUhqS1DM28tvOWVHVLCxmVcZl
tJQqo5eHbQ/+Hjfx
-----END CERTIFICATE-----
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 1 (0x1)
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=GB, ST=Derbyshire, L=Derby, O=Paho Project, OU=Testing, CN=Root CA
Validity
Not Before: Jul 29 19:21:30 2013 GMT
Not After : Jul 28 19:21:30 2018 GMT
Subject: C=GB, ST=Derbyshire, O=Paho Project, OU=Testing, CN=Signing CA
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:dc:26:78:40:ae:b2:ad:2f:26:12:0a:d5:b1:18:
80:16:d8:88:be:0b:42:ce:32:ad:12:d5:f5:78:1b:
35:28:f2:13:1b:05:09:fb:7e:d7:d9:a1:8a:0d:4a:
fe:95:37:d4:16:75:83:e4:6a:44:34:33:57:2e:49:
ba:bc:b4:cf:d0:c0:87:e0:bc:f0:60:76:14:00:d6:
eb:cb:f6:db:b3:43:f1:c8:4d:4a:0a:bb:e0:37:7c:
8e:93:1f:a0:87:68:59:fe:0c:25:40:f3:7c:fd:71:
90:55:ef:de:18:b4:08:86:c9:75:c2:99:2f:ce:12:
bf:c5:5e:cf:5f:f1:06:53:07
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
29:4D:6E:C7:F2:F7:71:72:DA:27:9C:9C:AB:DA:07:1D:47:9C:D8:41
X509v3 Authority Key Identifier:
keyid:4A:2B:69:D6:31:1D:A3:68:E8:46:6F:FB:4B:F3:8E:B6:8D:51:0E:BF
X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
48:ec:d7:80:8a:8f:82:a6:42:b1:89:2c:b9:4b:6d:0a:37:b8:
72:19:05:de:75:80:0c:d6:41:97:b2:d7:fe:99:cb:7e:c4:0e:
77:97:09:a8:9f:87:ff:0b:de:3f:1c:dc:1e:fe:09:36:a7:f5:
54:9a:85:4e:fb:6f:27:fe:0f:29:45:61:8d:07:c6:0c:da:37:
3d:a3:69:4b:82:71:e6:24:e0:87:a6:ee:d5:87:61:dd:8f:08:
fe:33:a6:1f:ae:b2:ae:1f:d8:2c:20:c8:a6:fc:33:0e:82:68:
80:23:61:10:ad:5c:1d:80:d6:b1:5f:e4:af:66:6d:63:10:e4:
96:e4
-----BEGIN CERTIFICATE-----
MIICkzCCAfygAwIBAgIBATANBgkqhkiG9w0BAQUFADBtMQswCQYDVQQGEwJHQjET
MBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkxFTATBgNVBAoMDFBh
aG8gUHJvamVjdDEQMA4GA1UECwwHVGVzdGluZzEQMA4GA1UEAwwHUm9vdCBDQTAe
Fw0xMzA3MjkxOTIxMzBaFw0xODA3MjgxOTIxMzBaMGAxCzAJBgNVBAYTAkdCMRMw
EQYDVQQIDApEZXJieXNoaXJlMRUwEwYDVQQKDAxQYWhvIFByb2plY3QxEDAOBgNV
BAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwgZ8wDQYJKoZIhvcNAQEB
BQADgY0AMIGJAoGBANwmeECusq0vJhIK1bEYgBbYiL4LQs4yrRLV9XgbNSjyExsF
Cft+19mhig1K/pU31BZ1g+RqRDQzVy5Jury0z9DAh+C88GB2FADW68v227ND8chN
Sgq74Dd8jpMfoIdoWf4MJUDzfP1xkFXv3hi0CIbJdcKZL84Sv8Vez1/xBlMHAgMB
AAGjUDBOMB0GA1UdDgQWBBQpTW7H8vdxctonnJyr2gcdR5zYQTAfBgNVHSMEGDAW
gBRKK2nWMR2jaOhGb/tL8462jVEOvzAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEB
BQUAA4GBAEjs14CKj4KmQrGJLLlLbQo3uHIZBd51gAzWQZey1/6Zy37EDneXCaif
h/8L3j8c3B7+CTan9VSahU77byf+DylFYY0HxgzaNz2jaUuCceYk4Iem7tWHYd2P
CP4zph+usq4f2CwgyKb8Mw6CaIAjYRCtXB2A1rFf5K9mbWMQ5Jbk
-----END CERTIFICATE-----
log_type error
log_type warning
log_type notice
log_type information
#log_type debug
#log_dest file /var/log/mosquitto/tls-testing.log
allow_anonymous true
#message_size_limit 5000000
# non-SSL listeners
listener 1883
listener 18883
# listener for mutual authentication
listener 18884
cafile test/tls-testing/keys/all-ca.crt
certfile test/tls-testing/keys/server/server.crt
keyfile test/tls-testing/keys/server/server.key
require_certificate true
#tls_version tlsv1
# server authentication - no client authentication
listener 18885
cafile test/tls-testing/keys/all-ca.crt
certfile test/tls-testing/keys/server/server.crt
keyfile test/tls-testing/keys/server/server.key
require_certificate false
#tls_version tlsv1
listener 18886
cafile test/tls-testing/keys/all-ca.crt
certfile test/tls-testing/keys/server/server.crt
keyfile test/tls-testing/keys/server/server.key
require_certificate false
#ciphers ADH-DES-CBC-SHA
#tls_version tlsv1
# server authentication - no client authentication - uses fake hostname to
# simulate mitm attack. Clients should refuse to connect to this listener.
listener 18887
#cafile test/tls-testing/keys/all-ca.crt
cafile test/tls-testing/keys/server/server.crt
certfile test/tls-testing/keys/server/server-mitm.crt
keyfile test/tls-testing/keys/server/server-mitm.key
require_certificate true
#tls_version tlsv1
......@@ -5,10 +5,21 @@ set -e
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
mkdir build.paho
cd build.paho
echo "travis build dir $TRAVIS_BUILD_DIR pwd $PWD"
cmake -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE ..
make
python ../test/mqttsas2.py &
ctest -VV
kill %1 %2
fi
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
mkdir build.paho
cd build.paho
echo "travis build dir $TRAVIS_BUILD_DIR pwd $PWD"
cmake -DPAHO_WITH_SSL=TRUE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE ..
make
python ../test/mqttsas2.py &
ctest -VV
kill %1 %2
fi
#!/bin/bash
if [ "$TRAVIS_OS_NAME" == "linux" ]; then
sudo apt-get update -qq
sudo apt-get install -y libssl-dev
pwd
sudo service mosquitto stop
mosquitto -h
mosquitto -c test/tls-testing/mosquitto.conf &
fi
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
pwd
brew update
brew install openssl
export CFLAGS="-I/usr/local/opt/openssl/include $CFLAGS" LDFLAGS="-L/usr/local/opt/openssl/lib $LDFLAGS"
brew install openssl mosquitto
brew services stop mosquitto
/usr/local/sbin/mosquitto -c test/tls-testing/mosquitto.conf &
fi
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment