mosquitto 0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +21 -0
- data/.travis.yml +29 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +25 -0
- data/LICENSE.md +13 -0
- data/README.md +244 -0
- data/Rakefile +42 -0
- data/TODO.md +19 -0
- data/examples/pub_sub.rb +41 -0
- data/ext/mosquitto/client.c +2163 -0
- data/ext/mosquitto/client.h +145 -0
- data/ext/mosquitto/extconf.rb +31 -0
- data/ext/mosquitto/message.c +168 -0
- data/ext/mosquitto/message.h +16 -0
- data/ext/mosquitto/mosquitto_ext.c +88 -0
- data/ext/mosquitto/mosquitto_ext.h +35 -0
- data/ext/mosquitto/mosquitto_prelude.h +26 -0
- data/ext/mosquitto/rubinius.h +6 -0
- data/ext/mosquitto/ruby18.h +6 -0
- data/ext/mosquitto/ruby19.h +9 -0
- data/ext/mosquitto/ruby2.h +6 -0
- data/lib/mosquitto.rb +11 -0
- data/lib/mosquitto/client.rb +8 -0
- data/lib/mosquitto/logging.rb +32 -0
- data/lib/mosquitto/version.rb +5 -0
- data/mosquitto.gemspec +23 -0
- data/test/helper.rb +59 -0
- data/test/ssl/all-ca.crt +75 -0
- data/test/ssl/client-expired.crt +61 -0
- data/test/ssl/client-revoked.crt +61 -0
- data/test/ssl/client-revoked.csr +12 -0
- data/test/ssl/client-revoked.key +15 -0
- data/test/ssl/client.crt +61 -0
- data/test/ssl/client.csr +12 -0
- data/test/ssl/client.key +15 -0
- data/test/ssl/crl.pem +10 -0
- data/test/ssl/demoCA/crlnumber +1 -0
- data/test/ssl/demoCA/index.txt +1 -0
- data/test/ssl/demoCA/index.txt.attr +1 -0
- data/test/ssl/demoCA/serial +1 -0
- data/test/ssl/gen.sh +70 -0
- data/test/ssl/mosquitto.org.crt +18 -0
- data/test/ssl/openssl.cnf +406 -0
- data/test/ssl/readme.txt +2 -0
- data/test/ssl/rootCA/crlnumber +1 -0
- data/test/ssl/rootCA/index.txt +2 -0
- data/test/ssl/rootCA/index.txt.attr +1 -0
- data/test/ssl/rootCA/serial +1 -0
- data/test/ssl/server-expired.crt +0 -0
- data/test/ssl/server.crt +60 -0
- data/test/ssl/server.csr +12 -0
- data/test/ssl/server.key +15 -0
- data/test/ssl/signingCA/crlnumber +1 -0
- data/test/ssl/signingCA/index.txt +4 -0
- data/test/ssl/signingCA/index.txt.attr +1 -0
- data/test/ssl/signingCA/serial +1 -0
- data/test/ssl/test-alt-ca.crt +58 -0
- data/test/ssl/test-alt-ca.key +15 -0
- data/test/ssl/test-bad-root-ca.crt +17 -0
- data/test/ssl/test-bad-root-ca.key +15 -0
- data/test/ssl/test-ca.srl +1 -0
- data/test/ssl/test-fake-root-ca.crt +17 -0
- data/test/ssl/test-fake-root-ca.key +15 -0
- data/test/ssl/test-root-ca.crt +17 -0
- data/test/ssl/test-root-ca.key +15 -0
- data/test/ssl/test-signing-ca.crt +58 -0
- data/test/ssl/test-signing-ca.key +15 -0
- data/test/test_callbacks.rb +93 -0
- data/test/test_client.rb +141 -0
- data/test/test_custom_logger.rb +30 -0
- data/test/test_integration.rb +572 -0
- data/test/test_loops.rb +56 -0
- data/test/test_mosquitto.rb +28 -0
- data/test/test_pub_sub.rb +51 -0
- data/test/test_threads.rb +69 -0
- data/test/test_tls.rb +67 -0
- metadata +203 -0
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            #ifndef MOSQUITTO_EXT_H
         | 
| 2 | 
            +
            #define MOSQUITTO_EXT_H
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            #include <mosquitto.h>
         | 
| 5 | 
            +
            #include <pthread.h>
         | 
| 6 | 
            +
            #include "ruby.h"
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            #if defined(__GNUC__) && (__GNUC__ >= 3)
         | 
| 9 | 
            +
            #define MOSQ_UNUSED __attribute__ ((unused))
         | 
| 10 | 
            +
            #define MOSQ_NOINLINE __attribute__ ((noinline))
         | 
| 11 | 
            +
            #else
         | 
