fsevents 1.0.11 → 1.0.17

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.

Potentially problematic release.


This version of fsevents might be problematic. Click here for more details.

Files changed (641) hide show
  1. package/.npmignore +1 -3
  2. package/.travis.yml +7 -5
  3. package/ISSUE_TEMPLATE.md +8 -0
  4. package/build/.target.mk +49 -0
  5. package/build/Makefile +352 -0
  6. package/build/action_after_build.target.mk +32 -0
  7. package/build/binding.Makefile +6 -0
  8. package/build/fse.target.mk +169 -0
  9. package/build/gyp-mac-tool +612 -0
  10. package/fsevents.cc +2 -2
  11. package/lib/binding/Release/node-v11-darwin-x64/fse.node +0 -0
  12. package/lib/binding/Release/node-v46-darwin-x64/fse.node +0 -0
  13. package/lib/binding/Release/node-v47-darwin-x64/fse.node +0 -0
  14. package/lib/binding/Release/node-v48-darwin-x64/fse.node +0 -0
  15. package/node_modules/{aws4/node_modules/lru-cache/node_modules/pseudomap → abbrev}/LICENSE +0 -0
  16. package/node_modules/{node-pre-gyp/node_modules/nopt/node_modules/abbrev → abbrev}/README.md +0 -0
  17. package/node_modules/{node-pre-gyp/node_modules/nopt/node_modules/abbrev → abbrev}/abbrev.js +0 -0
  18. package/node_modules/abbrev/package.json +90 -0
  19. package/node_modules/{lodash.repeat/LICENSE → ansi-regex/license} +5 -7
  20. package/node_modules/ansi-regex/package.json +47 -21
  21. package/node_modules/{lodash.padstart/LICENSE → ansi-styles/license} +5 -7
  22. package/node_modules/ansi-styles/package.json +44 -19
  23. package/node_modules/aproba/LICENSE +14 -0
  24. package/node_modules/aproba/README.md +59 -0
  25. package/node_modules/aproba/index.js +62 -0
  26. package/node_modules/aproba/package.json +96 -0
  27. package/node_modules/are-we-there-yet/package.json +31 -6
  28. package/node_modules/asn1/package.json +31 -5
  29. package/node_modules/assert-plus/package.json +33 -8
  30. package/node_modules/{node-uuid/LICENSE.md → asynckit/LICENSE} +1 -1
  31. package/node_modules/asynckit/README.md +233 -0
  32. package/node_modules/asynckit/bench.js +76 -0
  33. package/node_modules/asynckit/index.js +6 -0
  34. package/node_modules/asynckit/lib/abort.js +29 -0
  35. package/node_modules/asynckit/lib/async.js +34 -0
  36. package/node_modules/asynckit/lib/defer.js +26 -0
  37. package/node_modules/asynckit/lib/iterate.js +75 -0
  38. package/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  39. package/node_modules/asynckit/lib/readable_parallel.js +25 -0
  40. package/node_modules/asynckit/lib/readable_serial.js +25 -0
  41. package/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  42. package/node_modules/asynckit/lib/state.js +37 -0
  43. package/node_modules/asynckit/lib/streamify.js +141 -0
  44. package/node_modules/asynckit/lib/terminator.js +29 -0
  45. package/node_modules/asynckit/package.json +126 -0
  46. package/node_modules/asynckit/parallel.js +43 -0
  47. package/node_modules/asynckit/serial.js +17 -0
  48. package/node_modules/asynckit/serialOrdered.js +75 -0
  49. package/node_modules/asynckit/stream.js +21 -0
  50. package/node_modules/aws-sign2/package.json +31 -5
  51. package/node_modules/aws4/README.md +9 -0
  52. package/node_modules/aws4/aws4.js +9 -4
  53. package/node_modules/aws4/lru.js +96 -0
  54. package/node_modules/aws4/package.json +79 -56
  55. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion → balanced-match}/.npmignore +2 -0
  56. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/LICENSE.md +0 -0
  57. package/node_modules/{rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/README.md +5 -3
  58. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match → balanced-match}/index.js +9 -1
  59. package/node_modules/balanced-match/package.json +110 -0
  60. package/node_modules/bcrypt-pbkdf/README.md +39 -0
  61. package/node_modules/bcrypt-pbkdf/index.js +559 -0
  62. package/node_modules/bcrypt-pbkdf/package.json +72 -0
  63. package/node_modules/block-stream/package.json +47 -14
  64. package/node_modules/boom/package.json +30 -4
  65. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/README.md +0 -0
  66. package/node_modules/{rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion → brace-expansion}/index.js +10 -0
  67. package/node_modules/brace-expansion/package.json +112 -0
  68. package/node_modules/buffer-shims/index.js +108 -0
  69. package/node_modules/buffer-shims/license.md +19 -0
  70. package/node_modules/buffer-shims/package.json +86 -0
  71. package/node_modules/buffer-shims/readme.md +21 -0
  72. package/node_modules/caseless/package.json +34 -8
  73. package/node_modules/{lodash.pad/LICENSE → chalk/license} +5 -7
  74. package/node_modules/chalk/node_modules/supports-color/index.js +50 -0
  75. package/node_modules/chalk/node_modules/supports-color/license +21 -0
  76. package/node_modules/chalk/node_modules/supports-color/package.json +113 -0
  77. package/node_modules/chalk/node_modules/supports-color/readme.md +36 -0
  78. package/node_modules/chalk/package.json +47 -22
  79. package/node_modules/code-point-at/index.js +32 -0
  80. package/node_modules/code-point-at/license +21 -0
  81. package/node_modules/code-point-at/package.json +106 -0
  82. package/node_modules/code-point-at/readme.md +32 -0
  83. package/node_modules/combined-stream/package.json +31 -5
  84. package/node_modules/commander/History.md +261 -0
  85. package/node_modules/commander/LICENSE +22 -0
  86. package/node_modules/commander/package.json +32 -6
  87. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/.travis.yml +0 -0
  88. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/LICENSE +0 -0
  89. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/README.markdown +0 -0
  90. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/example/map.js +0 -0
  91. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/index.js +0 -0
  92. package/node_modules/{rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/package.json +47 -21
  93. package/node_modules/{fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → concat-map}/test/map.js +0 -0
  94. package/node_modules/console-control-strings/LICENSE +13 -0
  95. package/node_modules/console-control-strings/README.md +145 -0
  96. package/node_modules/console-control-strings/README.md~ +140 -0
  97. package/node_modules/console-control-strings/index.js +125 -0
  98. package/node_modules/console-control-strings/package.json +96 -0
  99. package/node_modules/core-util-is/package.json +38 -11
  100. package/node_modules/cryptiles/package.json +30 -4
  101. package/node_modules/dashdash/CHANGES.md +364 -0
  102. package/node_modules/dashdash/LICENSE.txt +24 -0
  103. package/node_modules/dashdash/etc/dashdash.bash_completion.in +4 -3
  104. package/node_modules/dashdash/lib/dashdash.js +34 -1
  105. package/node_modules/dashdash/node_modules/assert-plus/package.json +33 -8
  106. package/node_modules/dashdash/package.json +49 -23
  107. package/node_modules/debug/package.json +36 -10
  108. package/node_modules/deep-extend/CHANGELOG.md +21 -0
  109. package/node_modules/{rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map → deep-extend}/LICENSE +3 -1
  110. package/node_modules/deep-extend/package.json +40 -15
  111. package/node_modules/delayed-stream/package.json +31 -5
  112. package/node_modules/delegates/package.json +31 -6
  113. package/node_modules/ecc-jsbn/package.json +33 -7
  114. package/node_modules/escape-string-regexp/license +21 -0
  115. package/node_modules/escape-string-regexp/package.json +37 -12
  116. package/node_modules/extend/package.json +32 -6
  117. package/node_modules/extsprintf/package.json +30 -5
  118. package/node_modules/forever-agent/package.json +31 -5
  119. package/node_modules/form-data/README.md +7 -8
  120. package/node_modules/form-data/lib/browser.js +1 -1
  121. package/node_modules/form-data/lib/form_data.js +101 -72
  122. package/node_modules/form-data/lib/populate.js +6 -5
  123. package/node_modules/form-data/package.json +80 -47
  124. package/node_modules/fs.realpath/LICENSE +43 -0
  125. package/node_modules/fs.realpath/README.md +33 -0
  126. package/node_modules/fs.realpath/index.js +66 -0
  127. package/node_modules/fs.realpath/old.js +303 -0
  128. package/node_modules/fs.realpath/package.json +94 -0
  129. package/node_modules/fstream/.travis.yml +4 -4
  130. package/node_modules/fstream/lib/collect.js +2 -0
  131. package/node_modules/fstream/package.json +46 -16
  132. package/node_modules/fstream-ignore/package.json +54 -18
  133. package/node_modules/gauge/CHANGELOG.md +145 -0
  134. package/node_modules/gauge/README.md +321 -88
  135. package/node_modules/gauge/base-theme.js +14 -0
  136. package/node_modules/gauge/error.js +24 -0
  137. package/node_modules/gauge/has-color.js +12 -0
  138. package/node_modules/gauge/index.js +230 -0
  139. package/node_modules/gauge/package.json +82 -27
  140. package/node_modules/gauge/plumbing.js +47 -0
  141. package/node_modules/gauge/process.js +3 -0
  142. package/node_modules/gauge/progress-bar.js +29 -219
  143. package/node_modules/gauge/render-template.js +181 -0
  144. package/node_modules/gauge/set-immediate.js +7 -0
  145. package/node_modules/gauge/set-interval.js +3 -0
  146. package/node_modules/gauge/spin.js +5 -0
  147. package/node_modules/gauge/template-item.js +73 -0
  148. package/node_modules/gauge/theme-set.js +115 -0
  149. package/node_modules/gauge/themes.js +54 -0
  150. package/node_modules/gauge/wide-truncate.js +25 -0
  151. package/node_modules/generate-function/package.json +32 -6
  152. package/node_modules/generate-object-property/package.json +30 -4
  153. package/node_modules/getpass/.npmignore +8 -0
  154. package/node_modules/getpass/.travis.yml +9 -0
  155. package/node_modules/getpass/LICENSE +18 -0
  156. package/node_modules/getpass/README.md +32 -0
  157. package/node_modules/getpass/lib/index.js +123 -0
  158. package/node_modules/getpass/node_modules/assert-plus/AUTHORS +6 -0
  159. package/node_modules/getpass/node_modules/assert-plus/CHANGES.md +14 -0
  160. package/node_modules/getpass/node_modules/assert-plus/README.md +162 -0
  161. package/node_modules/getpass/node_modules/assert-plus/assert.js +211 -0
  162. package/node_modules/getpass/node_modules/assert-plus/package.json +115 -0
  163. package/node_modules/getpass/package.json +90 -0
  164. package/node_modules/{aws4/node_modules/lru-cache/node_modules/yallist → glob}/LICENSE +0 -0
  165. package/node_modules/{rimraf/node_modules/glob → glob}/README.md +3 -0
  166. package/node_modules/glob/changelog.md +67 -0
  167. package/node_modules/{rimraf/node_modules/glob → glob}/common.js +6 -1
  168. package/node_modules/{rimraf/node_modules/glob → glob}/glob.js +25 -15
  169. package/node_modules/glob/package.json +111 -0
  170. package/node_modules/{rimraf/node_modules/glob → glob}/sync.js +31 -12
  171. package/node_modules/graceful-fs/LICENSE +15 -0
  172. package/node_modules/graceful-fs/README.md +83 -3
  173. package/node_modules/graceful-fs/graceful-fs.js +23 -14
  174. package/node_modules/graceful-fs/package.json +50 -24
  175. package/node_modules/graceful-fs/polyfills.js +99 -21
  176. package/node_modules/graceful-readlink/package.json +30 -4
  177. package/node_modules/har-validator/LICENSE +13 -0
  178. package/node_modules/har-validator/package.json +32 -6
  179. package/node_modules/has-ansi/license +21 -0
  180. package/node_modules/has-ansi/package.json +45 -19
  181. package/node_modules/has-unicode/index.js +3 -8
  182. package/node_modules/has-unicode/package.json +50 -18
  183. package/node_modules/hawk/package.json +34 -8
  184. package/node_modules/hoek/package.json +30 -4
  185. package/node_modules/http-signature/package.json +30 -4
  186. package/node_modules/{rimraf/node_modules/glob/node_modules/inflight → inflight}/LICENSE +0 -0
  187. package/node_modules/{rimraf/node_modules/glob/node_modules/inflight → inflight}/README.md +0 -0
  188. package/node_modules/inflight/inflight.js +54 -0
  189. package/node_modules/inflight/package.json +105 -0
  190. package/node_modules/inherits/inherits.js +7 -1
  191. package/node_modules/inherits/package.json +53 -26
  192. package/node_modules/{node-pre-gyp/node_modules/nopt → ini}/LICENSE +0 -0
  193. package/node_modules/ini/package.json +32 -7
  194. package/node_modules/is-fullwidth-code-point/index.js +46 -0
  195. package/node_modules/is-fullwidth-code-point/license +21 -0
  196. package/node_modules/is-fullwidth-code-point/package.json +108 -0
  197. package/node_modules/is-fullwidth-code-point/readme.md +39 -0
  198. package/node_modules/is-my-json-valid/index.js +10 -0
  199. package/node_modules/is-my-json-valid/package.json +52 -19
  200. package/node_modules/is-my-json-valid/test/misc.js +24 -0
  201. package/node_modules/is-property/package.json +35 -9
  202. package/node_modules/is-typedarray/package.json +32 -6
  203. package/node_modules/isarray/package.json +44 -17
  204. package/node_modules/isstream/package.json +35 -9
  205. package/node_modules/jodid25519/package.json +33 -7
  206. package/node_modules/jsbn/package.json +30 -4
  207. package/node_modules/json-schema/lib/links.js +17 -3
  208. package/node_modules/json-schema/lib/validate.js +18 -5
  209. package/node_modules/json-schema/package.json +44 -12
  210. package/node_modules/json-stringify-safe/package.json +34 -8
  211. package/node_modules/jsonpointer/LICENSE.md +21 -0
  212. package/node_modules/jsonpointer/README.md +17 -10
  213. package/node_modules/jsonpointer/jsonpointer.js +73 -56
  214. package/node_modules/jsonpointer/package.json +57 -18
  215. package/node_modules/jsprim/CHANGES.md +9 -0
  216. package/node_modules/jsprim/README.md +13 -4
  217. package/node_modules/jsprim/lib/jsprim.js +12 -2
  218. package/node_modules/jsprim/package.json +44 -14
  219. package/node_modules/mime-db/HISTORY.md +55 -0
  220. package/node_modules/mime-db/db.json +139 -2
  221. package/node_modules/mime-db/package.json +56 -27
  222. package/node_modules/mime-types/HISTORY.md +19 -0
  223. package/node_modules/mime-types/index.js +8 -8
  224. package/node_modules/mime-types/package.json +48 -19
  225. package/node_modules/{node-pre-gyp/node_modules/nopt/node_modules/abbrev → minimatch}/LICENSE +0 -0
  226. package/node_modules/{fstream-ignore/node_modules/minimatch → minimatch}/README.md +2 -9
  227. package/node_modules/{rimraf/node_modules/glob/node_modules/minimatch → minimatch}/minimatch.js +34 -23
  228. package/node_modules/minimatch/package.json +98 -0
  229. package/node_modules/minimist/package.json +24 -16
  230. package/node_modules/mkdirp/package.json +25 -15
  231. package/node_modules/ms/History.md +66 -0
  232. package/node_modules/ms/package.json +29 -3
  233. package/node_modules/node-pre-gyp/CHANGELOG.md +37 -0
  234. package/node_modules/node-pre-gyp/README.md +34 -30
  235. package/node_modules/node-pre-gyp/appveyor.yml +20 -10
  236. package/node_modules/node-pre-gyp/lib/install.js +42 -8
  237. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +2 -0
  238. package/node_modules/node-pre-gyp/lib/testbinary.js +9 -9
  239. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +172 -0
  240. package/node_modules/node-pre-gyp/package.json +55 -57
  241. package/node_modules/{ansi → nopt}/.npmignore +0 -0
  242. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/.travis.yml +0 -0
  243. package/node_modules/{rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy → nopt}/LICENSE +0 -0
  244. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/README.md +0 -0
  245. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/bin/nopt.js +0 -0
  246. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/examples/my-program.js +0 -0
  247. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/lib/nopt.js +0 -0
  248. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/package.json +32 -6
  249. package/node_modules/{node-pre-gyp/node_modules/nopt → nopt}/test/basic.js +0 -0
  250. package/node_modules/npmlog/CHANGELOG.md +45 -0
  251. package/node_modules/npmlog/README.md +23 -2
  252. package/node_modules/npmlog/log.js +109 -58
  253. package/node_modules/npmlog/package.json +54 -20
  254. package/node_modules/number-is-nan/index.js +4 -0
  255. package/node_modules/number-is-nan/license +21 -0
  256. package/node_modules/number-is-nan/package.json +103 -0
  257. package/node_modules/number-is-nan/readme.md +28 -0
  258. package/node_modules/oauth-sign/package.json +47 -15
  259. package/node_modules/object-assign/index.js +83 -0
  260. package/node_modules/object-assign/license +21 -0
  261. package/node_modules/object-assign/package.json +114 -0
  262. package/node_modules/object-assign/readme.md +56 -0
  263. package/node_modules/{rimraf/node_modules/glob/node_modules/once/node_modules/wrappy → once}/LICENSE +0 -0
  264. package/node_modules/once/README.md +28 -0
  265. package/node_modules/once/once.js +21 -0
  266. package/node_modules/once/package.json +47 -16
  267. package/node_modules/{rimraf/node_modules/glob/node_modules/path-is-absolute → path-is-absolute}/index.js +5 -5
  268. package/node_modules/path-is-absolute/license +21 -0
  269. package/node_modules/path-is-absolute/package.json +111 -0
  270. package/node_modules/{rimraf/node_modules/glob/node_modules/path-is-absolute → path-is-absolute}/readme.md +19 -11
  271. package/node_modules/pinkie/license +21 -0
  272. package/node_modules/pinkie/package.json +35 -10
  273. package/node_modules/pinkie-promise/index.js +1 -1
  274. package/node_modules/pinkie-promise/license +21 -0
  275. package/node_modules/pinkie-promise/package.json +46 -16
  276. package/node_modules/process-nextick-args/index.js +31 -8
  277. package/node_modules/process-nextick-args/package.json +44 -13
  278. package/node_modules/punycode/LICENSE-MIT.txt +20 -0
  279. package/node_modules/punycode/README.md +176 -0
  280. package/node_modules/punycode/package.json +127 -0
  281. package/node_modules/punycode/punycode.js +533 -0
  282. package/node_modules/qs/.eslintrc +15 -13
  283. package/node_modules/qs/CHANGELOG.md +34 -0
  284. package/node_modules/qs/README.md +66 -3
  285. package/node_modules/qs/dist/qs.js +196 -97
  286. package/node_modules/qs/lib/formats.js +18 -0
  287. package/node_modules/qs/lib/index.js +6 -4
  288. package/node_modules/qs/lib/parse.js +48 -46
  289. package/node_modules/qs/lib/stringify.js +90 -33
  290. package/node_modules/qs/lib/utils.js +28 -10
  291. package/node_modules/qs/package.json +57 -24
  292. package/node_modules/qs/test/.eslintrc +9 -0
  293. package/node_modules/qs/test/index.js +2 -0
  294. package/node_modules/qs/test/parse.js +100 -34
  295. package/node_modules/qs/test/stringify.js +315 -12
  296. package/node_modules/qs/test/utils.js +13 -0
  297. package/node_modules/rc/node_modules/minimist/package.json +40 -14
  298. package/node_modules/rc/package.json +34 -9
  299. package/node_modules/readable-stream/.npmignore +5 -1
  300. package/node_modules/readable-stream/.travis.yml +4 -7
  301. package/node_modules/readable-stream/README.md +6 -2
  302. package/node_modules/readable-stream/lib/_stream_readable.js +173 -112
  303. package/node_modules/readable-stream/lib/_stream_transform.js +9 -7
  304. package/node_modules/readable-stream/lib/_stream_writable.js +57 -19
  305. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +64 -0
  306. package/node_modules/readable-stream/package.json +59 -22
  307. package/node_modules/readable-stream/readable.js +4 -0
  308. package/node_modules/request/CHANGELOG.md +93 -24
  309. package/node_modules/request/README.md +12 -8
  310. package/node_modules/request/index.js +8 -8
  311. package/node_modules/request/lib/auth.js +1 -1
  312. package/node_modules/request/lib/helpers.js +7 -16
  313. package/node_modules/request/lib/multipart.js +1 -1
  314. package/node_modules/request/lib/oauth.js +1 -1
  315. package/node_modules/request/lib/redirect.js +5 -1
  316. package/node_modules/request/package.json +79 -38
  317. package/node_modules/request/request.js +140 -84
  318. package/node_modules/rimraf/package.json +44 -19
  319. package/node_modules/rimraf/rimraf.js +12 -4
  320. package/node_modules/semver/README.md +31 -8
  321. package/node_modules/semver/package.json +48 -14
  322. package/node_modules/semver/range.bnf +1 -1
  323. package/node_modules/semver/semver.js +21 -6
  324. package/node_modules/set-blocking/CHANGELOG.md +26 -0
  325. package/node_modules/set-blocking/LICENSE.txt +14 -0
  326. package/node_modules/set-blocking/README.md +31 -0
  327. package/node_modules/set-blocking/index.js +7 -0
  328. package/node_modules/set-blocking/package.json +106 -0
  329. package/node_modules/signal-exit/CHANGELOG.md +27 -0
  330. package/node_modules/signal-exit/LICENSE.txt +16 -0
  331. package/node_modules/signal-exit/README.md +40 -0
  332. package/node_modules/signal-exit/index.js +157 -0
  333. package/node_modules/signal-exit/package.json +106 -0
  334. package/node_modules/signal-exit/signals.js +53 -0
  335. package/node_modules/sntp/package.json +32 -6
  336. package/node_modules/sshpk/.travis.yml +3 -3
  337. package/node_modules/sshpk/README.md +237 -7
  338. package/node_modules/sshpk/bin/sshpk-conv +20 -2
  339. package/node_modules/sshpk/bin/sshpk-sign +16 -1
  340. package/node_modules/sshpk/lib/certificate.js +291 -0
  341. package/node_modules/sshpk/lib/errors.js +27 -1
  342. package/node_modules/sshpk/lib/fingerprint.js +28 -7
  343. package/node_modules/sshpk/lib/formats/auto.js +8 -8
  344. package/node_modules/sshpk/lib/formats/openssh-cert.js +289 -0
  345. package/node_modules/sshpk/lib/formats/pem.js +41 -7
  346. package/node_modules/sshpk/lib/formats/pkcs1.js +4 -4
  347. package/node_modules/sshpk/lib/formats/pkcs8.js +6 -11
  348. package/node_modules/sshpk/lib/formats/rfc4253.js +2 -2
  349. package/node_modules/sshpk/lib/formats/ssh-private.js +143 -20
  350. package/node_modules/sshpk/lib/formats/ssh.js +2 -2
  351. package/node_modules/sshpk/lib/formats/x509-pem.js +77 -0
  352. package/node_modules/sshpk/lib/formats/x509.js +484 -0
  353. package/node_modules/sshpk/lib/identity.js +255 -0
  354. package/node_modules/sshpk/lib/index.js +14 -1
  355. package/node_modules/sshpk/lib/key.js +21 -17
  356. package/node_modules/sshpk/lib/private-key.js +19 -12
  357. package/node_modules/sshpk/lib/signature.js +14 -6
  358. package/node_modules/sshpk/lib/ssh-buffer.js +24 -0
  359. package/node_modules/sshpk/lib/utils.js +82 -1
  360. package/node_modules/sshpk/node_modules/assert-plus/AUTHORS +6 -0
  361. package/node_modules/sshpk/node_modules/assert-plus/CHANGES.md +14 -0
  362. package/node_modules/sshpk/node_modules/assert-plus/README.md +162 -0
  363. package/node_modules/sshpk/node_modules/assert-plus/assert.js +211 -0
  364. package/node_modules/sshpk/node_modules/assert-plus/package.json +115 -0
  365. package/node_modules/sshpk/package.json +63 -35
  366. package/node_modules/string-width/index.js +37 -0
  367. package/node_modules/string-width/license +21 -0
  368. package/node_modules/string-width/package.json +124 -0
  369. package/node_modules/string-width/readme.md +42 -0
  370. package/node_modules/string_decoder/package.json +35 -8
  371. package/node_modules/stringstream/package.json +34 -8
  372. package/node_modules/strip-ansi/license +21 -0
  373. package/node_modules/strip-ansi/package.json +49 -22
  374. package/node_modules/strip-json-comments/license +21 -0
  375. package/node_modules/strip-json-comments/package.json +43 -17
  376. package/node_modules/supports-color/cli.js +28 -0
  377. package/node_modules/supports-color/index.js +2 -20
  378. package/node_modules/supports-color/package.json +61 -36
  379. package/node_modules/supports-color/readme.md +14 -6
  380. package/node_modules/tar/package.json +31 -5
  381. package/node_modules/tar-pack/README.md +4 -1
  382. package/node_modules/tar-pack/index.js +17 -12
  383. package/node_modules/tar-pack/node_modules/once/LICENSE +15 -0
  384. package/node_modules/{rimraf/node_modules/glob → tar-pack}/node_modules/once/README.md +0 -0
  385. package/node_modules/{rimraf/node_modules/glob → tar-pack}/node_modules/once/once.js +0 -0
  386. package/node_modules/{rimraf/node_modules/glob → tar-pack}/node_modules/once/package.json +34 -9
  387. package/node_modules/tar-pack/node_modules/readable-stream/.npmignore +8 -0
  388. package/node_modules/tar-pack/node_modules/readable-stream/.travis.yml +49 -0
  389. package/node_modules/tar-pack/node_modules/readable-stream/LICENSE +18 -0
  390. package/node_modules/tar-pack/node_modules/readable-stream/README.md +36 -0
  391. package/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md +2015 -0
  392. package/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +60 -0
  393. package/node_modules/tar-pack/node_modules/readable-stream/duplex.js +1 -0
  394. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js +75 -0
  395. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js +26 -0
  396. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js +937 -0
  397. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js +180 -0
  398. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js +526 -0
  399. package/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js +64 -0
  400. package/node_modules/tar-pack/node_modules/readable-stream/package.json +125 -0
  401. package/node_modules/tar-pack/node_modules/readable-stream/passthrough.js +1 -0
  402. package/node_modules/tar-pack/node_modules/readable-stream/readable.js +16 -0
  403. package/node_modules/tar-pack/node_modules/readable-stream/transform.js +1 -0
  404. package/node_modules/tar-pack/node_modules/readable-stream/writable.js +1 -0
  405. package/node_modules/tar-pack/package.json +54 -20
  406. package/node_modules/tar-pack/test/index.js +43 -1
  407. package/node_modules/tough-cookie/LICENSE +27 -0
  408. package/node_modules/tough-cookie/README.md +17 -3
  409. package/node_modules/tough-cookie/lib/cookie.js +6 -12
  410. package/node_modules/tough-cookie/package.json +62 -30
  411. package/node_modules/tunnel-agent/package.json +46 -13
  412. package/node_modules/tweetnacl/AUTHORS.md +28 -0
  413. package/node_modules/tweetnacl/CHANGELOG.md +40 -0
  414. package/node_modules/tweetnacl/LICENSE +24 -0
  415. package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
  416. package/node_modules/tweetnacl/README.md +33 -19
  417. package/node_modules/tweetnacl/nacl-fast.min.js +2 -2
  418. package/node_modules/tweetnacl/nacl.d.ts +98 -0
  419. package/node_modules/tweetnacl/nacl.min.js +1 -1
  420. package/node_modules/tweetnacl/package.json +44 -17
  421. package/node_modules/uid-number/package.json +32 -7
  422. package/node_modules/util-deprecate/package.json +37 -10
  423. package/node_modules/uuid/.npmignore +8 -0
  424. package/node_modules/uuid/.travis.yml +5 -0
  425. package/node_modules/uuid/AUTHORS +5 -0
  426. package/node_modules/uuid/HISTORY.md +28 -0
  427. package/node_modules/{lodash.padend/LICENSE → uuid/LICENSE.md} +1 -3
  428. package/node_modules/uuid/README.md +132 -0
  429. package/node_modules/{node-uuid → uuid}/bin/uuid +0 -0
  430. package/node_modules/uuid/index.js +8 -0
  431. package/node_modules/uuid/lib/bytesToUuid.js +23 -0
  432. package/node_modules/uuid/lib/rng-browser.js +33 -0
  433. package/node_modules/uuid/lib/rng.js +10 -0
  434. package/node_modules/uuid/package.json +122 -0
  435. package/node_modules/uuid/test/mocha.opts +3 -0
  436. package/node_modules/uuid/test/test.js +96 -0
  437. package/node_modules/uuid/v1.js +103 -0
  438. package/node_modules/uuid/v4.js +29 -0
  439. package/node_modules/verror/package.json +30 -5
  440. package/node_modules/wide-align/.npmignore +5 -0
  441. package/node_modules/wide-align/LICENSE +14 -0
  442. package/node_modules/wide-align/README.md +47 -0
  443. package/node_modules/wide-align/align.js +65 -0
  444. package/node_modules/wide-align/package.json +93 -0
  445. package/node_modules/wide-align/test/align.js +37 -0
  446. package/node_modules/wrappy/package.json +55 -16
  447. package/node_modules/xtend/package.json +45 -19
  448. package/package.json +3 -3
  449. package/node_modules/ansi/.jshintrc +0 -4
  450. package/node_modules/ansi/History.md +0 -23
  451. package/node_modules/ansi/LICENSE +0 -24
  452. package/node_modules/ansi/README.md +0 -98
  453. package/node_modules/ansi/examples/beep/index.js +0 -16
  454. package/node_modules/ansi/examples/clear/index.js +0 -15
  455. package/node_modules/ansi/examples/cursorPosition.js +0 -32
  456. package/node_modules/ansi/examples/progress/index.js +0 -87
  457. package/node_modules/ansi/lib/ansi.js +0 -405
  458. package/node_modules/ansi/lib/newlines.js +0 -71
  459. package/node_modules/ansi/package.json +0 -69
  460. package/node_modules/async/README.md +0 -1877
  461. package/node_modules/async/dist/async.js +0 -1265
  462. package/node_modules/async/dist/async.min.js +0 -2
  463. package/node_modules/async/lib/async.js +0 -1265
  464. package/node_modules/async/package.json +0 -131
  465. package/node_modules/aws4/node_modules/lru-cache/README.md +0 -142
  466. package/node_modules/aws4/node_modules/lru-cache/lib/lru-cache.js +0 -469
  467. package/node_modules/aws4/node_modules/lru-cache/node_modules/pseudomap/README.md +0 -60
  468. package/node_modules/aws4/node_modules/lru-cache/node_modules/pseudomap/map.js +0 -9
  469. package/node_modules/aws4/node_modules/lru-cache/node_modules/pseudomap/package.json +0 -60
  470. package/node_modules/aws4/node_modules/lru-cache/node_modules/pseudomap/pseudomap.js +0 -113
  471. package/node_modules/aws4/node_modules/lru-cache/node_modules/pseudomap/test/basic.js +0 -86
  472. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/.npmignore +0 -4
  473. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/.travis.yml +0 -7
  474. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/CONTRIBUTING.md +0 -4
  475. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/README.md +0 -204
  476. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/package.json +0 -60
  477. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/test/basic.js +0 -188
  478. package/node_modules/aws4/node_modules/lru-cache/node_modules/yallist/yallist.js +0 -360
  479. package/node_modules/aws4/node_modules/lru-cache/package.json +0 -78
  480. package/node_modules/bl/.jshintrc +0 -59
  481. package/node_modules/bl/.npmignore +0 -1
  482. package/node_modules/bl/.travis.yml +0 -13
  483. package/node_modules/bl/LICENSE.md +0 -13
  484. package/node_modules/bl/README.md +0 -200
  485. package/node_modules/bl/bl.js +0 -227
  486. package/node_modules/bl/package.json +0 -72
  487. package/node_modules/bl/test/test.js +0 -571
  488. package/node_modules/block-stream/bench/block-stream-pause.js +0 -70
  489. package/node_modules/block-stream/bench/block-stream.js +0 -68
  490. package/node_modules/block-stream/bench/dropper-pause.js +0 -70
  491. package/node_modules/block-stream/bench/dropper.js +0 -68
  492. package/node_modules/block-stream/test/basic.js +0 -27
  493. package/node_modules/block-stream/test/nopad-thorough.js +0 -68
  494. package/node_modules/block-stream/test/nopad.js +0 -57
  495. package/node_modules/block-stream/test/pause-resume.js +0 -73
  496. package/node_modules/block-stream/test/thorough.js +0 -68
  497. package/node_modules/block-stream/test/two-stream.js +0 -59
  498. package/node_modules/form-data/.dockerignore +0 -7
  499. package/node_modules/form-data/.editorconfig +0 -10
  500. package/node_modules/form-data/.eslintignore +0 -1
  501. package/node_modules/form-data/.eslintrc +0 -64
  502. package/node_modules/form-data/wercker.yml +0 -36
  503. package/node_modules/fstream-ignore/.npmignore +0 -1
  504. package/node_modules/fstream-ignore/example/basic.js +0 -13
  505. package/node_modules/fstream-ignore/node_modules/minimatch/minimatch.js +0 -912
  506. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
  507. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/index.js +0 -191
  508. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
  509. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -3
  510. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
  511. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +0 -89
  512. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
  513. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +0 -80
  514. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -84
  515. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +0 -91
  516. package/node_modules/fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/package.json +0 -86
  517. package/node_modules/fstream-ignore/node_modules/minimatch/package.json +0 -67
  518. package/node_modules/fstream-ignore/test/.ignore +0 -2
  519. package/node_modules/fstream-ignore/test/.npmignore +0 -1
  520. package/node_modules/fstream-ignore/test/00-setup.js +0 -71
  521. package/node_modules/fstream-ignore/test/basic.js +0 -28
  522. package/node_modules/fstream-ignore/test/common.js +0 -40
  523. package/node_modules/fstream-ignore/test/ignore-most.js +0 -41
  524. package/node_modules/fstream-ignore/test/nested-ignores.js +0 -51
  525. package/node_modules/fstream-ignore/test/read-file-order.js +0 -81
  526. package/node_modules/fstream-ignore/test/unignore-child.js +0 -38
  527. package/node_modules/fstream-ignore/test/zz-cleanup.js +0 -10
  528. package/node_modules/gauge/.npmignore +0 -32
  529. package/node_modules/gauge/example.png +0 -0
  530. package/node_modules/gauge/test/progress-bar.js +0 -176
  531. package/node_modules/has-unicode/.npmignore +0 -32
  532. package/node_modules/has-unicode/test/index.js +0 -26
  533. package/node_modules/inherits/test.js +0 -25
  534. package/node_modules/jsonpointer/.travis.yml +0 -10
  535. package/node_modules/jsonpointer/test.js +0 -98
  536. package/node_modules/lodash.pad/README.md +0 -18
  537. package/node_modules/lodash.pad/index.js +0 -296
  538. package/node_modules/lodash.pad/package.json +0 -91
  539. package/node_modules/lodash.padend/README.md +0 -18
  540. package/node_modules/lodash.padend/index.js +0 -285
  541. package/node_modules/lodash.padend/package.json +0 -91
  542. package/node_modules/lodash.padstart/README.md +0 -18
  543. package/node_modules/lodash.padstart/index.js +0 -285
  544. package/node_modules/lodash.padstart/package.json +0 -91
  545. package/node_modules/lodash.repeat/README.md +0 -18
  546. package/node_modules/lodash.repeat/index.js +0 -215
  547. package/node_modules/lodash.repeat/package.json +0 -92
  548. package/node_modules/lodash.tostring/LICENSE +0 -23
  549. package/node_modules/lodash.tostring/README.md +0 -18
  550. package/node_modules/lodash.tostring/index.js +0 -164
  551. package/node_modules/lodash.tostring/package.json +0 -91
  552. package/node_modules/node-pre-gyp/node_modules/nopt/.npmignore +0 -1
  553. package/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/.npmignore +0 -4
  554. package/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/.travis.yml +0 -5
  555. package/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/CONTRIBUTING.md +0 -3
  556. package/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/package.json +0 -56
  557. package/node_modules/node-pre-gyp/node_modules/nopt/node_modules/abbrev/test.js +0 -47
  558. package/node_modules/node-uuid/.npmignore +0 -4
  559. package/node_modules/node-uuid/README.md +0 -254
  560. package/node_modules/node-uuid/benchmark/README.md +0 -53
  561. package/node_modules/node-uuid/benchmark/bench.gnu +0 -174
  562. package/node_modules/node-uuid/benchmark/bench.sh +0 -34
  563. package/node_modules/node-uuid/benchmark/benchmark-native.c +0 -34
  564. package/node_modules/node-uuid/benchmark/benchmark.js +0 -84
  565. package/node_modules/node-uuid/bower.json +0 -23
  566. package/node_modules/node-uuid/component.json +0 -25
  567. package/node_modules/node-uuid/package.json +0 -87
  568. package/node_modules/node-uuid/test/compare_v1.js +0 -63
  569. package/node_modules/node-uuid/test/test.html +0 -17
  570. package/node_modules/node-uuid/test/test.js +0 -231
  571. package/node_modules/node-uuid/uuid.js +0 -272
  572. package/node_modules/npmlog/.nyc_output/64996.json +0 -1
  573. package/node_modules/npmlog/.nyc_output/64998.json +0 -1
  574. package/node_modules/npmlog/.nyc_output/65000.json +0 -1
  575. package/node_modules/npmlog/.travis.yml +0 -14
  576. package/node_modules/npmlog/example.js +0 -39
  577. package/node_modules/npmlog/test/basic.js +0 -235
  578. package/node_modules/npmlog/test/progress.js +0 -131
  579. package/node_modules/oauth-sign/test.js +0 -89
  580. package/node_modules/qs/.npmignore +0 -18
  581. package/node_modules/qs/.travis.yml +0 -69
  582. package/node_modules/qs/bower.json +0 -22
  583. package/node_modules/qs/component.json +0 -15
  584. package/node_modules/readable-stream/.zuul.yml +0 -1
  585. package/node_modules/readable-stream/doc/stream.markdown +0 -1760
  586. package/node_modules/request/.eslintrc +0 -45
  587. package/node_modules/request/.npmignore +0 -6
  588. package/node_modules/request/.travis.yml +0 -15
  589. package/node_modules/request/CONTRIBUTING.md +0 -44
  590. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/.eslintrc +0 -17
  591. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/inflight.js +0 -44
  592. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md +0 -36
  593. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json +0 -59
  594. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js +0 -51
  595. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js +0 -33
  596. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/package.json +0 -68
  597. package/node_modules/rimraf/node_modules/glob/node_modules/inflight/test.js +0 -97
  598. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE +0 -16
  599. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/README.md +0 -42
  600. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits.js +0 -1
  601. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits_browser.js +0 -23
  602. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/package.json +0 -59
  603. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/test.js +0 -25
  604. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/README.md +0 -216
  605. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +0 -3
  606. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +0 -122
  607. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +0 -8
  608. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +0 -2
  609. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +0 -3
  610. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md +0 -21
  611. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +0 -6
  612. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +0 -5
  613. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +0 -50
  614. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +0 -80
  615. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +0 -84
  616. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +0 -4
  617. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +0 -62
  618. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +0 -6
  619. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +0 -13
  620. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +0 -39
  621. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +0 -86
  622. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/package.json +0 -67
  623. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +0 -36
  624. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +0 -59
  625. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +0 -51
  626. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +0 -33
  627. package/node_modules/rimraf/node_modules/glob/node_modules/path-is-absolute/package.json +0 -79
  628. package/node_modules/rimraf/node_modules/glob/package.json +0 -85
  629. package/node_modules/semver/.npmignore +0 -4
  630. package/node_modules/semver/.travis.yml +0 -5
  631. package/node_modules/semver/test/big-numbers.js +0 -31
  632. package/node_modules/semver/test/clean.js +0 -29
  633. package/node_modules/semver/test/gtr.js +0 -173
  634. package/node_modules/semver/test/index.js +0 -698
  635. package/node_modules/semver/test/ltr.js +0 -181
  636. package/node_modules/semver/test/major-minor-patch.js +0 -72
  637. package/node_modules/tunnel-agent/.jshintrc +0 -5
  638. package/node_modules/tweetnacl/COPYING.txt +0 -9
  639. package/node_modules/wrappy/test/basic.js +0 -51
  640. package/test/fsevents.js +0 -27
  641. package/test/function.js +0 -93
@@ -0,0 +1,289 @@
1
+ // Copyright 2016 Joyent, Inc.
2
+
3
+ module.exports = {
4
+ read: read,
5
+ verify: verify,
6
+ sign: sign,
7
+ write: write,
8
+
9
+ /* Internal private API */
10
+ fromBuffer: fromBuffer,
11
+ toBuffer: toBuffer
12
+ };
13
+
14
+ var assert = require('assert-plus');
15
+ var SSHBuffer = require('../ssh-buffer');
16
+ var crypto = require('crypto');
17
+ var algs = require('../algs');
18
+ var Key = require('../key');
19
+ var PrivateKey = require('../private-key');
20
+ var Identity = require('../identity');
21
+ var rfc4253 = require('./rfc4253');
22
+ var Signature = require('../signature');
23
+ var utils = require('../utils');
24
+ var Certificate = require('../certificate');
25
+
26
+ function verify(cert, key) {
27
+ /*
28
+ * We always give an issuerKey, so if our verify() is being called then
29
+ * there was no signature. Return false.
30
+ */
31
+ return (false);
32
+ }
33
+
34
+ var TYPES = {
35
+ 'user': 1,
36
+ 'host': 2
37
+ };
38
+ Object.keys(TYPES).forEach(function (k) { TYPES[TYPES[k]] = k; });
39
+
40
+ var ECDSA_ALGO = /^ecdsa-sha2-([^@-]+)-cert-v01@openssh.com$/;
41
+
42
+ function read(buf, options) {
43
+ if (Buffer.isBuffer(buf))
44
+ buf = buf.toString('ascii');
45
+ var parts = buf.trim().split(/[ \t\n]+/g);
46
+ if (parts.length < 2 || parts.length > 3)
47
+ throw (new Error('Not a valid SSH certificate line'));
48
+
49
+ var algo = parts[0];
50
+ var data = parts[1];
51
+
52
+ data = new Buffer(data, 'base64');
53
+ return (fromBuffer(data, algo));
54
+ }
55
+
56
+ function fromBuffer(data, algo, partial) {
57
+ var sshbuf = new SSHBuffer({ buffer: data });
58
+ var innerAlgo = sshbuf.readString();
59
+ if (algo !== undefined && innerAlgo !== algo)
60
+ throw (new Error('SSH certificate algorithm mismatch'));
61
+ if (algo === undefined)
62
+ algo = innerAlgo;
63
+
64
+ var cert = {};
65
+ cert.signatures = {};
66
+ cert.signatures.openssh = {};
67
+
68
+ cert.signatures.openssh.nonce = sshbuf.readBuffer();
69
+
70
+ var key = {};
71
+ var parts = (key.parts = []);
72
+ key.type = getAlg(algo);
73
+
74
+ var partCount = algs.info[key.type].parts.length;
75
+ while (parts.length < partCount)
76
+ parts.push(sshbuf.readPart());
77
+ assert.ok(parts.length >= 1, 'key must have at least one part');
78
+
79
+ var algInfo = algs.info[key.type];
80
+ if (key.type === 'ecdsa') {
81
+ var res = ECDSA_ALGO.exec(algo);
82
+ assert.ok(res !== null);
83
+ assert.strictEqual(res[1], parts[0].data.toString());
84
+ }
85
+
86
+ for (var i = 0; i < algInfo.parts.length; ++i) {
87
+ parts[i].name = algInfo.parts[i];
88
+ if (parts[i].name !== 'curve' &&
89
+ algInfo.normalize !== false) {
90
+ var p = parts[i];
91
+ p.data = utils.mpNormalize(p.data);
92
+ }
93
+ }
94
+
95
+ cert.subjectKey = new Key(key);
96
+
97
+ cert.serial = sshbuf.readInt64();
98
+
99
+ var type = TYPES[sshbuf.readInt()];
100
+ assert.string(type, 'valid cert type');
101
+
102
+ cert.signatures.openssh.keyId = sshbuf.readString();
103
+
104
+ var principals = [];
105
+ var pbuf = sshbuf.readBuffer();
106
+ var psshbuf = new SSHBuffer({ buffer: pbuf });
107
+ while (!psshbuf.atEnd())
108
+ principals.push(psshbuf.readString());
109
+ if (principals.length === 0)
110
+ principals = ['*'];
111
+
112
+ cert.subjects = principals.map(function (pr) {
113
+ if (type === 'user')
114
+ return (Identity.forUser(pr));
115
+ else if (type === 'host')
116
+ return (Identity.forHost(pr));
117
+ throw (new Error('Unknown identity type ' + type));
118
+ });
119
+
120
+ cert.validFrom = int64ToDate(sshbuf.readInt64());
121
+ cert.validUntil = int64ToDate(sshbuf.readInt64());
122
+
123
+ cert.signatures.openssh.critical = sshbuf.readBuffer();
124
+ cert.signatures.openssh.exts = sshbuf.readBuffer();
125
+
126
+ /* reserved */
127
+ sshbuf.readBuffer();
128
+
129
+ var signingKeyBuf = sshbuf.readBuffer();
130
+ cert.issuerKey = rfc4253.read(signingKeyBuf);
131
+
132
+ /*
133
+ * OpenSSH certs don't give the identity of the issuer, just their
134
+ * public key. So, we use an Identity that matches anything. The
135
+ * isSignedBy() function will later tell you if the key matches.
136
+ */
137
+ cert.issuer = Identity.forHost('**');
138
+
139
+ var sigBuf = sshbuf.readBuffer();
140
+ cert.signatures.openssh.signature =
141
+ Signature.parse(sigBuf, cert.issuerKey.type, 'ssh');
142
+
143
+ if (partial !== undefined) {
144
+ partial.remainder = sshbuf.remainder();
145
+ partial.consumed = sshbuf._offset;
146
+ }
147
+
148
+ return (new Certificate(cert));
149
+ }
150
+
151
+ function int64ToDate(buf) {
152
+ var i = buf.readUInt32BE(0) * 4294967296;
153
+ i += buf.readUInt32BE(4);
154
+ var d = new Date();
155
+ d.setTime(i * 1000);
156
+ d.sourceInt64 = buf;
157
+ return (d);
158
+ }
159
+
160
+ function dateToInt64(date) {
161
+ if (date.sourceInt64 !== undefined)
162
+ return (date.sourceInt64);
163
+ var i = Math.round(date.getTime() / 1000);
164
+ var upper = Math.floor(i / 4294967296);
165
+ var lower = Math.floor(i % 4294967296);
166
+ var buf = new Buffer(8);
167
+ buf.writeUInt32BE(upper, 0);
168
+ buf.writeUInt32BE(lower, 4);
169
+ return (buf);
170
+ }
171
+
172
+ function sign(cert, key) {
173
+ if (cert.signatures.openssh === undefined)
174
+ cert.signatures.openssh = {};
175
+ try {
176
+ var blob = toBuffer(cert, true);
177
+ } catch (e) {
178
+ delete (cert.signatures.openssh);
179
+ return (false);
180
+ }
181
+ var sig = cert.signatures.openssh;
182
+ var hashAlgo = undefined;
183
+ if (key.type === 'rsa' || key.type === 'dsa')
184
+ hashAlgo = 'sha1';
185
+ var signer = key.createSign(hashAlgo);
186
+ signer.write(blob);
187
+ sig.signature = signer.sign();
188
+ return (true);
189
+ }
190
+
191
+ function write(cert, options) {
192
+ if (options === undefined)
193
+ options = {};
194
+
195
+ var blob = toBuffer(cert);
196
+ var out = getCertType(cert.subjectKey) + ' ' + blob.toString('base64');
197
+ if (options.comment)
198
+ out = out + ' ' + options.comment;
199
+ return (out);
200
+ }
201
+
202
+
203
+ function toBuffer(cert, noSig) {
204
+ assert.object(cert.signatures.openssh, 'signature for openssh format');
205
+ var sig = cert.signatures.openssh;
206
+
207
+ if (sig.nonce === undefined)
208
+ sig.nonce = crypto.randomBytes(16);
209
+ var buf = new SSHBuffer({});
210
+ buf.writeString(getCertType(cert.subjectKey));
211
+ buf.writeBuffer(sig.nonce);
212
+
213
+ var key = cert.subjectKey;
214
+ var algInfo = algs.info[key.type];
215
+ algInfo.parts.forEach(function (part) {
216
+ buf.writePart(key.part[part]);
217
+ });
218
+
219
+ buf.writeInt64(cert.serial);
220
+
221
+ var type = cert.subjects[0].type;
222
+ assert.notStrictEqual(type, 'unknown');
223
+ cert.subjects.forEach(function (id) {
224
+ assert.strictEqual(id.type, type);
225
+ });
226
+ type = TYPES[type];
227
+ buf.writeInt(type);
228
+
229
+ if (sig.keyId === undefined) {
230
+ sig.keyId = cert.subjects[0].type + '_' +
231
+ (cert.subjects[0].uid || cert.subjects[0].hostname);
232
+ }
233
+ buf.writeString(sig.keyId);
234
+
235
+ var sub = new SSHBuffer({});
236
+ cert.subjects.forEach(function (id) {
237
+ if (type === TYPES.host)
238
+ sub.writeString(id.hostname);
239
+ else if (type === TYPES.user)
240
+ sub.writeString(id.uid);
241
+ });
242
+ buf.writeBuffer(sub.toBuffer());
243
+
244
+ buf.writeInt64(dateToInt64(cert.validFrom));
245
+ buf.writeInt64(dateToInt64(cert.validUntil));
246
+
247
+ if (sig.critical === undefined)
248
+ sig.critical = new Buffer(0);
249
+ buf.writeBuffer(sig.critical);
250
+
251
+ if (sig.exts === undefined)
252
+ sig.exts = new Buffer(0);
253
+ buf.writeBuffer(sig.exts);
254
+
255
+ /* reserved */
256
+ buf.writeBuffer(new Buffer(0));
257
+
258
+ sub = rfc4253.write(cert.issuerKey);
259
+ buf.writeBuffer(sub);
260
+
261
+ if (!noSig)
262
+ buf.writeBuffer(sig.signature.toBuffer('ssh'));
263
+
264
+ return (buf.toBuffer());
265
+ }
266
+
267
+ function getAlg(certType) {
268
+ if (certType === 'ssh-rsa-cert-v01@openssh.com')
269
+ return ('rsa');
270
+ if (certType === 'ssh-dss-cert-v01@openssh.com')
271
+ return ('dsa');
272
+ if (certType.match(ECDSA_ALGO))
273
+ return ('ecdsa');
274
+ if (certType === 'ssh-ed25519-cert-v01@openssh.com')
275
+ return ('ed25519');
276
+ throw (new Error('Unsupported cert type ' + certType));
277
+ }
278
+
279
+ function getCertType(key) {
280
+ if (key.type === 'rsa')
281
+ return ('ssh-rsa-cert-v01@openssh.com');
282
+ if (key.type === 'dsa')
283
+ return ('ssh-dss-cert-v01@openssh.com');
284
+ if (key.type === 'ecdsa')
285
+ return ('ecdsa-sha2-' + key.curve + '-cert-v01@openssh.com');
286
+ if (key.type === 'ed25519')
287
+ return ('ssh-ed25519-cert-v01@openssh.com');
288
+ throw (new Error('Unsupported key type ' + key.type));
289
+ }
@@ -7,6 +7,7 @@ module.exports = {
7
7
 
8
8
  var assert = require('assert-plus');
9
9
  var asn1 = require('asn1');
10
+ var crypto = require('crypto');
10
11
  var algs = require('../algs');
11
12
  var utils = require('../utils');
12
13
  var Key = require('../key');
@@ -17,11 +18,13 @@ var pkcs8 = require('./pkcs8');
17
18
  var sshpriv = require('./ssh-private');
18
19
  var rfc4253 = require('./rfc4253');
19
20
 
21
+ var errors = require('../errors');
22
+
20
23
  /*
21
24
  * For reading we support both PKCS#1 and PKCS#8. If we find a private key,
22
25
  * we just take the public component of it and use that.
23
26
  */
24
- function read(buf, forceType) {
27
+ function read(buf, options, forceType) {
25
28
  var input = buf;
26
29
  if (typeof (buf) !== 'string') {
27
30
  assert.buffer(buf, 'buf');
@@ -58,12 +61,26 @@ function read(buf, forceType) {
58
61
  break;
59
62
  headers[m[1].toLowerCase()] = m[2];
60
63
  }
64
+
65
+ var cipher, key, iv;
61
66
  if (headers['proc-type']) {
62
67
  var parts = headers['proc-type'].split(',');
63
68
  if (parts[0] === '4' && parts[1] === 'ENCRYPTED') {
64
- throw (new Error('PEM key is encrypted ' +
65
- '(password-protected). Please use the ' +
66
- 'SSH agent or decrypt the key.'));
69
+ if (typeof (options.passphrase) === 'string') {
70
+ options.passphrase = new Buffer(
71
+ options.passphrase, 'utf-8');
72
+ }
73
+ if (!Buffer.isBuffer(options.passphrase)) {
74
+ throw (new errors.KeyEncryptedError(
75
+ options.filename, 'PEM'));
76
+ } else {
77
+ parts = headers['dek-info'].split(',');
78
+ assert.ok(parts.length === 2);
79
+ cipher = parts[0].toLowerCase();
80
+ iv = new Buffer(parts[1], 'hex');
81
+ key = utils.opensslKeyDeriv(cipher, iv,
82
+ options.passphrase, 1).key;
83
+ }
67
84
  }
68
85
  }
69
86
 
@@ -71,11 +88,28 @@ function read(buf, forceType) {
71
88
  lines = lines.slice(0, -1).join('');
72
89
  buf = new Buffer(lines, 'base64');
73
90
 
91
+ if (cipher && key && iv) {
92
+ var cipherStream = crypto.createDecipheriv(cipher, key, iv);
93
+ var chunk, chunks = [];
94
+ cipherStream.once('error', function (e) {
95
+ if (e.toString().indexOf('bad decrypt') !== -1) {
96
+ throw (new Error('Incorrect passphrase ' +
97
+ 'supplied, could not decrypt key'));
98
+ }
99
+ throw (e);
100
+ });
101
+ cipherStream.write(buf);
102
+ cipherStream.end();
103
+ while ((chunk = cipherStream.read()) !== null)
104
+ chunks.push(chunk);
105
+ buf = Buffer.concat(chunks);
106
+ }
107
+
74
108
  /* The new OpenSSH internal format abuses PEM headers */
75
109
  if (alg && alg.toLowerCase() === 'openssh')
76
- return (sshpriv.readSSHPrivate(type, buf));
110
+ return (sshpriv.readSSHPrivate(type, buf, options));
77
111
  if (alg && alg.toLowerCase() === 'ssh2')
78
- return (rfc4253.readType(type, buf));
112
+ return (rfc4253.readType(type, buf, options));
79
113
 
80
114
  var der = new asn1.BerReader(buf);
81
115
  der.originalInput = input;
@@ -98,7 +132,7 @@ function read(buf, forceType) {
98
132
  }
99
133
  }
100
134
 
101
- function write(key, type) {
135
+ function write(key, options, type) {
102
136
  assert.object(key);
103
137
 
104
138
  var alg = {'ecdsa': 'EC', 'rsa': 'RSA', 'dsa': 'DSA'}[key.type];
@@ -19,12 +19,12 @@ var pem = require('./pem');
19
19
  var pkcs8 = require('./pkcs8');
20
20
  var readECDSACurve = pkcs8.readECDSACurve;
21
21
 
22
- function read(buf) {
23
- return (pem.read(buf, 'pkcs1'));
22
+ function read(buf, options) {
23
+ return (pem.read(buf, options, 'pkcs1'));
24
24
  }
25
25
 
26
- function write(key) {
27
- return (pem.write(key, 'pkcs1'));
26
+ function write(key, options) {
27
+ return (pem.write(key, options, 'pkcs1'));
28
28
  }
29
29
 
30
30
  /* Helper to read in a single mpint */
@@ -18,12 +18,12 @@ var Key = require('../key');
18
18
  var PrivateKey = require('../private-key');
19
19
  var pem = require('./pem');
20
20
 
21
- function read(buf) {
22
- return (pem.read(buf, 'pkcs8'));
21
+ function read(buf, options) {
22
+ return (pem.read(buf, options, 'pkcs8'));
23
23
  }
24
24
 
25
- function write(key) {
26
- return (pem.write(key, 'pkcs8'));
25
+ function write(key, options) {
26
+ return (pem.write(key, options, 'pkcs8'));
27
27
  }
28
28
 
29
29
  /* Helper to read in a single mpint */
@@ -42,10 +42,12 @@ function readPkcs8(alg, type, der) {
42
42
  }
43
43
 
44
44
  der.readSequence();
45
+ var next = der.offset + der.length;
45
46
 
46
47
  var oid = der.readOID();
47
48
  switch (oid) {
48
49
  case '1.2.840.113549.1.1.1':
50
+ der._offset = next;
49
51
  if (type === 'public')
50
52
  return (readPkcs8RSAPublic(der));
51
53
  else
@@ -66,10 +68,6 @@ function readPkcs8(alg, type, der) {
66
68
  }
67
69
 
68
70
  function readPkcs8RSAPublic(der) {
69
- // Null -- XXX this probably isn't good practice
70
- der.readByte();
71
- der.readByte();
72
-
73
71
  // bit string sequence
74
72
  der.readSequence(asn1.Ber.BitString);
75
73
  der.readByte();
@@ -93,9 +91,6 @@ function readPkcs8RSAPublic(der) {
93
91
  }
94
92
 
95
93
  function readPkcs8RSAPrivate(der) {
96
- der.readByte();
97
- der.readByte();
98
-
99
94
  der.readSequence(asn1.Ber.OctetString);
100
95
  der.readSequence();
101
96
 
@@ -52,7 +52,7 @@ function keyTypeToAlg(key) {
52
52
  throw (new Error('Unknown key type ' + key.type));
53
53
  }
54
54
 
55
- function read(partial, type, buf) {
55
+ function read(partial, type, buf, options) {
56
56
  if (typeof (buf) === 'string')
57
57
  buf = new Buffer(buf);
58
58
  assert.buffer(buf, 'buf');
@@ -120,7 +120,7 @@ function read(partial, type, buf) {
120
120
  return (new Constructor(key));
121
121
  }
122
122
 
123
- function write(key) {
123
+ function write(key, options) {
124
124
  assert.object(key);
125
125
 
126
126
  var alg = keyTypeToAlg(key);
@@ -17,14 +17,17 @@ var PrivateKey = require('../private-key');
17
17
  var pem = require('./pem');
18
18
  var rfc4253 = require('./rfc4253');
19
19
  var SSHBuffer = require('../ssh-buffer');
20
+ var errors = require('../errors');
20
21
 
21
- function read(buf) {
22
- return (pem.read(buf));
22
+ var bcrypt;
23
+
24
+ function read(buf, options) {
25
+ return (pem.read(buf, options));
23
26
  }
24
27
 
25
28
  var MAGIC = 'openssh-key-v1';
26
29
 
27
- function readSSHPrivate(type, buf) {
30
+ function readSSHPrivate(type, buf, options) {
28
31
  buf = new SSHBuffer({buffer: buf});
29
32
 
30
33
  var magic = buf.readCString();
@@ -32,16 +35,7 @@ function readSSHPrivate(type, buf) {
32
35
 
33
36
  var cipher = buf.readString();
34
37
  var kdf = buf.readString();
35
-
36
- /* We only support unencrypted keys. */
37
- if (cipher !== 'none' || kdf !== 'none') {
38
- throw (new Error('OpenSSH-format key is encrypted ' +
39
- '(password-protected). Please use the SSH agent ' +
40
- 'or decrypt the key.'));
41
- }
42
-
43
- /* Skip over kdfoptions. */
44
- buf.readString();
38
+ var kdfOpts = buf.readBuffer();
45
39
 
46
40
  var nkeys = buf.readInt();
47
41
  if (nkeys !== 1) {
@@ -59,11 +53,74 @@ function readSSHPrivate(type, buf) {
59
53
  var privKeyBlob = buf.readBuffer();
60
54
  assert.ok(buf.atEnd(), 'excess bytes left after key');
61
55
 
56
+ var kdfOptsBuf = new SSHBuffer({ buffer: kdfOpts });
57
+ switch (kdf) {
58
+ case 'none':
59
+ if (cipher !== 'none') {
60
+ throw (new Error('OpenSSH-format key uses KDF "none" ' +
61
+ 'but specifies a cipher other than "none"'));
62
+ }
63
+ break;
64
+ case 'bcrypt':
65
+ var salt = kdfOptsBuf.readBuffer();
66
+ var rounds = kdfOptsBuf.readInt();
67
+ var cinf = utils.opensshCipherInfo(cipher);
68
+ if (bcrypt === undefined) {
69
+ bcrypt = require('bcrypt-pbkdf');
70
+ }
71
+
72
+ if (typeof (options.passphrase) === 'string') {
73
+ options.passphrase = new Buffer(options.passphrase,
74
+ 'utf-8');
75
+ }
76
+ if (!Buffer.isBuffer(options.passphrase)) {
77
+ throw (new errors.KeyEncryptedError(
78
+ options.filename, 'OpenSSH'));
79
+ }
80
+
81
+ var pass = new Uint8Array(options.passphrase);
82
+ var salti = new Uint8Array(salt);
83
+ /* Use the pbkdf to derive both the key and the IV. */
84
+ var out = new Uint8Array(cinf.keySize + cinf.blockSize);
85
+ var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,
86
+ out, out.length, rounds);
87
+ if (res !== 0) {
88
+ throw (new Error('bcrypt_pbkdf function returned ' +
89
+ 'failure, parameters invalid'));
90
+ }
91
+ out = new Buffer(out);
92
+ var ckey = out.slice(0, cinf.keySize);
93
+ var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);
94
+ var cipherStream = crypto.createDecipheriv(cinf.opensslName,
95
+ ckey, iv);
96
+ cipherStream.setAutoPadding(false);
97
+ var chunk, chunks = [];
98
+ cipherStream.once('error', function (e) {
99
+ if (e.toString().indexOf('bad decrypt') !== -1) {
100
+ throw (new Error('Incorrect passphrase ' +
101
+ 'supplied, could not decrypt key'));
102
+ }
103
+ throw (e);
104
+ });
105
+ cipherStream.write(privKeyBlob);
106
+ cipherStream.end();
107
+ while ((chunk = cipherStream.read()) !== null)
108
+ chunks.push(chunk);
109
+ privKeyBlob = Buffer.concat(chunks);
110
+ break;
111
+ default:
112
+ throw (new Error(
113
+ 'OpenSSH-format key uses unknown KDF "' + kdf + '"'));
114
+ }
115
+
62
116
  buf = new SSHBuffer({buffer: privKeyBlob});
63
117
 
64
118
  var checkInt1 = buf.readInt();
65
119
  var checkInt2 = buf.readInt();
66
- assert.strictEqual(checkInt1, checkInt2, 'checkints do not match');
120
+ if (checkInt1 !== checkInt2) {
121
+ throw (new Error('Incorrect passphrase supplied, could not ' +
122
+ 'decrypt key'));
123
+ }
67
124
 
68
125
  var ret = {};
69
126
  var key = rfc4253.readInternal(ret, 'private', buf.remainder());
@@ -76,13 +133,33 @@ function readSSHPrivate(type, buf) {
76
133
  return (key);
77
134
  }
78
135
 
79
- function write(key) {
136
+ function write(key, options) {
80
137
  var pubKey;
81
138
  if (PrivateKey.isPrivateKey(key))
82
139
  pubKey = key.toPublic();
83
140
  else
84
141
  pubKey = key;
85
142
 
143
+ var cipher = 'none';
144
+ var kdf = 'none';
145
+ var kdfopts = new Buffer(0);
146
+ var cinf = { blockSize: 8 };
147
+ var passphrase;
148
+ if (options !== undefined) {
149
+ passphrase = options.passphrase;
150
+ if (typeof (passphrase) === 'string')
151
+ passphrase = new Buffer(passphrase, 'utf-8');
152
+ if (passphrase !== undefined) {
153
+ assert.buffer(passphrase, 'options.passphrase');
154
+ assert.optionalString(options.cipher, 'options.cipher');
155
+ cipher = options.cipher;
156
+ if (cipher === undefined)
157
+ cipher = 'aes128-ctr';
158
+ cinf = utils.opensshCipherInfo(cipher);
159
+ kdf = 'bcrypt';
160
+ }
161
+ }
162
+
86
163
  var privBuf;
87
164
  if (PrivateKey.isPrivateKey(key)) {
88
165
  privBuf = new SSHBuffer({});
@@ -93,22 +170,68 @@ function write(key) {
93
170
  privBuf.writeString(key.comment || '');
94
171
 
95
172
  var n = 1;
96
- while (privBuf._offset % 8 !== 0)
173
+ while (privBuf._offset % cinf.blockSize !== 0)
97
174
  privBuf.writeChar(n++);
175
+ privBuf = privBuf.toBuffer();
176
+ }
177
+
178
+ switch (kdf) {
179
+ case 'none':
180
+ break;
181
+ case 'bcrypt':
182
+ var salt = crypto.randomBytes(16);
183
+ var rounds = 16;
184
+ var kdfssh = new SSHBuffer({});
185
+ kdfssh.writeBuffer(salt);
186
+ kdfssh.writeInt(rounds);
187
+ kdfopts = kdfssh.toBuffer();
188
+
189
+ if (bcrypt === undefined) {
190
+ bcrypt = require('bcrypt-pbkdf');
191
+ }
192
+ var pass = new Uint8Array(passphrase);
193
+ var salti = new Uint8Array(salt);
194
+ /* Use the pbkdf to derive both the key and the IV. */
195
+ var out = new Uint8Array(cinf.keySize + cinf.blockSize);
196
+ var res = bcrypt.pbkdf(pass, pass.length, salti, salti.length,
197
+ out, out.length, rounds);
198
+ if (res !== 0) {
199
+ throw (new Error('bcrypt_pbkdf function returned ' +
200
+ 'failure, parameters invalid'));
201
+ }
202
+ out = new Buffer(out);
203
+ var ckey = out.slice(0, cinf.keySize);
204
+ var iv = out.slice(cinf.keySize, cinf.keySize + cinf.blockSize);
205
+
206
+ var cipherStream = crypto.createCipheriv(cinf.opensslName,
207
+ ckey, iv);
208
+ cipherStream.setAutoPadding(false);
209
+ var chunk, chunks = [];
210
+ cipherStream.once('error', function (e) {
211
+ throw (e);
212
+ });
213
+ cipherStream.write(privBuf);
214
+ cipherStream.end();
215
+ while ((chunk = cipherStream.read()) !== null)
216
+ chunks.push(chunk);
217
+ privBuf = Buffer.concat(chunks);
218
+ break;
219
+ default:
220
+ throw (new Error('Unsupported kdf ' + kdf));
98
221
  }
99
222
 
100
223
  var buf = new SSHBuffer({});
101
224
 
102
225
  buf.writeCString(MAGIC);
103
- buf.writeString('none'); /* cipher */
104
- buf.writeString('none'); /* kdf */
105
- buf.writeBuffer(new Buffer(0)); /* kdfoptions */
226
+ buf.writeString(cipher); /* cipher */
227
+ buf.writeString(kdf); /* kdf */
228
+ buf.writeBuffer(kdfopts); /* kdfoptions */
106
229
 
107
230
  buf.writeInt(1); /* nkeys */
108
231
  buf.writeBuffer(pubKey.toBuffer('rfc4253'));
109
232
 
110
233
  if (privBuf)
111
- buf.writeBuffer(privBuf.toBuffer());
234
+ buf.writeBuffer(privBuf);
112
235
 
113
236
  buf = buf.toBuffer();
114
237
 
@@ -18,7 +18,7 @@ var SSHKEY_RE = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/]+[=]*)([\n \t]+([^\n]+))?$/;
18
18
  /*JSSTYLED*/
19
19
  var SSHKEY_RE2 = /^([a-z0-9-]+)[ \t]+([a-zA-Z0-9+\/ \t\n]+[=]*)(.*)$/;
20
20
 
21
- function read(buf) {
21
+ function read(buf, options) {
22
22
  if (typeof (buf) !== 'string') {
23
23
  assert.buffer(buf, 'buf');
24
24
  buf = buf.toString('ascii');
@@ -95,7 +95,7 @@ function read(buf) {
95
95
  return (key);
96
96
  }
97
97
 
98
- function write(key) {
98
+ function write(key, options) {
99
99
  assert.object(key);
100
100
  if (!Key.isKey(key))
101
101
  throw (new Error('Must be a public key'));