fsevents 1.0.15 → 1.1.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.

Potentially problematic release.


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

Files changed (369) hide show
  1. package/fsevents.js +3 -0
  2. package/install.js +7 -0
  3. package/lib/binding/Release/node-v48-darwin-x64/fse.node +0 -0
  4. package/node_modules/abbrev/abbrev.js +0 -1
  5. package/node_modules/abbrev/package.json +32 -21
  6. package/node_modules/ansi-regex/index.js +1 -1
  7. package/node_modules/ansi-regex/package.json +61 -42
  8. package/node_modules/ansi-regex/readme.md +10 -2
  9. package/node_modules/ansi-styles/package.json +27 -19
  10. package/node_modules/aproba/README.md +33 -3
  11. package/node_modules/aproba/index.js +71 -30
  12. package/node_modules/aproba/package.json +30 -22
  13. package/node_modules/are-we-there-yet/package.json +14 -6
  14. package/node_modules/asn1/package.json +16 -8
  15. package/node_modules/assert-plus/package.json +16 -8
  16. package/node_modules/{node-uuid/LICENSE.md → asynckit/LICENSE} +1 -1
  17. package/node_modules/asynckit/README.md +233 -0
  18. package/node_modules/asynckit/bench.js +76 -0
  19. package/node_modules/asynckit/index.js +6 -0
  20. package/node_modules/asynckit/lib/abort.js +29 -0
  21. package/node_modules/asynckit/lib/async.js +34 -0
  22. package/node_modules/asynckit/lib/defer.js +26 -0
  23. package/node_modules/asynckit/lib/iterate.js +75 -0
  24. package/node_modules/asynckit/lib/readable_asynckit.js +91 -0
  25. package/node_modules/asynckit/lib/readable_parallel.js +25 -0
  26. package/node_modules/asynckit/lib/readable_serial.js +25 -0
  27. package/node_modules/asynckit/lib/readable_serial_ordered.js +29 -0
  28. package/node_modules/asynckit/lib/state.js +37 -0
  29. package/node_modules/asynckit/lib/streamify.js +141 -0
  30. package/node_modules/asynckit/lib/terminator.js +29 -0
  31. package/node_modules/asynckit/package.json +126 -0
  32. package/node_modules/asynckit/parallel.js +43 -0
  33. package/node_modules/asynckit/serial.js +17 -0
  34. package/node_modules/asynckit/serialOrdered.js +75 -0
  35. package/node_modules/asynckit/stream.js +21 -0
  36. package/node_modules/aws-sign2/package.json +15 -7
  37. package/node_modules/aws4/README.md +9 -0
  38. package/node_modules/aws4/aws4.js +21 -7
  39. package/node_modules/aws4/package.json +62 -54
  40. package/node_modules/balanced-match/package.json +27 -19
  41. package/node_modules/bcrypt-pbkdf/README.md +39 -0
  42. package/node_modules/bcrypt-pbkdf/index.js +556 -0
  43. package/node_modules/bcrypt-pbkdf/package.json +84 -0
  44. package/node_modules/block-stream/package.json +15 -7
  45. package/node_modules/boom/package.json +14 -6
  46. package/node_modules/brace-expansion/index.js +10 -0
  47. package/node_modules/brace-expansion/package.json +35 -27
  48. package/node_modules/buffer-shims/package.json +16 -7
  49. package/node_modules/caseless/package.json +18 -10
  50. package/node_modules/chalk/package.json +30 -22
  51. package/node_modules/code-point-at/index.js +3 -4
  52. package/node_modules/code-point-at/package.json +40 -30
  53. package/node_modules/code-point-at/readme.md +2 -4
  54. package/node_modules/combined-stream/package.json +15 -7
  55. package/node_modules/commander/package.json +16 -8
  56. package/node_modules/concat-map/package.json +30 -22
  57. package/node_modules/console-control-strings/package.json +15 -7
  58. package/node_modules/core-util-is/package.json +22 -14
  59. package/node_modules/cryptiles/package.json +14 -6
  60. package/node_modules/dashdash/CHANGES.md +364 -0
  61. package/node_modules/dashdash/LICENSE.txt +24 -0
  62. package/node_modules/dashdash/etc/dashdash.bash_completion.in +4 -3
  63. package/node_modules/dashdash/node_modules/assert-plus/package.json +16 -8
  64. package/node_modules/dashdash/package.json +33 -24
  65. package/node_modules/debug/package.json +20 -12
  66. package/node_modules/deep-extend/package.json +23 -15
  67. package/node_modules/delayed-stream/package.json +15 -7
  68. package/node_modules/delegates/package.json +14 -6
  69. package/node_modules/ecc-jsbn/package.json +17 -9
  70. package/node_modules/escape-string-regexp/package.json +20 -12
  71. package/node_modules/extend/package.json +16 -8
  72. package/node_modules/extsprintf/package.json +14 -6
  73. package/node_modules/forever-agent/package.json +15 -7
  74. package/node_modules/form-data/README.md +7 -8
  75. package/node_modules/form-data/lib/browser.js +1 -1
  76. package/node_modules/form-data/lib/form_data.js +101 -72
  77. package/node_modules/form-data/lib/populate.js +6 -5
  78. package/node_modules/form-data/package.json +68 -52
  79. package/node_modules/fs.realpath/package.json +19 -11
  80. package/node_modules/fstream/package.json +15 -7
  81. package/node_modules/fstream-ignore/package.json +15 -7
  82. package/node_modules/gauge/CHANGELOG.md +24 -0
  83. package/node_modules/gauge/README.md +4 -0
  84. package/node_modules/gauge/index.js +16 -9
  85. package/node_modules/gauge/package.json +37 -29
  86. package/node_modules/generate-function/package.json +16 -8
  87. package/node_modules/generate-object-property/package.json +14 -6
  88. package/node_modules/getpass/node_modules/assert-plus/package.json +16 -8
  89. package/node_modules/getpass/package.json +16 -8
  90. package/node_modules/glob/README.md +3 -0
  91. package/node_modules/glob/common.js +6 -1
  92. package/node_modules/glob/glob.js +23 -14
  93. package/node_modules/glob/package.json +29 -21
  94. package/node_modules/glob/sync.js +29 -11
  95. package/node_modules/graceful-fs/README.md +1 -1
  96. package/node_modules/graceful-fs/graceful-fs.js +23 -14
  97. package/node_modules/graceful-fs/package.json +35 -27
  98. package/node_modules/graceful-fs/polyfills.js +99 -21
  99. package/node_modules/graceful-readlink/package.json +14 -6
  100. package/node_modules/har-validator/package.json +16 -8
  101. package/node_modules/has-ansi/package.json +29 -21
  102. package/node_modules/has-unicode/package.json +18 -10
  103. package/node_modules/hawk/package.json +18 -10
  104. package/node_modules/hoek/package.json +14 -6
  105. package/node_modules/http-signature/package.json +14 -6
  106. package/node_modules/inflight/inflight.js +22 -12
  107. package/node_modules/inflight/package.json +28 -20
  108. package/node_modules/inherits/inherits.js +7 -1
  109. package/node_modules/inherits/package.json +41 -21
  110. package/node_modules/ini/package.json +15 -7
  111. package/node_modules/is-fullwidth-code-point/package.json +27 -19
  112. package/node_modules/is-my-json-valid/index.js +10 -0
  113. package/node_modules/is-my-json-valid/package.json +36 -20
  114. package/node_modules/is-my-json-valid/test/misc.js +24 -0
  115. package/node_modules/is-property/package.json +19 -11
  116. package/node_modules/is-typedarray/package.json +16 -8
  117. package/node_modules/isarray/package.json +28 -20
  118. package/node_modules/isstream/package.json +19 -11
  119. package/node_modules/jodid25519/package.json +18 -10
  120. package/node_modules/jsbn/index.js +8 -9
  121. package/node_modules/jsbn/package.json +30 -18
  122. package/node_modules/json-schema/lib/links.js +17 -3
  123. package/node_modules/json-schema/lib/validate.js +18 -5
  124. package/node_modules/json-schema/package.json +32 -18
  125. package/node_modules/json-stringify-safe/package.json +18 -10
  126. package/node_modules/{async/LICENSE → jsonpointer/LICENSE.md} +3 -1
  127. package/node_modules/jsonpointer/README.md +17 -10
  128. package/node_modules/jsonpointer/jsonpointer.js +73 -56
  129. package/node_modules/jsonpointer/package.json +47 -26
  130. package/node_modules/jsprim/CHANGES.md +4 -0
  131. package/node_modules/jsprim/package.json +25 -17
  132. package/node_modules/mime-db/HISTORY.md +50 -0
  133. package/node_modules/mime-db/db.json +126 -2
  134. package/node_modules/mime-db/package.json +43 -30
  135. package/node_modules/mime-types/HISTORY.md +19 -0
  136. package/node_modules/mime-types/index.js +8 -8
  137. package/node_modules/mime-types/package.json +32 -19
  138. package/node_modules/minimatch/minimatch.js +19 -20
  139. package/node_modules/minimatch/package.json +25 -17
  140. package/node_modules/minimist/package.json +24 -16
  141. package/node_modules/mkdirp/package.json +21 -13
  142. package/node_modules/ms/package.json +14 -6
  143. package/node_modules/node-pre-gyp/CHANGELOG.md +20 -0
  144. package/node_modules/node-pre-gyp/README.md +574 -0
  145. package/node_modules/node-pre-gyp/appveyor.yml +19 -9
  146. package/node_modules/node-pre-gyp/lib/install.js +31 -7
  147. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +3 -1
  148. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +140 -0
  149. package/node_modules/node-pre-gyp/package.json +52 -48
  150. package/node_modules/nopt/package.json +19 -11
  151. package/node_modules/npmlog/CHANGELOG.md +9 -0
  152. package/node_modules/npmlog/README.md +7 -1
  153. package/node_modules/npmlog/log.js +12 -8
  154. package/node_modules/npmlog/package.json +30 -22
  155. package/node_modules/number-is-nan/package.json +39 -30
  156. package/node_modules/number-is-nan/readme.md +1 -3
  157. package/node_modules/oauth-sign/package.json +15 -7
  158. package/node_modules/object-assign/index.js +11 -4
  159. package/node_modules/object-assign/package.json +42 -30
  160. package/node_modules/object-assign/readme.md +8 -3
  161. package/node_modules/once/README.md +28 -0
  162. package/node_modules/once/once.js +21 -0
  163. package/node_modules/once/package.json +31 -20
  164. package/node_modules/path-is-absolute/index.js +5 -5
  165. package/node_modules/path-is-absolute/package.json +45 -31
  166. package/node_modules/path-is-absolute/readme.md +19 -11
  167. package/node_modules/pinkie/package.json +18 -10
  168. package/node_modules/pinkie-promise/package.json +18 -10
  169. package/node_modules/process-nextick-args/package.json +16 -8
  170. package/node_modules/punycode/LICENSE-MIT.txt +20 -0
  171. package/node_modules/punycode/README.md +176 -0
  172. package/node_modules/punycode/package.json +127 -0
  173. package/node_modules/punycode/punycode.js +533 -0
  174. package/node_modules/qs/.eslintrc +15 -15
  175. package/node_modules/qs/CHANGELOG.md +36 -0
  176. package/node_modules/qs/README.md +431 -0
  177. package/node_modules/qs/dist/qs.js +167 -67
  178. package/node_modules/qs/lib/formats.js +18 -0
  179. package/node_modules/qs/lib/index.js +6 -4
  180. package/node_modules/qs/lib/parse.js +31 -32
  181. package/node_modules/qs/lib/stringify.js +83 -20
  182. package/node_modules/qs/lib/utils.js +23 -7
  183. package/node_modules/qs/package.json +40 -30
  184. package/node_modules/qs/test/.eslintrc +10 -0
  185. package/node_modules/qs/test/index.js +2 -0
  186. package/node_modules/qs/test/parse.js +108 -47
  187. package/node_modules/qs/test/stringify.js +261 -28
  188. package/node_modules/qs/test/utils.js +13 -0
  189. package/node_modules/rc/node_modules/minimist/package.json +24 -16
  190. package/node_modules/rc/package.json +35 -23
  191. package/node_modules/readable-stream/.npmignore +1 -0
  192. package/node_modules/readable-stream/.travis.yml +2 -7
  193. package/node_modules/readable-stream/README.md +6 -2
  194. package/node_modules/readable-stream/lib/_stream_readable.js +158 -110
  195. package/node_modules/readable-stream/lib/_stream_transform.js +7 -5
  196. package/node_modules/readable-stream/lib/_stream_writable.js +35 -7
  197. package/node_modules/readable-stream/lib/internal/streams/BufferList.js +64 -0
  198. package/node_modules/readable-stream/package.json +34 -26
  199. package/node_modules/request/CHANGELOG.md +49 -18
  200. package/node_modules/request/README.md +3 -2
  201. package/node_modules/request/index.js +2 -3
  202. package/node_modules/request/lib/auth.js +1 -1
  203. package/node_modules/request/lib/helpers.js +4 -13
  204. package/node_modules/request/lib/multipart.js +1 -1
  205. package/node_modules/request/lib/oauth.js +1 -1
  206. package/node_modules/request/lib/redirect.js +5 -1
  207. package/node_modules/request/package.json +50 -31
  208. package/node_modules/request/request.js +84 -43
  209. package/node_modules/rimraf/package.json +28 -20
  210. package/node_modules/rimraf/rimraf.js +2 -2
  211. package/node_modules/semver/README.md +4 -0
  212. package/node_modules/semver/package.json +27 -19
  213. package/node_modules/semver/semver.js +14 -5
  214. package/node_modules/set-blocking/package.json +21 -13
  215. package/node_modules/signal-exit/CHANGELOG.md +10 -0
  216. package/node_modules/signal-exit/LICENSE.txt +2 -0
  217. package/node_modules/signal-exit/index.js +9 -0
  218. package/node_modules/signal-exit/package.json +32 -24
  219. package/node_modules/signal-exit/signals.js +5 -4
  220. package/node_modules/sntp/package.json +16 -8
  221. package/node_modules/sshpk/README.md +214 -3
  222. package/node_modules/sshpk/bin/sshpk-conv +6 -0
  223. package/node_modules/sshpk/lib/certificate.js +291 -0
  224. package/node_modules/sshpk/lib/errors.js +14 -1
  225. package/node_modules/sshpk/lib/fingerprint.js +28 -7
  226. package/node_modules/sshpk/lib/formats/openssh-cert.js +289 -0
  227. package/node_modules/sshpk/lib/formats/pem.js +2 -2
  228. package/node_modules/sshpk/lib/formats/pkcs8.js +2 -7
  229. package/node_modules/sshpk/lib/formats/ssh-private.js +140 -17
  230. package/node_modules/sshpk/lib/formats/x509-pem.js +77 -0
  231. package/node_modules/sshpk/lib/formats/x509.js +484 -0
  232. package/node_modules/sshpk/lib/identity.js +277 -0
  233. package/node_modules/sshpk/lib/index.js +13 -1
  234. package/node_modules/sshpk/lib/key.js +1 -0
  235. package/node_modules/sshpk/lib/signature.js +14 -6
  236. package/node_modules/sshpk/lib/ssh-buffer.js +24 -0
  237. package/node_modules/sshpk/lib/utils.js +43 -1
  238. package/node_modules/sshpk/node_modules/assert-plus/package.json +16 -8
  239. package/node_modules/sshpk/package.json +32 -22
  240. package/node_modules/string-width/index.js +5 -0
  241. package/node_modules/string-width/package.json +49 -36
  242. package/node_modules/string-width/readme.md +4 -3
  243. package/node_modules/string_decoder/package.json +19 -11
  244. package/node_modules/stringstream/package.json +18 -10
  245. package/node_modules/strip-ansi/package.json +29 -21
  246. package/node_modules/strip-json-comments/index.js +70 -0
  247. package/node_modules/strip-json-comments/package.json +49 -43
  248. package/node_modules/strip-json-comments/readme.md +12 -28
  249. package/node_modules/supports-color/package.json +26 -18
  250. package/node_modules/tar/package.json +19 -11
  251. package/node_modules/tar-pack/README.md +4 -1
  252. package/node_modules/tar-pack/index.js +17 -12
  253. package/node_modules/tar-pack/node_modules/once/LICENSE +15 -0
  254. package/node_modules/tar-pack/node_modules/once/README.md +51 -0
  255. package/node_modules/tar-pack/node_modules/once/once.js +21 -0
  256. package/node_modules/tar-pack/node_modules/once/package.json +96 -0
  257. package/node_modules/tar-pack/node_modules/readable-stream/.npmignore +8 -0
  258. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/.travis.yml +4 -7
  259. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/LICENSE +0 -0
  260. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/README.md +2 -2
  261. package/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md +2015 -0
  262. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -0
  263. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/duplex.js +0 -0
  264. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/lib/_stream_duplex.js +0 -0
  265. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/lib/_stream_passthrough.js +0 -0
  266. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/lib/_stream_readable.js +164 -107
  267. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/lib/_stream_transform.js +3 -3
  268. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/lib/_stream_writable.js +25 -15
  269. package/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js +64 -0
  270. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/package.json +50 -30
  271. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/passthrough.js +0 -0
  272. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/readable.js +4 -0
  273. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/transform.js +0 -0
  274. package/node_modules/{bl → tar-pack}/node_modules/readable-stream/writable.js +0 -0
  275. package/node_modules/tar-pack/package.json +39 -22
  276. package/node_modules/tar-pack/test/index.js +43 -1
  277. package/node_modules/tough-cookie/README.md +17 -3
  278. package/node_modules/tough-cookie/lib/cookie.js +6 -12
  279. package/node_modules/tough-cookie/package.json +50 -35
  280. package/node_modules/tunnel-agent/package.json +15 -7
  281. package/node_modules/tweetnacl/AUTHORS.md +28 -0
  282. package/node_modules/tweetnacl/CHANGELOG.md +93 -0
  283. package/node_modules/tweetnacl/LICENSE +24 -0
  284. package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
  285. package/node_modules/tweetnacl/README.md +57 -61
  286. package/node_modules/tweetnacl/nacl-fast.js +22 -52
  287. package/node_modules/tweetnacl/nacl-fast.min.js +2 -2
  288. package/node_modules/tweetnacl/nacl.d.ts +98 -0
  289. package/node_modules/tweetnacl/nacl.js +21 -51
  290. package/node_modules/tweetnacl/nacl.min.js +1 -1
  291. package/node_modules/tweetnacl/package.json +47 -46
  292. package/node_modules/uid-number/package.json +15 -7
  293. package/node_modules/util-deprecate/package.json +21 -13
  294. package/node_modules/uuid/.npmignore +8 -0
  295. package/node_modules/uuid/.travis.yml +5 -0
  296. package/node_modules/uuid/AUTHORS +5 -0
  297. package/node_modules/uuid/HISTORY.md +28 -0
  298. package/node_modules/uuid/LICENSE.md +21 -0
  299. package/node_modules/uuid/README.md +132 -0
  300. package/node_modules/{node-uuid → uuid}/bin/uuid +0 -0
  301. package/node_modules/uuid/index.js +8 -0
  302. package/node_modules/uuid/lib/bytesToUuid.js +23 -0
  303. package/node_modules/uuid/lib/rng-browser.js +33 -0
  304. package/node_modules/uuid/lib/rng.js +10 -0
  305. package/node_modules/uuid/package.json +122 -0
  306. package/node_modules/uuid/test/mocha.opts +3 -0
  307. package/node_modules/uuid/test/test.js +96 -0
  308. package/node_modules/uuid/v1.js +103 -0
  309. package/node_modules/uuid/v4.js +29 -0
  310. package/node_modules/verror/package.json +14 -6
  311. package/node_modules/wide-align/package.json +19 -11
  312. package/node_modules/wrappy/package.json +17 -8
  313. package/node_modules/xtend/package.json +29 -21
  314. package/package.json +2 -2
  315. package/node_modules/async/CHANGELOG.md +0 -125
  316. package/node_modules/async/README.md +0 -1877
  317. package/node_modules/async/dist/async.js +0 -1265
  318. package/node_modules/async/dist/async.min.js +0 -2
  319. package/node_modules/async/lib/async.js +0 -1265
  320. package/node_modules/async/package.json +0 -149
  321. package/node_modules/bl/.jshintrc +0 -59
  322. package/node_modules/bl/.npmignore +0 -1
  323. package/node_modules/bl/.travis.yml +0 -13
  324. package/node_modules/bl/LICENSE.md +0 -13
  325. package/node_modules/bl/README.md +0 -200
  326. package/node_modules/bl/bl.js +0 -243
  327. package/node_modules/bl/node_modules/readable-stream/.npmignore +0 -5
  328. package/node_modules/bl/node_modules/readable-stream/.zuul.yml +0 -1
  329. package/node_modules/bl/node_modules/readable-stream/doc/stream.markdown +0 -1760
  330. package/node_modules/bl/package.json +0 -96
  331. package/node_modules/bl/test/test.js +0 -640
  332. package/node_modules/form-data/.dockerignore +0 -7
  333. package/node_modules/form-data/.editorconfig +0 -10
  334. package/node_modules/form-data/.eslintignore +0 -1
  335. package/node_modules/form-data/.eslintrc +0 -64
  336. package/node_modules/form-data/wercker.yml +0 -36
  337. package/node_modules/gauge/CHANGELOG.md~ +0 -123
  338. package/node_modules/gauge/README.md~ +0 -393
  339. package/node_modules/has-color/index.js +0 -32
  340. package/node_modules/has-color/package.json +0 -97
  341. package/node_modules/has-color/readme.md +0 -30
  342. package/node_modules/inherits/test.js +0 -25
  343. package/node_modules/jsonpointer/.travis.yml +0 -10
  344. package/node_modules/jsonpointer/test.js +0 -98
  345. package/node_modules/node-uuid/.npmignore +0 -4
  346. package/node_modules/node-uuid/README.md +0 -254
  347. package/node_modules/node-uuid/benchmark/README.md +0 -53
  348. package/node_modules/node-uuid/benchmark/bench.gnu +0 -174
  349. package/node_modules/node-uuid/benchmark/bench.sh +0 -34
  350. package/node_modules/node-uuid/benchmark/benchmark-native.c +0 -34
  351. package/node_modules/node-uuid/benchmark/benchmark.js +0 -84
  352. package/node_modules/node-uuid/bower.json +0 -23
  353. package/node_modules/node-uuid/component.json +0 -25
  354. package/node_modules/node-uuid/package.json +0 -105
  355. package/node_modules/node-uuid/test/compare_v1.js +0 -63
  356. package/node_modules/node-uuid/test/test.html +0 -17
  357. package/node_modules/node-uuid/test/test.js +0 -231
  358. package/node_modules/node-uuid/uuid.js +0 -272
  359. package/node_modules/npmlog/CHANGELOG.md~ +0 -31
  360. package/node_modules/qs/.jscs.json +0 -176
  361. package/node_modules/qs/CONTRIBUTING.md +0 -1
  362. package/node_modules/readable-stream/doc/stream.md +0 -1772
  363. package/node_modules/request/.eslintrc +0 -45
  364. package/node_modules/request/.npmignore +0 -6
  365. package/node_modules/request/.travis.yml +0 -21
  366. package/node_modules/request/CONTRIBUTING.md +0 -81
  367. package/node_modules/request/codecov.yml +0 -2
  368. package/node_modules/strip-json-comments/cli.js +0 -41
  369. package/node_modules/strip-json-comments/strip-json-comments.js +0 -73
