fsevents 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (581) hide show
  1. package/.travis.yml +7 -9
  2. package/build/.target.mk +6 -2
  3. package/build/Makefile +6 -6
  4. package/build/Release/.deps/Release/.node.d +1 -0
  5. package/build/Release/.deps/Release/fse.node.d +1 -0
  6. package/build/Release/.deps/Release/obj.target/action_after_build.stamp.d +1 -0
  7. package/build/Release/.deps/Release/obj.target/fse/fsevents.o.d +65 -0
  8. package/build/Release/.deps/Users/eshanker/Code/fsevents/lib/binding/Release/node-v48-darwin-x64/fse.node.d +1 -0
  9. package/build/Release/.node +0 -0
  10. package/build/Release/fse.node +0 -0
  11. package/build/Release/obj.target/action_after_build.stamp +0 -0
  12. package/build/Release/obj.target/fse/fsevents.o +0 -0
  13. package/build/action_after_build.target.mk +4 -4
  14. package/build/fse.target.mk +22 -12
  15. package/build/gyp-mac-tool +1 -2
  16. package/build/stage/v1.1.2/fse-v1.1.2-node-v48-darwin-x64.tar.gz +0 -0
  17. package/lib/binding/Release/node-v48-darwin-x64/fse.node +0 -0
  18. package/lib/binding/Release/node-v57-darwin-x64/fse.node +0 -0
  19. package/node_modules/abbrev/package.json +15 -51
  20. package/node_modules/ajv/.tonic_example.js +20 -0
  21. package/node_modules/{is-my-json-valid → ajv}/LICENSE +6 -5
  22. package/node_modules/ajv/README.md +1213 -0
  23. package/node_modules/ajv/dist/ajv.bundle.js +8023 -0
  24. package/node_modules/ajv/dist/ajv.min.js +6 -0
  25. package/node_modules/ajv/dist/ajv.min.js.map +1 -0
  26. package/node_modules/ajv/dist/nodent.min.js +8 -0
  27. package/node_modules/ajv/dist/regenerator.min.js +32 -0
  28. package/node_modules/ajv/lib/ajv.d.ts +284 -0
  29. package/node_modules/ajv/lib/ajv.js +420 -0
  30. package/node_modules/ajv/lib/async.js +218 -0
  31. package/node_modules/ajv/lib/cache.js +26 -0
  32. package/node_modules/ajv/lib/compile/_rules.js +28 -0
  33. package/node_modules/ajv/lib/compile/equal.js +45 -0
  34. package/node_modules/ajv/lib/compile/formats.js +164 -0
  35. package/node_modules/ajv/lib/compile/index.js +390 -0
  36. package/node_modules/ajv/lib/compile/resolve.js +267 -0
  37. package/node_modules/ajv/lib/compile/rules.js +40 -0
  38. package/node_modules/ajv/lib/compile/schema_obj.js +9 -0
  39. package/node_modules/ajv/lib/compile/ucs2length.js +20 -0
  40. package/node_modules/ajv/lib/compile/util.js +257 -0
  41. package/node_modules/ajv/lib/compile/validation_error.js +14 -0
  42. package/node_modules/ajv/lib/dot/_limit.jst +49 -0
  43. package/node_modules/ajv/lib/dot/_limitItems.jst +10 -0
  44. package/node_modules/ajv/lib/dot/_limitLength.jst +10 -0
  45. package/node_modules/ajv/lib/dot/_limitProperties.jst +10 -0
  46. package/node_modules/ajv/lib/dot/allOf.jst +34 -0
  47. package/node_modules/ajv/lib/dot/anyOf.jst +48 -0
  48. package/node_modules/ajv/lib/dot/coerce.def +61 -0
  49. package/node_modules/ajv/lib/dot/custom.jst +184 -0
  50. package/node_modules/ajv/lib/dot/defaults.def +32 -0
  51. package/node_modules/ajv/lib/dot/definitions.def +182 -0
  52. package/node_modules/ajv/lib/dot/dependencies.jst +69 -0
  53. package/node_modules/ajv/lib/dot/enum.jst +30 -0
  54. package/node_modules/ajv/lib/dot/errors.def +185 -0
  55. package/node_modules/ajv/lib/dot/format.jst +100 -0
  56. package/node_modules/ajv/lib/dot/items.jst +101 -0
  57. package/node_modules/ajv/lib/dot/missing.def +34 -0
  58. package/node_modules/ajv/lib/dot/multipleOf.jst +20 -0
  59. package/node_modules/ajv/lib/dot/not.jst +43 -0
  60. package/node_modules/ajv/lib/dot/oneOf.jst +44 -0
  61. package/node_modules/ajv/lib/dot/pattern.jst +14 -0
  62. package/node_modules/ajv/lib/dot/properties.jst +319 -0
  63. package/node_modules/ajv/lib/dot/ref.jst +86 -0
  64. package/node_modules/ajv/lib/dot/required.jst +96 -0
  65. package/node_modules/ajv/lib/dot/uniqueItems.jst +38 -0
  66. package/node_modules/ajv/lib/dot/v5/_formatLimit.jst +116 -0
  67. package/node_modules/ajv/lib/dot/v5/constant.jst +10 -0
  68. package/node_modules/ajv/lib/dot/v5/patternRequired.jst +28 -0
  69. package/node_modules/ajv/lib/dot/v5/switch.jst +73 -0
  70. package/node_modules/ajv/lib/dot/validate.jst +210 -0
  71. package/node_modules/ajv/lib/dotjs/README.md +3 -0
  72. package/node_modules/ajv/lib/dotjs/_formatLimit.js +176 -0
  73. package/node_modules/ajv/lib/dotjs/_limit.js +124 -0
  74. package/node_modules/ajv/lib/dotjs/_limitItems.js +76 -0
  75. package/node_modules/ajv/lib/dotjs/_limitLength.js +81 -0
  76. package/node_modules/ajv/lib/dotjs/_limitProperties.js +76 -0
  77. package/node_modules/ajv/lib/dotjs/allOf.js +43 -0
  78. package/node_modules/ajv/lib/dotjs/anyOf.js +65 -0
  79. package/node_modules/ajv/lib/dotjs/constant.js +52 -0
  80. package/node_modules/ajv/lib/dotjs/custom.js +220 -0
  81. package/node_modules/ajv/lib/dotjs/dependencies.js +147 -0
  82. package/node_modules/ajv/lib/dotjs/enum.js +65 -0
  83. package/node_modules/ajv/lib/dotjs/format.js +138 -0
  84. package/node_modules/ajv/lib/dotjs/items.js +144 -0
  85. package/node_modules/ajv/lib/dotjs/multipleOf.js +76 -0
  86. package/node_modules/ajv/lib/dotjs/not.js +83 -0
  87. package/node_modules/ajv/lib/dotjs/oneOf.js +76 -0
  88. package/node_modules/ajv/lib/dotjs/pattern.js +74 -0
  89. package/node_modules/ajv/lib/dotjs/patternRequired.js +51 -0
  90. package/node_modules/ajv/lib/dotjs/properties.js +445 -0
  91. package/node_modules/ajv/lib/dotjs/ref.js +119 -0
  92. package/node_modules/ajv/lib/dotjs/required.js +249 -0
  93. package/node_modules/ajv/lib/dotjs/switch.js +128 -0
  94. package/node_modules/ajv/lib/dotjs/uniqueItems.js +71 -0
  95. package/node_modules/ajv/lib/dotjs/validate.js +375 -0
  96. package/node_modules/ajv/lib/keyword.js +129 -0
  97. package/node_modules/ajv/lib/refs/json-schema-draft-04.json +150 -0
  98. package/node_modules/ajv/lib/refs/json-schema-v5.json +328 -0
  99. package/node_modules/ajv/lib/v5.js +52 -0
  100. package/node_modules/ajv/package.json +132 -0
  101. package/node_modules/ajv/scripts/.eslintrc.yml +3 -0
  102. package/node_modules/ajv/scripts/bundle.js +54 -0
  103. package/node_modules/ajv/scripts/compile-dots.js +73 -0
  104. package/node_modules/ajv/scripts/info +10 -0
  105. package/node_modules/ajv/scripts/prepare-tests +9 -0
  106. package/node_modules/ajv/scripts/travis-gh-pages +23 -0
  107. package/node_modules/ansi-regex/package.json +26 -49
  108. package/node_modules/aproba/package.json +15 -48
  109. package/node_modules/are-we-there-yet/CHANGES.md +12 -0
  110. package/node_modules/are-we-there-yet/CHANGES.md~ +27 -0
  111. package/node_modules/are-we-there-yet/README.md +4 -3
  112. package/node_modules/are-we-there-yet/package.json +28 -54
  113. package/node_modules/asn1/package.json +16 -48
  114. package/node_modules/assert-plus/package.json +15 -47
  115. package/node_modules/asynckit/package.json +15 -49
  116. package/node_modules/aws-sign2/package.json +15 -45
  117. package/node_modules/aws4/package.json +15 -50
  118. package/node_modules/balanced-match/package.json +15 -49
  119. package/node_modules/bcrypt-pbkdf/package.json +16 -62
  120. package/node_modules/block-stream/package.json +15 -49
  121. package/node_modules/boom/package.json +15 -54
  122. package/node_modules/brace-expansion/README.md +1 -0
  123. package/node_modules/brace-expansion/index.js +1 -1
  124. package/node_modules/brace-expansion/package.json +20 -56
  125. package/node_modules/buffer-shims/package.json +15 -51
  126. package/node_modules/caseless/index.js +1 -0
  127. package/node_modules/caseless/package.json +19 -58
  128. package/node_modules/caseless/test.js +27 -0
  129. package/node_modules/co/History.md +172 -0
  130. package/node_modules/{commander → co}/LICENSE +1 -1
  131. package/node_modules/co/Readme.md +212 -0
  132. package/node_modules/co/index.js +237 -0
  133. package/node_modules/co/package.json +67 -0
  134. package/node_modules/code-point-at/package.json +15 -50
  135. package/node_modules/combined-stream/package.json +15 -58
  136. package/node_modules/concat-map/package.json +13 -41
  137. package/node_modules/console-control-strings/package.json +15 -50
  138. package/node_modules/core-util-is/package.json +15 -47
  139. package/node_modules/cryptiles/package.json +15 -49
  140. package/node_modules/dashdash/node_modules/assert-plus/package.json +15 -47
  141. package/node_modules/dashdash/package.json +15 -72
  142. package/node_modules/debug/.coveralls.yml +1 -0
  143. package/node_modules/debug/.eslintrc +11 -0
  144. package/node_modules/debug/.npmignore +3 -0
  145. package/node_modules/debug/.travis.yml +14 -0
  146. package/node_modules/debug/CHANGELOG.md +357 -0
  147. package/node_modules/debug/LICENSE +19 -0
  148. package/node_modules/debug/Makefile +28 -14
  149. package/node_modules/debug/README.md +312 -0
  150. package/node_modules/debug/component.json +4 -4
  151. package/node_modules/debug/karma.conf.js +70 -0
  152. package/node_modules/debug/node.js +1 -209
  153. package/node_modules/debug/package.json +41 -58
  154. package/node_modules/debug/{browser.js → src/browser.js} +29 -12
  155. package/node_modules/debug/{debug.js → src/debug.js} +42 -37
  156. package/node_modules/debug/src/index.js +10 -0
  157. package/node_modules/debug/src/node.js +246 -0
  158. package/node_modules/deep-extend/README.md +1 -1
  159. package/node_modules/deep-extend/lib/deep-extend.js +2 -2
  160. package/node_modules/deep-extend/package.json +22 -48
  161. package/node_modules/delayed-stream/package.json +15 -49
  162. package/node_modules/delegates/package.json +15 -50
  163. package/node_modules/ecc-jsbn/package.json +21 -45
  164. package/node_modules/extend/.eslintrc +10 -185
  165. package/node_modules/extend/.jscs.json +75 -4
  166. package/node_modules/extend/.travis.yml +154 -19
  167. package/node_modules/extend/CHANGELOG.md +8 -0
  168. package/node_modules/extend/README.md +20 -1
  169. package/node_modules/extend/index.js +8 -8
  170. package/node_modules/extend/package.json +26 -56
  171. package/node_modules/extsprintf/package.json +12 -43
  172. package/node_modules/forever-agent/package.json +16 -53
  173. package/node_modules/form-data/README.md +4 -4
  174. package/node_modules/form-data/lib/form_data.js +4 -0
  175. package/node_modules/form-data/package.json +18 -64
  176. package/node_modules/fs.realpath/package.json +15 -49
  177. package/node_modules/fstream/lib/reader.js +4 -4
  178. package/node_modules/fstream/lib/writer.js +2 -2
  179. package/node_modules/fstream/package.json +19 -67
  180. package/node_modules/fstream-ignore/package.json +15 -57
  181. package/node_modules/gauge/CHANGELOG.md +5 -0
  182. package/node_modules/gauge/package.json +18 -52
  183. package/node_modules/gauge/plumbing.js +1 -0
  184. package/node_modules/getpass/node_modules/assert-plus/package.json +15 -47
  185. package/node_modules/getpass/package.json +19 -58
  186. package/node_modules/glob/glob.js +0 -2
  187. package/node_modules/glob/package.json +19 -53
  188. package/node_modules/graceful-fs/package.json +15 -49
  189. package/node_modules/har-schema/LICENSE +13 -0
  190. package/node_modules/har-schema/README.md +49 -0
  191. package/node_modules/har-schema/lib/afterRequest.json +29 -0
  192. package/node_modules/har-schema/lib/beforeRequest.json +29 -0
  193. package/node_modules/har-schema/lib/browser.json +19 -0
  194. package/node_modules/har-schema/lib/cache.json +20 -0
  195. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/content.json +1 -0
  196. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/cookie.json +1 -0
  197. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/creator.json +1 -0
  198. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/entry.json +5 -4
  199. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/har.json +2 -1
  200. package/node_modules/har-schema/lib/header.json +19 -0
  201. package/node_modules/har-schema/lib/index.js +22 -0
  202. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/log.json +5 -4
  203. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/page.json +2 -1
  204. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/pageTimings.json +1 -0
  205. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/postData.json +1 -0
  206. package/node_modules/{har-validator/lib/schemas/record.json → har-schema/lib/query.json} +1 -0
  207. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/request.json +5 -4
  208. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/response.json +4 -3
  209. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/timings.json +1 -0
  210. package/node_modules/har-schema/package.json +87 -0
  211. package/node_modules/har-validator/README.md +31 -265
  212. package/node_modules/har-validator/lib/browser/async.js +96 -0
  213. package/node_modules/har-validator/lib/browser/error.js +15 -0
  214. package/node_modules/har-validator/lib/browser/promise.js +93 -0
  215. package/node_modules/har-validator/lib/node4/async.js +136 -0
  216. package/node_modules/har-validator/lib/node4/error.js +22 -0
  217. package/node_modules/har-validator/lib/node4/promise.js +132 -0
  218. package/node_modules/har-validator/lib/node6/async.js +133 -0
  219. package/node_modules/har-validator/lib/node6/error.js +22 -0
  220. package/node_modules/har-validator/lib/node6/promise.js +130 -0
  221. package/node_modules/har-validator/lib/node7/async.js +133 -0
  222. package/node_modules/har-validator/lib/node7/error.js +22 -0
  223. package/node_modules/har-validator/lib/node7/promise.js +130 -0
  224. package/node_modules/har-validator/package.json +54 -72
  225. package/node_modules/har-validator/src/async.js +96 -0
  226. package/node_modules/har-validator/src/error.js +15 -0
  227. package/node_modules/har-validator/src/promise.js +93 -0
  228. package/node_modules/has-unicode/package.json +15 -50
  229. package/node_modules/hawk/package.json +15 -45
  230. package/node_modules/hoek/package.json +15 -55
  231. package/node_modules/http-signature/package.json +15 -53
  232. package/node_modules/inflight/package.json +15 -61
  233. package/node_modules/inherits/package.json +15 -58
  234. package/node_modules/ini/package.json +15 -45
  235. package/node_modules/is-fullwidth-code-point/package.json +16 -46
  236. package/node_modules/is-typedarray/package.json +15 -45
  237. package/node_modules/isarray/package.json +15 -46
  238. package/node_modules/isstream/package.json +15 -46
  239. package/node_modules/jodid25519/package.json +16 -44
  240. package/node_modules/jsbn/package.json +16 -53
  241. package/node_modules/json-schema/package.json +13 -41
  242. package/node_modules/{generate-function → json-stable-stringify}/.npmignore +0 -0
  243. package/node_modules/{generate-object-property → json-stable-stringify}/.travis.yml +1 -0
  244. package/node_modules/{ms → json-stable-stringify}/LICENSE +1 -3
  245. package/node_modules/json-stable-stringify/example/key_cmp.js +7 -0
  246. package/node_modules/json-stable-stringify/example/nested.js +3 -0
  247. package/node_modules/json-stable-stringify/example/str.js +3 -0
  248. package/node_modules/json-stable-stringify/example/value_cmp.js +7 -0
  249. package/node_modules/json-stable-stringify/index.js +84 -0
  250. package/node_modules/json-stable-stringify/package.json +75 -0
  251. package/node_modules/json-stable-stringify/readme.markdown +130 -0
  252. package/node_modules/json-stable-stringify/test/cmp.js +11 -0
  253. package/node_modules/json-stable-stringify/test/nested.js +35 -0
  254. package/node_modules/json-stable-stringify/test/replacer.js +74 -0
  255. package/node_modules/json-stable-stringify/test/space.js +59 -0
  256. package/node_modules/json-stable-stringify/test/str.js +32 -0
  257. package/node_modules/json-stable-stringify/test/to-json.js +20 -0
  258. package/node_modules/json-stringify-safe/package.json +15 -50
  259. package/node_modules/jsonify/README.markdown +34 -0
  260. package/node_modules/jsonify/index.js +2 -0
  261. package/node_modules/jsonify/lib/parse.js +273 -0
  262. package/node_modules/jsonify/lib/stringify.js +154 -0
  263. package/node_modules/jsonify/package.json +60 -0
  264. package/node_modules/jsonify/test/parse.js +16 -0
  265. package/node_modules/jsonify/test/stringify.js +15 -0
  266. package/node_modules/jsprim/CHANGES.md +4 -0
  267. package/node_modules/jsprim/README.md +55 -0
  268. package/node_modules/jsprim/lib/jsprim.js +248 -1
  269. package/node_modules/jsprim/node_modules/assert-plus/AUTHORS +6 -0
  270. package/node_modules/jsprim/node_modules/assert-plus/CHANGES.md +14 -0
  271. package/node_modules/jsprim/node_modules/assert-plus/README.md +162 -0
  272. package/node_modules/jsprim/node_modules/assert-plus/assert.js +211 -0
  273. package/node_modules/jsprim/node_modules/assert-plus/package.json +83 -0
  274. package/node_modules/jsprim/package.json +22 -57
  275. package/node_modules/mime-db/HISTORY.md +21 -0
  276. package/node_modules/mime-db/db.json +54 -0
  277. package/node_modules/mime-db/package.json +24 -63
  278. package/node_modules/mime-types/HISTORY.md +7 -0
  279. package/node_modules/mime-types/README.md +10 -5
  280. package/node_modules/mime-types/index.js +1 -1
  281. package/node_modules/mime-types/package.json +23 -66
  282. package/node_modules/minimatch/package.json +24 -58
  283. package/node_modules/minimist/package.json +12 -41
  284. package/node_modules/mkdirp/package.json +15 -47
  285. package/node_modules/ms/index.js +50 -23
  286. package/node_modules/{graceful-readlink/LICENSE → ms/license.md} +1 -2
  287. package/node_modules/ms/package.json +49 -61
  288. package/node_modules/ms/readme.md +51 -0
  289. package/node_modules/node-pre-gyp/CHANGELOG.md +15 -0
  290. package/node_modules/node-pre-gyp/README.md +12 -1
  291. package/node_modules/node-pre-gyp/appveyor.yml +1 -6
  292. package/node_modules/node-pre-gyp/cloudformation/travis.template +73 -0
  293. package/node_modules/node-pre-gyp/contributing.md +10 -0
  294. package/node_modules/node-pre-gyp/lib/install.js +5 -47
  295. package/node_modules/node-pre-gyp/lib/testbinary.js +8 -2
  296. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +72 -0
  297. package/node_modules/node-pre-gyp/package.json +30 -76
  298. package/node_modules/node-pre-gyp/template-name.diff +12 -0
  299. package/node_modules/nopt/.travis.yml +3 -4
  300. package/node_modules/nopt/CHANGELOG.md +58 -0
  301. package/node_modules/nopt/README.md +28 -26
  302. package/node_modules/nopt/lib/nopt.js +50 -29
  303. package/node_modules/nopt/package.json +22 -59
  304. package/node_modules/nopt/test/basic.js +36 -6
  305. package/node_modules/npmlog/CHANGELOG.md +5 -1
  306. package/node_modules/npmlog/log.js +2 -0
  307. package/node_modules/npmlog/package.json +21 -67
  308. package/node_modules/number-is-nan/package.json +15 -50
  309. package/node_modules/oauth-sign/package.json +15 -56
  310. package/node_modules/object-assign/package.json +15 -58
  311. package/node_modules/once/package.json +15 -49
  312. package/node_modules/os-homedir/index.js +24 -0
  313. package/node_modules/{ansi-styles → os-homedir}/license +0 -0
  314. package/node_modules/os-homedir/package.json +74 -0
  315. package/node_modules/os-homedir/readme.md +31 -0
  316. package/node_modules/os-tmpdir/index.js +25 -0
  317. package/node_modules/{chalk → os-tmpdir}/license +0 -0
  318. package/node_modules/os-tmpdir/package.json +74 -0
  319. package/node_modules/os-tmpdir/readme.md +32 -0
  320. package/node_modules/osenv/.npmignore +13 -0
  321. package/node_modules/osenv/.travis.yml +9 -0
  322. package/node_modules/{tar-pack/node_modules/once → osenv}/LICENSE +0 -0
  323. package/node_modules/osenv/README.md +63 -0
  324. package/node_modules/osenv/osenv.js +72 -0
  325. package/node_modules/osenv/package.json +68 -0
  326. package/node_modules/osenv/test/unix.js +71 -0
  327. package/node_modules/osenv/test/windows.js +74 -0
  328. package/node_modules/osenv/x.tap +39 -0
  329. package/node_modules/path-is-absolute/package.json +15 -50
  330. package/node_modules/performance-now/.npmignore +1 -0
  331. package/node_modules/performance-now/.tm_properties +7 -0
  332. package/node_modules/{generate-function → performance-now}/.travis.yml +1 -0
  333. package/node_modules/performance-now/Makefile +25 -0
  334. package/node_modules/performance-now/README.md +30 -0
  335. package/node_modules/performance-now/lib/performance-now.js +32 -0
  336. package/node_modules/performance-now/license.txt +7 -0
  337. package/node_modules/performance-now/package.json +58 -0
  338. package/node_modules/performance-now/src/performance-now.coffee +15 -0
  339. package/node_modules/performance-now/test/mocha.opts +3 -0
  340. package/node_modules/performance-now/test/performance-now.coffee +38 -0
  341. package/node_modules/process-nextick-args/package.json +15 -51
  342. package/node_modules/punycode/package.json +14 -49
  343. package/node_modules/qs/.eslintrc +4 -5
  344. package/node_modules/qs/.jscs.json +176 -0
  345. package/node_modules/qs/CHANGELOG.md +19 -0
  346. package/node_modules/qs/README.md +10 -1
  347. package/node_modules/qs/dist/qs.js +24 -14
  348. package/node_modules/qs/lib/index.js +0 -0
  349. package/node_modules/qs/lib/parse.js +6 -5
  350. package/node_modules/qs/lib/stringify.js +15 -8
  351. package/node_modules/qs/lib/utils.js +3 -1
  352. package/node_modules/qs/package.json +19 -61
  353. package/node_modules/qs/test/.eslintrc +2 -1
  354. package/node_modules/qs/test/parse.js +37 -2
  355. package/node_modules/qs/test/stringify.js +29 -0
  356. package/node_modules/qs/test/utils.js +0 -0
  357. package/node_modules/rc/lib/utils.js +2 -1
  358. package/node_modules/rc/node_modules/minimist/package.json +15 -46
  359. package/node_modules/rc/package.json +18 -53
  360. package/node_modules/rc/test/nested-env-vars.js +31 -21
  361. package/node_modules/readable-stream/.travis.yml +2 -2
  362. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  363. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  364. package/node_modules/readable-stream/LICENSE +29 -0
  365. package/node_modules/readable-stream/README.md +20 -3
  366. package/node_modules/readable-stream/duplex-browser.js +1 -0
  367. package/node_modules/readable-stream/duplex.js +1 -1
  368. package/node_modules/readable-stream/lib/_stream_readable.js +7 -13
  369. package/node_modules/readable-stream/lib/_stream_writable.js +18 -28
  370. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  371. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  372. package/node_modules/readable-stream/package.json +25 -67
  373. package/node_modules/readable-stream/passthrough.js +1 -1
  374. package/node_modules/{tar-pack/node_modules/readable-stream/readable.js → readable-stream/readable-browser.js} +1 -10
  375. package/node_modules/readable-stream/readable.js +17 -14
  376. package/node_modules/readable-stream/transform.js +1 -1
  377. package/node_modules/readable-stream/writable-browser.js +1 -0
  378. package/node_modules/readable-stream/writable.js +8 -1
  379. package/node_modules/request/CHANGELOG.md +23 -11
  380. package/node_modules/request/README.md +36 -19
  381. package/node_modules/request/lib/helpers.js +2 -1
  382. package/node_modules/request/lib/multipart.js +2 -1
  383. package/node_modules/request/lib/oauth.js +2 -1
  384. package/node_modules/request/package.json +30 -74
  385. package/node_modules/request/request.js +106 -16
  386. package/node_modules/rimraf/bin.js +13 -3
  387. package/node_modules/rimraf/package.json +19 -55
  388. package/node_modules/rimraf/rimraf.js +22 -2
  389. package/node_modules/safe-buffer/.travis.yml +7 -0
  390. package/node_modules/{is-property → safe-buffer}/LICENSE +1 -2
  391. package/node_modules/safe-buffer/README.md +581 -0
  392. package/node_modules/safe-buffer/browser.js +1 -0
  393. package/node_modules/safe-buffer/index.js +58 -0
  394. package/node_modules/safe-buffer/package.json +64 -0
  395. package/node_modules/safe-buffer/test.js +99 -0
  396. package/node_modules/semver/package.json +15 -54
  397. package/node_modules/set-blocking/package.json +15 -50
  398. package/node_modules/signal-exit/package.json +15 -54
  399. package/node_modules/sntp/package.json +16 -45
  400. package/node_modules/sshpk/README.md +38 -6
  401. package/node_modules/sshpk/lib/certificate.js +88 -2
  402. package/node_modules/sshpk/lib/dhe.js +101 -2
  403. package/node_modules/sshpk/lib/formats/openssh-cert.js +34 -1
  404. package/node_modules/sshpk/lib/formats/x509.js +247 -5
  405. package/node_modules/sshpk/lib/identity.js +1 -1
  406. package/node_modules/sshpk/lib/index.js +1 -0
  407. package/node_modules/sshpk/lib/key.js +6 -2
  408. package/node_modules/sshpk/lib/private-key.js +25 -1
  409. package/node_modules/sshpk/lib/signature.js +76 -8
  410. package/node_modules/sshpk/node_modules/assert-plus/package.json +15 -47
  411. package/node_modules/sshpk/package.json +21 -53
  412. package/node_modules/string-width/package.json +15 -50
  413. package/node_modules/string_decoder/LICENSE +48 -20
  414. package/node_modules/string_decoder/README.md +25 -4
  415. package/node_modules/string_decoder/lib/string_decoder.js +272 -0
  416. package/node_modules/string_decoder/package.json +24 -55
  417. package/node_modules/stringstream/package.json +15 -48
  418. package/node_modules/strip-ansi/package.json +27 -50
  419. package/node_modules/strip-json-comments/package.json +15 -50
  420. package/node_modules/tar/package.json +15 -58
  421. package/node_modules/tar-pack/package.json +28 -79
  422. package/node_modules/tough-cookie/package.json +15 -57
  423. package/node_modules/tunnel-agent/index.js +5 -4
  424. package/node_modules/tunnel-agent/package.json +22 -66
  425. package/node_modules/tweetnacl/package.json +16 -50
  426. package/node_modules/uid-number/package.json +16 -46
  427. package/node_modules/util-deprecate/package.json +15 -48
  428. package/node_modules/uuid/package.json +15 -58
  429. package/node_modules/verror/package.json +12 -41
  430. package/node_modules/wide-align/package.json +25 -51
  431. package/node_modules/wrappy/package.json +15 -54
  432. package/package.json +4 -3
  433. package/node_modules/ansi-styles/index.js +0 -65
  434. package/node_modules/ansi-styles/package.json +0 -114
  435. package/node_modules/ansi-styles/readme.md +0 -86
  436. package/node_modules/are-we-there-yet/.npmignore +0 -5
  437. package/node_modules/are-we-there-yet/test/lib/test-event.js +0 -29
  438. package/node_modules/are-we-there-yet/test/tracker.js +0 -57
  439. package/node_modules/are-we-there-yet/test/trackergroup.js +0 -96
  440. package/node_modules/are-we-there-yet/test/trackerstream.js +0 -51
  441. package/node_modules/chalk/index.js +0 -116
  442. package/node_modules/chalk/package.json +0 -140
  443. package/node_modules/chalk/readme.md +0 -213
  444. package/node_modules/commander/History.md +0 -261
  445. package/node_modules/commander/Readme.md +0 -351
  446. package/node_modules/commander/index.js +0 -1110
  447. package/node_modules/commander/package.json +0 -104
  448. package/node_modules/debug/.jshintrc +0 -3
  449. package/node_modules/debug/History.md +0 -195
  450. package/node_modules/debug/Readme.md +0 -188
  451. package/node_modules/debug/bower.json +0 -28
  452. package/node_modules/escape-string-regexp/index.js +0 -11
  453. package/node_modules/escape-string-regexp/license +0 -21
  454. package/node_modules/escape-string-regexp/package.json +0 -109
  455. package/node_modules/escape-string-regexp/readme.md +0 -27
  456. package/node_modules/generate-function/README.md +0 -72
  457. package/node_modules/generate-function/example.js +0 -27
  458. package/node_modules/generate-function/index.js +0 -61
  459. package/node_modules/generate-function/package.json +0 -87
  460. package/node_modules/generate-function/test.js +0 -33
  461. package/node_modules/generate-object-property/.npmignore +0 -1
  462. package/node_modules/generate-object-property/LICENSE +0 -21
  463. package/node_modules/generate-object-property/README.md +0 -19
  464. package/node_modules/generate-object-property/index.js +0 -12
  465. package/node_modules/generate-object-property/package.json +0 -84
  466. package/node_modules/generate-object-property/test.js +0 -12
  467. package/node_modules/graceful-readlink/.npmignore +0 -3
  468. package/node_modules/graceful-readlink/.travis.yml +0 -5
  469. package/node_modules/graceful-readlink/README.md +0 -17
  470. package/node_modules/graceful-readlink/index.js +0 -12
  471. package/node_modules/graceful-readlink/package.json +0 -83
  472. package/node_modules/har-validator/bin/har-validator +0 -56
  473. package/node_modules/har-validator/lib/async.js +0 -14
  474. package/node_modules/har-validator/lib/error.js +0 -10
  475. package/node_modules/har-validator/lib/index.js +0 -22
  476. package/node_modules/har-validator/lib/runner.js +0 -29
  477. package/node_modules/har-validator/lib/schemas/cache.json +0 -13
  478. package/node_modules/har-validator/lib/schemas/cacheEntry.json +0 -31
  479. package/node_modules/har-validator/lib/schemas/index.js +0 -49
  480. package/node_modules/has-ansi/index.js +0 -4
  481. package/node_modules/has-ansi/license +0 -21
  482. package/node_modules/has-ansi/package.json +0 -118
  483. package/node_modules/has-ansi/readme.md +0 -36
  484. package/node_modules/is-my-json-valid/.npmignore +0 -2
  485. package/node_modules/is-my-json-valid/.travis.yml +0 -3
  486. package/node_modules/is-my-json-valid/README.md +0 -173
  487. package/node_modules/is-my-json-valid/example.js +0 -18
  488. package/node_modules/is-my-json-valid/formats.js +0 -14
  489. package/node_modules/is-my-json-valid/index.js +0 -594
  490. package/node_modules/is-my-json-valid/package.json +0 -116
  491. package/node_modules/is-my-json-valid/require.js +0 -12
  492. package/node_modules/is-my-json-valid/test/fixtures/cosmic.js +0 -84
  493. package/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json +0 -82
  494. package/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json +0 -88
  495. package/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json +0 -112
  496. package/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json +0 -68
  497. package/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json +0 -107
  498. package/node_modules/is-my-json-valid/test/json-schema-draft4/default.json +0 -49
  499. package/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json +0 -32
  500. package/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json +0 -113
  501. package/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json +0 -72
  502. package/node_modules/is-my-json-valid/test/json-schema-draft4/format.json +0 -143
  503. package/node_modules/is-my-json-valid/test/json-schema-draft4/items.json +0 -46
  504. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json +0 -28
  505. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json +0 -28
  506. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json +0 -28
  507. package/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json +0 -42
  508. package/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json +0 -28
  509. package/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json +0 -28
  510. package/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json +0 -28
  511. package/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json +0 -42
  512. package/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json +0 -96
  513. package/node_modules/is-my-json-valid/test/json-schema-draft4/not.json +0 -96
  514. package/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json +0 -18
  515. package/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json +0 -18
  516. package/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json +0 -68
  517. package/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json +0 -23
  518. package/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json +0 -110
  519. package/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json +0 -92
  520. package/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json +0 -128
  521. package/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json +0 -74
  522. package/node_modules/is-my-json-valid/test/json-schema-draft4/required.json +0 -39
  523. package/node_modules/is-my-json-valid/test/json-schema-draft4/type.json +0 -330
  524. package/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json +0 -79
  525. package/node_modules/is-my-json-valid/test/json-schema.js +0 -23
  526. package/node_modules/is-my-json-valid/test/misc.js +0 -471
  527. package/node_modules/is-property/.npmignore +0 -17
  528. package/node_modules/is-property/README.md +0 -28
  529. package/node_modules/is-property/is-property.js +0 -5
  530. package/node_modules/is-property/package.json +0 -92
  531. package/node_modules/jsonpointer/LICENSE.md +0 -21
  532. package/node_modules/jsonpointer/README.md +0 -39
  533. package/node_modules/jsonpointer/jsonpointer.js +0 -93
  534. package/node_modules/jsonpointer/package.json +0 -112
  535. package/node_modules/ms/.npmignore +0 -5
  536. package/node_modules/ms/History.md +0 -66
  537. package/node_modules/ms/README.md +0 -35
  538. package/node_modules/pinkie/index.js +0 -292
  539. package/node_modules/pinkie/license +0 -21
  540. package/node_modules/pinkie/package.json +0 -100
  541. package/node_modules/pinkie/readme.md +0 -83
  542. package/node_modules/pinkie-promise/index.js +0 -3
  543. package/node_modules/pinkie-promise/license +0 -21
  544. package/node_modules/pinkie-promise/package.json +0 -102
  545. package/node_modules/pinkie-promise/readme.md +0 -28
  546. package/node_modules/string_decoder/index.js +0 -221
  547. package/node_modules/supports-color/index.js +0 -50
  548. package/node_modules/supports-color/license +0 -21
  549. package/node_modules/supports-color/package.json +0 -113
  550. package/node_modules/supports-color/readme.md +0 -36
  551. package/node_modules/tar-pack/node_modules/once/README.md +0 -51
  552. package/node_modules/tar-pack/node_modules/once/once.js +0 -21
  553. package/node_modules/tar-pack/node_modules/once/package.json +0 -96
  554. package/node_modules/tar-pack/node_modules/readable-stream/.npmignore +0 -8
  555. package/node_modules/tar-pack/node_modules/readable-stream/.travis.yml +0 -49
  556. package/node_modules/tar-pack/node_modules/readable-stream/LICENSE +0 -18
  557. package/node_modules/tar-pack/node_modules/readable-stream/README.md +0 -36
  558. package/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md +0 -2015
  559. package/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  560. package/node_modules/tar-pack/node_modules/readable-stream/duplex.js +0 -1
  561. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js +0 -75
  562. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js +0 -26
  563. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js +0 -937
  564. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js +0 -180
  565. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js +0 -526
  566. package/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -64
  567. package/node_modules/tar-pack/node_modules/readable-stream/package.json +0 -125
  568. package/node_modules/tar-pack/node_modules/readable-stream/passthrough.js +0 -1
  569. package/node_modules/tar-pack/node_modules/readable-stream/transform.js +0 -1
  570. package/node_modules/tar-pack/node_modules/readable-stream/writable.js +0 -1
  571. package/node_modules/wide-align/.npmignore +0 -5
  572. package/node_modules/wide-align/test/align.js +0 -37
  573. package/node_modules/xtend/.jshintrc +0 -30
  574. package/node_modules/xtend/.npmignore +0 -1
  575. package/node_modules/xtend/LICENCE +0 -19
  576. package/node_modules/xtend/Makefile +0 -4
  577. package/node_modules/xtend/README.md +0 -32
  578. package/node_modules/xtend/immutable.js +0 -19
  579. package/node_modules/xtend/mutable.js +0 -17
  580. package/node_modules/xtend/package.json +0 -117
  581. package/node_modules/xtend/test.js +0 -83
