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