| 12 | 
            +
            #define MOSQ_UNUSED
         | 
| 13 | 
            +
            #define MOSQ_NOINLINE
         | 
| 14 | 
            +
            #endif
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            #include "mosquitto_prelude.h"
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            #include <ruby/encoding.h>
         | 
| 19 | 
            +
            #include <ruby/io.h>
         | 
| 20 | 
            +
            extern rb_encoding *binary_encoding;
         | 
| 21 | 
            +
            #define MosquittoEncode(str) rb_enc_associate(str, binary_encoding)
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            #define MosquittoError(desc) rb_raise(rb_eMosquittoError, desc);
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            extern VALUE rb_mMosquitto;
         | 
| 26 | 
            +
            extern VALUE rb_eMosquittoError;
         | 
| 27 | 
            +
            extern VALUE rb_cMosquittoClient;
         | 
| 28 | 
            +
            extern VALUE rb_cMosquittoMessage;
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            extern VALUE intern_call;
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            #include "client.h"
         | 
| 33 | 
            +
            #include "message.h"
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            #endif
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            #ifndef MOSQUITTO_PRELUDE_H
         | 
| 2 | 
            +
            #define MOSQUITTO_PRELUDE_H
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            #ifndef RFLOAT_VALUE
         | 
| 5 | 
            +
            #define RFLOAT_VALUE(v) (RFLOAT(v)->value)
         | 
| 6 | 
            +
            #endif
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            #if LIBMOSQUITTO_VERSION_NUMBER != 1002003
         | 
| 9 | 
            +
            #error libmosquitto version 1.2.3 required
         | 
| 10 | 
            +
            #endif
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            #ifdef RUBINIUS
         | 
| 13 | 
            +
            #include "rubinius.h"
         | 
| 14 | 
            +
            #else
         | 
| 15 | 
            +
            #ifdef HAVE_RB_THREAD_BLOCKING_REGION
         | 
| 16 | 
            +
            #include "ruby19.h"
         | 
| 17 | 
            +
            #else
         | 
| 18 | 
            +
            #ifdef HAVE_RB_THREAD_CALL_WITHOUT_GVL
         | 
| 19 | 
            +
            #include "ruby2.h"
         | 
| 20 | 
            +
            #else
         | 
| 21 | 
            +
            #include "ruby18.h"
         | 
| 22 | 
            +
            #endif
         | 
| 23 | 
            +
            #endif
         | 
| 24 | 
            +
            #endif
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            #endif
         | 
    
        data/lib/mosquitto.rb
    ADDED
    
    
| @@ -0,0 +1,32 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Mosquitto::Logging
         | 
| 4 | 
            +
              LOG_LEVELS = {
         | 
| 5 | 
            +
                Mosquitto::LOG_ERR => Logger::FATAL,
         | 
| 6 | 
            +
                Mosquitto::LOG_ERR => Logger::ERROR,
         | 
| 7 | 
            +
                Mosquitto::LOG_WARNING => Logger::WARN,
         | 
| 8 | 
            +
                Mosquitto::LOG_INFO => Logger::INFO,
         | 
| 9 | 
            +
                Mosquitto::LOG_DEBUG => Logger::DEBUG
         | 
| 10 | 
            +
              }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              # Pipes libmosquitto log messages to a Ruby logger instance.
         | 
| 13 | 
            +
              #
         | 
| 14 | 
            +
              # @param logger [String] a Ruby logger instance. Compatible with SyslogLogger and other
         | 
| 15 | 
            +
              #                        implementations as well.
         | 
| 16 | 
            +
              # @raise [Argument] on invalid input params
         | 
| 17 | 
            +
              # @example
         | 
| 18 | 
            +
              #   client.logger = Logger.new(STDOUT)
         | 
| 19 | 
            +
              #
         | 
| 20 | 
            +
              def logger=(obj)
         | 
| 21 | 
            +
                unless obj.respond_to?(:add) and obj.method(:add).arity != 3
         | 
| 22 | 
            +
                  raise ArgumentError, "invalid Logger instance #{obj.inspect}"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                @logger = obj
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                on_log do |level, message|
         | 
| 28 | 
            +
                  severity = LOG_LEVELS[level] || Logger::UNKNOWN
         | 
| 29 | 
            +
                  @logger.add(severity, message.to_s, "MQTT")
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
              end
         | 
| 32 | 
            +
            end
         | 
    
        data/mosquitto.gemspec
    ADDED
    
    | @@ -0,0 +1,23 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require File.expand_path('../lib/mosquitto/version', __FILE__)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Gem::Specification.new do |s|
         | 
| 6 | 
            +
              s.name = "mosquitto"
         | 
