MQTT and MQTTS with wolfSSL TSL library
Fork of MQTT by
MQTT is light weight publish/subscribe based messaging protocol for M2M, IoT. This library was forked from MQTT https://developer.mbed.org/teams/mqtt for adding MQTTS security layer on the protocol. TLS(SSL) part of the library is by wolfSSL.https://developer.mbed.org/users/wolfSSL/code/wolfSSL/
"connect" method was extended for TLS. Rest of API's stay compatible with MQTT.
connect methode
int connect(char* hostname, int port, const char *certName = NULL, int timeout=1000)
The 3rd argument certName can be following values.
- NULL: connecting with MQTT
- pointer to certificate file: connecting with MQTTS. PEM or DER for server verification.
- pointer to NULL string: connecting with MQTTS without server verification. This option is for prototyping only, not recommended in security perspective.
日本語:https://developer.mbed.org/users/wolfSSL/code/MQTTS/wiki/MQTTSライブラリ
MQTTClient.h
- Committer:
- icraggs
- Date:
- 2014-03-31
- Revision:
- 3:dbff6b768d28
- Parent:
- 2:dcfdd2abfe71
- Child:
- 4:4ef00243708e
File content as of revision 3:dbff6b768d28:
/** * @file MQTTPubSub.h * @brief API - for MQTT * @author * @version 1.0 * @see * * Copyright (c) 2014 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #if !defined(MQTTCLIENT_H) #define MQTTCLIENT_H #include <vector> #include "mbed.h" #include "FP.h" #include "MQTTPacket.h" #include "include_me.h" namespace MQTT { class Client; enum QoS { QOS0, QOS1, QOS2 }; class Result { /* success or failure result data */ Client* client; }; struct Message { enum QoS qos; bool retained; bool dup; unsigned short msgid; void *payload; size_t payloadlen; }; class Client { public: static FP<void, Result*> None; // default argument of no result handler to indicate call should be blocking Client(IPStack* ipstack, const int buffer_size = 100); int connect(MQTTPacket_connectData* options = 0, FP<void, Result*> resultHandler = None); int publish(char* topic, Message* message, FP<void, Result*> resultHandler = None); int subscribe(char* topicFilter, int qos, FP<void, Message*> messageHandler, FP<void, Result*> resultHandler = None); int unsubscribe(char* topicFilter, FP<void, Result*> resultHandler = None); int disconnect(int timeout, FP<void, Result*> resultHandler = None); private: void cycle(); int decodePacket(int* value, int timeout); int readPacket(char* buf, int buflen, int timeout = -1); int sendPacket(int length); IPStack* ipstack; char* buf; int buflen; }; } #endif