@@ -0,0 +1,291 @@
1
+ // Copyright 2016 Joyent, Inc.
2
+
3
+ module.exports = Certificate;
4
+
5
+ var assert = require('assert-plus');
6
+ var algs = require('./algs');
7
+ var crypto = require('crypto');
8
+ var Fingerprint = require('./fingerprint');
9
+ var Signature = require('./signature');
10
+ var errs = require('./errors');
11
+ var util = require('util');
12
+ var utils = require('./utils');
13
+ var Key = require('./key');
14
+ var PrivateKey = require('./private-key');
15
+ var Identity = require('./identity');
16
+
17
+ var formats = {};
18
+ formats['openssh'] = require('./formats/openssh-cert');
19
+ formats['x509'] = require('./formats/x509');
20
+ formats['pem'] = require('./formats/x509-pem');
21
+
22
+ var CertificateParseError = errs.CertificateParseError;
23
+ var InvalidAlgorithmError = errs.InvalidAlgorithmError;
24
+
25
+ function Certificate(opts) {
26
+ assert.object(opts, 'options');
27
+ assert.arrayOfObject(opts.subjects, 'options.subjects');
28
+ utils.assertCompatible(opts.subjects[0], Identity, [1, 0],
29
+ 'options.subjects');
30
+ utils.assertCompatible(opts.subjectKey, Key, [1, 0],
31
+ 'options.subjectKey');
32
+ utils.assertCompatible(opts.issuer, Identity, [1, 0], 'options.issuer');
33
+ if (opts.issuerKey !== undefined) {
34
+ utils.assertCompatible(opts.issuerKey, Key, [1, 0],
35
+ 'options.issuerKey');
36
+ }
37
+ assert.object(opts.signatures, 'options.signatures');
38
+ assert.buffer(opts.serial, 'options.serial');
39
+ assert.date(opts.validFrom, 'options.validFrom');
40
+ assert.date(opts.validUntil, 'optons.validUntil');
41
+
42
+ this._hashCache = {};
43
+
44
+ this.subjects = opts.subjects;
45
+ this.issuer = opts.issuer;
46
+ this.subjectKey = opts.subjectKey;
47
+ this.issuerKey = opts.issuerKey;
48
+ this.signatures = opts.signatures;
49
+ this.serial = opts.serial;
50
+ this.validFrom = opts.validFrom;
51
+ this.validUntil = opts.validUntil;
52
+ }
53
+
54
+ Certificate.formats = formats;
55
+
56
+ Certificate.prototype.toBuffer = function (format, options) {
57
+ if (format === undefined)
58
+ format = 'x509';
59
+ assert.string(format, 'format');
60
+ assert.object(formats[format], 'formats[format]');
61
+ assert.optionalObject(options, 'options');
62
+
63
+ return (formats[format].write(this, options));
64
+ };
65
+
66
+ Certificate.prototype.toString = function (format, options) {
67
+ if (format === undefined)
68
+ format = 'pem';
69
+ return (this.toBuffer(format, options).toString());
70
+ };
71
+
72
+ Certificate.prototype.fingerprint = function (algo) {
73
+ if (algo === undefined)
74
+ algo = 'sha256';
75
+ assert.string(algo, 'algorithm');
76
+ var opts = {
77
+ type: 'certificate',
78
+ hash: this.hash(algo),
79
+ algorithm: algo
80
+ };
81
+ return (new Fingerprint(opts));
82
+ };
83
+
84
+ Certificate.prototype.hash = function (algo) {
85
+ assert.string(algo, 'algorithm');
86
+ algo = algo.toLowerCase();
87
+ if (algs.hashAlgs[algo] === undefined)
88
+ throw (new InvalidAlgorithmError(algo));
89
+
90
+ if (this._hashCache[algo])
91
+ return (this._hashCache[algo]);
92
+
93
+ var hash = crypto.createHash(algo).
94
+ update(this.toBuffer('x509')).digest();
95
+ this._hashCache[algo] = hash;
96
+ return (hash);
97
+ };
98
+
99
+ Certificate.prototype.isExpired = function (when) {
100
+ if (when === undefined)
101
+ when = new Date();
102
+ return (!((when.getTime() >= this.validFrom.getTime()) &&
103
+ (when.getTime() < this.validUntil.getTime())));
104
+ };
105
+
106
+ Certificate.prototype.isSignedBy = function (issuerCert) {
107
+ utils.assertCompatible(issuerCert, Certificate, [1, 0], 'issuer');
108
+
109
+ if (!this.issuer.equals(issuerCert.subjects[0]))
110
+ return (false);
111
+
112
+ return (this.isSignedByKey(issuerCert.subjectKey));
113
+ };
114
+
115
+ Certificate.prototype.isSignedByKey = function (issuerKey) {
116
+ utils.assertCompatible(issuerKey, Key, [1, 2], 'issuerKey');
117
+
118
+ if (this.issuerKey !== undefined) {
119
+ return (this.issuerKey.
120
+ fingerprint('sha512').matches(issuerKey));
121
+ }
122
+
123
+ var fmt = Object.keys(this.signatures)[0];
124
+ var valid = formats[fmt].verify(this, issuerKey);
125
+ if (valid)
126
+ this.issuerKey = issuerKey;
127
+ return (valid);
128
+ };
129
+
130
+ Certificate.prototype.signWith = function (key) {
131
+ utils.assertCompatible(key, PrivateKey, [1, 2], 'key');
132
+ var fmts = Object.keys(formats);
133
+ var didOne = false;
134
+ for (var i = 0; i < fmts.length; ++i) {
135
+ if (fmts[i] !== 'pem') {
136
+ var ret = formats[fmts[i]].sign(this, key);
137
+ if (ret === true)
138
+ didOne = true;
139
+ }
140
+ }
141
+ if (!didOne) {
142
+ throw (new Error('Failed to sign the certificate for any ' +
143
+ 'available certificate formats'));
144
+ }
145
+ };
146
+
147
+ Certificate.createSelfSigned = function (subjectOrSubjects, key, options) {
148
+ var subjects;
149
+ if (Array.isArray(subjectOrSubjects))
150
+ subjects = subjectOrSubjects;
151
+ else
152
+ subjects = [subjectOrSubjects];
153
+
154
+ assert.arrayOfObject(subjects);
155
+ subjects.forEach(function (subject) {
156
+ utils.assertCompatible(subject, Identity, [1, 0], 'subject');
157
+ });
158
+
159
+ utils.assertCompatible(key, PrivateKey, [1, 2], 'private key');
160
+
161
+ assert.optionalObject(options, 'options');
162
+ if (options === undefined)
163
+ options = {};
164
+ assert.optionalObject(options.validFrom, 'options.validFrom');
165
+ assert.optionalObject(options.validUntil, 'options.validUntil');
166
+ var validFrom = options.validFrom;
167
+ var validUntil = options.validUntil;
168
+ if (validFrom === undefined)
169
+ validFrom = new Date();
170
+ if (validUntil === undefined) {
171
+ assert.optionalNumber(options.lifetime, 'options.lifetime');
172
+ var lifetime = options.lifetime;
173
+ if (lifetime === undefined)
174
+ lifetime = 10*365*24*3600;
175
+ validUntil = new Date();
176
+ validUntil.setTime(validUntil.getTime() + lifetime*1000);
177
+ }
178
+ assert.optionalBuffer(options.serial, 'options.serial');
179
+ var serial = options.serial;
180
+ if (serial === undefined)
181
+ serial = new Buffer('0000000000000001', 'hex');
182
+
183
+ var cert = new Certificate({
184
+ subjects: subjects,
185
+ issuer: subjects[0],
186
+ subjectKey: key.toPublic(),
187
+ issuerKey: key.toPublic(),
188
+ signatures: {},
189
+ serial: serial,
190
+ validFrom: validFrom,
191
+ validUntil: validUntil
192
+ });
193
+ cert.signWith(key);
194
+
195
+ return (cert);
196
+ };
197
+
198
+ Certificate.create =
199
+ function (subjectOrSubjects, key, issuer, issuerKey, options) {
200
+ var subjects;
201
+ if (Array.isArray(subjectOrSubjects))
202
+ subjects = subjectOrSubjects;
203
+ else
204
+ subjects = [subjectOrSubjects];
205
+
206
+ assert.arrayOfObject(subjects);
207
+ subjects.forEach(function (subject) {
208
+ utils.assertCompatible(subject, Identity, [1, 0], 'subject');
209
+ });
210
+
211
+ utils.assertCompatible(key, Key, [1, 0], 'key');
212
+ if (PrivateKey.isPrivateKey(key))
213
+ key = key.toPublic();
214
+ utils.assertCompatible(issuer, Identity, [1, 0], 'issuer');
215
+ utils.assertCompatible(issuerKey, PrivateKey, [1, 2], 'issuer key');
216
+
217
+ assert.optionalObject(options, 'options');
218
+ if (options === undefined)
219
+ options = {};
220
+ assert.optionalObject(options.validFrom, 'options.validFrom');
221
+ assert.optionalObject(options.validUntil, 'options.validUntil');
222
+ var validFrom = options.validFrom;
223
+ var validUntil = options.validUntil;
224
+ if (validFrom === undefined)
225
+ validFrom = new Date();
226
+ if (validUntil === undefined) {
227
+ assert.optionalNumber(options.lifetime, 'options.lifetime');
228
+ var lifetime = options.lifetime;
229
+ if (lifetime === undefined)
230
+ lifetime = 10*365*24*3600;
231
+ validUntil = new Date();
232
+ validUntil.setTime(validUntil.getTime() + lifetime*1000);
233
+ }
234
+ assert.optionalBuffer(options.serial, 'options.serial');
235
+ var serial = options.serial;
236
+ if (serial === undefined)
237
+ serial = new Buffer('0000000000000001', 'hex');
238
+
239
+ var cert = new Certificate({
240
+ subjects: subjects,
241
+ issuer: issuer,
242
+ subjectKey: key,
243
+ issuerKey: issuerKey.toPublic(),
244
+ signatures: {},
245
+ serial: serial,
246
+ validFrom: validFrom,
247
+ validUntil: validUntil
248
+ });
249
+ cert.signWith(issuerKey);
250
+
251
+ return (cert);
252
+ };
253
+
254
+ Certificate.parse = function (data, format, options) {
255
+ if (typeof (data) !== 'string')
256
+ assert.buffer(data, 'data');
257
+ if (format === undefined)
258
+ format = 'auto';
259
+ assert.string(format, 'format');
260
+ if (typeof (options) === 'string')
261
+ options = { filename: options };
262
+ assert.optionalObject(options, 'options');
263
+ if (options === undefined)
264
+ options = {};
265
+ assert.optionalString(options.filename, 'options.filename');
266
+ if (options.filename === undefined)
267
+ options.filename = '(unnamed)';
268
+
269
+ assert.object(formats[format], 'formats[format]');
270
+
271
+ try {
272
+ var k = formats[format].read(data, options);
273
+ return (k);
274
+ } catch (e) {
275
+ throw (new CertificateParseError(options.filename, format, e));
276
+ }
277
+ };
278
+
279
+ Certificate.isCertificate = function (obj, ver) {
280
+ return (utils.isCompatible(obj, Certificate, ver));
281
+ };
282
+
283
+ /*
284
+ * API versions for Certificate:
285
+ * [1,0] -- initial ver
286
+ */
287
+ Certificate.prototype._sshpkApiVersion = [1, 0];
288
+
289
+ Certificate._oldVersionDetect = function (obj) {
290
+ return ([1, 0]);
291
+ };
@@ -50,6 +50,18 @@ function SignatureParseError(type, format, innerErr) {
50
50
  }