| 7 | 
            +
              s.version = Mosquitto::VERSION
         | 
| 8 | 
            +
              s.summary = "mosquitto - a high perf MQTT 3.1 client"
         | 
| 9 | 
            +
              s.description = "Ruby binding against libmosquitto (http://mosquitto.org/) - a high performance MQTT protocol (http://mqtt.org) client"
         | 
| 10 | 
            +
              s.authors = ["Lourens Naudé", "Bear Metal OÜ"]
         | 
| 11 | 
            +
              s.email = ["lourens@methodmissing.com", "info@bearmetal.eu"]
         | 
| 12 | 
            +
              s.homepage = "http://github.com/bear-metal/mosquitto"
         | 
| 13 | 
            +
              s.date = Time.now.utc.strftime('%Y-%m-%d')
         | 
| 14 | 
            +
              s.platform = Gem::Platform::RUBY
         | 
| 15 | 
            +
              s.extensions = "ext/mosquitto/extconf.rb"
         | 
| 16 | 
            +
              s.has_rdoc = true
         | 
| 17 | 
            +
              s.files = `git ls-files`.split("\n")
         | 
| 18 | 
            +
              s.test_files = `git ls-files test`.split("\n")
         | 
| 19 | 
            +
              s.rdoc_options = ["--charset=UTF-8"]
         | 
| 20 | 
            +
              s.require_paths = ["lib"]
         | 
| 21 | 
            +
              s.add_development_dependency('rake-compiler', '~> 0.9.2')
         | 
| 22 | 
            +
              s.add_development_dependency('yard')
         | 
| 23 | 
            +
            end
         | 
    
        data/test/helper.rb
    ADDED
    
    | @@ -0,0 +1,59 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'test/unit'
         | 
| 4 | 
            +
            require 'mosquitto'
         | 
| 5 | 
            +
            require 'stringio'
         | 
| 6 | 
            +
            require 'thread'
         | 
| 7 | 
            +
            require 'io/wait'
         | 
| 8 | 
            +
            require 'timeout'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            Thread.abort_on_exception = true
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            class Mosquitto::Client
         | 
| 13 | 
            +
            if RUBY_VERSION.split(".").first == '2'
         | 
| 14 | 
            +
              def wait_readable(timeout = 15)
         | 
| 15 | 
            +
                IO.for_fd(socket).wait_readable(timeout)
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
            else
         | 
| 18 | 
            +
              def wait_readable(timeout = 15)
         | 
| 19 | 
            +
                IO.for_fd(socket).wait(timeout)
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            class MosquittoTestCase < Test::Unit::TestCase
         | 
| 25 | 
            +
              TEST_HOST = "test.mosquitto.org"
         | 
| 26 | 
            +
              TEST_PORT = 1883
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              TLS_TEST_HOST = "test.mosquitto.org"
         | 
| 29 | 
            +
              TLS_TEST_PORT = 8883
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              undef_method :default_test if method_defined? :default_test
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def wait(&condition)
         | 
| 34 | 
            +
                Timeout.timeout(5) do
         | 
| 35 | 
            +
                  loop do
         | 
| 36 | 
            +
                    sleep(0.2)
         | 
| 37 | 
            +
                    break if condition.call
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              def ssl_path
         | 
| 43 | 
            +
                File.expand_path("../ssl", __FILE__)
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              def ssl_object(file)
         | 
| 47 | 
            +
                File.expand_path("../ssl/#{file}", __FILE__)
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              if ENV['STRESS_GC'] == '1'
         | 
| 51 | 
            +
                def setup
         | 
| 52 | 
            +
                  GC.stress = true
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                def teardown
         | 
| 56 | 
            +
                  GC.stress = false
         | 
| 57 | 
            +
                end
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
            end
         | 
    
        data/test/ssl/all-ca.crt
    ADDED
    
    | @@ -0,0 +1,75 @@ | |
| 1 | 
            +
            Certificate:
         | 
| 2 | 
            +
                Data:
         | 
| 3 | 
            +
                    Version: 3 (0x2)
         | 
| 4 | 
            +
                    Serial Number: 1 (0x1)
         | 
| 5 | 
            +
                Signature Algorithm: sha1WithRSAEncryption
         | 
| 6 | 
            +
                    Issuer: C=GB, ST=Derbyshire, L=Derby, O=Mosquitto Project, OU=Testing, CN=Root CA
         | 
| 7 | 
            +
                    Validity
         | 
| 8 | 
            +
                        Not Before: Aug 30 22:03:18 2013 GMT
         | 
| 9 | 
            +
                        Not After : Aug 29 22:03:18 2018 GMT
         | 
| 10 | 
            +
                    Subject: C=GB, ST=Derbyshire, O=Mosquitto Project, OU=Testing, CN=Signing CA
         | 
