@super-protocol/addons-tee 0.5.0

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.
Files changed (58) hide show
  1. package/.editorconfig +15 -0
  2. package/.eslintrc.json +61 -0
  3. package/.prettierignore +3 -0
  4. package/.prettierrc +15 -0
  5. package/README.md +4 -0
  6. package/bindings/sgx-native/README.md +1 -0
  7. package/bindings/sgx-native/build/Release/libdcap_quoteprov.so.1 +0 -0
  8. package/bindings/sgx-native/build/Release/libmbedcrypto_gramine.so.6 +0 -0
  9. package/bindings/sgx-native/build/Release/libmbedx509_gramine.so.1 +0 -0
  10. package/bindings/sgx-native/build/Release/libsgx_dcap_quoteverify.so.1 +0 -0
  11. package/bindings/sgx-native/build/Release/libsgx_default_qcnl_wrapper.so.1 +0 -0
  12. package/bindings/sgx-native/build/Release/libsgx_urts.so.1 +0 -0
  13. package/bindings/sgx-native/build/Release/libsgx_util.so +0 -0
  14. package/bindings/sgx-native/build/Release/sgx_native.node +0 -0
  15. package/bindings/sgx-native/index.js +7 -0
  16. package/bindings/sgx-native/node.manifest.template +59 -0
  17. package/bindings/sgx-native/package-lock.json +23 -0
  18. package/bindings/sgx-native/package.json +19 -0
  19. package/bindings/sgx-native/run_tests.sh +10 -0
  20. package/bindings/sgx-native/test_certs/attestation/cert.der +0 -0
  21. package/bindings/sgx-native/test_certs/attestation/cert.pem +124 -0
  22. package/bindings/sgx-native/test_certs/attestation/cert_maliciously.der +0 -0
  23. package/bindings/sgx-native/test_certs/attestation/cert_maliciously.pem +124 -0
  24. package/bindings/sgx-native/test_certs/attestation/cert_without_quote.der +0 -0
  25. package/bindings/sgx-native/test_certs/attestation/cert_without_quote.pem +20 -0
  26. package/bindings/sgx-native/test_certs/attestation/cert_wrong_hash.der +0 -0
  27. package/bindings/sgx-native/test_certs/attestation/cert_wrong_hash.pem +124 -0
  28. package/bindings/sgx-native/test_certs/ssl/expired.pem +68 -0
  29. package/bindings/sgx-native/test_certs/ssl/hostnameTest.pem +22 -0
  30. package/bindings/sgx-native/test_certs/ssl/multipleHost.pem +62 -0
  31. package/bindings/sgx-native/test_certs/ssl/noHost.pem +61 -0
  32. package/bindings/sgx-native/test_certs/ssl/noIntermidiate.pem +62 -0
  33. package/bindings/sgx-native/test_certs/ssl/revoked.pem +68 -0
  34. package/bindings/sgx-native/test_certs/ssl/untrusted.pem +65 -0
  35. package/bindings/sgx-native/test_certs/ssl/valid.pem +94 -0
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.js +32 -0
  38. package/dist/quote-validator/constants.d.ts +3 -0
  39. package/dist/quote-validator/constants.js +7 -0
  40. package/dist/quote-validator/index.d.ts +1 -0
  41. package/dist/quote-validator/index.js +9 -0
  42. package/dist/quote-validator/sgx-untrasted-validator.d.ts +12 -0
  43. package/dist/quote-validator/sgx-untrasted-validator.js +150 -0
  44. package/dist/quote-validator/sgx-untrasted-validator.spec.d.ts +1 -0
  45. package/dist/sgx-native-module/consts.d.ts +105 -0
  46. package/dist/sgx-native-module/consts.js +124 -0
  47. package/dist/sgx-native-module/dcap-quote-verify.service.d.ts +54 -0
  48. package/dist/sgx-native-module/dcap-quote-verify.service.js +69 -0
  49. package/dist/sgx-native-module/dcap-quote-verify.service.spec.d.ts +1 -0
  50. package/dist/sgx-native-module/enclave.service.d.ts +82 -0
  51. package/dist/sgx-native-module/enclave.service.js +194 -0
  52. package/dist/sgx-native-module/errors.d.ts +9 -0
  53. package/dist/sgx-native-module/errors.js +25 -0
  54. package/dist/sgx-native-module/index.d.ts +5 -0
  55. package/dist/sgx-native-module/index.js +22 -0
  56. package/dist/sgx-native-module/pki.service.d.ts +11 -0
  57. package/dist/sgx-native-module/pki.service.js +31 -0
  58. package/package.json +76 -0