51
51
  util.inherits(SignatureParseError, Error);
52
52
 
53
+ function CertificateParseError(name, format, innerErr) {
54
+ if (Error.captureStackTrace)
55
+ Error.captureStackTrace(this, CertificateParseError);
56
+ this.name = 'CertificateParseError';
57
+ this.format = format;
58
+ this.certName = name;
59
+ this.innerErr = innerErr;
60
+ this.message = 'Failed to parse ' + name + ' as a valid ' + format +
61
+ ' format certificate: ' + innerErr.message;
62
+ }
63
+ util.inherits(CertificateParseError, Error);
64
+
53
65
  function KeyEncryptedError(name, format) {
54
66
  if (Error.captureStackTrace)
55
67
  Error.captureStackTrace(this, KeyEncryptedError);
@@ -67,5 +79,6 @@ module.exports = {
67
79
  InvalidAlgorithmError: InvalidAlgorithmError,
68
80
  KeyParseError: KeyParseError,
69
81
  SignatureParseError: SignatureParseError,
70
- KeyEncryptedError: KeyEncryptedError
82
+ KeyEncryptedError: KeyEncryptedError,
83
+ CertificateParseError: CertificateParseError
71
84
  };
@@ -7,6 +7,7 @@ var algs = require('./algs');
7
7
  var crypto = require('crypto');
8
8
  var errs = require('./errors');
9
9
  var Key = require('./key');
10
+ var Certificate = require('./certificate');
10
11
  var utils = require('./utils');
11
12
 
12
13
  var FingerprintFormatError = errs.FingerprintFormatError;
@@ -14,6 +15,7 @@ var InvalidAlgorithmError = errs.InvalidAlgorithmError;
14
15
 
15
16
  function Fingerprint(opts) {
16
17
  assert.object(opts, 'options');
18
+ assert.string(opts.type, 'options.type');
17
19
  assert.buffer(opts.hash, 'options.hash');
18
20
  assert.string(opts.algorithm, 'options.algorithm');
19
21
 
@@ -22,6 +24,7 @@ function Fingerprint(opts) {
22
24
  throw (new InvalidAlgorithmError(this.algorithm));
23
25
 
24
26
  this.hash = opts.hash;
27
+ this.type = opts.type;
25
28
  }
26
29
 
27
30
  Fingerprint.prototype.toString = function (format) {
@@ -44,11 +47,16 @@ Fingerprint.prototype.toString = function (format) {
44
47
  }
45
48
  };
46
49
 
47
- Fingerprint.prototype.matches = function (key) {
48
- assert.object(key, 'key');
49
- utils.assertCompatible(key, Key, [1, 0], 'key');
50
+ Fingerprint.prototype.matches = function (other) {
51
+ assert.object(other, 'key or certificate');
52
+ if (this.type === 'key') {
53
+ utils.assertCompatible(other, Key, [1, 0], 'key');
54
+ } else {
55
+ utils.assertCompatible(other, Certificate, [1, 0],
56
+ 'certificate');
57
+ }
50
58
 
51
- var theirHash = key.hash(this.algorithm);
59
+ var theirHash = other.hash(this.algorithm);
52
60
  var theirHash2 = crypto.createHash(this.algorithm).
53
61
  update(theirHash).digest('base64');
54
62
 
@@ -59,10 +67,19 @@ Fingerprint.prototype.matches = function (key) {
59
67
  return (this.hash2 === theirHash2);
60
68
  };
61
69
 
62
- Fingerprint.parse = function (fp, enAlgs) {
70
+ Fingerprint.parse = function (fp, options) {
63
71
  assert.string(fp, 'fingerprint');
64
72
 
65
- var alg, hash;
73
+ var alg, hash, enAlgs;
74
+ if (Array.isArray(options)) {
75
+ enAlgs = options;
76
+ options = {};
77
+ }
78
+ assert.optionalObject(options, 'options');
79
+ if (options === undefined)
80
+ options = {};
81
+ if (options.enAlgs !== undefined)
82
+ enAlgs = options.enAlgs;
66
83
  assert.optionalArrayOfString(enAlgs, 'algorithms');
67
84
 
68
85
  var parts = fp.split(':');
@@ -105,7 +122,11 @@ Fingerprint.parse = function (fp, enAlgs) {
105
122
  throw (new InvalidAlgorithmError(alg));
106
123
  }
107
124
 
108
- return (new Fingerprint({algorithm: alg, hash: hash}));
125
+ return (new Fingerprint({
126
+ algorithm: alg,
127
+ hash: hash,
128
+ type: options.type || 'key'
129
+ }));
109
130
  };
110
131
 
111
132
  function addColons(s) {
@@ -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
+ }
@@ -107,9 +107,9 @@ function read(buf, options, forceType) {
107
107
 
108
108
  /* The new OpenSSH internal format abuses PEM headers */
109
109
  if (alg && alg.toLowerCase() === 'openssh')
110
- return (sshpriv.readSSHPrivate(type, buf));
110
+ return (sshpriv.readSSHPrivate(type, buf, options));
111
111
  if (alg && alg.toLowerCase() === 'ssh2')
112
- return (rfc4253.readType(type, buf));
112
+ return (rfc4253.readType(type, buf, options));
113
113
 
114
114
  var der = new asn1.BerReader(buf);
115
115
  der.originalInput = input;