| 11 | 
            +
                    Subject Public Key Info:
         | 
| 12 | 
            +
                        Public Key Algorithm: rsaEncryption
         | 
| 13 | 
            +
                            Public-Key: (1024 bit)
         | 
| 14 | 
            +
                            Modulus:
         | 
| 15 | 
            +
                                00:a4:b5:b9:31:d8:b4:d6:de:49:c0:cc:15:3f:b8:
         | 
| 16 | 
            +
                                50:8b:be:4a:f4:d3:94:a9:dd:53:2a:e9:df:aa:0d:
         | 
| 17 | 
            +
                                3c:08:7b:a7:51:6d:b9:44:98:b7:8d:03:ab:67:9e:
         | 
| 18 | 
            +
                                e1:c4:23:4d:33:8d:0a:90:9f:c6:de:82:14:4c:f6:
         | 
| 19 | 
            +
                                75:5d:a4:e1:a3:ea:fc:9b:79:dd:cb:36:20:87:a3:
         | 
| 20 | 
            +
                                9d:eb:e6:5b:0c:53:34:73:cb:dd:a8:e4:0e:7f:f0:
         | 
| 21 | 
            +
                                5f:8a:3c:d8:8f:01:ff:66:31:16:41:1b:e3:7a:61:
         | 
| 22 | 
            +
                                2c:3d:44:a5:a9:dd:1d:42:e5:5a:a1:df:29:35:dc:
         | 
| 23 | 
            +
                                91:5e:9d:82:60:0d:7a:08:db
         | 
| 24 | 
            +
                            Exponent: 65537 (0x10001)
         | 
| 25 | 
            +
                    X509v3 extensions:
         | 
| 26 | 
            +
                        X509v3 Subject Key Identifier: 
         | 
| 27 | 
            +
                            40:43:50:14:D1:63:7E:0B:7C:97:14:20:63:E5:8A:95:96:9F:D4:AB
         | 
| 28 | 
            +
                        X509v3 Authority Key Identifier: 
         | 
| 29 | 
            +
                            keyid:28:8D:BF:F8:DE:D1:F5:BB:26:37:A4:4D:27:FD:37:91:EC:6B:0C:DD
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                        X509v3 Basic Constraints: 
         | 
| 32 | 
            +
                            CA:TRUE
         | 
| 33 | 
            +
                Signature Algorithm: sha1WithRSAEncryption
         | 
| 34 | 
            +
                     8a:b1:49:b4:53:eb:bb:9d:5e:20:f4:d7:8d:b8:24:a1:28:95:
         | 
| 35 | 
            +
                     56:72:03:ed:15:ef:f0:ff:65:b5:6e:34:cf:27:83:7b:57:40:
         | 
| 36 | 
            +
                     a7:93:61:f0:93:ff:02:b4:74:e0:43:dc:65:0c:e8:a6:20:f9:
         | 
| 37 | 
            +
                     8c:88:82:8f:0e:8d:33:4d:ba:bb:28:ff:29:5f:a8:96:60:31:
         | 
| 38 | 
            +
                     f5:13:15:19:60:a4:00:0e:fc:a7:79:b6:10:95:0b:7b:88:75:
         | 
| 39 | 
            +
                     03:ec:7d:94:63:9e:67:2e:2e:9c:fe:79:89:61:93:75:52:f2:
         | 
| 40 | 
            +
                     36:48:a6:2d:c0:b2:a7:36:c2:36:50:53:b3:cd:e7:07:1d:e5:
         | 
| 41 | 
            +
                     6a:1d
         | 
| 42 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 43 | 
            +
            MIICnTCCAgagAwIBAgIBATANBgkqhkiG9w0BAQUFADByMQswCQYDVQQGEwJHQjET
         | 
| 44 | 
            +
            MBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkxGjAYBgNVBAoMEU1v
         | 
| 45 | 
            +
            c3F1aXR0byBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAwDgYDVQQDDAdSb290
         | 
| 46 | 
            +
            IENBMB4XDTEzMDgzMDIyMDMxOFoXDTE4MDgyOTIyMDMxOFowZTELMAkGA1UEBhMC
         | 
| 47 | 
            +
            R0IxEzARBgNVBAgMCkRlcmJ5c2hpcmUxGjAYBgNVBAoMEU1vc3F1aXR0byBQcm9q
         | 
| 48 | 
            +
            ZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRMwEQYDVQQDDApTaWduaW5nIENBMIGfMA0G
         | 
| 49 | 
            +
            CSqGSIb3DQEBAQUAA4GNADCBiQKBgQCktbkx2LTW3knAzBU/uFCLvkr005Sp3VMq
         | 