@@ -39,6 +39,8 @@ function Certificate(opts) {
39
39
  assert.date(opts.validFrom, 'options.validFrom');
40
40
  assert.date(opts.validUntil, 'optons.validUntil');
41
41
 
42
+ assert.optionalArrayOfString(opts.purposes, 'options.purposes');
43
+
42
44
  this._hashCache = {};
43
45
 
44
46
  this.subjects = opts.subjects;
@@ -49,6 +51,7 @@ function Certificate(opts) {
49
51
  this.serial = opts.serial;
50
52
  this.validFrom = opts.validFrom;
51
53
  this.validUntil = opts.validUntil;
54
+ this.purposes = opts.purposes;
52
55
  }
53
56
 
54
57
  Certificate.formats = formats;
@@ -108,6 +111,10 @@ Certificate.prototype.isSignedBy = function (issuerCert) {
108
111
 
109
112
  if (!this.issuer.equals(issuerCert.subjects[0]))
110
113
  return (false);
114
+ if (this.issuer.purposes && this.issuer.purposes.length > 0 &&
115
+ this.issuer.purposes.indexOf('ca') === -1) {
116
+ return (false);
117
+ }
111
118
 
112
119
  return (this.isSignedByKey(issuerCert.subjectKey));
113
120
  };
@@ -180,6 +187,47 @@ Certificate.createSelfSigned = function (subjectOrSubjects, key, options) {
180
187
  if (serial === undefined)
181
188
  serial = new Buffer('0000000000000001', 'hex');
182
189
 
190
+ var purposes = options.purposes;
191
+ if (purposes === undefined)
192
+ purposes = [];
193
+
194
+ if (purposes.indexOf('signature') === -1)
195
+ purposes.push('signature');
196
+
197
+ /* Self-signed certs are always CAs. */
198
+ if (purposes.indexOf('ca') === -1)
199
+ purposes.push('ca');
200
+ if (purposes.indexOf('crl') === -1)
201
+ purposes.push('crl');
202
+
203
+ /*
204
+ * If we weren't explicitly given any other purposes, do the sensible
205
+ * thing and add some basic ones depending on the subject type.
206
+ */
207
+ if (purposes.length <= 3) {
208
+ var hostSubjects = subjects.filter(function (subject) {
209
+ return (subject.type === 'host');
210
+ });
211
+ var userSubjects = subjects.filter(function (subject) {
212
+ return (subject.type === 'user');
213
+ });
214
+ if (hostSubjects.length > 0) {
215
+ if (purposes.indexOf('serverAuth') === -1)
216
+ purposes.push('serverAuth');
217
+ }
218
+ if (userSubjects.length > 0) {
219
+ if (purposes.indexOf('clientAuth') === -1)
220
+ purposes.push('clientAuth');
221
+ }
222
+ if (userSubjects.length > 0 || hostSubjects.length > 0) {
223
+ if (purposes.indexOf('keyAgreement') === -1)
224
+ purposes.push('keyAgreement');
225
+ if (key.type === 'rsa' &&
226
+ purposes.indexOf('encryption') === -1)
227
+ purposes.push('encryption');
228
+ }
229
+ }
230
+
183
231
  var cert = new Certificate({
184
232
  subjects: subjects,
185
233
  issuer: subjects[0],
@@ -188,7 +236,8 @@ Certificate.createSelfSigned = function (subjectOrSubjects, key, options) {
188
236
  signatures: {},
189
237
  serial: serial,
190
238
  validFrom: validFrom,
191
- validUntil: validUntil
239
+ validUntil: validUntil,
240
+ purposes: purposes
192
241
  });
193
242
  cert.signWith(key);
194
243
 
@@ -236,6 +285,42 @@ Certificate.create =
236
285
  if (serial === undefined)
237
286
  serial = new Buffer('0000000000000001', 'hex');
238
287
 
288
+ var purposes = options.purposes;
289
+ if (purposes === undefined)
290
+ purposes = [];
291
+
292
+ if (purposes.indexOf('signature') === -1)
293
+ purposes.push('signature');
294
+
295
+ if (options.ca === true) {
296
+ if (purposes.indexOf('ca') === -1)
297
+ purposes.push('ca');
298
+ if (purposes.indexOf('crl') === -1)
299
+ purposes.push('crl');
300
+ }
301
+
302
+ var hostSubjects = subjects.filter(function (subject) {
303
+ return (subject.type === 'host');
304
+ });
305
+ var userSubjects = subjects.filter(function (subject) {
306
+ return (subject.type === 'user');
307
+ });
308
+ if (hostSubjects.length > 0) {
309
+ if (purposes.indexOf('serverAuth') === -1)
310
+ purposes.push('serverAuth');
311
+ }
312
+ if (userSubjects.length > 0) {
313
+ if (purposes.indexOf('clientAuth') === -1)
314
+ purposes.push('clientAuth');
315
+ }
316
+ if (userSubjects.length > 0 || hostSubjects.length > 0) {
317
+ if (purposes.indexOf('keyAgreement') === -1)
318
+ purposes.push('keyAgreement');
319
+ if (key.type === 'rsa' &&
320
+ purposes.indexOf('encryption') === -1)
321
+ purposes.push('encryption');
322
+ }
323
+
239
324
  var cert = new Certificate({
240
325
  subjects: subjects,
241
326
  issuer: issuer,
@@ -244,7 +329,8 @@ Certificate.create =
244
329
  signatures: {},
245
330
  serial: serial,
246
331
  validFrom: validFrom,
247
- validUntil: validUntil
332
+ validUntil: validUntil,
333
+ purposes: purposes
248
334
  });
249
335
  cert.signWith(issuerKey);
250
336
 
@@ -1,12 +1,17 @@
1
- // Copyright 2015 Joyent, Inc.
1
+ // Copyright 2017 Joyent, Inc.
2
2
 
3
- module.exports = DiffieHellman;
3
+ module.exports = {
4
+ DiffieHellman: DiffieHellman,
5
+ generateECDSA: generateECDSA,
6
+ generateED25519: generateED25519
7
+ };
4
8
 
5
9
  var assert = require('assert-plus');
6
10
  var crypto = require('crypto');
7
11
  var algs = require('./algs');
8
12
  var utils = require('./utils');
9
13
  var ed;
14
+ var nacl;
10
15
 
11
16
  var Key = require('./key');
12
17
  var PrivateKey = require('./private-key');
@@ -309,3 +314,97 @@ ECPrivate.prototype.deriveSharedSecret = function (pubKey) {
309
314
  var S = pubKey._pub.multiply(this._priv);
310
315
  return (new Buffer(S.getX().toBigInteger().toByteArray()));
311
316
  };
317
+
318
+ function generateED25519() {
319
+ if (nacl === undefined)
320
+ nacl = require('tweetnacl');
321
+
322
+ var pair = nacl.sign.keyPair();
323
+ var priv = new Buffer(pair.secretKey);
324
+ var pub = new Buffer(pair.publicKey);
325
+ assert.strictEqual(priv.length, 64);
326
+ assert.strictEqual(pub.length, 32);
327
+
328
+ var parts = [];
329
+ parts.push({name: 'R', data: pub});
330
+ parts.push({name: 'r', data: priv});
331
+ var key = new PrivateKey({
332
+ type: 'ed25519',
333
+ parts: parts
334
+ });
335
+ return (key);
336
+ }
337
+
338
+ /* Generates a new ECDSA private key on a given curve. */
339
+ function generateECDSA(curve) {
340
+ var parts = [];
341
+ var key;
342
+
343
+ if (CRYPTO_HAVE_ECDH) {
344
+ /*
345
+ * Node crypto doesn't expose key generation directly, but the
346
+ * ECDH instances can generate keys. It turns out this just
347
+ * calls into the OpenSSL generic key generator, and we can
348
+ * read its output happily without doing an actual DH. So we
349
+ * use that here.
350
+ */
351
+ var osCurve = {
352
+ 'nistp256': 'prime256v1',
353
+ 'nistp384': 'secp384r1',
354
+ 'nistp521': 'secp521r1'
355
+ }[curve];
356
+
357
+ var dh = crypto.createECDH(osCurve);
358
+ dh.generateKeys();
359
+
360
+ parts.push({name: 'curve',
361
+ data: new Buffer(curve)});
362
+ parts.push({name: 'Q', data: dh.getPublicKey()});
363
+ parts.push({name: 'd', data: dh.getPrivateKey()});
364
+
365
+ key = new PrivateKey({
366
+ type: 'ecdsa',
367
+ curve: curve,
368
+ parts: parts
369
+ });
370
+ return (key);
371
+
372
+ } else {
373
+ if (ecdh === undefined)
374
+ ecdh = require('ecc-jsbn');
375
+ if (ec === undefined)
376
+ ec = require('ecc-jsbn/lib/ec');
377
+ if (jsbn === undefined)
378
+ jsbn = require('jsbn').BigInteger;
379
+
380
+ var ecParams = new X9ECParameters(curve);
381
+
382
+ /* This algorithm taken from FIPS PUB 186-4 (section B.4.1) */
383
+ var n = ecParams.getN();
384
+ /*
385
+ * The crypto.randomBytes() function can only give us whole
386
+ * bytes, so taking a nod from X9.62, we round up.
387
+ */
388
+ var cByteLen = Math.ceil((n.bitLength() + 64) / 8);
389
+ var c = new jsbn(crypto.randomBytes(cByteLen));
390
+
391
+ var n1 = n.subtract(jsbn.ONE);
392
+ var priv = c.mod(n1).add(jsbn.ONE);
393
+ var pub = ecParams.getG().multiply(priv);
394
+
395
+ priv = new Buffer(priv.toByteArray());
396
+ pub = new Buffer(ecParams.getCurve().
397
+ encodePointHex(pub), 'hex');
398
+
399
+ parts.push({name: 'curve', data: new Buffer(curve)});
400
+ parts.push({name: 'Q', data: pub});
401
+ parts.push({name: 'd', data: priv});
402
+
403
+ key = new PrivateKey({
404
+ type: 'ecdsa',
405
+ curve: curve,
406
+ parts: parts
407
+ });
408
+ return (key);
409
+ }
410
+ }
@@ -1,9 +1,10 @@
1
- // Copyright 2016 Joyent, Inc.
1
+ // Copyright 2017 Joyent, Inc.
2
2
 
3
3
  module.exports = {
4
4
  read: read,
5
5
  verify: verify,
6
6
  sign: sign,
7
+ signAsync: signAsync,
7
8
  write: write,
8
9
 
9
10
  /* Internal private API */
@@ -188,6 +189,38 @@ function sign(cert, key) {
188
189
  return (true);
189
190
  }
190
191
 
192
+ function signAsync(cert, signer, done) {
193
+ if (cert.signatures.openssh === undefined)
194
+ cert.signatures.openssh = {};
195
+ try {
196
+ var blob = toBuffer(cert, true);
197
+ } catch (e) {
198
+ delete (cert.signatures.openssh);
199
+ done(e);
200
+ return;
201
+ }
202
+ var sig = cert.signatures.openssh;
203
+
204
+ signer(blob, function (err, signature) {
205
+ if (err) {
206
+ done(err);
207
+ return;
208
+ }
209
+ try {
210
+ /*
211
+ * This will throw if the signature isn't of a
212
+ * type/algo that can be used for SSH.
213
+ */
214
+ signature.toBuffer('ssh');
215
+ } catch (e) {
216
+ done(e);
217
+ return;
218
+ }
219
+ sig.signature = signature;
220
+ done();
221
+ });
222
+ }
223
+
191
224
  function write(cert, options) {
192
225
  if (options === undefined)
193
226
  options = {};
@@ -1,9 +1,10 @@
1
- // Copyright 2016 Joyent, Inc.
1
+ // Copyright 2017 Joyent, Inc.
2
2
 
3
3
  module.exports = {
4
4
  read: read,
5
5
  verify: verify,
6
6
  sign: sign,
7
+ signAsync: signAsync,
7
8
  write: write
8
9
  };
9
10
 
@@ -79,7 +80,10 @@ SIGN_ALGS['1.3.14.3.2.29'] = 'rsa-sha1';
79
80
 
80
81
  var EXTS = {
81
82
  'issuerKeyId': '2.5.29.35',
82
- 'altName': '2.5.29.17'
83
+ 'altName': '2.5.29.17',
84
+ 'basicConstraints': '2.5.29.19',
85
+ 'keyUsage': '2.5.29.15',
86
+ 'extKeyUsage': '2.5.29.37'
83
87
  };
84
88
 
85
89
  function read(buf, options) {
@@ -210,6 +214,26 @@ var ALTNAME = {
210
214
  OID: Context(8)
211
215
  };
212
216
 
217
+ /* RFC5280, section 4.2.1.12 (KeyPurposeId) */
218
+ var EXTPURPOSE = {
219
+ 'serverAuth': '1.3.6.1.5.5.7.3.1',
220
+ 'clientAuth': '1.3.6.1.5.5.7.3.2',
221
+ 'codeSigning': '1.3.6.1.5.5.7.3.3',
222
+
223
+ /* See https://github.com/joyent/oid-docs/blob/master/root.md */
224
+ 'joyentDocker': '1.3.6.1.4.1.38678.1.4.1',
225
+ 'joyentCmon': '1.3.6.1.4.1.38678.1.4.2'
226
+ };
227
+ var EXTPURPOSE_REV = {};
228
+ Object.keys(EXTPURPOSE).forEach(function (k) {
229
+ EXTPURPOSE_REV[EXTPURPOSE[k]] = k;
230
+ });
231
+
232
+ var KEYUSEBITS = [
233
+ 'signature', 'identity', 'keyEncryption',
234
+ 'encryption', 'keyAgreement', 'ca', 'crl'
235
+ ];
236
+
213
237
  function readExtension(cert, buf, der) {
214
238
  der.readSequence();
215
239
  var after = der.offset + der.length;
@@ -223,6 +247,81 @@ function readExtension(cert, buf, der) {
223
247
  critical = der.readBoolean();
224
248
 
225
249
  switch (extId) {
250
+ case (EXTS.basicConstraints):
251
+ der.readSequence(asn1.Ber.OctetString);
252
+ der.readSequence();
253
+ var bcEnd = der.offset + der.length;
254
+ var ca = false;
255
+ if (der.peek() === asn1.Ber.Boolean)
256
+ ca = der.readBoolean();
257
+ if (cert.purposes === undefined)
258
+ cert.purposes = [];
259
+ if (ca === true)
260
+ cert.purposes.push('ca');
261
+ var bc = { oid: extId, critical: critical };
262
+ if (der.offset < bcEnd && der.peek() === asn1.Ber.Integer)
263
+ bc.pathLen = der.readInt();
264
+ sig.extras.exts.push(bc);
265
+ break;
266
+ case (EXTS.extKeyUsage):
267
+ der.readSequence(asn1.Ber.OctetString);
268
+ der.readSequence();
269
+ if (cert.purposes === undefined)
270
+ cert.purposes = [];
271
+ var ekEnd = der.offset + der.length;
272
+ while (der.offset < ekEnd) {
273
+ var oid = der.readOID();
274
+ cert.purposes.push(EXTPURPOSE_REV[oid] || oid);
275
+ }
276
+ /*
277
+ * This is a bit of a hack: in the case where we have a cert
278
+ * that's only allowed to do serverAuth or clientAuth (and not
279
+ * the other), we want to make sure all our Subjects are of
280
+ * the right type. But we already parsed our Subjects and
281
+ * decided if they were hosts or users earlier (since it appears
282
+ * first in the cert).
283
+ *
284
+ * So we go through and mutate them into the right kind here if
285
+ * it doesn't match. This might not be hugely beneficial, as it
286
+ * seems that single-purpose certs are not often seen in the
287
+ * wild.
288
+ */
289
+ if (cert.purposes.indexOf('serverAuth') !== -1 &&
290
+ cert.purposes.indexOf('clientAuth') === -1) {
291
+ cert.subjects.forEach(function (ide) {
292
+ if (ide.type !== 'host') {
293
+ ide.type = 'host';
294
+ ide.hostname = ide.uid ||
295
+ ide.email ||
296
+ ide.components[0].value;
297
+ }
298
+ });
299
+ } else if (cert.purposes.indexOf('clientAuth') !== -1 &&
300
+ cert.purposes.indexOf('serverAuth') === -1) {
301
+ cert.subjects.forEach(function (ide) {
302
+ if (ide.type !== 'user') {
303
+ ide.type = 'user';
304
+ ide.uid = ide.hostname ||
305
+ ide.email ||
306
+ ide.components[0].value;
307
+ }
308
+ });
309
+ }
310
+ sig.extras.exts.push({ oid: extId, critical: critical });
311
+ break;
312
+ case (EXTS.keyUsage):
313
+ der.readSequence(asn1.Ber.OctetString);
314
+ var bits = der.readString(asn1.Ber.BitString, true);
315
+ var setBits = readBitField(bits, KEYUSEBITS);
316
+ setBits.forEach(function (bit) {
317
+ if (cert.purposes === undefined)
318
+ cert.purposes = [];
319
+ if (cert.purposes.indexOf(bit) === -1)
320
+ cert.purposes.push(bit);
321
+ });
322
+ sig.extras.exts.push({ oid: extId, critical: critical,
323
+ bits: bits });
324
+ break;
226
325
  case (EXTS.altName):
227
326
  der.readSequence(asn1.Ber.OctetString);
228
327
  der.readSequence();
@@ -353,6 +452,32 @@ function sign(cert, key) {
353
452
  return (true);
354
453
  }
355
454
 
455
+ function signAsync(cert, signer, done) {
456
+ if (cert.signatures.x509 === undefined)
457
+ cert.signatures.x509 = {};
458
+ var sig = cert.signatures.x509;
459
+
460
+ var der = new asn1.BerWriter();
461
+ writeTBSCert(cert, der);
462
+ var blob = der.buffer;
463
+ sig.cache = blob;
464
+
465
+ signer(blob, function (err, signature) {
466
+ if (err) {
467
+ done(err);
468
+ return;
469
+ }
470
+ sig.algo = signature.type + '-' + signature.hashAlgorithm;
471
+ if (SIGN_ALGS[sig.algo] === undefined) {
472
+ done(new Error('Invalid signing algorithm "' +
473
+ sig.algo + '"'));
474
+ return;
475
+ }
476
+ sig.signature = signature;
477
+ done();
478
+ });
479
+ }
480
+
356
481
  function write(cert, options) {
357
482
  var sig = cert.signatures.x509;
358
483
  assert.object(sig, 'x509 signature');
@@ -421,13 +546,27 @@ function writeTBSCert(cert, der) {
421
546
  }
422
547
 
423
548
  if (altNames.length > 0 || subject.type === 'host' ||
549
+ (cert.purposes !== undefined && cert.purposes.length > 0) ||
424
550
  (sig.extras && sig.extras.exts)) {
425
551
  der.startSequence(Local(3));
426
552
  der.startSequence();
427
553
 
428
- var exts = [
429
- { oid: EXTS.altName }
430
- ];
554
+ var exts = [];
555
+ if (cert.purposes !== undefined && cert.purposes.length > 0) {
556
+ exts.push({
557
+ oid: EXTS.basicConstraints,
558
+ critical: true
559
+ });
560
+ exts.push({
561
+ oid: EXTS.keyUsage,
562
+ critical: true
563
+ });
564
+ exts.push({
565
+ oid: EXTS.extKeyUsage,
566
+ critical: true
567
+ });
568
+ }
569
+ exts.push({ oid: EXTS.altName });
431
570
  if (sig.extras && sig.extras.exts)
432
571
  exts = sig.extras.exts;
433
572
 
@@ -468,6 +607,54 @@ function writeTBSCert(cert, der) {
468
607
  }
469
608
  der.endSequence();
470
609
  der.endSequence();
610
+ } else if (exts[i].oid === EXTS.basicConstraints) {
611
+ der.startSequence(asn1.Ber.OctetString);
612
+ der.startSequence();
613
+ var ca = (cert.purposes.indexOf('ca') !== -1);
614
+ var pathLen = exts[i].pathLen;
615
+ der.writeBoolean(ca);
616
+ if (pathLen !== undefined)
617
+ der.writeInt(pathLen);
618
+ der.endSequence();
619
+ der.endSequence();
620
+ } else if (exts[i].oid === EXTS.extKeyUsage) {
621
+ der.startSequence(asn1.Ber.OctetString);
622
+ der.startSequence();
623
+ cert.purposes.forEach(function (purpose) {
624
+ if (purpose === 'ca')
625
+ return;
626
+ if (KEYUSEBITS.indexOf(purpose) !== -1)
627
+ return;
628
+ var oid = purpose;
629
+ if (EXTPURPOSE[purpose] !== undefined)
630
+ oid = EXTPURPOSE[purpose];
631
+ der.writeOID(oid);
632
+ });
633
+ der.endSequence();
634
+ der.endSequence();
635
+ } else if (exts[i].oid === EXTS.keyUsage) {
636
+ der.startSequence(asn1.Ber.OctetString);
637
+ /*
638
+ * If we parsed this certificate from a byte
639
+ * stream (i.e. we didn't generate it in sshpk)
640
+ * then we'll have a ".bits" property on the
641
+ * ext with the original raw byte contents.
642
+ *
643
+ * If we have this, use it here instead of
644
+ * regenerating it. This guarantees we output
645
+ * the same data we parsed, so signatures still
646
+ * validate.
647
+ */
648
+ if (exts[i].bits !== undefined) {
649
+ der.writeBuffer(exts[i].bits,
650
+ asn1.Ber.BitString);
651
+ } else {
652
+ var bits = writeBitField(cert.purposes,
653
+ KEYUSEBITS);
654
+ der.writeBuffer(bits,
655
+ asn1.Ber.BitString);
656
+ }
657
+ der.endSequence();
471
658
  } else {
472
659
  der.writeBuffer(exts[i].data,
473
660
  asn1.Ber.OctetString);
@@ -482,3 +669,58 @@ function writeTBSCert(cert, der) {
482
669
 
483
670
  der.endSequence();
484
671
  }
672
+
673
+ /*
674
+ * Reads an ASN.1 BER bitfield out of the Buffer produced by doing
675
+ * `BerReader#readString(asn1.Ber.BitString)`. That function gives us the raw
676
+ * contents of the BitString tag, which is a count of unused bits followed by
677
+ * the bits as a right-padded byte string.
678
+ *
679
+ * `bits` is the Buffer, `bitIndex` should contain an array of string names
680
+ * for the bits in the string, ordered starting with bit #0 in the ASN.1 spec.
681
+ *
682
+ * Returns an array of Strings, the names of the bits that were set to 1.
683
+ */
684
+ function readBitField(bits, bitIndex) {
685
+ var bitLen = 8 * (bits.length - 1) - bits[0];
686
+ var setBits = {};
687
+ for (var i = 0; i < bitLen; ++i) {
688
+ var byteN = 1 + Math.floor(i / 8);
689
+ var bit = 7 - (i % 8);
690
+ var mask = 1 << bit;
691
+ var bitVal = ((bits[byteN] & mask) !== 0);
692
+ var name = bitIndex[i];
693
+ if (bitVal && typeof (name) === 'string') {
694
+ setBits[name] = true;
695
+ }
696
+ }
697
+ return (Object.keys(setBits));
698
+ }
699
+
700
+ /*
701
+ * `setBits` is an array of strings, containing the names for each bit that
702
+ * sould be set to 1. `bitIndex` is same as in `readBitField()`.
703
+ *
704
+ * Returns a Buffer, ready to be written out with `BerWriter#writeString()`.
705
+ */
706
+ function writeBitField(setBits, bitIndex) {
707
+ var bitLen = bitIndex.length;
708
+ var blen = Math.ceil(bitLen / 8);
709
+ var unused = blen * 8 - bitLen;
710
+ var bits = new Buffer(1 + blen);
711
+ bits.fill(0);
712
+ bits[0] = unused;
713
+ for (var i = 0; i < bitLen; ++i) {
714
+ var byteN = 1 + Math.floor(i / 8);
715
+ var bit = 7 - (i % 8);
716
+ var mask = 1 << bit;
717
+ var name = bitIndex[i];
718
+ if (name === undefined)
719
+ continue;
720
+ var bitVal = (setBits.indexOf(name) !== -1);
721
+ if (bitVal) {
722
+ bits[byteN] |= mask;
723
+ }
724
+ }
725
+ return (bits);
726
+ }
@@ -1,4 +1,4 @@
1
- // Copyright 2016 Joyent, Inc.
1
+ // Copyright 2017 Joyent, Inc.
2
2
 
3
3
  module.exports = Identity;
4
4
 
@@ -18,6 +18,7 @@ module.exports = {
18
18
  parseSignature: Signature.parse,
19
19
  PrivateKey: PrivateKey,
20
20
  parsePrivateKey: PrivateKey.parse,
21
+ generatePrivateKey: PrivateKey.generate,
21
22
  Certificate: Certificate,
22
23
  parseCertificate: Certificate.parse,
23
24
  createSelfSignedCertificate: Certificate.createSelfSigned,
@@ -1,4 +1,4 @@
1
- // Copyright 2015 Joyent, Inc.
1
+ // Copyright 2017 Joyent, Inc.
2
2
 
3
3
  module.exports = Key;
4
4
 
@@ -7,7 +7,7 @@ var algs = require('./algs');
7
7
  var crypto = require('crypto');
8
8
  var Fingerprint = require('./fingerprint');
9
9
  var Signature = require('./signature');
10
- var DiffieHellman = require('./dhe');
10
+ var DiffieHellman = require('./dhe').DiffieHellman;
11
11
  var errs = require('./errors');
12
12
  var utils = require('./utils');
13
13
  var PrivateKey = require('./private-key');
@@ -171,6 +171,7 @@ Key.prototype.createVerify = function (hashAlgo) {
171
171
  assert.ok(v, 'failed to create verifier');
172
172
  var oldVerify = v.verify.bind(v);
173
173
  var key = this.toBuffer('pkcs8');
174
+ var curve = this.curve;
174
175
  var self = this;
175
176
  v.verify = function (signature, fmt) {
176
177
  if (Signature.isSignature(signature, [2, 0])) {
@@ -179,6 +180,9 @@ Key.prototype.createVerify = function (hashAlgo) {
179
180
  if (signature.hashAlgorithm &&
180
181
  signature.hashAlgorithm !== hashAlgo)
181
182
  return (false);
183
+ if (signature.curve && self.type === 'ecdsa' &&
184
+ signature.curve !== curve)
185
+ return (false);
182
186
  return (oldVerify(key, signature.toBuffer('asn1')));
183
187
 
184
188
  } else if (typeof (signature) === 'string' ||