mosquitto 0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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-----
|