| 50 | 
            +
            6d+qDTwIe6dRbblEmLeNA6tnnuHEI00zjQqQn8beghRM9nVdpOGj6vybed3LNiCH
         | 
| 51 | 
            +
            o53r5lsMUzRzy92o5A5/8F+KPNiPAf9mMRZBG+N6YSw9RKWp3R1C5Vqh3yk13JFe
         | 
| 52 | 
            +
            nYJgDXoI2wIDAQABo1AwTjAdBgNVHQ4EFgQUQENQFNFjfgt8lxQgY+WKlZaf1Ksw
         | 
| 53 | 
            +
            HwYDVR0jBBgwFoAUKI2/+N7R9bsmN6RNJ/03kexrDN0wDAYDVR0TBAUwAwEB/zAN
         | 
| 54 | 
            +
            BgkqhkiG9w0BAQUFAAOBgQCKsUm0U+u7nV4g9NeNuCShKJVWcgPtFe/w/2W1bjTP
         | 
| 55 | 
            +
            J4N7V0Cnk2Hwk/8CtHTgQ9xlDOimIPmMiIKPDo0zTbq7KP8pX6iWYDH1ExUZYKQA
         | 
| 56 | 
            +
            DvynebYQlQt7iHUD7H2UY55nLi6c/nmJYZN1UvI2SKYtwLKnNsI2UFOzzecHHeVq
         | 
| 57 | 
            +
            HQ==
         | 
| 58 | 
            +
            -----END CERTIFICATE-----
         | 
| 59 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 60 | 
            +
            MIICsjCCAhugAwIBAgIJAPTHt3psLAUTMA0GCSqGSIb3DQEBBQUAMHIxCzAJBgNV
         | 
| 61 | 
            +
            BAYTAkdCMRMwEQYDVQQIDApEZXJieXNoaXJlMQ4wDAYDVQQHDAVEZXJieTEaMBgG
         | 
| 62 | 
            +
            A1UECgwRTW9zcXVpdHRvIFByb2plY3QxEDAOBgNVBAsMB1Rlc3RpbmcxEDAOBgNV
         | 
| 63 | 
            +
            BAMMB1Jvb3QgQ0EwHhcNMTMwODMwMjIwMzE2WhcNMjMwODI4MjIwMzE2WjByMQsw
         | 
| 64 | 
            +
            CQYDVQQGEwJHQjETMBEGA1UECAwKRGVyYnlzaGlyZTEOMAwGA1UEBwwFRGVyYnkx
         | 
| 65 | 
            +
            GjAYBgNVBAoMEU1vc3F1aXR0byBQcm9qZWN0MRAwDgYDVQQLDAdUZXN0aW5nMRAw
         | 
| 66 | 
            +
            DgYDVQQDDAdSb290IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDB3KGu
         | 
| 67 | 
            +
            pkiSYbDAaH0ewiCb44CLsAdV5PdYgZHH0jlH8oXkNH0MU3qs7Se2UWrnPQb1VbdI
         | 
| 68 | 
            +
            K2DpSTk+3XuWO0BOqQ+/JuRFN/omwrucyKcRNm4MQP1aY2Tm04zsP0Muy4aSyMIk
         | 
| 69 | 
            +
            F6jxQzAmIgj8VgkQ/y/knS5tbQ2kkoWKRn1RCQIDAQABo1AwTjAdBgNVHQ4EFgQU
         | 
| 70 | 
            +
            KI2/+N7R9bsmN6RNJ/03kexrDN0wHwYDVR0jBBgwFoAUKI2/+N7R9bsmN6RNJ/03
         | 
| 71 | 
            +
            kexrDN0wDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQCn2WxbxDd5ar2U
         | 
| 72 | 
            +
            UvttJW4I+/V1h3iAQCXVDAegOGzsYp3cfIdd2oZY++Q9FhzHh8nP18D+CeC9MMu2
         | 
| 73 | 
            +
            H2iLULUV08cGSaDLlpo1eq2oJc5ygLOEt/XK7/aIMRwrlP/CoSrI2GPkeA8rka96
         | 
| 74 | 
            +
            G0WtyGRkzqBKHpt6CnseA2evP5NVcQ==
         | 
| 75 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            Certificate:
         | 
| 2 | 
            +
                Data:
         | 
| 3 | 
            +
                    Version: 3 (0x2)
         | 
| 4 | 
            +
                    Serial Number: 3 (0x3)
         | 
| 5 | 
            +
                Signature Algorithm: sha1WithRSAEncryption
         | 
| 6 | 
            +
                    Issuer: C=GB, ST=Derbyshire, O=Mosquitto Project, OU=Testing, CN=Signing CA
         | 
