@wiajs/request 3.0.0 → 3.0.1

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 (117) hide show
  1. package/.github/ISSUE_TEMPLATE.md +56 -0
  2. package/.github/PULL_REQUEST_TEMPLATE.md +13 -0
  3. package/.github/stale.yml +19 -0
  4. package/.swcrc +57 -0
  5. package/.travis.yml +21 -0
  6. package/CHANGELOG.md +717 -0
  7. package/CONTRIBUTING.md +81 -0
  8. package/biome.json +44 -0
  9. package/codecov.yml +2 -0
  10. package/disabled.appveyor.yml +36 -0
  11. package/dist/request.cjs +1476 -0
  12. package/dist/request.mjs +1474 -0
  13. package/examples/README.md +135 -0
  14. package/gulpfile.js +71 -0
  15. package/package.json +1 -2
  16. package/release.sh +45 -0
  17. package/tests/browser/karma.conf.js +57 -0
  18. package/tests/browser/ssl/ca.crt +14 -0
  19. package/tests/browser/ssl/server.crt +14 -0
  20. package/tests/browser/ssl/server.key +15 -0
  21. package/tests/browser/start.js +37 -0
  22. package/tests/browser/test.js +34 -0
  23. package/tests/fixtures/har.json +158 -0
  24. package/tests/googledoodle.jpg +0 -0
  25. package/tests/server.js +142 -0
  26. package/tests/squid.conf +76 -0
  27. package/tests/ssl/ca/README.md +8 -0
  28. package/tests/ssl/ca/ca.cnf +20 -0
  29. package/tests/ssl/ca/ca.crl +0 -0
  30. package/tests/ssl/ca/ca.crt +17 -0
  31. package/tests/ssl/ca/ca.csr +13 -0
  32. package/tests/ssl/ca/ca.key +18 -0
  33. package/tests/ssl/ca/ca.srl +1 -0
  34. package/tests/ssl/ca/client-enc.key +30 -0
  35. package/tests/ssl/ca/client.cnf +20 -0
  36. package/tests/ssl/ca/client.crt +20 -0
  37. package/tests/ssl/ca/client.csr +18 -0
  38. package/tests/ssl/ca/client.key +27 -0
  39. package/tests/ssl/ca/gen-all-certs.sh +6 -0
  40. package/tests/ssl/ca/gen-client.sh +25 -0
  41. package/tests/ssl/ca/gen-localhost.sh +22 -0
  42. package/tests/ssl/ca/gen-server.sh +18 -0
  43. package/tests/ssl/ca/localhost.cnf +20 -0
  44. package/tests/ssl/ca/localhost.crt +20 -0
  45. package/tests/ssl/ca/localhost.csr +18 -0
  46. package/tests/ssl/ca/localhost.js +33 -0
  47. package/tests/ssl/ca/localhost.key +27 -0
  48. package/tests/ssl/ca/server.cnf +19 -0
  49. package/tests/ssl/ca/server.crt +25 -0
  50. package/tests/ssl/ca/server.csr +29 -0
  51. package/tests/ssl/ca/server.js +34 -0
  52. package/tests/ssl/ca/server.key +51 -0
  53. package/tests/ssl/npm-ca.crt +16 -0
  54. package/tests/ssl/test.crt +15 -0
  55. package/tests/ssl/test.key +15 -0
  56. package/tests/test-agent.js +102 -0
  57. package/tests/test-agentOptions.js +51 -0
  58. package/tests/test-api.js +33 -0
  59. package/tests/test-aws.js +123 -0
  60. package/tests/test-baseUrl.js +133 -0
  61. package/tests/test-basic-auth.js +221 -0
  62. package/tests/test-bearer-auth.js +187 -0
  63. package/tests/test-body.js +154 -0
  64. package/tests/test-cookies.js +130 -0
  65. package/tests/test-defaults.js +340 -0
  66. package/tests/test-digest-auth.js +232 -0
  67. package/tests/test-emptyBody.js +56 -0
  68. package/tests/test-errors.js +108 -0
  69. package/tests/test-event-forwarding.js +39 -0
  70. package/tests/test-follow-all-303.js +45 -0
  71. package/tests/test-follow-all.js +57 -0
  72. package/tests/test-form-data-error.js +85 -0
  73. package/tests/test-form-data.js +133 -0
  74. package/tests/test-form-urlencoded.js +73 -0
  75. package/tests/test-form.js +101 -0
  76. package/tests/test-gzip.js +296 -0
  77. package/tests/test-har.js +175 -0
  78. package/tests/test-hawk.js +187 -0
  79. package/tests/test-headers.js +305 -0
  80. package/tests/test-http-signature.js +110 -0
  81. package/tests/test-httpModule.js +112 -0
  82. package/tests/test-https.js +116 -0
  83. package/tests/test-isUrl.js +120 -0
  84. package/tests/test-json-request.js +117 -0
  85. package/tests/test-localAddress.js +49 -0
  86. package/tests/test-multipart-encoding.js +147 -0
  87. package/tests/test-multipart.js +129 -0
  88. package/tests/test-node-debug.js +95 -0
  89. package/tests/test-oauth.js +721 -0
  90. package/tests/test-onelineproxy.js +61 -0
  91. package/tests/test-option-reuse.js +54 -0
  92. package/tests/test-options-convenience-method.js +52 -0
  93. package/tests/test-params.js +101 -0
  94. package/tests/test-piped-redirect.js +55 -0
  95. package/tests/test-pipes.js +383 -0
  96. package/tests/test-pool.js +148 -0
  97. package/tests/test-promise.js +53 -0
  98. package/tests/test-proxy-connect.js +80 -0
  99. package/tests/test-proxy.js +304 -0
  100. package/tests/test-qs.js +135 -0
  101. package/tests/test-redirect-auth.js +131 -0
  102. package/tests/test-redirect-complex.js +93 -0
  103. package/tests/test-redirect.js +449 -0
  104. package/tests/test-rfc3986.js +106 -0
  105. package/tests/test-stream.js +36 -0
  106. package/tests/test-timeout.js +260 -0
  107. package/tests/test-timing.js +147 -0
  108. package/tests/test-toJSON.js +45 -0
  109. package/tests/test-tunnel.js +466 -0
  110. package/tests/test-unix.js +74 -0
  111. package/tests/unicycle.jpg +0 -0
  112. package/request.js +0 -1553
  113. package/src/ZlibTransform.js +0 -27
  114. package/src/caseless.js +0 -118
  115. package/src/index.js +0 -122
  116. package/src/request.js +0 -967
  117. package/src/utils.js +0 -274