package/.editorconfig ADDED
@@ -0,0 +1,15 @@
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ end_of_line = lf
6
+ trim_trailing_whitespace = true
7
+ insert_final_newline = true
8
+
9
+ [*.md]
10
+ insert_final_newline = true
11
+ trim_trailing_whitespace = true
12
+
13
+ [*.{js,jsx,json,ts,tsx,yml}]
14
+ indent_size = 2
15
+ indent_style = space
package/.eslintrc.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "env": {
3
+ "node": true,
4
+ "es2021": true
5
+ },
6
+ "extends": [
7
+ "eslint:recommended",
8
+ "plugin:@typescript-eslint/recommended",
9
+ "plugin:prettier/recommended"
10
+ ],
11
+ "globals": {
12
+ "Atomics": "readonly",
13
+ "SharedArrayBuffer": "readonly"
14
+ },
15
+ "parser": "@typescript-eslint/parser",
16
+ "parserOptions": {
17
+ "project": ["./tsconfig.json"]
18
+ },
19
+ "plugins": [
20
+ "@typescript-eslint"
21
+ ],
22
+ "rules": {
23
+ "@typescript-eslint/ban-ts-comment": ["warn"],
24
+ "@typescript-eslint/no-var-requires": ["off"],
25
+ "@typescript-eslint/no-unused-vars": ["off"],
26
+ "@typescript-eslint/interface-name-prefix": ["off"],
27
+ "@typescript-eslint/no-empty-function": ["warn"],
28
+ "comma-dangle": [
29
+ "error",
30
+ {
31
+ "arrays": "always-multiline",
32
+ "objects": "always-multiline",
33
+ "imports": "always-multiline",
34
+ "exports": "always-multiline",
35
+ "functions": "always-multiline"
36
+ }
37
+ ],
38
+ "linebreak-style": [
39
+ "error",
40
+ "unix"
41
+ ],
42
+ "newline-before-return": "warn",
43
+ "no-cond-assign": "error",
44
+ "no-console": "warn",
45
+ "no-mixed-operators": "warn",
46
+ "no-constant-condition": [
47
+ "error", {
48
+ "checkLoops": false
49
+ }],
50
+ "no-extra-boolean-cast": "off",
51
+ "no-multiple-empty-lines": ["error", {
52
+ "max": 1,
53
+ "maxEOF": 0
54
+ }],
55
+ "object-curly-spacing": ["error", "always"],
56
+ "object-property-newline": ["error", {
57
+ "allowAllPropertiesOnSameLine": false
58
+ }],
59
+ "semi": ["error", "always"]
60
+ }
61
+ }
@@ -0,0 +1,3 @@
1
+ dist/**/*
2
+ bindings/**/*
3
+ **/gen/*
package/.prettierrc ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "singleQuote": false,
3
+ "trailingComma": "all",
4
+ "tabWidth": 4,
5
+ "printWidth": 120,
6
+ "useTabs": false,
7
+ "overrides": [
8
+ {
9
+ "files": "*.ts",
10
+ "options": {
11
+ "parser": "typescript"
12
+ }
13
+ }
14
+ ]
15
+ }
package/README.md ADDED
@@ -0,0 +1,4 @@
1
+ Addons for Tristed Execution Environment
2
+ ========================================
3
+
4
+ Use it for low-level actions with SGX things.
@@ -0,0 +1 @@
1
+ To compile set GRAMINE_PATH and SGX_PRIMITIVES environment variables
@@ -0,0 +1,7 @@
1
+ const sgx_native = require('bindings')('sgx_native');
2
+
3
+ module.exports = {
4
+ SgxAttestationVerifier: sgx_native.SgxAttestationVerifier,
5
+ SgxLowLevel: sgx_native.SgxLowLevel,
6
+ GramineProtectedFS: sgx_native.GramineProtectedFS,
7
+ };
@@ -0,0 +1,59 @@
1
+ # node manifest template
2
+
3
+ loader.preload = "file:{{ gramine.libos }}" # for compatibility with v1.0
4
+
5
+ loader.entrypoint = "file:{{ gramine.libos }}"
6
+ libos.entrypoint = "/usr/bin/node"
7
+ loader.log_level = "{{ log_level }}"
8
+ loader.argv0_override = "node"
9
+ loader.insecure__use_cmdline_argv = true
10
+
11
+
12
+ loader.env.LD_LIBRARY_PATH = "/lib:/lib/x86_64-linux-gnu/"
13
+
14
+ fs.mount.lib.type = "chroot"
15
+ fs.mount.lib.path = "/lib"
16
+ fs.mount.lib.uri = "file:{{ gramine.runtimedir() }}"
17
+
18
+ fs.mount.usr.type = "chroot"
19
+ fs.mount.usr.path = "/usr"
20
+ fs.mount.usr.uri = "file:/usr"
21
+
22
+ fs.mount.lib2.type = "chroot"
23
+ fs.mount.lib2.path = "/lib/x86_64-linux-gnu"
24
+ fs.mount.lib2.uri = "file:/lib/x86_64-linux-gnu"
25
+
26
+ fs.mount.etc.type = "chroot"
27
+ fs.mount.etc.path = "/etc"
28
+ fs.mount.etc.uri = "file:/etc"
29
+
30
+ sys.insecure__allow_eventfd = true
31
+
32
+ sgx.debug = true
33
+ sgx.nonpie_binary = true
34
+ sgx.thread_num = 256
35
+ sgx.enclave_size = "8G"
36
+ sgx.remote_attestation = true
37
+
38
+ sgx.trusted_files = [
39
+ "file:{{ gramine.libos }}",
40
+ "file:/usr/bin/node",
41
+ "file:{{ gramine.runtimedir() }}/",
42
+ "file:/lib/x86_64-linux-gnu/",
43
+ "file:./",
44
+ ]
45
+
46
+ sgx.allowed_files = [
47
+ "file:/etc/nsswitch.conf",
48
+ "file:/etc/host.conf",
49
+ "file:/etc/resolv.conf",
50
+ "file:/etc/ethers",
51
+ "file:/etc/hosts",
52
+ "file:/etc/group",
53
+ "file:/etc/passwd",
54
+ "file:/etc/gai.conf",
55
+ "file:/etc/ssl/certs/ca-certificates.crt",
56
+ "file:/etc/sgx_default_qcnl.conf",
57
+ "file:/etc/ssl/certs/"
58
+ ]
59
+
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "sgx_native_example",
3
+ "version": "0.2.2",
4
+ "lockfileVersion": 1,
5
+ "requires": true,
6
+ "dependencies": {
7
+ "binding": {
8
+ "version": "3.0.3",
9
+ "resolved": "https://registry.npmjs.org/binding/-/binding-3.0.3.tgz",
10
+ "integrity": "sha512-HUCRFQLX8GdByCZpPFxEFeFreFe+GJdi75xgJ2R2bsfkYVWdlsPqCApb4RE/RbV6f8ri/uwC2DJZUX8V/PNNxQ=="
11
+ },
12
+ "bindings": {
13
+ "version": "1.2.1",
14
+ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz",
15
+ "integrity": "sha1-FK1hE4EtLTfXLme0ystLtyZQXxE="
16
+ },
17
+ "node-addon-api": {
18
+ "version": "3.2.1",
19
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz",
20
+ "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "sgx_native_example",
3
+ "version": "0.2.2",
4
+ "description": "Super Protocol SGX Native Addon Bindings",
5
+ "main": "index.js",
6
+ "private": true,
7
+ "engines": {
8
+ "node": "~10 >=10.20 || >=12.17"
9
+ },
10
+ "dependencies": {
11
+ "binding": "^3.0.3",
12
+ "bindings": "~1.2.1",
13
+ "node-addon-api": "^3.0.0"
14
+ },
15
+ "scripts": {
16
+ "test": "node test.js"
17
+ },
18
+ "gypfile": true
19
+ }
@@ -0,0 +1,10 @@
1
+ #!/bin/sh -ex
2
+
3
+ # Before run test generate or specify another enclave-key.pem manually
4
+ npm install binding
5
+
6
+ gramine-manifest -Dlog_level=error node.manifest.template > node.manifest
7
+ gramine-sgx-sign --manifest node.manifest --output node.manifest.sgx
8
+ gramine-sgx-get-token --output node.token --sig node.sig
9
+
10
+ gramine-sgx node test.js
@@ -0,0 +1,124 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
38
+ BwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwUAXA4AAC0tLS0tQkVHSU4gQ0VSVElG
39
+ SUNBVEUtLS0tLQpNSUlFOGpDQ0JKbWdBd0lCQWdJVkFMancxQm5hbmNxeWN0aE9Q
40
+ UFFKY0xEOFZKd09NQW9HQ0NxR1NNNDlCQU1DTUhBeElqQWdCZ05WCkJBTU1HVWx1
41
+ ZEdWc0lGTkhXQ0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1
42
+ ZEdWc0lFTnZjbkJ2Y21GMGFXOXUKTVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdG
43
+ eVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl4TVRF
44
+ eQpNakUwTXpBd05sb1hEVEk0TVRFeU1qRTBNekF3Tmxvd2NERWlNQ0FHQTFVRUF3
45
+ d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwClkyRjBaVEVhTUJnR0ExVUVD
46
+ Z3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJ
47
+ RU5zWVhKaE1Rc3cKQ1FZRFZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFU
48
+ QmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW1DU3dXSTRtdAp5MzNWZ2Jp
49
+ Umg0NjlvTUd0ZDdRS08va3RPY3hKeWlpWXdTWnB2SDVPbTR4SGVCajUrNEo1QkVa
50
+ bWtNSXFBcktkaUlHYldaSXgraEpkCm80SUREakNDQXdvd0h3WURWUjBqQkJnd0Zv
51
+ QVVsVzlkemIwYjRlbEFTY25VOURQT0FWY0wzbFF3YXdZRFZSMGZCR1F3WWpCZ29G
52
+ NmcKWElaYWFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmxjblpwWTJWekxtbHVk
53
+ R1ZzTG1OdmJTOXpaM2d2WTJWeWRHbG1hV05oZEdsdgpiaTkyTXk5d1kydGpjbXcv
54
+ WTJFOWNHeGhkR1p2Y20wbVpXNWpiMlJwYm1jOVpHVnlNQjBHQTFVZERnUVdCQlNB
55
+ VmpXWHJ1M3NPRWVwCnZ2ZENBMUFmdEZjTXNqQU9CZ05WSFE4QkFmOEVCQU1DQnNB
56
+ d0RBWURWUjBUQVFIL0JBSXdBRENDQWpzR0NTcUdTSWI0VFFFTkFRU0MKQWl3d2dn
57
+ SW9NQjRHQ2lxR1NJYjRUUUVOQVFFRUVNMTVHZklzRG1ZMWwyR1gzTE9kS0R3d2dn
58
+ RmxCZ29xaGtpRytFMEJEUUVDTUlJQgpWVEFRQmdzcWhraUcrRTBCRFFFQ0FRSUJC
59
+ REFRQmdzcWhraUcrRTBCRFFFQ0FnSUJCREFRQmdzcWhraUcrRTBCRFFFQ0F3SUJB
60
+ ekFRCkJnc3Foa2lHK0UwQkRRRUNCQUlCQXpBUkJnc3Foa2lHK0UwQkRRRUNCUUlD
61
+ QVA4d0VRWUxLb1pJaHZoTkFRMEJBZ1lDQWdEL01CQUcKQ3lxR1NJYjRUUUVOQVFJ
62
+ SEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJSUFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJ
63
+ SkFnRUFNQkFHQ3lxRwpTSWI0VFFFTkFRSUtBZ0VBTUJBR0N5cUdTSWI0VFFFTkFR
64
+ SUxBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU1BZ0VBTUJBR0N5cUdTSWI0ClRRRU5B
65
+ UUlOQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlPQWdFQU1CQUdDeXFHU0liNFRRRU5B
66
+ UUlQQWdFQU1CQUdDeXFHU0liNFRRRU4KQVFJUUFnRUFNQkFHQ3lxR1NJYjRUUUVO
67
+ QVFJUkFnRUxNQjhHQ3lxR1NJYjRUUUVOQVFJU0JCQUVCQU1ELy84QUFBQUFBQUFB
68
+ QUFBQQpNQkFHQ2lxR1NJYjRUUUVOQVFNRUFnQUFNQlFHQ2lxR1NJYjRUUUVOQVFR
69
+ RUJqQmdhZ0FBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VCCk1CNEdDaXFHU0liNFRR
70
+ RU5BUVlFRUJTSnhtYjlkdGkrTm5jMHBCYnFpVTB3UkFZS0tvWklodmhOQVEwQkJ6
71
+ QTJNQkFHQ3lxR1NJYjQKVFFFTkFRY0JBUUgvTUJBR0N5cUdTSWI0VFFFTkFRY0NB
72
+ UUgvTUJBR0N5cUdTSWI0VFFFTkFRY0RBUUgvTUFvR0NDcUdTTTQ5QkFNQwpBMGNB
73
+ TUVRQ0lDUFo4VXRJQ25IL2FQVUJYc3dnSXlvWHFCYnBTVG43OUJPc21zRkJzWDhD
74
+ QWlBK2pzZXFDNS80Z0UvanRFTGZ1eHViCmFERUZLOHBMb0g1TGIvbVNGTU0rMWc9
75
+ PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tLS0tLS1CRUdJTiBDRVJUSUZJQ0FU
76
+ RS0tLS0tCk1JSUNsakNDQWoyZ0F3SUJBZ0lWQUpWdlhjMjlHK0hwUUVuSjFQUXp6
77
+ Z0ZYQzk1VU1Bb0dDQ3FHU000OUJBTUMKTUdneEdqQVlCZ05WQkFNTUVVbHVkR1Zz
78
+ SUZOSFdDQlNiMjkwSUVOQk1Sb3dHQVlEVlFRS0RCRkpiblJsYkNCRApiM0p3YjNK
79
+ aGRHbHZiakVVTUJJR0ExVUVCd3dMVTJGdWRHRWdRMnhoY21FeEN6QUpCZ05WQkFn
80
+ TUFrTkJNUXN3CkNRWURWUVFHRXdKVlV6QWVGdzB4T0RBMU1qRXhNRFV3TVRCYUZ3
81
+ MHpNekExTWpFeE1EVXdNVEJhTUhBeElqQWcKQmdOVkJBTU1HVWx1ZEdWc0lGTkhX
82
+ Q0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWcwpJRU52
83
+ Y25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtH
84
+ QTFVRUNBd0NRMEV4CkN6QUpCZ05WQkFZVEFsVlRNRmt3RXdZSEtvWkl6ajBDQVFZ
85
+ SUtvWkl6ajBEQVFjRFFnQUVOU0IvN3QyMWxYU08KMkN1enB4dzc0ZUpCNzJFeURH
86
+ Z1c1clhDdHgydFZUTHE2aEtrNnorVWlSWkNucVI3cHNPdmdxRmVTeGxtVGxKbApl
87
+ VG1pMldZejNxT0J1ekNCdURBZkJnTlZIU01FR0RBV2dCUWlaUXpXV3AwMGlmT0R0
88
+ SlZTdjFBYk9TY0dyREJTCkJnTlZIUjhFU3pCSk1FZWdSYUJEaGtGb2RIUndjem92
89
+ TDJObGNuUnBabWxqWVhSbGN5NTBjblZ6ZEdWa2MyVnkKZG1salpYTXVhVzUwWld3
90
+ dVkyOXRMMGx1ZEdWc1UwZFlVbTl2ZEVOQkxtUmxjakFkQmdOVkhRNEVGZ1FVbFc5
91
+ ZAp6YjBiNGVsQVNjblU5RFBPQVZjTDNsUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01C
92
+ SUdBMVVkRXdFQi93UUlNQVlCCkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdS
93
+ QUlnWHNWa2kwdytpNlZZR1czVUYvMjJ1YVhlMFlKRGoxVWUKbkErVGpEMWFpNWND
94
+ SUNZYjFTQW1ENXhrZlRWcHZvNFVveWlTWXhyRFdMbVVSNENJOU5LeWZQTisKLS0t
95
+ LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0t
96
+ LS0KTUlJQ2p6Q0NBalNnQXdJQkFnSVVJbVVNMWxxZE5JbnpnN1NWVXI5UUd6a25C
97
+ cXd3Q2dZSUtvWkl6ajBFQXdJdwphREVhTUJnR0ExVUVBd3dSU1c1MFpXd2dVMGRZ
98
+ SUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52CmNuQnZjbUYwYVc5
99
+ dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBF
100
+ eEN6QUoKQmdOVkJBWVRBbFZUTUI0WERURTRNRFV5TVRFd05EVXhNRm9YRFRRNU1U
101
+ SXpNVEl6TlRrMU9Wb3dhREVhTUJnRwpBMVVFQXd3UlNXNTBaV3dnVTBkWUlGSnZi
102
+ M1FnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzSUVOdmNuQnZjbUYwCmFXOXVNUlF3
103
+ RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXhDekFK
104
+ QmdOVkJBWVQKQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdB
105
+ RUM2bkV3TURJWVpPai9pUFdzQ3phRUtpNwoxT2lPU0xSRmhXR2pibkJWSmZWbmtZ
106
+ NHUzSWprRFlZTDBNeE80bXFzeVlqbEJhbFRWWXhGUDJzSkJLNXpsS09CCnV6Q0J1
107
+ REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlNC
108
+ Z05WSFI4RVN6QkoKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJs
109
+ Y3k1MGNuVnpkR1ZrYzJWeWRtbGpaWE11YVc1MApaV3d1WTI5dEwwbHVkR1ZzVTBk
110
+ WVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVJbVVNMWxxZE5JbnpnN1NWClVy
111
+ OVFHemtuQnF3d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1B
112
+ WUJBZjhDQVFFd0NnWUkKS29aSXpqMEVBd0lEU1FBd1JnSWhBT1cvNVFrUitTOUNp
113
+ U0RjTm9vd0x1UFJMc1dHZi9ZaTdHU1g5NEJnd1R3ZwpBaUVBNEowbHJIb01zK1hv
114
+ NW8vc1g2TzlRV3hIUkF2WlVHT2RSUTdjdnFSWGFxST0KLS0tLS1FTkQgQ0VSVElG
115
+ SUNBVEUtLS0tLQowDQYJKoZIhvcNAQELBQADggGBAC9xfNPdZVpQsh9r16HOhHiO
116
+ jdrX2hfbJV1giR1nHop80I/Ayq0AKrohxWwYfq7k/BuAK/hn5zVHkJNRoU+E+GwU
117
+ K1rNfIFefJz16HVu17YKsG+aYX292utaV0HqV0PspNhY4g42KPU5JF6R3UjtTetl
118
+ f/Zht6dL7bThPLLggKlGbn4RN3OX8pbz3wZ05iwO9IPxHdc0jthQJ/a//aUQYeDg
119
+ egcw19sErkMpSh9gDDAPx3DxzH1ZZbiPCUtmKafIgP42VIl2ivtb7S0Kt47Plk4J
120
+ 3nxUwyqRU+MotcH/VaUyCDMe3ZNaPPBCUO/53jQCiDFH3qMqBpuZRZjgl47uOvzb
121
+ UpUy7Cby6iyxZyjuOaCbmEUs1cntqfbJMUSGYW4hfsXvHNqK7a3BZPSCgWWEECV3
122
+ 1lpffnMooT6S/gkTwjOJT7hT0z5ikEEs4zk1AQUqvjGbBWZfYYn9JjfRAms87wZg
123
+ ookhpCAf+Re8lgoBBv23o8YdYwfS8WVUJ4Fggj32vg==
124
+ -----END CERTIFICATE-----
@@ -0,0 +1,124 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
38
+ BwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwUAXA4AAC0tLS0tQkVHSU4gQ0VSVElG
39
+ SUNBVEUtLS0tLQpNSUlFOGpDQ0JKbWdBd0lCQWdJVkFMancxQm5hbmNxeWN0aE9Q
40
+ UFFKY0xEOFZKd09NQW9HQ0NxR1NNNDlCQU1DTUhBeElqQWdCZ05WCkJBTU1HVWx1
41
+ ZEdWc0lGTkhXQ0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1
42
+ ZEdWc0lFTnZjbkJ2Y21GMGFXOXUKTVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdG
43
+ eVlURUxNQWtHQTFVRUNBd0NRMEV4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEl4TVRF
44
+ eQpNakUwTXpBd05sb1hEVEk0TVRFeU1qRTBNekF3Tmxvd2NERWlNQ0FHQTFVRUF3
45
+ d1pTVzUwWld3Z1UwZFlJRkJEU3lCRFpYSjBhV1pwClkyRjBaVEVhTUJnR0ExVUVD
46
+ Z3dSU1c1MFpXd2dRMjl5Y0c5eVlYUnBiMjR4RkRBU0JnTlZCQWNNQzFOaGJuUmhJ
47
+ RU5zWVhKaE1Rc3cKQ1FZRFZRUUlEQUpEUVRFTE1Ba0dBMVVFQmhNQ1ZWTXdXVEFU
48
+ QmdjcWhrak9QUUlCQmdncWhrak9QUU1CQndOQ0FBUW1DU3dXSTRtdAp5MzNWZ2Jp
49
+ Umg0NjlvTUd0ZDdRS08va3RPY3hKeWlpWXdTWnB2SDVPbTR4SGVCajUrNEo1QkVa
50
+ bWtNSXFBcktkaUlHYldaSXgraEpkCm80SUREakNDQXdvd0h3WURWUjBqQkJnd0Zv
51
+ QVVsVzlkemIwYjRlbEFTY25VOURQT0FWY0wzbFF3YXdZRFZSMGZCR1F3WWpCZ29G
52
+ NmcKWElaYWFIUjBjSE02THk5aGNHa3VkSEoxYzNSbFpITmxjblpwWTJWekxtbHVk
53
+ R1ZzTG1OdmJTOXpaM2d2WTJWeWRHbG1hV05oZEdsdgpiaTkyTXk5d1kydGpjbXcv
54
+ WTJFOWNHeGhkR1p2Y20wbVpXNWpiMlJwYm1jOVpHVnlNQjBHQTFVZERnUVdCQlNB
55
+ VmpXWHJ1M3NPRWVwCnZ2ZENBMUFmdEZjTXNqQU9CZ05WSFE4QkFmOEVCQU1DQnNB
56
+ d0RBWURWUjBUQVFIL0JBSXdBRENDQWpzR0NTcUdTSWI0VFFFTkFRU0MKQWl3d2dn
57
+ SW9NQjRHQ2lxR1NJYjRUUUVOQVFFRUVNMTVHZklzRG1ZMWwyR1gzTE9kS0R3d2dn
58
+ RmxCZ29xaGtpRytFMEJEUUVDTUlJQgpWVEFRQmdzcWhraUcrRTBCRFFFQ0FRSUJC
59
+ REFRQmdzcWhraUcrRTBCRFFFQ0FnSUJCREFRQmdzcWhraUcrRTBCRFFFQ0F3SUJB
60
+ ekFRCkJnc3Foa2lHK0UwQkRRRUNCQUlCQXpBUkJnc3Foa2lHK0UwQkRRRUNCUUlD
61
+ QVA4d0VRWUxLb1pJaHZoTkFRMEJBZ1lDQWdEL01CQUcKQ3lxR1NJYjRUUUVOQVFJ
62
+ SEFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJSUFnRUFNQkFHQ3lxR1NJYjRUUUVOQVFJ
63
+ SkFnRUFNQkFHQ3lxRwpTSWI0VFFFTkFRSUtBZ0VBTUJBR0N5cUdTSWI0VFFFTkFR
64
+ SUxBZ0VBTUJBR0N5cUdTSWI0VFFFTkFRSU1BZ0VBTUJBR0N5cUdTSWI0ClRRRU5B
65
+ UUlOQWdFQU1CQUdDeXFHU0liNFRRRU5BUUlPQWdFQU1CQUdDeXFHU0liNFRRRU5B
66
+ UUlQQWdFQU1CQUdDeXFHU0liNFRRRU4KQVFJUUFnRUFNQkFHQ3lxR1NJYjRUUUVO
67
+ QVFJUkFnRUxNQjhHQ3lxR1NJYjRUUUVOQVFJU0JCQUVCQU1ELy84QUFBQUFBQUFB
68
+ QUFBQQpNQkFHQ2lxR1NJYjRUUUVOQVFNRUFnQUFNQlFHQ2lxR1NJYjRUUUVOQVFR
69
+ RUJqQmdhZ0FBQURBUEJnb3Foa2lHK0UwQkRRRUZDZ0VCCk1CNEdDaXFHU0liNFRR
70
+ RU5BUVlFRUJTSnhtYjlkdGkrTm5jMHBCYnFpVTB3UkFZS0tvWklodmhOQVEwQkJ6
71
+ QTJNQkFHQ3lxR1NJYjQKVFFFTkFRY0JBUUgvTUJBR0N5cUdTSWI0VFFFTkFRY0NB
72
+ UUgvTUJBR0N5cUdTSWI0VFFFTkFRY0RBUUgvTUFvR0NDcUdTTTQ5QkFNQwpBMGNB
73
+ TUVRQ0lDUFo4VXRJQ25IL2FQVUJYc3dnSXlvWHFCYnBTVG43OUJPc21zRkJzWDhD
74
+ QWlBK2pzZXFDNS80Z0UvanRFTGZ1eHViCmFERUZLOHBMb0g1TGIvbVNGTU0rMWc9
75
+ PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tLS0tLS1CRUdJTiBDRVJUSUZJQ0FU
76
+ RS0tLS0tCk1JSUNsakNDQWoyZ0F3SUJBZ0lWQUpWdlhjMjlHK0hwUUVuSjFQUXp6
77
+ Z0ZYQzk1VU1Bb0dDQ3FHU000OUJBTUMKTUdneEdqQVlCZ05WQkFNTUVVbHVkR1Zz
78
+ SUZOSFdDQlNiMjkwSUVOQk1Sb3dHQVlEVlFRS0RCRkpiblJsYkNCRApiM0p3YjNK
79
+ aGRHbHZiakVVTUJJR0ExVUVCd3dMVTJGdWRHRWdRMnhoY21FeEN6QUpCZ05WQkFn
80
+ TUFrTkJNUXN3CkNRWURWUVFHRXdKVlV6QWVGdzB4T0RBMU1qRXhNRFV3TVRCYUZ3
81
+ MHpNekExTWpFeE1EVXdNVEJhTUhBeElqQWcKQmdOVkJBTU1HVWx1ZEdWc0lGTkhX
82
+ Q0JRUTBzZ1VHeGhkR1p2Y20wZ1EwRXhHakFZQmdOVkJBb01FVWx1ZEdWcwpJRU52
83
+ Y25CdmNtRjBhVzl1TVJRd0VnWURWUVFIREF0VFlXNTBZU0JEYkdGeVlURUxNQWtH
84
+ QTFVRUNBd0NRMEV4CkN6QUpCZ05WQkFZVEFsVlRNRmt3RXdZSEtvWkl6ajBDQVFZ
85
+ SUtvWkl6ajBEQVFjRFFnQUVOU0IvN3QyMWxYU08KMkN1enB4dzc0ZUpCNzJFeURH
86
+ Z1c1clhDdHgydFZUTHE2aEtrNnorVWlSWkNucVI3cHNPdmdxRmVTeGxtVGxKbApl
87
+ VG1pMldZejNxT0J1ekNCdURBZkJnTlZIU01FR0RBV2dCUWlaUXpXV3AwMGlmT0R0
88
+ SlZTdjFBYk9TY0dyREJTCkJnTlZIUjhFU3pCSk1FZWdSYUJEaGtGb2RIUndjem92
89
+ TDJObGNuUnBabWxqWVhSbGN5NTBjblZ6ZEdWa2MyVnkKZG1salpYTXVhVzUwWld3
90
+ dVkyOXRMMGx1ZEdWc1UwZFlVbTl2ZEVOQkxtUmxjakFkQmdOVkhRNEVGZ1FVbFc5
91
+ ZAp6YjBiNGVsQVNjblU5RFBPQVZjTDNsUXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01C
92
+ SUdBMVVkRXdFQi93UUlNQVlCCkFmOENBUUF3Q2dZSUtvWkl6ajBFQXdJRFJ3QXdS
93
+ QUlnWHNWa2kwdytpNlZZR1czVUYvMjJ1YVhlMFlKRGoxVWUKbkErVGpEMWFpNWND
94
+ SUNZYjFTQW1ENXhrZlRWcHZvNFVveWlTWXhyRFdMbVVSNENJOU5LeWZQTisKLS0t
95
+ LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0t
96
+ LS0KTUlJQ2p6Q0NBalNnQXdJQkFnSVVJbVVNMWxxZE5JbnpnN1NWVXI5UUd6a25C
97
+ cXd3Q2dZSUtvWkl6ajBFQXdJdwphREVhTUJnR0ExVUVBd3dSU1c1MFpXd2dVMGRZ
98
+ SUZKdmIzUWdRMEV4R2pBWUJnTlZCQW9NRVVsdWRHVnNJRU52CmNuQnZjbUYwYVc5
99
+ dU1SUXdFZ1lEVlFRSERBdFRZVzUwWVNCRGJHRnlZVEVMTUFrR0ExVUVDQXdDUTBF
100
+ eEN6QUoKQmdOVkJBWVRBbFZUTUI0WERURTRNRFV5TVRFd05EVXhNRm9YRFRRNU1U
101
+ SXpNVEl6TlRrMU9Wb3dhREVhTUJnRwpBMVVFQXd3UlNXNTBaV3dnVTBkWUlGSnZi
102
+ M1FnUTBFeEdqQVlCZ05WQkFvTUVVbHVkR1ZzSUVOdmNuQnZjbUYwCmFXOXVNUlF3
103
+ RWdZRFZRUUhEQXRUWVc1MFlTQkRiR0Z5WVRFTE1Ba0dBMVVFQ0F3Q1EwRXhDekFK
104
+ QmdOVkJBWVQKQWxWVE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdB
105
+ RUM2bkV3TURJWVpPai9pUFdzQ3phRUtpNwoxT2lPU0xSRmhXR2pibkJWSmZWbmtZ
106
+ NHUzSWprRFlZTDBNeE80bXFzeVlqbEJhbFRWWXhGUDJzSkJLNXpsS09CCnV6Q0J1
107
+ REFmQmdOVkhTTUVHREFXZ0JRaVpReldXcDAwaWZPRHRKVlN2MUFiT1NjR3JEQlNC
108
+ Z05WSFI4RVN6QkoKTUVlZ1JhQkRoa0ZvZEhSd2N6b3ZMMk5sY25ScFptbGpZWFJs
109
+ Y3k1MGNuVnpkR1ZrYzJWeWRtbGpaWE11YVc1MApaV3d1WTI5dEwwbHVkR1ZzVTBk
110
+ WVVtOXZkRU5CTG1SbGNqQWRCZ05WSFE0RUZnUVVJbVVNMWxxZE5JbnpnN1NWClVy
111
+ OVFHemtuQnF3d0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1B
112
+ WUJBZjhDQVFFd0NnWUkKS29aSXpqMEVBd0lEU1FBd1JnSWhBT1cvNVFrUitTOUNp
113
+ U0RjTm9vd0x1UFJMc1dHZi9ZaTdHU1g5NEJnd1R3ZwpBaUVBNEowbHJIb01zK1hv
114
+ NW8vc1g2TzlRV3hIUkF2WlVHT2RSUTdjdnFSWGFxST0KLS0tLS1FTkQgQ0VSVElG
115
+ SUNBVEUtLS0tLQowDQYJKoZIhvcNAQELBQADggGBAC9xfNPdZVpQsh9r16HOhHiO
116
+ jdrX2hfbJV1giR1nHop80I/Ayq0AKrohxWwYfq7k/BuAK/hn5zVHkJNRoU+E+GwU
117
+ K1rNfIFefJz16HVu17YKsG+aYX292utaV0HqV0PspNhY4g42KPU5JF6R3UjtTetl
118
+ f/Zht6dL7bThPLLggKlGbn4RN3OX8pbz3wZ05iwO9IPxHdc0jthQJ/a//aUQYeDg
119
+ egcw19sErkMpSh9gDDAPx3DxzH1ZZbiPCUtmKafIgP42VIl2ivtb7S0Kt47Plk4J
120
+ 3nxUwyqRU+MotcH/VaUyCDMe3ZNaPPBCUO/53jQCiDFH3qMqBpuZRZjgl47uOvzb
121
+ UpUy7Cby6iyxZyjuOaCbmEUs1cntqfbJMUSGYW4hfsXvHNqK7a3BZPSCgWWEECV3
122
+ 1lpffnMooT6S/gkTwjOJT7hT0z5ikEEs4zk1AQUqvjGbBWZfYYn9JjfRAms87wZg
123
+ ookhpCAf+Re8lgoBBv23o8YdYwfS8WVUJ4Fggj32vg==
124
+ -----END CERTIFICATE-----
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDNzCCAh+gAwIBAgIBAjANBgkqhkiG9w0BAQsFADA7MQswCQYDVQQGEwJOTDER
3
+ MA8GA1UECgwIUG9sYXJTU0wxGTAXBgNVBAMMEFBvbGFyU1NMIFRlc3QgQ0EwHhcN
4
+ MTkwMjEwMTQ0NDA2WhcNMjkwMjEwMTQ0NDA2WjA0MQswCQYDVQQGEwJOTDERMA8G
5
+ A1UECgwIUG9sYXJTU0wxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcN
6
+ AQEBBQADggEPADCCAQoCggEBAMFNo93nzR3RBNdJcriZrA545Do8Ss86ExbQWuTN
7
+ owCIp+4ea5anUrSQ7y1yej4kmvy2NKwk9XfgJmSMnLAofaHa6ozmyRyWvP7BBFKz
8
+ NtSj+uGxdtiQwWG0ZlI2oiZTqqt0Xgd9GYLbKtgfoNkNHC1JZvdbJXNG6AuKT2kM
9
+ tQCQ4dqCEGZ9rlQri2V5kaHiYcPNQEkI7mgM8YuG0ka/0LiqEQMef1aoGh5EGA8P
10
+ hYvai0Re4hjGYi/HZo36Xdh98yeJKQHFkA4/J/EwyEoO79bex8cna8cFPXrEAjya
11
+ HT4P6DSYW8tzS1KW2BGiLICIaTla0w+w3lkvEcf36hIBMJcCAwEAAaNNMEswCQYD
12
+ VR0TBAIwADAdBgNVHQ4EFgQUpQXoZLjc32APUBJNYKhkr02LQ5MwHwYDVR0jBBgw
13
+ FoAUtFrkpbPe0lL2udWmlQ/rPrzH/f8wDQYJKoZIhvcNAQELBQADggEBAC465FJh
14
+ Pqel7zJngHIHJrqj/wVAxGAFOTF396XKATGAp+HRCqJ81Ry60CNK1jDzk8dv6M6U
15
+ HoS7RIFiM/9rXQCbJfiPD5xMTejZp5n5UYHAmxsxDaazfA5FuBhkfokKK6jD4Eq9
16
+ 1C94xGKb6X4/VkaPF7cqoBBw/bHxawXc0UEPjqayiBpCYU/rJoVZgLqFVP7Px3sv
17
+ a1nOrNx8rPPI1hJ+ZOg8maiPTxHZnBVLakSSLQy/sWeWyazO1RnrbxjrbgQtYKz0
18
+ e3nwGpu1w13vfckFmUSBhHXH7AAS/HpKC4IH7G2GAk3+n8iSSN71sZzpxonQwVbo
19
+ pMZqLmbBm/7WPLc=
20
+ -----END CERTIFICATE-----