| 7 | 
            +
                    Validity
         | 
| 8 | 
            +
                        Not Before: Aug 20 00:00:00 2012 GMT
         | 
| 9 | 
            +
                        Not After : Aug 21 00:00:00 2012 GMT
         | 
| 10 | 
            +
                    Subject: C=GB, ST=Nottinghamshire, L=Nottingham, O=Server, OU=Production, CN=test client expired
         | 
| 11 | 
            +
                    Subject Public Key Info:
         | 
| 12 | 
            +
                        Public Key Algorithm: rsaEncryption
         | 
| 13 | 
            +
                            Public-Key: (1024 bit)
         | 
| 14 | 
            +
                            Modulus:
         | 
| 15 | 
            +
                                00:9a:f0:be:71:57:51:38:4e:1a:de:35:1d:3c:37:
         | 
| 16 | 
            +
                                66:6a:d6:5a:77:17:7d:f9:66:55:2f:c5:b8:17:04:
         | 
| 17 | 
            +
                                3c:59:e6:8f:aa:ae:16:b9:c1:64:a1:a0:3b:ca:0c:
         | 
| 18 | 
            +
                                ed:35:e9:2a:85:e9:b6:36:65:d6:ae:62:71:d1:89:
         | 
| 19 | 
            +
                                14:e6:3a:18:c1:0b:28:c8:77:c8:26:e2:fc:f9:51:
         | 
| 20 | 
            +
                                76:6e:21:70:42:28:4e:32:80:9c:5e:a6:58:26:b2:
         | 
| 21 | 
            +
                                6c:40:b9:af:97:23:c1:fe:4b:c1:7f:b6:05:d2:8e:
         | 
| 22 | 
            +
                                f5:90:34:cc:0a:28:ed:31:d7:71:5b:dc:6d:2f:ff:
         | 
| 23 | 
            +
                                43:6b:78:1a:c5:6f:42:03:1f
         | 
| 24 | 
            +
                            Exponent: 65537 (0x10001)
         | 
| 25 | 
            +
                    X509v3 extensions:
         | 
| 26 | 
            +
                        X509v3 Basic Constraints: 
         | 
| 27 | 
            +
                            CA:FALSE
         | 
| 28 | 
            +
                        Netscape Comment: 
         | 
| 29 | 
            +
                            OpenSSL Generated Certificate
         | 
| 30 | 
            +
                        X509v3 Subject Key Identifier: 
         | 
| 31 | 
            +
                            CC:E1:DD:22:B5:A1:24:98:8F:47:1E:FF:4F:AE:88:7E:E5:40:56:DB
         | 
| 32 | 
            +
                        X509v3 Authority Key Identifier: 
         | 
| 33 | 
            +
                            keyid:40:43:50:14:D1:63:7E:0B:7C:97:14:20:63:E5:8A:95:96:9F:D4:AB
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                Signature Algorithm: sha1WithRSAEncryption
         | 
| 36 | 
            +
                     05:13:6e:9f:27:8b:1e:7b:3c:83:d4:be:d7:d9:3d:95:85:3e:
         | 
| 37 | 
            +
                     3f:d2:56:05:01:fa:3c:1f:4d:f5:b1:39:2e:af:cb:fe:39:4d:
         | 
| 38 | 
            +
                     3b:11:54:68:3e:c1:a9:e2:8b:6f:40:78:65:f5:d3:ec:04:de:
         | 
| 39 | 
            +
                     53:a9:c1:44:64:24:46:69:66:5e:33:41:02:d1:b5:d6:77:de:
         | 
| 40 | 
            +
                     8f:cb:cd:46:97:4a:d2:8c:af:b4:7d:fe:72:48:38:40:d9:75:
         | 
| 41 | 
            +
                     93:2c:a1:4c:70:e3:7d:cb:92:30:93:96:0e:92:9f:05:21:6e:
         | 
| 42 | 
            +
                     39:2d:cb:ec:83:fc:a4:34:ee:d3:ef:89:a7:11:ff:48:fa:1b:
         | 
| 43 | 
            +
                     12:e5
         | 
| 44 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 45 | 
            +
            MIIC1zCCAkCgAwIBAgIBAzANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJHQjET
         | 
| 46 | 
            +
            MBEGA1UECAwKRGVyYnlzaGlyZTEaMBgGA1UECgwRTW9zcXVpdHRvIFByb2plY3Qx
         | 
| 47 | 
            +
            EDAOBgNVBAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwHhcNMTIwODIw
         | 
| 48 | 
            +
            MDAwMDAwWhcNMTIwODIxMDAwMDAwWjCBgDELMAkGA1UEBhMCR0IxGDAWBgNVBAgM
         | 