@@ -0,0 +1,142 @@
1
+ 'use strict'
2
+
3
+ var fs = require('fs')
4
+ var http = require('http')
5
+ var path = require('path')
6
+ var https = require('https')
7
+ var stream = require('stream')
8
+ var assert = require('assert')
9
+
10
+ exports.createServer = function () {
11
+ var s = http.createServer(function (req, resp) {
12
+ s.emit(req.url.replace(/(\?.*)/, ''), req, resp)
13
+ })
14
+ s.on('listening', function () {
15
+ s.port = this.address().port
16
+ s.url = 'http://localhost:' + s.port
17
+ })
18
+ s.port = 0
19
+ s.protocol = 'http'
20
+ return s
21
+ }
22
+
23
+ exports.createEchoServer = function () {
24
+ var s = http.createServer(function (req, resp) {
25
+ var b = ''
26
+ req.on('data', function (chunk) { b += chunk })
27
+ req.on('end', function () {
28
+ resp.writeHead(200, {'content-type': 'application/json'})
29
+ resp.write(JSON.stringify({
30
+ url: req.url,
31
+ method: req.method,
32
+ headers: req.headers,
33
+ body: b
34
+ }))
35
+ resp.end()
36
+ })
37
+ })
38
+ s.on('listening', function () {
39
+ s.port = this.address().port
40
+ s.url = 'http://localhost:' + s.port
41
+ })
42
+ s.port = 0
43
+ s.protocol = 'http'
44
+ return s
45
+ }
46
+
47
+ exports.createSSLServer = function (opts) {
48
+ var i
49
+ var options = { 'key': path.join(__dirname, 'ssl', 'test.key'), 'cert': path.join(__dirname, 'ssl', 'test.crt') }
50
+ if (opts) {
51
+ for (i in opts) {
52
+ options[i] = opts[i]
53
+ }
54
+ }
55
+
56
+ for (i in options) {
57
+ if (i !== 'requestCert' && i !== 'rejectUnauthorized' && i !== 'ciphers') {
58
+ options[i] = fs.readFileSync(options[i])
59
+ }
60
+ }
61
+
62
+ var s = https.createServer(options, function (req, resp) {
63
+ s.emit(req.url, req, resp)
64
+ })
65
+ s.on('listening', function () {
66
+ s.port = this.address().port
67
+ s.url = 'https://localhost:' + s.port
68
+ })
69
+ s.port = 0
70
+ s.protocol = 'https'
71
+ return s
72
+ }
73
+
74
+ exports.createPostStream = function (text) {
75
+ var postStream = new stream.Stream()
76
+ postStream.writeable = true
77
+ postStream.readable = true
78
+ setTimeout(function () {
79
+ postStream.emit('data', Buffer.from(text))
80
+ postStream.emit('end')
81
+ }, 0)
82
+ return postStream
83
+ }
84
+ exports.createPostValidator = function (text, reqContentType) {
85
+ var l = function (req, resp) {
86
+ var r = ''
87
+ req.on('data', function (chunk) { r += chunk })
88
+ req.on('end', function () {
89
+ if (req.headers['content-type'] && req.headers['content-type'].indexOf('boundary=') >= 0) {
90
+ var boundary = req.headers['content-type'].split('boundary=')[1]
91
+ text = text.replace(/__BOUNDARY__/g, boundary)
92
+ }
93
+ assert.equal(r, text)
94
+ if (reqContentType) {
95
+ assert.ok(req.headers['content-type'])
96
+ assert.ok(~req.headers['content-type'].indexOf(reqContentType))
97
+ }
98
+ resp.writeHead(200, {'content-type': 'text/plain'})
99
+ resp.write(r)
100
+ resp.end()
101
+ })
102
+ }
103
+ return l
104
+ }
105
+ exports.createPostJSONValidator = function (value, reqContentType) {
106
+ var l = function (req, resp) {
107
+ var r = ''
108
+ req.on('data', function (chunk) { r += chunk })
109
+ req.on('end', function () {
110
+ var parsedValue = JSON.parse(r)
111
+ assert.deepEqual(parsedValue, value)
112
+ if (reqContentType) {
113
+ assert.ok(req.headers['content-type'])
114
+ assert.ok(~req.headers['content-type'].indexOf(reqContentType))
115
+ }
116
+ resp.writeHead(200, {'content-type': 'application/json'})
117
+ resp.write(r)
118
+ resp.end()
119
+ })
120
+ }
121
+ return l
122
+ }
123
+ exports.createGetResponse = function (text, contentType) {
124
+ var l = function (req, resp) {
125
+ contentType = contentType || 'text/plain'
126
+ resp.writeHead(200, {'content-type': contentType})
127
+ resp.write(text)
128
+ resp.end()
129
+ }
130
+ return l
131
+ }
132
+ exports.createChunkResponse = function (chunks, contentType) {
133
+ var l = function (req, resp) {
134
+ contentType = contentType || 'text/plain'
135
+ resp.writeHead(200, {'content-type': contentType})
136
+ chunks.forEach(function (chunk) {
137
+ resp.write(chunk)
138
+ })
139
+ resp.end()
140
+ }
141
+ return l
142
+ }
@@ -0,0 +1,76 @@
1
+ #
2
+ # Recommended minimum configuration:
3
+ #
4
+ acl localhost src 127.0.0.1/32 ::1
5
+ acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
6
+
7
+ # Example rule allowing access from your local networks.
8
+ # Adapt to list your (internal) IP networks from where browsing
9
+ # should be allowed
10
+ acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
11
+ acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
12
+ acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
13
+ acl localnet src fc00::/7 # RFC 4193 local private network range
14
+ acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
15
+
16
+ acl SSL_ports port 443
17
+ acl Safe_ports port 80 # http
18
+ acl Safe_ports port 21 # ftp
19
+ acl Safe_ports port 443 # https
20
+ acl Safe_ports port 70 # gopher
21
+ acl Safe_ports port 210 # wais
22
+ acl Safe_ports port 1025-65535 # unregistered ports
23
+ acl Safe_ports port 280 # http-mgmt
24
+ acl Safe_ports port 488 # gss-http
25
+ acl Safe_ports port 591 # filemaker
26
+ acl Safe_ports port 777 # multiling http
27
+ acl CONNECT method CONNECT
28
+
29
+ #
30
+ # Recommended minimum Access Permission configuration:
31
+ #
32
+ # Only allow cachemgr access from localhost
33
+ http_access allow manager localhost
34
+ http_access deny manager
35
+
36
+ # Deny requests to certain unsafe ports
37
+ http_access deny !Safe_ports
38
+
39
+ # Deny CONNECT to other than secure SSL ports
40
+ #http_access deny CONNECT !SSL_ports
41
+
42
+ # We strongly recommend the following be uncommented to protect innocent
43
+ # web applications running on the proxy server who think the only
44
+ # one who can access services on "localhost" is a local user
45
+ #http_access deny to_localhost
46
+
47
+ #
48
+ # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
49
+ #
50
+
51
+ # Example rule allowing access from your local networks.
52
+ # Adapt localnet in the ACL section to list your (internal) IP networks
53
+ # from where browsing should be allowed
54
+ http_access allow localnet
55
+ http_access allow localhost
56
+
57
+ # And finally deny all other access to this proxy
58
+ http_access deny all
59
+
60
+ # Squid normally listens to port 3128
61
+ http_port 3128
62
+
63
+ # We recommend you to use at least the following line.
64
+ hierarchy_stoplist cgi-bin ?
65
+
66
+ # Uncomment and adjust the following to add a disk cache directory.
67
+ #cache_dir ufs /usr/local/var/cache 100 16 256
68
+
69
+ # Leave coredumps in the first cache dir
70
+ coredump_dir /usr/local/var/cache
71
+
72
+ # Add any of your own refresh_pattern entries above these.
73
+ refresh_pattern ^ftp: 1440 20% 10080
74
+ refresh_pattern ^gopher: 1440 0% 1440
75
+ refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
76
+ refresh_pattern . 0 20% 4320
@@ -0,0 +1,8 @@
1
+ # Generating SSL Certs for tests
2
+
3
+ Certs are generated for TLS tests. The localhost, client and server certs for use in test are generated by running;
4
+ ```
5
+ ./gen-all-certs.sh
6
+ ```
7
+
8
+ They should last 10 years, but can be updated at any time.
@@ -0,0 +1,20 @@
1
+ [ req ]
2
+ default_bits = 1024
3
+ days = 3650
4
+ distinguished_name = req_distinguished_name
5
+ attributes = req_attributes
6
+ prompt = no
7
+ output_password = password
8
+
9
+ [ req_distinguished_name ]
10
+ C = US
11
+ ST = CA
12
+ L = Oakland
13
+ O = request
14
+ OU = request Certificate Authority
15
+ CN = requestCA
16
+ emailAddress = mikeal@mikealrogers.com
17
+
18
+ [ req_attributes ]
19
+ challengePassword = password challenge
20
+
File without changes
@@ -0,0 +1,17 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIICvTCCAiYCCQDn+P/MSbDsWjANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC
3
+ VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1
4
+ ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG
5
+ A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n
6
+ ZXJzLmNvbTAeFw0xMjAzMDEyMjUwNTZaFw0yMjAyMjcyMjUwNTZaMIGiMQswCQYD
7
+ VQQGEwJVUzELMAkGA1UECBMCQ0ExEDAOBgNVBAcTB09ha2xhbmQxEDAOBgNVBAoT
8
+ B3JlcXVlc3QxJjAkBgNVBAsTHXJlcXVlc3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
9
+ MRIwEAYDVQQDEwlyZXF1ZXN0Q0ExJjAkBgkqhkiG9w0BCQEWF21pa2VhbEBtaWtl
10
+ YWxyb2dlcnMuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC7t9pQUAK4
11
+ 5XJYTI6NrF0n3G2HZsfN+rPYSVzzL8SuVyb1tHXos+vbPm3NKI4E8X1yVAXU8CjJ
12
+ 5SqXnp4DAypAhaseho81cbhk7LXUhFz78OvAa+OD+xTAEAnNQ8tGUr4VGyplEjfD
13
+ xsBVuqV2j8GPNTftr+drOCFlqfAgMrBn4wIDAQABMA0GCSqGSIb3DQEBBQUAA4GB
14
+ ADVdTlVAL45R+PACNS7Gs4o81CwSclukBu4FJbxrkd4xGQmurgfRrYYKjtqiopQm
15
+ D7ysRamS3HMN9/VKq2T7r3z1PMHPAy7zM4uoXbbaTKwlnX4j/8pGPn8Ca3qHXYlo
16
+ 88L/OOPc6Di7i7qckS3HFbXQCTiULtxWmy97oEuTwrAj
17
+ -----END CERTIFICATE-----
@@ -0,0 +1,13 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIICBjCCAW8CAQAwgaIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEQMA4GA1UE
3
+ BxMHT2FrbGFuZDEQMA4GA1UEChMHcmVxdWVzdDEmMCQGA1UECxMdcmVxdWVzdCBD
4
+ ZXJ0aWZpY2F0ZSBBdXRob3JpdHkxEjAQBgNVBAMTCXJlcXVlc3RDQTEmMCQGCSqG
5
+ SIb3DQEJARYXbWlrZWFsQG1pa2VhbHJvZ2Vycy5jb20wgZ8wDQYJKoZIhvcNAQEB
6
+ BQADgY0AMIGJAoGBALu32lBQArjlclhMjo2sXSfcbYdmx836s9hJXPMvxK5XJvW0
7
+ deiz69s+bc0ojgTxfXJUBdTwKMnlKpeengMDKkCFqx6GjzVxuGTstdSEXPvw68Br
8
+ 44P7FMAQCc1Dy0ZSvhUbKmUSN8PGwFW6pXaPwY81N+2v52s4IWWp8CAysGfjAgMB
9
+ AAGgIzAhBgkqhkiG9w0BCQcxFBMScGFzc3dvcmQgY2hhbGxlbmdlMA0GCSqGSIb3
10
+ DQEBBQUAA4GBAGJO7grHeVHXetjHEK8urIxdnvfB2qeZeObz4GPKIkqUurjr0rfj
11
+ bA3EK1kDMR5aeQWR8RunixdM16Q6Ry0lEdLVWkdSwRN9dmirIHT9cypqnD/FYOia
12
+ SdezZ0lUzXgmJIwRYRwB1KSMMocIf52ll/xC2bEGg7/ZAEuAyAgcZV3X
13
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: DES-EDE3-CBC,C8B5887048377F02
4
+
5
+ nyD5ZH0Wup2uWsDvurq5mKDaDrf8lvNn9w0SH/ZkVnfR1/bkwqrFriqJWvZNUG+q
6
+ nS0iBYczsWLJnbub9a1zLOTENWUKVD5uqbC3aGHhnoUTNSa27DONgP8gHOn6JgR+
7
+ GAKo01HCSTiVT4LjkwN337QKHnMP2fTzg+IoC/CigvMcq09hRLwU1/guq0GJKGwH
8
+ gTxYNuYmQC4Tjh8vdS4liF+Ve/P3qPR2CehZrIOkDT8PHJBGQJRo4xGUIB7Tpk38
9
+ VCk+UZ0JCS2coY8VkY/9tqFJp/ZnnQQVmaNbdRqg7ECKL+bXnNo7yjzmazPZmPe3
10
+ /ShbE0+CTt7LrjCaQAxWbeDzqfo1lQfgN1LulTm8MCXpQaJpv7v1VhIhQ7afjMYb
11
+ 4thW/ypHPiYS2YJCAkAVlua9Oxzzh1qJoh8Df19iHtpd79Q77X/qf+1JvITlMu0U
12
+ gi7yEatmQcmYNws1mtTC1q2DXrO90c+NZ0LK/Alse6NRL/xiUdjug2iHeTf/idOR
13
+ Gg/5dSZbnnlj1E5zjSMDkzg6EHAFmHV4jYGSAFLEQgp4V3ZhMVoWZrvvSHgKV/Qh
14
+ FqrAK4INr1G2+/QTd09AIRzfy3/j6yD4A9iNaOsEf9Ua7Qh6RcALRCAZTWR5QtEf
15
+ dX+iSNJ4E85qXs0PqwkMDkoaxIJ+tmIRJY7y8oeylV8cfGAi8Soubt/i3SlR8IHC
16
+ uDMas/2OnwafK3N7ODeE1i7r7wkzQkSHaEz0TrF8XRnP25jAICCSLiMdAAjKfxVb
17
+ EvzsFSuAy3Jt6bU3hSLY9o4YVYKE+68ITMv9yNjvTsEiW+T+IbN34w==
18
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1 @@
1
+ ADF62016AA40C9C7
@@ -0,0 +1,30 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ Proc-Type: 4,ENCRYPTED
3
+ DEK-Info: AES-128-CBC,F383CD86ECED9F72E8A8A5671B9B478F
4
+
5
+ 0UwxIzEIrq2gNvP2M4S7ZlHKdZ9W69YyprT4tEVmauBYwZwwqLTdtsxZ7uWvPIiW
6
+ oJHUNCUlgZ0qiUJBEAl23YArUS8PJmPCA57t8MK/8mnuOi2ke/w9FAERcRNZu5U2
7
+ Ksxh8lUwyvwoFbsFuUkIJEAL7uRn6nhPZ2ftIp39k6oaP7TSuKHZCNUizQT4vHsl
8
+ l9zg0BWsK+ORtQcckaCu3o/AnX5r1kTRR0DXaaagN6fCgxcGDljPv1ByHqvH+Kkp
9
+ TjDbM7io+TOrjjfeoGV9EeeS4TJ0PRy9zouJRbeqnMqu1RUqhMGE2ey5MjXmU0EV
10
+ gHs30563fySFFfNS2ziV5v4ml+ar06wqFaYKEQmxYdjUpLuMDFP186bak+WZ7OAe
11
+ NQpdgdfLCB9OmAOMFlnNKEsMo145ChlpEEhcwtX9nYJlrDU9wvHm0AvFl1hMW11B
12
+ 7I9G8B/XyPM/i92hmcwAtgd1A+90G1mWg0HjkQmzaOkGcYFVK+nlEyNleZI5I9CM
13
+ Eelu0kBuibCSKztMoWmAKJEXUHtCvGCpCauvr+GkwPV/7lT8D68HGtpynOEqHl5g
14
+ guTLzg0FxCOkpJgZapPiI77TxwbqJGnI8C5b1He1YyPkTHJNeP7lu4HJDbYEny5/
15
+ C+zSagaP+i4ffa00zeiVHRKlEhygsz6gdGY0phnB9sCQvK3VIsrBEqk4U4FP5w+K
16
+ L8JZJGDWmMwDl4mgVvSiRsDFTPCSfCd0FRmpZnlrVr4306qvkz/1aBE86y0bjZfk
17
+ EcJTWnXVf09J0YbnCHGblNi8MwRi7MCoqmGXHGTxwmpB0gdXuUJCigmm8xSMRqSr
18
+ To8La6apf/QujfSHcxBXnf8JCFO6v59SUMDhx2oce/gYRTejx7L+f/UhVo4EvRF6
19
+ W92pNDCkjeJKU2nNwsV/HeAJml81xxCYQA80PsVMu/27inkDSSP4egapcXr0T1OV
20
+ ic+VTR4Tl3g9hI4YBL43+hsJWaxVMpT022ZB6bcTgYFTDQcoAwilOoadF+rVxer/
21
+ ry8ORowY5GRH+zlLE3zetn87EAijwux2/QhnGE3eDFc0FbI008wzRQwhqV/S22yF
22
+ XYKh5ni5Xg2tguUMuBC8hr9xjpUe3nP7u/W45f/0BCE6eeJzXTunMWTrBCigMzEq
23
+ 7OvmIhz7sqb18NC68z4Fj5vmpSqf8//RCyE7Sk0pX7VgSIKX92qopqi/5yroQwFf
24
+ jLanlxi4QRBLTBJoXnm+I5kh6dEbV0OaUskKwXqW5T2wAgOx5O6TTK+ZeFGyLSMW
25
+ eJY6UnT/6vWAY10O5JiieRbzBaGGJgAQ1fTZYs16F3kbKYR9YvrQKi0ACo2pkYs8
26
+ 1FvblxhmpMNRjpvOSpb+71vVgk8hD/v5XaVvVC4Wrm6gnsjlNZD0vQjcOWs1Q/a/
27
+ jWKeB/gTUMIa5CWdzNRvSq2Cvgu5FJYf5qIdii7+FOgDv5VKgUugP5ZHHDQ1iwMZ
28
+ o8NfMheG2x5ottq1m7VFS8IB+pWjJfsxSFtybJ8rdHzlbmEQyPzWYCWIQXPVvpNs
29
+ oBm36btgWMrzQTjDrt+WKhkuau0NacTZqjugpCJKimBQ/lLYiuxjItUoWKn0mQO4
30
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,20 @@
1
+ [ req ]
2
+ default_bits = 1024
3
+ days = 3650
4
+ distinguished_name = req_distinguished_name
5
+ attributes = req_attributes
6
+ prompt = no
7
+ output_password = password
8
+
9
+ [ req_distinguished_name ]
10
+ C = US
11
+ ST = CA
12
+ L = Oakland
13
+ O = request
14
+ OU = request@localhost
15
+ CN = TestClient
16
+ emailAddress = do.not@email.me
17
+
18
+ [ req_attributes ]
19
+ challengePassword = password challenge
20
+
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDLjCCApcCCQCt9iAWqkDJxzANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC
3
+ VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1
4
+ ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG
5
+ A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n
6
+ ZXJzLmNvbTAeFw0xODExMjIxNTIzMjNaFw0yMTExMjExNTIzMjNaMIGPMQswCQYD
7
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExEDAOBgNVBAcMB09ha2xhbmQxEDAOBgNVBAoM
8
+ B3JlcXVlc3QxGjAYBgNVBAsMEXJlcXVlc3RAbG9jYWxob3N0MRMwEQYDVQQDDApU
9
+ ZXN0Q2xpZW50MR4wHAYJKoZIhvcNAQkBFg9kby5ub3RAZW1haWwubWUwggEiMA0G
10
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFNIUKI5I/cOYMv7dYJzPMNEpd9d80
11
+ lXueDWOtFflpKpnt3ssCk+pFIxlbnlBnFl1CIkpjAY9pqB4WoGpDARkkW0RqVleZ
12
+ mlxBRMwfkzzTriURb0PtB7P7iRp+lcr+uraJg4sP9xEpZbq/CO1q584EQmiANVL3
13
+ NAPdXf2kP91lUy+F5gZgZqkuPtDRXk1jqxTswRLqBmP5ublM/b9ZQS2Jmih7rVL4
14
+ FiTo6E2DdjSYiZ1cQKSBw3rFWhiFLe3R2BjqK+/uD/hDdcT9sEtdqxLyLqFFBKLa
15
+ cYcHcnZOMaohmN8vup26D199r5VP6cJvAh93XfxpCiNDl/S4KSCDq5G5AgMBAAEw
16
+ DQYJKoZIhvcNAQEFBQADgYEAjINjRQxACmbp77ymVwaiUiy9YXbXLSsu8auZYDlu
17
+ LqiZMIjm6hOOHZPlCC7QXBBRyUKXQnRC4+mOxWfcMwEztYqrX51fP/hVB0aF7hXg
18
+ hcn0Ge65N9P8Kby6k/2ha/NQW7I17Sgg1PrvN5BkDFnZBrhNwZbzWwxwezifUwob
19
+ ITQ=
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIIC+DCCAeACAQAwgY8xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEQMA4GA1UE
3
+ BwwHT2FrbGFuZDEQMA4GA1UECgwHcmVxdWVzdDEaMBgGA1UECwwRcmVxdWVzdEBs
4
+ b2NhbGhvc3QxEzARBgNVBAMMClRlc3RDbGllbnQxHjAcBgkqhkiG9w0BCQEWD2Rv
5
+ Lm5vdEBlbWFpbC5tZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMU0
6
+ hQojkj9w5gy/t1gnM8w0Sl313zSVe54NY60V+Wkqme3eywKT6kUjGVueUGcWXUIi
7
+ SmMBj2moHhagakMBGSRbRGpWV5maXEFEzB+TPNOuJRFvQ+0Hs/uJGn6Vyv66tomD
8
+ iw/3ESllur8I7WrnzgRCaIA1Uvc0A91d/aQ/3WVTL4XmBmBmqS4+0NFeTWOrFOzB
9
+ EuoGY/m5uUz9v1lBLYmaKHutUvgWJOjoTYN2NJiJnVxApIHDesVaGIUt7dHYGOor
10
+ 7+4P+EN1xP2wS12rEvIuoUUEotpxhwdydk4xqiGY3y+6nboPX32vlU/pwm8CH3dd
11
+ /GkKI0OX9LgpIIOrkbkCAwEAAaAjMCEGCSqGSIb3DQEJBzEUDBJwYXNzd29yZCBj
12
+ aGFsbGVuZ2UwDQYJKoZIhvcNAQELBQADggEBALppUGqe3AVfnD28k8SPXI8LMl16
13
+ 0VJWabujQVe1ycDZb/T+9Lcy5Xc6PKhn2yb4da/f528j3M1DsOafTUk+aqOaKHce
14
+ o83TCZEdysKjntKQHTBWFT1lf1iOSsD7mT1GOaFmmc81Z6pUUjN8WNk7ybfPoLfb
15
+ b+MNKkEqVVw1Ta/TeKGbc+K4Xi/T7VAAP2pJRY9ftrjDm1nciGJHu9NGyjAc8TQB
16
+ YabIRAD7sdZkOWR0RSk06gJDqQGNqhn0tjzruDRdrtv5l1UiSPrrnyTOd75mZwXj
17
+ LFs5qIQT5W/LRLJ4BkW3YNSiwFJxQ8a4DddYhkd+CadefQtRdgEI3+GhNcQ=
18
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAxTSFCiOSP3DmDL+3WCczzDRKXfXfNJV7ng1jrRX5aSqZ7d7L
3
+ ApPqRSMZW55QZxZdQiJKYwGPaageFqBqQwEZJFtEalZXmZpcQUTMH5M8064lEW9D
4
+ 7Qez+4kafpXK/rq2iYOLD/cRKWW6vwjtaufOBEJogDVS9zQD3V39pD/dZVMvheYG
5
+ YGapLj7Q0V5NY6sU7MES6gZj+bm5TP2/WUEtiZooe61S+BYk6OhNg3Y0mImdXECk
6
+ gcN6xVoYhS3t0dgY6ivv7g/4Q3XE/bBLXasS8i6hRQSi2nGHB3J2TjGqIZjfL7qd
7
+ ug9ffa+VT+nCbwIfd138aQojQ5f0uCkgg6uRuQIDAQABAoIBAF062haUAIT7k9a9
8
+ ICmNxwAoTGwlXBOZA+sRu2jNta7RVBpPtLwQP7XVxRw6ORqzSP2GBpLN3wX9U9Qw
9
+ nGv27fLxLuPy09ErV6gHpVTcH+qXLrESYBOEC8PD6oGjwWcx0DAsvyaaEEP48xNz
10
+ XgKneg8rcgoCq6lwrs8Nq2bmRn2qw6pnecQRt/xuJMMn83UforHyiH5Xy+WFart9
11
+ 5Oz4VJmngOzd/dRXuziCmfDpJnCYP7YPbG+ATbsWR9BhGoO4x0cxZP73lQKMc9l/
12
+ tPo+42rtJCjhHoqZaBVzQmY9kWrb5ItF6Nma11M5Uf0YsEM7XbsWw1gfOeJvVIPw
13
+ Q3w3NQECgYEA9wm4QQjtrCvBjkMwY4tkegD3F3SgVDwxqGco3ZJlLK4JX4oHH8oC
14
+ P5vMXjy+3SigFNeTVo3MKNkADimkQ1E3R2ar07S31fBHAW7ymeZbK3ixJgB55JEk
15
+ pBWT6vgBtZQfW0DfdVIAQz8rZlcqNrGBp2ZlgKKswy2HIVTwXU9UXiECgYEAzFv+
16
+ rDPOp4pK0LPeDwSDUflasq7Dc52xcWfYupajAvK/4pzeDr07Frv8gh+EhhCp4kwN
17
+ YtmHJ0KfE0R4Ijh8LH5MNhl2YBhTCqp3NZf3jhdiPTDRHMNfUq5aUbercU5Yi1W/
18
+ FrqBeTbid1k7tHV/EqwWqcYQBVdFuSjuUkA1UJkCgYEA4UT5wkRUBzZ3cDUQwRVx
19
+ cFfE+pydP3MMjVZUy4gdvpqNbZO+X1ykpEB8IkseeSn8oETc1IbFb1JCXKfYZJKA
20
+ 6BlWAt2+7dYHyeTUUUbgSEnssIyqmqVIVmBe3Ft/o4cI+Pu1SZSXLLtD5jUCB5Hi
21
+ ezZCxQSSqgCwQtLjxRL8CkECgYEAwI6OUUQfnM454J0ax5vBASSryWHS2MXlxK3N
22
+ EUOPJeAF3klhExJK8wj+zL1V6d0ZthljI5lEOEIWEdmaOORwXJxEw1UKrVE+Lfah
23
+ jOY8ZK6z6mRtJWUSFJ4kjIs8B++Cjwekno3uIYENstdp4ogzzCxKzn3J6r5o/CcN
24
+ KINHuUECgYB82O06BuRuSWYYM3qHxgo4bKqIQYHZKI528p90bMSyTH7M2sXcGR+z
25
+ ADcs1Ald0acyJkI4IpzBs+YK+WVihQKuSh69YGKKru0xq0hONN8j2pgphVDS0hbk
26
+ bMzyxx1QHK9cRVAXFdiqeQ36U3f70enItxXvOYGwWGvD5v7bCpYuCA==
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,6 @@
1
+ #!/bin/sh
2
+ set -ex
3
+
4
+ ./gen-server.sh
5
+ ./gen-client.sh
6
+ ./gen-localhost.sh
@@ -0,0 +1,25 @@
1
+ #!/bin/sh
2
+ set -ex
3
+
4
+ # Adapted from:
5
+ # http://nodejs.org/api/tls.html
6
+ # https://github.com/joyent/node/blob/master/test/fixtures/keys/Makefile
7
+
8
+ # Create a private key
9
+ openssl genrsa -out client.key 2048
10
+
11
+ # Create a certificate signing request
12
+ openssl req -new -sha256 -key client.key -out client.csr -config client.cnf -days 1095
13
+
14
+ # Use the CSR and the CA key (previously generated) to create a certificate
15
+ openssl x509 -req \
16
+ -in client.csr \
17
+ -CA ca.crt \
18
+ -CAkey ca.key \
19
+ -set_serial 0x`cat ca.srl` \
20
+ -passin 'pass:password' \
21
+ -out client.crt \
22
+ -days 1095
23
+
24
+ # Encrypt with password
25
+ openssl rsa -aes128 -in client.key -out client-enc.key -passout 'pass:password'
@@ -0,0 +1,22 @@
1
+ #!/bin/sh
2
+ set -ex
3
+
4
+ # Adapted from:
5
+ # http://nodejs.org/api/tls.html
6
+ # https://github.com/joyent/node/blob/master/test/fixtures/keys/Makefile
7
+
8
+ # Create a private key
9
+ openssl genrsa -out localhost.key 2048
10
+
11
+ # Create a certificate signing request
12
+ openssl req -new -sha256 -key localhost.key -out localhost.csr -config localhost.cnf -days 1095
13
+
14
+ # Use the CSR and the CA key (previously generated) to create a certificate
15
+ openssl x509 -req \
16
+ -in localhost.csr \
17
+ -CA ca.crt \
18
+ -CAkey ca.key \
19
+ -set_serial 0x`cat ca.srl` \
20
+ -passin 'pass:password' \
21
+ -out localhost.crt \
22
+ -days 3650
@@ -0,0 +1,18 @@
1
+ #!/bin/sh
2
+ set -ex
3
+ # fixes:
4
+ # Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
5
+ # on Node > v10
6
+
7
+ openssl genrsa 4096 > server.key
8
+
9
+ openssl req -new -nodes -sha256 -key server.key -config server.cnf -out server.csr
10
+
11
+ openssl x509 -req \
12
+ -sha256 \
13
+ -in server.csr \
14
+ -CA ca.crt \
15
+ -CAkey ca.key \
16
+ -out server.crt \
17
+ -passin 'pass:password' \
18
+ -days 3650
@@ -0,0 +1,20 @@
1
+ [ req ]
2
+ default_bits = 1024
3
+ days = 3650
4
+ distinguished_name = req_distinguished_name
5
+ attributes = req_attributes
6
+ prompt = no
7
+ output_password = password
8
+
9
+ [ req_distinguished_name ]
10
+ C = US
11
+ ST = CA
12
+ L = Oakland
13
+ O = request
14
+ OU = request@localhost
15
+ CN = localhost
16
+ emailAddress = do.not@email.me
17
+
18
+ [ req_attributes ]
19
+ challengePassword = password challenge
20
+
@@ -0,0 +1,20 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDLTCCApYCCQCt9iAWqkDJxzANBgkqhkiG9w0BAQUFADCBojELMAkGA1UEBhMC
3
+ VVMxCzAJBgNVBAgTAkNBMRAwDgYDVQQHEwdPYWtsYW5kMRAwDgYDVQQKEwdyZXF1
4
+ ZXN0MSYwJAYDVQQLEx1yZXF1ZXN0IENlcnRpZmljYXRlIEF1dGhvcml0eTESMBAG
5
+ A1UEAxMJcmVxdWVzdENBMSYwJAYJKoZIhvcNAQkBFhdtaWtlYWxAbWlrZWFscm9n
6
+ ZXJzLmNvbTAeFw0xODExMjIxNTIzMjVaFw0yODExMTkxNTIzMjVaMIGOMQswCQYD
7
+ VQQGEwJVUzELMAkGA1UECAwCQ0ExEDAOBgNVBAcMB09ha2xhbmQxEDAOBgNVBAoM
8
+ B3JlcXVlc3QxGjAYBgNVBAsMEXJlcXVlc3RAbG9jYWxob3N0MRIwEAYDVQQDDAls
9
+ b2NhbGhvc3QxHjAcBgkqhkiG9w0BCQEWD2RvLm5vdEBlbWFpbC5tZTCCASIwDQYJ
10
+ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAPZ8A1Kgccmg3o/SNiGSNyIv7jyEZCYE
11
+ oJgiu6kkENIykHIN9iL+cjaCjDIOg7BGM9/IeERyM/EIy4hXIFecjkt0Zc12p8OS
12
+ UN94MBzyCyaFlDWxoneP17FFBgMD0/qDbYAYgwRE308TFlnA4rbI0g3f5/Ft7bhj
13
+ dd18Sw0/p0RoIdr7FezM5chSW62AwJ/QHEmjZt/VXzs1ITMG1549r5T1fngw5x+G
14
+ eTG1HagM6/CMrtLk0nXTDRR469A0n0ZgdXdSBnN3igSyVIy9gaUGjrXhs2GImnvL
15
+ LqzgYUSxVIopI9T0umbKGtoVp79RIU+P59di0ybtiAI8P1CElj0bpT8CAwEAATAN
16
+ BgkqhkiG9w0BAQUFAAOBgQAeTesuuLfnlqqVE0sq6kl+Va2MnJJSvgHuadCaSnr3
17
+ EvieJYiE5uydesI7nSBTs9z873RBFlLdAXx/FyShRSnVB/WaNZP9lb97oyWeTj21
18
+ q0nTXHSZFOb9nRdtwyLmX9L6EO2KAbNSxmAdt8ZJd2FZNahHXDEiNtwemzNVlkw8
19
+ bQ==
20
+ -----END CERTIFICATE-----
@@ -0,0 +1,18 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIIC9zCCAd8CAQAwgY4xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEQMA4GA1UE
3
+ BwwHT2FrbGFuZDEQMA4GA1UECgwHcmVxdWVzdDEaMBgGA1UECwwRcmVxdWVzdEBs
4
+ b2NhbGhvc3QxEjAQBgNVBAMMCWxvY2FsaG9zdDEeMBwGCSqGSIb3DQEJARYPZG8u
5
+ bm90QGVtYWlsLm1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9nwD
6
+ UqBxyaDej9I2IZI3Ii/uPIRkJgSgmCK7qSQQ0jKQcg32Iv5yNoKMMg6DsEYz38h4
7
+ RHIz8QjLiFcgV5yOS3RlzXanw5JQ33gwHPILJoWUNbGid4/XsUUGAwPT+oNtgBiD
8
+ BETfTxMWWcDitsjSDd/n8W3tuGN13XxLDT+nRGgh2vsV7MzlyFJbrYDAn9AcSaNm
9
+ 39VfOzUhMwbXnj2vlPV+eDDnH4Z5MbUdqAzr8Iyu0uTSddMNFHjr0DSfRmB1d1IG
10
+ c3eKBLJUjL2BpQaOteGzYYiae8surOBhRLFUiikj1PS6Zsoa2hWnv1EhT4/n12LT
11
+ Ju2IAjw/UISWPRulPwIDAQABoCMwIQYJKoZIhvcNAQkHMRQMEnBhc3N3b3JkIGNo
12
+ YWxsZW5nZTANBgkqhkiG9w0BAQsFAAOCAQEArDxFTCfg/ysXMYA9BOffqO4VCsw3
13
+ 7/4DEZtqvNIbRB2zLkzcAOUq/kwPr0pQ8AX1YjotAMIONI1R1Gr4ttlbUfbtqfOH
14
+ zk7d+wfYUKrUlqGCD0E0EKNRtn76lJD3r5CQtLbeAd3d+b5bpsHVYErsAyrWqkOx
15
+ gRnYmAX3vLDoXFZwp0L3577MJLEzjnV+uPrJVtF4I4wDxU7qoaC5wYE8oExE+2MA
16
+ POYO+6GYWOPnIViVGnkbZXlRkBufD9cLcMhKVSo2nfNiFqZm1+nTcf9EC8ILdqtb
17
+ JkMcBHNBje6KTC3Ue2vJkKg61hbVoj/MoYo63UeXA1ACOjvfnE8cMP4pjw==
18
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,33 @@
1
+ 'use strict'
2
+
3
+ var fs = require('fs')
4
+ var https = require('https')
5
+ var options = { key: fs.readFileSync('./localhost.key'),
6
+ cert: fs.readFileSync('./localhost.crt') }
7
+
8
+ var server = https.createServer(options, function (req, res) {
9
+ res.writeHead(200)
10
+ res.end()
11
+ server.close()
12
+ })
13
+ server.listen(0, function () {
14
+ var ca = fs.readFileSync('./ca.crt')
15
+ var agent = new https.Agent({
16
+ host: 'localhost',
17
+ port: this.address().port,
18
+ ca: ca
19
+ })
20
+
21
+ https.request({ host: 'localhost',
22
+ method: 'HEAD',
23
+ port: this.address().port,
24
+ agent: agent,
25
+ ca: [ ca ],
26
+ path: '/' }, function (res) {
27
+ if (res.socket.authorized) {
28
+ console.log('node test: OK')
29
+ } else {
30
+ throw new Error(res.socket.authorizationError)
31
+ }
32
+ }).end()
33
+ })
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpgIBAAKCAQEA9nwDUqBxyaDej9I2IZI3Ii/uPIRkJgSgmCK7qSQQ0jKQcg32
3
+ Iv5yNoKMMg6DsEYz38h4RHIz8QjLiFcgV5yOS3RlzXanw5JQ33gwHPILJoWUNbGi
4
+ d4/XsUUGAwPT+oNtgBiDBETfTxMWWcDitsjSDd/n8W3tuGN13XxLDT+nRGgh2vsV
5
+ 7MzlyFJbrYDAn9AcSaNm39VfOzUhMwbXnj2vlPV+eDDnH4Z5MbUdqAzr8Iyu0uTS
6
+ ddMNFHjr0DSfRmB1d1IGc3eKBLJUjL2BpQaOteGzYYiae8surOBhRLFUiikj1PS6
7
+ Zsoa2hWnv1EhT4/n12LTJu2IAjw/UISWPRulPwIDAQABAoIBAQDe5TyX/tGHdTtu
8
+ sbkT2MaU2uVEwrBSFQMpMNelWCECBInNKkT4VkLwelPPfIKn6IRGjWH8+41vHfX4
9
+ oFl2APRI1cSt7ew+FlWeEHDp7BQbTNa/S5jRKDn0a6fJGDAcrbdbDE+Gj8WlG2yt
10
+ 05jxlF8n/uAf2roLcZ4Hobu5CmP3nbEU7W0A2QOk9k4ClUz4nVICUqkC+1mkN5ID
11
+ ebNLaUkWWntViCqPo13j0pgCqRApdWHQ17cOCL7ghirQirM+eakexdS5Nf1uiQr0
12
+ +IiEy+f6db9VWwjUB/faaZ+1r2BeLUI980r1ZRJMlb3Z6BH0XCds2Uu3C3e73ncT
13
+ AZkc5b2ZAoGBAPwf1WmLSZYZaegVICco+17QIuvrD2jcy9w1Hk+B9F2zkyX2CV4g
14
+ jCQXuSXEnhEDX2wt6Rxti+F0JpC2WBrVBxuyE1kU+mOUaGDSvauyBjY4S8iOWnl7
15
+ IYR0jc1OlG0XBvEbAaHVWrET4aBcXE8eDF+6OKLLVDYUtzamcdc5ya7dAoGBAPpF
16
+ /CZHP/MX1c7wBTL04SSt+kLEwVir35PYeMSQA53uuZKIhg5KXioQj6fQst0KcsCo
17
+ nRzYAe6mXnHljsQMP+ffzCm4lWf5GdajcL0lDyQmC9EcKYlR+JsUBwK8V6remiEo
18
+ YJxXtUv0DRTlOOgragD/VcD2hRjBtsPzYvbuoCzLAoGBANoLFeAPa/Z5yBPEoWf8
19
+ k1huHKV3Rn5j5ZJuBeaw9wtKUEoWPAfBkjFsqty07Ba+mfnOwrmpK74xW2DvscaS
20
+ 0XDsUrtJ3znbkWGbIBmq/qBJk5DBPBGvoU8SFcim2sp1jbVaq9Cv2Z0nGow7FEIA
21
+ NKddP7naqtuSktianf2KppepAoGBAPE6/dTjfkdQ5Rwmi8xW7qANNZifz4EpgUIf
22
+ OCC2c1YKIUKVZyllEyhWeDEX3x9hj8QVggKoTgx6vbPowVhEOmDEfSSFrzTdjMMv
23
+ HF6j1tlP9rni/EJJCWhowG0pnxKqp0NoiN6JR81i+iz22IgoOG+nrT9mHloDdaef
24
+ 8/bxgOBLAoGBALMQ9GMCdm7wVOkPktz8enAkd2mt6+BHXtNgKaBvfWED7T+YEVtp
25
+ aw/0eSSnRh2RgnqVAw9HJOCGATecK/p/JrcTzbTYr1n7FzuXp7nX1eoi95sT5XLm
26
+ 7b0/4EdL9dXGQP5PXxgMZY/Vbk3TD5fdUxam4QpA1opl+rEOYO+GhMFo
27
+ -----END RSA PRIVATE KEY-----
@@ -0,0 +1,19 @@
1
+ [ req ]
2
+ default_bits = 1024
3
+ days = 3650
4
+ distinguished_name = req_distinguished_name
5
+ attributes = req_attributes
6
+ prompt = no
7
+
8
+ [ req_distinguished_name ]
9
+ C = US
10
+ ST = CA
11
+ L = Oakland
12
+ O = request
13
+ OU = testing
14
+ CN = testing.request.mikealrogers.com
15
+ emailAddress = mikeal@mikealrogers.com
16
+
17
+ [ req_attributes ]
18
+ challengePassword = password challenge
19
+