summaryrefslogtreecommitdiffstats
path: root/certs/sample
diff options
context:
space:
mode:
authorJose Bollo <jose.bollo@iot.bzh>2019-09-11 16:37:24 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2020-02-28 12:19:25 +0100
commitc5d922d7085c980edad3764687e2488a1b0907d0 (patch)
treeaf1e8f833e9d0c68538dab9d0974a55293d84477 /certs/sample
parent7ea1070ee471141f58e9e4c03df5c95bbcef907d (diff)
Refactor of sample keys and certificates
Avoid installing any certificate or key. But if requested, install the certificates and the keys that are given as example. Bug-AGL: SPEC-2840 Change-Id: I26aebd63fad842bb9746c3a004956d9dbafc091f Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'certs/sample')
-rw-r--r--certs/sample/developer.cert.pem33
-rw-r--r--certs/sample/developer.key.pem52
-rwxr-xr-xcerts/sample/gen-certs.sh78
-rw-r--r--certs/sample/partner.cert.pem33
-rw-r--r--certs/sample/partner.key.pem52
-rw-r--r--certs/sample/platform.cert.pem33
-rw-r--r--certs/sample/platform.key.pem52
-rw-r--r--certs/sample/public.cert.pem33
-rw-r--r--certs/sample/public.key.pem52
-rw-r--r--certs/sample/root.cert.pem33
-rw-r--r--certs/sample/root.key.pem52
11 files changed, 503 insertions, 0 deletions
diff --git a/certs/sample/developer.cert.pem b/certs/sample/developer.cert.pem
new file mode 100644
index 0000000..0268749
--- /dev/null
+++ b/certs/sample/developer.cert.pem
@@ -0,0 +1,33 @@
+-----BEGIN TRUSTED CERTIFICATE-----
+MIIFkjCCA3qgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJGUjER
+MA8GA1UECAwIQnJpdHRhbnkxDzANBgNVBAcMBlZhbm5lczEQMA4GA1UECgwHSW9U
+LmJ6aDEZMBcGA1UEAwwQUm9vdCBjZXJ0aWZpY2F0ZTAeFw0xOTA5MTYwODAyNTRa
+Fw0yOTA5MTYwODAyNTRaMFwxCzAJBgNVBAYTAkZSMREwDwYDVQQIDAhCcml0dGFu
+eTEPMA0GA1UEBwwGVmFubmVzMRAwDgYDVQQKDAdJb1QuYnpoMRcwFQYDVQQDDA5S
+b290IGRldmVsb3BlcjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKxn
+8AkSDYVatbNrMFNvMuUUyvSJn2KBesV4s777mThF+5Pslfs9/9G+3n6pGHpKhczI
+tdy+A7LLUFgJxhcRktzWL9MWrxKuc5FFMoK0LrsK9DsW4+58ty8Mcj4/ofbggn9q
+BMdL+X0GzKZmw/FUzptuHgaOV54OSXdNXpIcN0g9rsNYqU+IUooUIQNOukVLth6Q
+dY9oJqaieaiOnAEDS89sSZ8qZCK0t01qEdwYGry7kmyXMwGxnHGtK9rxA85Vt2i0
+x2qERR7RQYFaOPOZGignpxy5qPIqHy9kTk4O5mUUwAY3Tv+iSATtDT56j9gh4g0y
+Y1ENLCOLk700R0/Bi6Wf6MDbK421+Mqa+ej+Zr9zvUbzxXFIIHuTA7z9MhvdRo/Y
+mFeFvWtqhLFgHBQ1Ow62HPirmiZbuCrl8b2KSpB52UJevh9FtqCtSyb1Pdkz22J4
+i2Vi1m7YszV+GD5f3liDN8ha6ePKxx6hrltZpliyKweCMzvc1aeQoEnCTn90izaY
+7aLmDY6owVG9kv0JyQvv3V6TmzcNbH3lnFcrETPSxU52mb+XrDRHp5BAKjP2CGZG
+WmfIvEjWNV0v7UVR5WrgiDiS6soGvtgyO5ap+KkVds1qGiZrDMPacQwyMqvozdUe
+JdFX5R03TQh2B1Y+fQ3bQRNcEP0gZvEclw1bfTG1AgMBAAGjXTBbMAwGA1UdEwQF
+MAMBAf8wCwYDVR0PBAQDAgKEMB0GA1UdDgQWBBSI2dm3JXrWQEHg3Vhb3S0XlSiD
+8zAfBgNVHSMEGDAWgBS005/0PkDqUH+8bbviL9U6uSjywDANBgkqhkiG9w0BAQsF
+AAOCAgEABgfdzivT2Lw/DeoohzfMDhXlydI14baGFK/Af/X+VCObLOYVcHXpQf3P
+XPd5+CBRzXsb9eEKXrCwhYaACPMllcGIk6hZPe1nZPbuKc7MTNvgi+S7iwd/Xied
+53b9irR2y2XrpUBqxxPSY2gEpojlhZAuAQzRJ1nGy4V5hf0nnMZ4qdgJacIYDyS6
+XUydQ/uvnM+bb9ry2pqwemeCsp2eGErnYBIPaTrJurvxXYD7XIwLla5QrbnYCCM7
+R9HtRNtmKFW4Q3x5lBbs68ppyY8i8WHT07hNA7e3kzH1CNCDkj9RhGpV5AZs27Lz
+FxzTCNd7WEKgsTSWLfKrFqRMKg78x5dMXu43/anoCOkNVBdXpqD5LYkEAbwllXyJ
+kuue/BCZvEPUNhBWeqKlVDw3vxLagfBx3IDX/lFszuFWBZBnA8s6AuKzh4l4e7fN
+6aFUsKeDiyLeoMuOUghPQv3dZ7V+9mzyyU0eqjpWgQcYf1fV+ih4BMiZ3uxWR8R/
+TDALJrlHOL3c6GH8IGL6QsqhmnxWp0q6/sp5evxrl4HGHzcidLkq7fxZ0ArDaY+4
+DgPOkpDkCJ4Qx3nMMgmKngORZ4A/X48kDv1TAYx837ZL/qTCJt/lVdENlIp944+l
+z8FocT+YK0XciJ3oIiPkxWWddxNiCuNsVHQvSwr43W1yUsuF2QgwEAwOUm9vdCBk
+ZXZlbG9wZXI=
+-----END TRUSTED CERTIFICATE-----
diff --git a/certs/sample/developer.key.pem b/certs/sample/developer.key.pem
new file mode 100644
index 0000000..59139eb
--- /dev/null
+++ b/certs/sample/developer.key.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+SJma4hj+ETuczbFDz+jgMA1gLnk32lw=
+-----END PRIVATE KEY-----
diff --git a/certs/sample/gen-certs.sh b/certs/sample/gen-certs.sh
new file mode 100755
index 0000000..f0aa135
--- /dev/null
+++ b/certs/sample/gen-certs.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# Copying and distribution of this file, with or without modification,
+# are permitted in any medium without royalty provided the copyright
+# notice and this notice are preserved. This file is offered as-is,
+# without any warranty.
+
+ORG="/C=FR/ST=Brittany/L=Lorient/O=IoT.bzh"
+
+cat > extensions << EOC
+[root]
+basicConstraints=CA:TRUE
+keyUsage=keyCertSign
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid
+[derivate]
+basicConstraints=CA:TRUE
+keyUsage=keyCertSign,digitalSignature
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid
+EOC
+
+keyof() { echo -n "$1.key.pem"; }
+certof() { echo -n "$1.cert.pem"; }
+
+generate() {
+
+local s="$1" n="$2" cn="$3" sig="$4"
+local key="$(keyof "$n")" cert="$(certof "$n")"
+
+if [ ! -f "$key" ]
+then
+ echo
+ echo "generation of the $n key"
+ openssl genpkey \
+ -algorithm RSA -pkeyopt rsa_keygen_bits:4096 \
+ -outform PEM \
+ -out "$key"
+fi
+
+if [ ! -f "$cert" -o "$key" -nt "$cert" ]
+then
+ echo
+ echo "generation of the $n certificate"
+ openssl req -new \
+ -key "$key" \
+ -subj "$ORG/CN=$cn" |
+ openssl x509 -req \
+ -days 3653 \
+ -sha256 \
+ -extfile extensions \
+ -trustout \
+ $sig \
+ -set_serial $s \
+ -setalias "$cn" \
+ -out "$cert"
+fi
+
+}
+
+genroot() {
+ local s="$1" n="$2" cn="$3"
+ generate "$s" "$n" "$cn" "-signkey $(keyof "$n") -extensions root"
+}
+
+derivate() {
+ local s="$1" n="$2" cn="$3" i="$4"
+ generate "$s" "$n" "$cn" "-CA $(certof "$i") -CAkey $(keyof "$i") -extensions derivate"
+}
+
+
+genroot 1 root "Root certificate"
+derivate 2 developer "Root developer" root
+derivate 3 platform "Root platform" root
+derivate 4 partner "Root partner" root
+derivate 5 public "Root public" root
+
+rm extensions
diff --git a/certs/sample/partner.cert.pem b/certs/sample/partner.cert.pem
new file mode 100644
index 0000000..9a99243
--- /dev/null
+++ b/certs/sample/partner.cert.pem
@@ -0,0 +1,33 @@
+-----BEGIN TRUSTED CERTIFICATE-----
+MIIFkDCCA3igAwIBAgIBBDANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJGUjER
+MA8GA1UECAwIQnJpdHRhbnkxDzANBgNVBAcMBlZhbm5lczEQMA4GA1UECgwHSW9U
+LmJ6aDEZMBcGA1UEAwwQUm9vdCBjZXJ0aWZpY2F0ZTAeFw0xOTA5MTYwODAyNTVa
+Fw0yOTA5MTYwODAyNTVaMFoxCzAJBgNVBAYTAkZSMREwDwYDVQQIDAhCcml0dGFu
+eTEPMA0GA1UEBwwGVmFubmVzMRAwDgYDVQQKDAdJb1QuYnpoMRUwEwYDVQQDDAxS
+b290IHBhcnRuZXIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDvCwKp
+OldrbvDkSsW/UKS6Zyqc059ZAJM0+6S3j+Om2dbrqOlcKgy/6X7fGrmpuU2gtxde
+s1KKhZ5A3rrL8RLOygDV/XO9tVvkZq6nGc1gaQwJh2cbYX6uLhfoRTQhTuOBumJb
+qIppPVTLzNDQdEZdT5VotjJfBmFWwE7LhfCb9Jw/tF1eY7mJ6GMB4k58exxuKzH2
+FThp02Wm6JcfyuaDDz36pkVEj8DarzPkI+fzQYXRk072egg+7Yy8yo5QJWciJtJ+
+8bEn5c84wHZltu37dHtweUvAo+okpjfci2j50mmRs5goMQRdPw7UOMt5pt9NxDze
+tp4koXyS2l5HpItPGum6yKPrlCztZaguX2ab2UNIVNM/SbecWHjXO7R3MyWvrG98
+K0s9HUlT/9q/N2+1F5qcYQcUpW2DNEoTZfyjwkjkmPJX13kvHHrji+ednAlwKfpD
+l6S48pciQu63SMc515fLVL9J2Ivr6GYi6s1QRbr8K2eiqJh4vZSyH7zR0VOhJ2Xd
+KA8fe8Ns6eUwhzMJRNEcLrgi+QmRYEIE7BjmgXVsWhLeCZXty4TDNjGRQSi+fvdW
+LNkvanu9tQEEHwYJEd6dQ88cRuHsELXdeaCGyJAfCqHgD03rYLqxOp2Z5qk5r6jT
+l5+qNDdYAMnhWyix5ygJ7k5oL1R9jcN/KGJQSwIDAQABo10wWzAMBgNVHRMEBTAD
+AQH/MAsGA1UdDwQEAwIChDAdBgNVHQ4EFgQU4cWCoUI+Y5cbe5c6GLhnLBvnrzAw
+HwYDVR0jBBgwFoAUtNOf9D5A6lB/vG274i/VOrko8sAwDQYJKoZIhvcNAQELBQAD
+ggIBAD9VXCplK4FqQG/mlgBqfe3H8OznYJHCBaoeawBwhW4NWMveyleHCUTf4B8X
+aBBTMetzNnCjSObGK930WGkvldBHr0nhTI51a6oN+d/2VWEaNtuQqEYV6m+br0OF
+2soR1wD+h8yy/f+DRWfMjPO+IhjvsNdi3gkB/A9NiLBeAP+M5tKyVU99et15wkLd
+pwhNRwFtPf909OLmnb0Kt21n3Efn+gTVFAHp0UDVbMZXlWpE7t0zds0g8pIyR8Ds
+QP2+OC76wwWUZW9ndG67XS9dF0ph+o8/URiycEh3yqcGRZk7+uTzl3qCib7pUF3M
+vtcKWFJ2ZECO3DBYvNZWWuVPz26i5f8TucTttQ7FVCJEfCqISbPpduntFjT7CfAN
+Nn2qsG5uTIQWRAn3rtou7pc6ygSiW/iv5DkuBa/xu7lCZLxwiRLibn93B5qFaWR3
+nwo1cgM3yrUcAd4xJgted+OcXVF/qcodBXZpJdV8338HelQhrRcstPKSkxBxoyTQ
+E5LWpL8ryX42H91OuPvQy+93vxZ0ZcAQ5WF+0HGygjT6gURSMQrrakD9BGtfe5Rf
+dRQulX1fjeSdz12L9Z+twUkbrv/ywlXpB03BOeK2SjzXZZGCwIByT4rnkWeFwQB/
+9a12gdpY7GnUGXDfUiQa1oYxF6+UmZWIozKkCis+9WPIC0cqMA4MDFJvb3QgcGFy
+dG5lcg==
+-----END TRUSTED CERTIFICATE-----
diff --git a/certs/sample/partner.key.pem b/certs/sample/partner.key.pem
new file mode 100644
index 0000000..b3c79fc
--- /dev/null
+++ b/certs/sample/partner.key.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+8O4rwulTwljYIkcvepGMQCgCjmPDGQ==
+-----END PRIVATE KEY-----
diff --git a/certs/sample/platform.cert.pem b/certs/sample/platform.cert.pem
new file mode 100644
index 0000000..f0847f6
--- /dev/null
+++ b/certs/sample/platform.cert.pem
@@ -0,0 +1,33 @@
+-----BEGIN TRUSTED CERTIFICATE-----
+MIIFkTCCA3mgAwIBAgIBAzANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJGUjER
+MA8GA1UECAwIQnJpdHRhbnkxDzANBgNVBAcMBlZhbm5lczEQMA4GA1UECgwHSW9U
+LmJ6aDEZMBcGA1UEAwwQUm9vdCBjZXJ0aWZpY2F0ZTAeFw0xOTA5MTYwODAyNTRa
+Fw0yOTA5MTYwODAyNTRaMFsxCzAJBgNVBAYTAkZSMREwDwYDVQQIDAhCcml0dGFu
+eTEPMA0GA1UEBwwGVmFubmVzMRAwDgYDVQQKDAdJb1QuYnpoMRYwFAYDVQQDDA1S
+b290IHBsYXRmb3JtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAm/mg
+WIuAeBA17NaKZX21SAfJDLm0Dtxex9mOCCQxhmUFilFG+bONE+iulUTl/2nKlxsO
+Q6XjMh9PiOj626Xko5d6Y+/NUz+iYJszKVP3uJHoqJFb95UTNljGmdgPXFHlfaMD
+S0t1MecCJlSWqu66Yt90YNs45UcIwq7mlMGLG+/ebnE7QIHL9fw9wrVd+eMbL5UJ
+eqqM+BpnuzCGhu7/+53a+B559nfzLK8wmnSjJvBmOaIJEGYQrG5+iysWFf53HeIC
+0TNJwoNrUOWlE/XqmaZ9mtq/Hk562PYNcPHLiC306gedF/+2OY1zI8J7NbeIVrAj
+bjOAqnmlSL0nq4dc29yiC9dIr+2/hOVxLF6a8c3biKN6U7z7lvV87U0ZXAapSvJ5
+5TKh6Uzx1tmki/Z8Th5N4VvFEWH6aMM7wWFWGgCtu4y0EJPUgImHSyx90KigCWIQ
+TBi8SwY7caqURl3RufdC4RHudB4bB6sqVRo+QmIBV7b0Y8rPClVwHNYShc6nbHTa
+v+27wiquoQDnyypdqlB8Y7ao3yeGFeZY1DpopuConZLtlqUzFJcJyu9C6cqodRZB
+rJyYZM00zbekM0auSz6G4PxZcm8Wv3oLWwRnlboSp8eBpyR7mjz0lFkf954c2P8T
+dxC6EZ/FfOyoekmubhBOaAWDUaf8pLCgr34dH7sCAwEAAaNdMFswDAYDVR0TBAUw
+AwEB/zALBgNVHQ8EBAMCAoQwHQYDVR0OBBYEFGTEh6z9lILJrkb7F6Gk4pZVAAOl
+MB8GA1UdIwQYMBaAFLTTn/Q+QOpQf7xtu+Iv1Tq5KPLAMA0GCSqGSIb3DQEBCwUA
+A4ICAQAp5bKzi06LQreHg9noCa2Tvx7yRRDXPhcJWMfEXmFz7tyxqKjXR0Orlqrv
+HFS7EyAMbHwnMOIbVks13dqWMHxDeXXHIYuZUpEBbS7CQWglt47G1YUnBhSTsFtf
+8r2CpXMkdoCbkQf04DS/w0G0G0Jx/1taXCwJyiKewFN/vrChPRsjYQJM4TDnYYpM
+GgaMgOxkyYvMkttO0tdXrUgaL6V2XfhQuonFRMRjeikA0f5yORea5vkU3FJ2e4eo
+ETkD0UyWmiWf7LMseewX4Pit7j11swhzTzTZhRWCzDrEXksjYZuslFy7bc2Epllr
+3WMPq9ywuCMcRcpwc3SKoFjNk+QCgoDdbsHVqkSAJH2RTgA/sZkIgjnr8ho81evs
+He3/dEmdorpFow1CU40zkFTRod5fWEKv5RSzYJzHiXbOZC0kp4WqGIQmM78JU8PR
+FXiTFJAwl0mBwD1/qjk59/9aWawxd+bR4utrfmvBb1TfzlC7Wy4ddxO1bSg/2T/a
+CzP41PVfl5DGXxdbiqWUed+aCrKp+9LVsyOUyvTC5l0zLuGwccsuzwe59YAJzUEu
+pMGP1o6GTr9PbURUP+NGqTsPnOO2sDA7/bnPMbQLzS3bj4JafY6EdQd6g+Qp4Lhp
+g3zmJZwBLlcC3kjvFhIRkPmWfn9R9smEaDJbRgeFtvE+r3rBLjAPDA1Sb290IHBs
+YXRmb3Jt
+-----END TRUSTED CERTIFICATE-----
diff --git a/certs/sample/platform.key.pem b/certs/sample/platform.key.pem
new file mode 100644
index 0000000..ae665c1
--- /dev/null
+++ b/certs/sample/platform.key.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+xKny+RHcaKqOHhd8faazOPThNKqdG44=
+-----END PRIVATE KEY-----
diff --git a/certs/sample/public.cert.pem b/certs/sample/public.cert.pem
new file mode 100644
index 0000000..0bbbef0
--- /dev/null
+++ b/certs/sample/public.cert.pem
@@ -0,0 +1,33 @@
+-----BEGIN TRUSTED CERTIFICATE-----
+MIIFjzCCA3egAwIBAgIBBTANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJGUjER
+MA8GA1UECAwIQnJpdHRhbnkxDzANBgNVBAcMBlZhbm5lczEQMA4GA1UECgwHSW9U
+LmJ6aDEZMBcGA1UEAwwQUm9vdCBjZXJ0aWZpY2F0ZTAeFw0xOTA5MTYwODAyNTZa
+Fw0yOTA5MTYwODAyNTZaMFkxCzAJBgNVBAYTAkZSMREwDwYDVQQIDAhCcml0dGFu
+eTEPMA0GA1UEBwwGVmFubmVzMRAwDgYDVQQKDAdJb1QuYnpoMRQwEgYDVQQDDAtS
+b290IHB1YmxpYzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPhNQOmF
+yU8QHB97Gt8yRjsB3LFk7/WFi7EyVMN2F65ASi4BcinaNGLG+ExW0+qAw8C+hmO6
+6OyXGqnJyYA7dgR+G78a39DLNYIUiNlsCN9SDj9LOgEZnEDIrMNjn03ctjwHxrDn
+Tmwozo4Pdl9GVDwUcLF46+JgOy3mvZMqO4GhUsiKzzC/pJ0DN9ZAZQl16/CwdrzM
+RHvEME60LG5VobjCBmgoLb0NlVDheTl/DZb9xv/fChZUGqzMo86WYtEfh/PmGSNU
+2gBjPSlgLvsqSTzq9msXpRl9yRfK+Y1Mzuo9fv3VzLxsxDT/LvYLUuMOZr+sMcsD
+9PRXUUJobZKrJSYE4RlLSz+Khezu96QkFheuTXqzp0k6NECSvPacJ3ZeChtNOUAP
+4EjUots6yFxWmdCcIhLqIpvyezjsJYPxpkJsopfClvJzeAEVGX8/yeD9GyWUXSzl
+m9dF5cMeZ8PfENjJhJlmyOPCGv1lFM79HinY8Y81EHCYCANfOLIgxFcrDwZsNmno
+VwMNmPuENbJ55ivNuJf7z+Bk1GRckVcQOP7tHPy6/wtYZDpFF4yWK/0RnsGnfx7c
+xnwcJNKpf9zjsPl9anw0btyLVG9AdFYowrA6cHVd23Iw1wohEw9YjQ5Xi2VKPtdC
+eIsff2oJTJwC+qrMltKW1FED/9mTEfdjzp8HAgMBAAGjXTBbMAwGA1UdEwQFMAMB
+Af8wCwYDVR0PBAQDAgKEMB0GA1UdDgQWBBRWAPsXtl3tQsQvm1a5D9ytY98bETAf
+BgNVHSMEGDAWgBS005/0PkDqUH+8bbviL9U6uSjywDANBgkqhkiG9w0BAQsFAAOC
+AgEATY9QnIGJVgKNQUVLjNNnn+ZHUzdPx3A5nGDFXXCmhz4l5RZPY+NU1LJ8OP9o
+TxiWp6mi3slrhl+0kbXjdhO9soZClIvOXyd9UShuCvUsizd1BSC+ltOtbxxCyp8q
+nz+7dEWdBe18OE3MdZGkw6uqhHZoE5Lirvi221aZFQibpJ4UnhYfnNUrsT2bx83w
+X9rIpsVS6fVoMncpvv0bSkrwMwBmsaywt5ETVfnzgc62HWZkrdhTiTwoTDxlMy1m
+1o+bvaPY0ZNY+4cHj6VUP4YZwuzjt2K/6uArM2r8VCNXVQQwwrO8zS/LjENO91K3
+BVgA8A98h2kR6OPz9QLI1Zl0Aer/fjpacjMOHTIINQIQJxhdQeQ0S9N/n2Vk5G87
+Y9RLP0ZnF18V4OIR4GoagxjGtYkLn4qrx26KzExOvBkb0b9khikUfQE7d0xPbwn9
+uc6i91+iRYDUUwnfjOudssgQIcd+GrD4E5Q1tTsnlWqepaPWKwh5hqD73t6EjO5i
+BVnyHJgOC0udV8mB9uxLBSCUTyOrgBNQ3BefZeWGVOJo+7zi1aPF7ei1dVpJ3bud
+PXDJ6NgR+46h4ir6yDnjBKTQYPBJww0cuVqHa+V5dK8tMvcroGjsqcdftL0qeD8f
+ek5xNNcPkvTZ1JfjiiwpmVf/lc9JyUnIZAVH1qm4MsYwgk8wDQwLUm9vdCBwdWJs
+aWM=
+-----END TRUSTED CERTIFICATE-----
diff --git a/certs/sample/public.key.pem b/certs/sample/public.key.pem
new file mode 100644
index 0000000..416da0f
--- /dev/null
+++ b/certs/sample/public.key.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQD4TUDphclPEBwf
+exrfMkY7AdyxZO/1hYuxMlTDdheuQEouAXIp2jRixvhMVtPqgMPAvoZjuujslxqp
+ycmAO3YEfhu/Gt/QyzWCFIjZbAjfUg4/SzoBGZxAyKzDY59N3LY8B8aw505sKM6O
+D3ZfRlQ8FHCxeOviYDst5r2TKjuBoVLIis8wv6SdAzfWQGUJdevwsHa8zER7xDBO
+tCxuVaG4wgZoKC29DZVQ4Xk5fw2W/cb/3woWVBqszKPOlmLRH4fz5hkjVNoAYz0p
+YC77Kkk86vZrF6UZfckXyvmNTM7qPX791cy8bMQ0/y72C1LjDma/rDHLA/T0V1FC
+aG2SqyUmBOEZS0s/ioXs7vekJBYXrk16s6dJOjRAkrz2nCd2XgobTTlAD+BI1KLb
+OshcVpnQnCIS6iKb8ns47CWD8aZCbKKXwpbyc3gBFRl/P8ng/RsllF0s5ZvXReXD
+HmfD3xDYyYSZZsjjwhr9ZRTO/R4p2PGPNRBwmAgDXziyIMRXKw8GbDZp6FcDDZj7
+hDWyeeYrzbiX+8/gZNRkXJFXEDj+7Rz8uv8LWGQ6RReMliv9EZ7Bp38e3MZ8HCTS
+qX/c47D5fWp8NG7ci1RvQHRWKMKwOnB1XdtyMNcKIRMPWI0OV4tlSj7XQniLH39q
+CUycAvqqzJbSltRRA//ZkxH3Y86fBwIDAQABAoICAQDOeWcuCNtCjJHmN7c7vJGc
+BctgFCBaGQf1fHXx56R/eOR2Zyto1BNVxEC7MkScLyEYiRY1njqMaoZ4g9y0bj2Q
+NNGb05wkAqbnGW5G5khmc9R3G3YLbiF52aWYAKJ627sKJik5985FsJU6mm8DgPcQ
+0qp3WadFImJzo/kmhCrhe6XcL1llHyeijQeEeR3LhSyChCroii+0f4rwF3EO+tQ1
+T9qGCEsod0Af9q6Yeidx1GwDX5QCx0M7SBw68OERJtgln8RtleSGB//XBS1sHFi0
+eGoa2Zmnnep3h4iG0EULkcGlEIFkekmaDE0fuoDdYJ9eabEqMYsjF+zxfOcI3JpQ
+5NKxfyNtb2XATifhexxUIsU0N95JUBHvD6tEiOj3ODg5RF8j0uBEO/QkIbGYGq4W
+Wf25tXpxHsDeBj76CDMCjBoi6FiMvcCPYOQmCDSrmqX7/O4tnTp7cT9jegGIlbd2
+uIv9SxrBQyHXea1CcIwoZ+YVXJRCYMgauaIyEXKsg/8nxkEC8VU9B6/FkLC14y53
+NegEHa9vwlhXQ8aAz2FXhK2BzpFw6p7eoe+kP6eiFqqoSF8INEs/5MJWQlPB4Y7z
+atMo1MJNlwEL/K3DqodhYTiXa595wp0+32Xg40OVab14l2AHehBGnZZZjO7C5wqe
+t0cv63QPtM+qt3eiwhvZgQKCAQEA/dEasetvvt0EQdPY3ZzcjCSEnT/gtnnAYJWl
+topGZcgqeswqa3C/vyEN43/ziYK2F+nBBV2STyRCf99S24ISXuGFijVD7hRgt6J/
+PLtidLz3cIOXXWAwGg9SwSUAi6g2lM52qqmWGGij7oZtksu2H/U2EaEP/7IcWvxC
+cN3hS8fEfFhX5km8fkGano/Hl1fec/vK2tAmzok4G6DhsPkRsGapYGAYf59PawpI
+v1paYKiqTNX9F1CGU62ZRnI+hLpgYaCBXxGAJw2fRgvq1CtnS0Oe24WHa43mOilK
+lnuUiGAn/qd8TiU211BvkekmR/GUiURdkxDUO0Nwr46hEWXhRwKCAQEA+nABXxaE
+vVdG6wrtWd2iY4w10qxEpb3z67yFnb/MSa1ocPEJXOuhBX8FUmh67qX5L/N5gu3n
+NFQKsmTT2+Rfjx//ktWodbi4nIuQ60BFGqtBAXCe1zicTqM39tTlGrp3gWno9bQ+
+18AjdBTzDsY2gSKBO7RENmi5EkvMbBj/EuQyl88bnOBJMN2ypBHTb3+JOlfPOucw
+EsSHsxD4zKibPfnIwicbtvsmHwFWUCMiPcGSxrriwxwiLKmWByyyRKJxPx70Ylh6
+grt0y9CCenZH2Kj+pMOduyrQyAOeHGwudbD8OxhqT2NIkSjQii+8heBFfzOgXW81
+by5Tk1RjpmI0QQKCAQEAzX6yokH/owPGIpWmCyao2T3nsHi7MoG4Y3pFRFkHTfiV
+i/4oifwrAk98sygwwLB3RT0X7YQopLKytFzW9KmGvhLQz2j4qpUNCSAi68S6ndEw
+dIPV1N+/khm94mpW2rtCFZBjOyE6SGDP+JoVtLgBqDYbpIJGNbq6gl+iW0cI1RXT
+2uibofMpDP+Ic7/s1Hdrv3OodSf5g1ZNevDySRoeXDeCAmlK7GjLH9qfs20vpvpn
+hvXphyrG1pDCe+qa+1L6HZCZraK5ouTAgzG62jSZ2LHSt+CQF2A3efdcUCGVzCQt
+vVtUpOA0WnbhHb0qJS1OGSSkriD9801SupA7j55wmQKCAQB7YPjb/r0QhtHyc+Sx
+FEavYmEV1DbRrL5h0fPF3rrnRV4h3i3tsEwY6BYYHk8KCYy1Oe8QOOJh3lGSx6e0
+OlN1sJ75mPcwX/vba8rOi1BALkSNUA2BHGutNi4ZFZN1Uo4TnLjfa5hWNFuDEdsY
+2T/66KPgZRQB9h/PSraAPuRTS0c9kRQaeki0oVQkDoAq+xsBOkdmzoTZiicMaf0Y
+3qv0oX1tYVT/FcYXGlKKknSJFjeYXnPfCZowhK/cAwIkXB8MqNRfKxXYGEAXNTdC
+28jTjZY+V/z6O8K190pK2GUfKD1rY8DkMZaLpR7wJUpsbivu2eFUhrg9eQZFnBqn
+2tPBAoIBABhsEsjGuKt1Mb4GU/VQnNtFoTSXYQBp3fLFkLLbf9MF7kCGDQsTf2VA
+AlzPLmnsNP+ky9w0DSZArL7K21bJg/ZGXMlgH9+DvF5B3zhLXKnSo3P73Em+fx+8
+irjSqUSR/+XBHOJIwaKvk9IRzBI7JsMlwhqe2adxfwJq96SHDNF485i989YXE6C1
+ExnM3naQC0YojNaZbiwFnJv7YLWvjjQ6uPgezvJWUOvpMMWjP0m5f157IyxkFana
+u6wNLHAhJ6CcOgKWlIWIZR/74FZebFaoNy/CiQC1ysXFLnpq+IKynC/ILqQV1csk
+wdoYnQ4L440Y1488vRqSzalA4FPApaQ=
+-----END PRIVATE KEY-----
diff --git a/certs/sample/root.cert.pem b/certs/sample/root.cert.pem
new file mode 100644
index 0000000..df6d89b
--- /dev/null
+++ b/certs/sample/root.cert.pem
@@ -0,0 +1,33 @@
+-----BEGIN TRUSTED CERTIFICATE-----
+MIIFlDCCA3ygAwIBAgIBATANBgkqhkiG9w0BAQsFADBeMQswCQYDVQQGEwJGUjER
+MA8GA1UECAwIQnJpdHRhbnkxDzANBgNVBAcMBlZhbm5lczEQMA4GA1UECgwHSW9U
+LmJ6aDEZMBcGA1UEAwwQUm9vdCBjZXJ0aWZpY2F0ZTAeFw0xOTA5MTYwODAyNTRa
+Fw0yOTA5MTYwODAyNTRaMF4xCzAJBgNVBAYTAkZSMREwDwYDVQQIDAhCcml0dGFu
+eTEPMA0GA1UEBwwGVmFubmVzMRAwDgYDVQQKDAdJb1QuYnpoMRkwFwYDVQQDDBBS
+b290IGNlcnRpZmljYXRlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+p8MMg7OPSs5eELwTxGr5LEWevAKidu4t+Il07USnqHsMWGEHbX8Fcpfn6iyn8eno
+stVM149rDPxhwa8XM+B9RoR8zzWUEj77Ums/fSkJwvHZFqqk3s9saL11J8ypILMD
+o0LSr3pA9zHK2fcRmREKbjaCAhNJdpNnKbu3eYL2i9YQFFqUi+ilk+4Fgs4szQex
+a0UOq68v9FQc/4bPtOZp6JdZn06sT5ItaG3lEm/Lr/utc8kFE1c/ZcGlBoPO2hSG
+TVOzU4FabNa+JsfTfVj7yeQT1gGcXOeqSc1urefl9OashlqsPaB4BUoKIHZ9OXjS
+ckTFt1a+Eq2Zo7DgGmPjJxFp9lTMYpkez+KmQ+c4eUnImsV6krHMUrKlUB5BkbGl
+uAj4r/J6f1ReGiw6Ap687zLf6GdRz1R9fIUj5fYYWwEXsbDuS7F32Ad1lyd0L1La
+qXeQ3bhh2vaxKHPSONWmW//5+aGU9hyLQFQiC3BN34sf6yo0zGUspGRNhpzI6DRy
+cU2n54KMVLDZCkthNguz2fLM/mPlfQNdXZ62sn03Xy71uU5rAxO3JAmn+3oO8PGp
+k5/AtsHCfYWisKj4N8q1l89l50B6VviDEmsthOfr4SR0kHtQdJWjL1nunCPywfrV
+Jlf1AZYQaTP1UN7r+qjsCNx3a+OpWsBRqPWbVcCf4H8CAwEAAaNdMFswDAYDVR0T
+BAUwAwEB/zALBgNVHQ8EBAMCAgQwHQYDVR0OBBYEFLTTn/Q+QOpQf7xtu+Iv1Tq5
+KPLAMB8GA1UdIwQYMBaAFLTTn/Q+QOpQf7xtu+Iv1Tq5KPLAMA0GCSqGSIb3DQEB
+CwUAA4ICAQA7sf3SVkzWt2SbV/U5Is2RJmKeGWtbShmdnbFsDi1V2d0lJ+RsRu2k
+YuLUwNa9CuAva9AqzN0VRYcOoGoUMQJQYy7Fp0NqyxaIKzGwp6D/gDp1Bbjr0GvH
+OghddX893SI6Hq08RXVBsBIZhZ53Qdw4W2MzI55AGuJYQaGeql4dDqQuvP6jZ5wh
+6u+dE7XNrEup4lujSu66HQ8JSaEP1kGYv9CJMbXSqN2qKFt9S1cNfRFeI6//vfOa
+I6e/AeYtggyzguPj5T0iWLnl8VCagm0j3S0UvmoQ8+eAxBsiaMRGlqKF1PVcz2OM
+zlQMwY9opjyzZQP+140xo9vyK9jUA+U49hviurPo0f3+hU2OoOmB+V3u91iwIo5H
+euD9zEQvYT1DxbihOlwU+QikGaVcNdPR/UMkQU4jIbkk3qzR9rraR7WKOSXc1tuZ
+X+vxufXu/NZwl3Idfc2RT//lvo8sacmrMoHZBYb9mf1x7ZMwSmd10QhlmugVOGe+
+IMiPfCqdnMm4J9ZDGWm4Q91YXd91BBstIBHGmXtCp3wYhUiAg3GlLZaCvx26NQxE
+7kmRPdTXsYeUjJnHdkWCY+RTHIjXx/euX/3M7433GLrGGz87o2t8jtYfhi9de7on
+1QUUj+WWCJ5eXmUvCQeekzJTiBwDcrVsS+Izs/i7XXbutZtM1W0YKDASDBBSb290
+IGNlcnRpZmljYXRl
+-----END TRUSTED CERTIFICATE-----
diff --git a/certs/sample/root.key.pem b/certs/sample/root.key.pem
new file mode 100644
index 0000000..6ac1b41
--- /dev/null
+++ b/certs/sample/root.key.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+6M/Xfpi9f8TQmDRKTkiWFePEpBafCwI=
+-----END PRIVATE KEY-----