| 49 | 
            +
            D05vdHRpbmdoYW1zaGlyZTETMBEGA1UEBwwKTm90dGluZ2hhbTEPMA0GA1UECgwG
         | 
| 50 | 
            +
            U2VydmVyMRMwEQYDVQQLDApQcm9kdWN0aW9uMRwwGgYDVQQDDBN0ZXN0IGNsaWVu
         | 
| 51 | 
            +
            dCBleHBpcmVkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCa8L5xV1E4Thre
         | 
| 52 | 
            +
            NR08N2Zq1lp3F335ZlUvxbgXBDxZ5o+qrha5wWShoDvKDO016SqF6bY2ZdauYnHR
         | 
| 53 | 
            +
            iRTmOhjBCyjId8gm4vz5UXZuIXBCKE4ygJxeplgmsmxAua+XI8H+S8F/tgXSjvWQ
         | 
| 54 | 
            +
            NMwKKO0x13Fb3G0v/0NreBrFb0IDHwIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCG
         | 
| 55 | 
            +
            SAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4E
         | 
| 56 | 
            +
            FgQUzOHdIrWhJJiPRx7/T66IfuVAVtswHwYDVR0jBBgwFoAUQENQFNFjfgt8lxQg
         | 
| 57 | 
            +
            Y+WKlZaf1KswDQYJKoZIhvcNAQEFBQADgYEABRNunyeLHns8g9S+19k9lYU+P9JW
         | 
| 58 | 
            +
            BQH6PB9N9bE5Lq/L/jlNOxFUaD7BqeKLb0B4ZfXT7ATeU6nBRGQkRmlmXjNBAtG1
         | 
| 59 | 
            +
            1nfej8vNRpdK0oyvtH3+ckg4QNl1kyyhTHDjfcuSMJOWDpKfBSFuOS3L7IP8pDTu
         | 
| 60 | 
            +
            0++JpxH/SPobEuU=
         | 
| 61 | 
            +
            -----END CERTIFICATE-----
         | 
| @@ -0,0 +1,61 @@ | |
| 1 | 
            +
            Certificate:
         | 
| 2 | 
            +
                Data:
         | 
| 3 | 
            +
                    Version: 3 (0x2)
         | 
| 4 | 
            +
                    Serial Number: 4 (0x4)
         | 
| 5 | 
            +
                Signature Algorithm: sha1WithRSAEncryption
         | 
| 6 | 
            +
                    Issuer: C=GB, ST=Derbyshire, O=Mosquitto Project, OU=Testing, CN=Signing CA
         | 
| 7 | 
            +
                    Validity
         | 
| 8 | 
            +
                        Not Before: Aug 30 22:03:34 2013 GMT
         | 
| 9 | 
            +
                        Not After : Aug 29 22:03:34 2018 GMT
         | 
| 10 | 
            +
                    Subject: C=GB, ST=Nottinghamshire, L=Nottingham, O=Server, OU=Production, CN=test client revoked
         | 
| 11 | 
            +
                    Subject Public Key Info:
         | 
| 12 | 
            +
                        Public Key Algorithm: rsaEncryption
         | 
| 13 | 
            +
                            Public-Key: (1024 bit)
         | 
| 14 | 
            +
                            Modulus:
         | 
| 15 | 
            +
                                00:ce:19:b3:0b:d1:87:97:06:48:44:84:77:65:bc:
         | 
| 16 | 
            +
                                a7:25:fd:ec:49:16:0b:73:c9:2f:7a:9c:14:16:af:
         | 
| 17 | 
            +
                                cd:d3:3e:9a:2a:18:1c:90:f1:1a:5b:6d:31:d5:fd:
         | 
| 18 | 
            +
                                6c:04:2b:87:e2:fe:2b:a8:01:ad:00:64:50:c7:ec:
         | 
| 19 | 
            +
                                d1:4f:ec:76:7f:4c:a3:f4:98:82:bf:53:af:06:e3:
         | 
| 20 | 
            +
                                26:87:3e:44:e3:6b:bb:b8:9c:9d:ef:a2:fe:59:3e:
         | 
| 21 | 
            +
                                bd:9a:31:c0:3c:77:a9:69:4c:3a:1a:aa:c4:3f:68:
         | 
| 22 | 
            +
                                4c:7f:e2:05:ea:38:98:d6:be:93:27:26:fc:ac:a3:
         | 
| 23 | 
            +
                                d0:b4:9c:65:a9:10:e6:5d:b7
         | 
| 24 | 
            +
                            Exponent: 65537 (0x10001)
         | 
| 25 | 
            +
                    X509v3 extensions:
         | 
| 26 | 
            +
                        X509v3 Basic Constraints: 
         | 
| 27 | 
            +
                            CA:FALSE
         | 
| 28 | 
            +
                        Netscape Comment: 
         | 
| 29 | 
            +
                            OpenSSL Generated Certificate
         | 
| 30 | 
            +
                        X509v3 Subject Key Identifier: 
         | 
| 31 | 
            +
                            96:E5:2B:FD:A2:61:F5:32:36:92:3F:CC:BA:28:A7:E2:4C:6C:A5:91
         | 
| 32 | 
            +
                        X509v3 Authority Key Identifier: 
         | 
| 33 | 
            +
                            keyid:40:43:50:14:D1:63:7E:0B:7C:97:14:20:63:E5:8A:95:96:9F:D4:AB
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                Signature Algorithm: sha1WithRSAEncryption
         | 
| 36 | 
            +
                     22:82:2d:16:57:95:84:10:a5:5b:5b:0f:20:1a:5b:db:59:f5:
         | 
| 37 | 
            +
                     5c:d8:42:24:72:42:80:a8:30:77:82:b2:9c:ee:3e:61:3e:af:
         | 
| 38 | 
            +
                     d0:4d:75:32:ee:cc:04:fc:d6:96:57:46:35:34:d6:7e:42:51:
         | 
| 39 | 
            +
                     41:fa:a3:2a:a5:02:3a:50:39:a6:5c:16:a3:8f:dc:2b:45:93:
         | 
| 40 | 
            +
                     d6:a0:fd:cf:5c:db:fc:5d:ae:f7:5c:e1:2e:36:de:ee:82:38:
         | 
| 41 | 
            +
                     de:db:76:af:fa:04:f2:a6:bc:14:56:2a:66:b9:9c:dc:88:41:
         | 
| 42 | 
            +
                     2d:e7:4e:2c:4d:a9:ae:22:ba:7c:29:65:15:48:85:e4:45:c5:
         | 
| 43 | 
            +
                     32:21
         | 
| 44 | 
            +
            -----BEGIN CERTIFICATE-----
         | 
| 45 | 
            +
            MIIC1zCCAkCgAwIBAgIBBDANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJHQjET
         | 
| 46 | 
            +
            MBEGA1UECAwKRGVyYnlzaGlyZTEaMBgGA1UECgwRTW9zcXVpdHRvIFByb2plY3Qx
         | 
| 47 | 
            +
            EDAOBgNVBAsMB1Rlc3RpbmcxEzARBgNVBAMMClNpZ25pbmcgQ0EwHhcNMTMwODMw
         | 
| 48 | 
            +
            MjIwMzM0WhcNMTgwODI5MjIwMzM0WjCBgDELMAkGA1UEBhMCR0IxGDAWBgNVBAgM
         | 
| 49 | 
            +
            D05vdHRpbmdoYW1zaGlyZTETMBEGA1UEBwwKTm90dGluZ2hhbTEPMA0GA1UECgwG
         | 
| 50 | 
            +
            U2VydmVyMRMwEQYDVQQLDApQcm9kdWN0aW9uMRwwGgYDVQQDDBN0ZXN0IGNsaWVu
         | 
| 51 | 
            +
            dCByZXZva2VkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOGbML0YeXBkhE
         | 
| 52 | 
            +
            hHdlvKcl/exJFgtzyS96nBQWr83TPpoqGByQ8RpbbTHV/WwEK4fi/iuoAa0AZFDH
         | 
| 53 | 
            +
            7NFP7HZ/TKP0mIK/U68G4yaHPkTja7u4nJ3vov5ZPr2aMcA8d6lpTDoaqsQ/aEx/
         | 
| 54 | 
            +
            4gXqOJjWvpMnJvyso9C0nGWpEOZdtwIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCG
         | 
| 55 | 
            +
            SAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4E
         | 
| 56 | 
            +
            FgQUluUr/aJh9TI2kj/Muiin4kxspZEwHwYDVR0jBBgwFoAUQENQFNFjfgt8lxQg
         | 
| 57 | 
            +
            Y+WKlZaf1KswDQYJKoZIhvcNAQEFBQADgYEAIoItFleVhBClW1sPIBpb21n1XNhC
         | 
| 58 | 
            +
            JHJCgKgwd4KynO4+YT6v0E11Mu7MBPzWlldGNTTWfkJRQfqjKqUCOlA5plwWo4/c
         | 
| 59 | 
            +
            K0WT1qD9z1zb/F2u91zhLjbe7oI43tt2r/oE8qa8FFYqZrmc3IhBLedOLE2priK6
         | 
| 60 | 
            +
            fCllFUiF5EXFMiE=
         | 
| 61 | 
            +
            -----END CERTIFICATE-----
         |