fsevents 1.0.17 → 1.1.2

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 (604) 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/fsevents.js +3 -0
  18. package/install.js +7 -0
  19. package/lib/binding/Release/node-v48-darwin-x64/fse.node +0 -0
  20. package/lib/binding/Release/node-v57-darwin-x64/fse.node +0 -0
  21. package/node_modules/abbrev/abbrev.js +0 -1
  22. package/node_modules/abbrev/package.json +24 -57
  23. package/node_modules/ajv/.tonic_example.js +20 -0
  24. package/node_modules/{generate-object-property → ajv}/LICENSE +6 -5
  25. package/node_modules/ajv/README.md +1213 -0
  26. package/node_modules/ajv/dist/ajv.bundle.js +8023 -0
  27. package/node_modules/ajv/dist/ajv.min.js +6 -0
  28. package/node_modules/ajv/dist/ajv.min.js.map +1 -0
  29. package/node_modules/ajv/dist/nodent.min.js +8 -0
  30. package/node_modules/ajv/dist/regenerator.min.js +32 -0
  31. package/node_modules/ajv/lib/ajv.d.ts +284 -0
  32. package/node_modules/ajv/lib/ajv.js +420 -0
  33. package/node_modules/ajv/lib/async.js +218 -0
  34. package/node_modules/ajv/lib/cache.js +26 -0
  35. package/node_modules/ajv/lib/compile/_rules.js +28 -0
  36. package/node_modules/ajv/lib/compile/equal.js +45 -0
  37. package/node_modules/ajv/lib/compile/formats.js +164 -0
  38. package/node_modules/ajv/lib/compile/index.js +390 -0
  39. package/node_modules/ajv/lib/compile/resolve.js +267 -0
  40. package/node_modules/ajv/lib/compile/rules.js +40 -0
  41. package/node_modules/ajv/lib/compile/schema_obj.js +9 -0
  42. package/node_modules/ajv/lib/compile/ucs2length.js +20 -0
  43. package/node_modules/ajv/lib/compile/util.js +257 -0
  44. package/node_modules/ajv/lib/compile/validation_error.js +14 -0
  45. package/node_modules/ajv/lib/dot/_limit.jst +49 -0
  46. package/node_modules/ajv/lib/dot/_limitItems.jst +10 -0
  47. package/node_modules/ajv/lib/dot/_limitLength.jst +10 -0
  48. package/node_modules/ajv/lib/dot/_limitProperties.jst +10 -0
  49. package/node_modules/ajv/lib/dot/allOf.jst +34 -0
  50. package/node_modules/ajv/lib/dot/anyOf.jst +48 -0
  51. package/node_modules/ajv/lib/dot/coerce.def +61 -0
  52. package/node_modules/ajv/lib/dot/custom.jst +184 -0
  53. package/node_modules/ajv/lib/dot/defaults.def +32 -0
  54. package/node_modules/ajv/lib/dot/definitions.def +182 -0
  55. package/node_modules/ajv/lib/dot/dependencies.jst +69 -0
  56. package/node_modules/ajv/lib/dot/enum.jst +30 -0
  57. package/node_modules/ajv/lib/dot/errors.def +185 -0
  58. package/node_modules/ajv/lib/dot/format.jst +100 -0
  59. package/node_modules/ajv/lib/dot/items.jst +101 -0
  60. package/node_modules/ajv/lib/dot/missing.def +34 -0
  61. package/node_modules/ajv/lib/dot/multipleOf.jst +20 -0
  62. package/node_modules/ajv/lib/dot/not.jst +43 -0
  63. package/node_modules/ajv/lib/dot/oneOf.jst +44 -0
  64. package/node_modules/ajv/lib/dot/pattern.jst +14 -0
  65. package/node_modules/ajv/lib/dot/properties.jst +319 -0
  66. package/node_modules/ajv/lib/dot/ref.jst +86 -0
  67. package/node_modules/ajv/lib/dot/required.jst +96 -0
  68. package/node_modules/ajv/lib/dot/uniqueItems.jst +38 -0
  69. package/node_modules/ajv/lib/dot/v5/_formatLimit.jst +116 -0
  70. package/node_modules/ajv/lib/dot/v5/constant.jst +10 -0
  71. package/node_modules/ajv/lib/dot/v5/patternRequired.jst +28 -0
  72. package/node_modules/ajv/lib/dot/v5/switch.jst +73 -0
  73. package/node_modules/ajv/lib/dot/validate.jst +210 -0
  74. package/node_modules/ajv/lib/dotjs/README.md +3 -0
  75. package/node_modules/ajv/lib/dotjs/_formatLimit.js +176 -0
  76. package/node_modules/ajv/lib/dotjs/_limit.js +124 -0
  77. package/node_modules/ajv/lib/dotjs/_limitItems.js +76 -0
  78. package/node_modules/ajv/lib/dotjs/_limitLength.js +81 -0
  79. package/node_modules/ajv/lib/dotjs/_limitProperties.js +76 -0
  80. package/node_modules/ajv/lib/dotjs/allOf.js +43 -0
  81. package/node_modules/ajv/lib/dotjs/anyOf.js +65 -0
  82. package/node_modules/ajv/lib/dotjs/constant.js +52 -0
  83. package/node_modules/ajv/lib/dotjs/custom.js +220 -0
  84. package/node_modules/ajv/lib/dotjs/dependencies.js +147 -0
  85. package/node_modules/ajv/lib/dotjs/enum.js +65 -0
  86. package/node_modules/ajv/lib/dotjs/format.js +138 -0
  87. package/node_modules/ajv/lib/dotjs/items.js +144 -0
  88. package/node_modules/ajv/lib/dotjs/multipleOf.js +76 -0
  89. package/node_modules/ajv/lib/dotjs/not.js +83 -0
  90. package/node_modules/ajv/lib/dotjs/oneOf.js +76 -0
  91. package/node_modules/ajv/lib/dotjs/pattern.js +74 -0
  92. package/node_modules/ajv/lib/dotjs/patternRequired.js +51 -0
  93. package/node_modules/ajv/lib/dotjs/properties.js +445 -0
  94. package/node_modules/ajv/lib/dotjs/ref.js +119 -0
  95. package/node_modules/ajv/lib/dotjs/required.js +249 -0
  96. package/node_modules/ajv/lib/dotjs/switch.js +128 -0
  97. package/node_modules/ajv/lib/dotjs/uniqueItems.js +71 -0
  98. package/node_modules/ajv/lib/dotjs/validate.js +375 -0
  99. package/node_modules/ajv/lib/keyword.js +129 -0
  100. package/node_modules/ajv/lib/refs/json-schema-draft-04.json +150 -0
  101. package/node_modules/ajv/lib/refs/json-schema-v5.json +328 -0
  102. package/node_modules/ajv/lib/v5.js +52 -0
  103. package/node_modules/ajv/package.json +132 -0
  104. package/node_modules/ajv/scripts/.eslintrc.yml +3 -0
  105. package/node_modules/ajv/scripts/bundle.js +54 -0
  106. package/node_modules/ajv/scripts/compile-dots.js +73 -0
  107. package/node_modules/ajv/scripts/info +10 -0
  108. package/node_modules/ajv/scripts/prepare-tests +9 -0
  109. package/node_modules/ajv/scripts/travis-gh-pages +23 -0
  110. package/node_modules/ansi-regex/index.js +1 -1
  111. package/node_modules/ansi-regex/package.json +42 -54
  112. package/node_modules/ansi-regex/readme.md +10 -2
  113. package/node_modules/aproba/README.md +33 -3
  114. package/node_modules/aproba/index.js +71 -30
  115. package/node_modules/aproba/package.json +22 -55
  116. package/node_modules/are-we-there-yet/CHANGES.md +12 -0
  117. package/node_modules/are-we-there-yet/CHANGES.md~ +27 -0
  118. package/node_modules/are-we-there-yet/README.md +4 -3
  119. package/node_modules/are-we-there-yet/package.json +28 -54
  120. package/node_modules/asn1/package.json +16 -48
  121. package/node_modules/assert-plus/package.json +15 -47
  122. package/node_modules/asynckit/package.json +15 -49
  123. package/node_modules/aws-sign2/package.json +15 -45
  124. package/node_modules/aws4/aws4.js +15 -6
  125. package/node_modules/aws4/package.json +18 -53
  126. package/node_modules/balanced-match/package.json +15 -49
  127. package/node_modules/bcrypt-pbkdf/index.js +1 -4
  128. package/node_modules/bcrypt-pbkdf/package.json +20 -54
  129. package/node_modules/block-stream/package.json +15 -49
  130. package/node_modules/boom/package.json +15 -54
  131. package/node_modules/brace-expansion/README.md +1 -0
  132. package/node_modules/brace-expansion/index.js +1 -1
  133. package/node_modules/brace-expansion/package.json +20 -56
  134. package/node_modules/buffer-shims/package.json +15 -51
  135. package/node_modules/caseless/index.js +1 -0
  136. package/node_modules/caseless/package.json +19 -58
  137. package/node_modules/caseless/test.js +27 -0
  138. package/node_modules/co/History.md +172 -0
  139. package/node_modules/{commander → co}/LICENSE +1 -1
  140. package/node_modules/co/Readme.md +212 -0
  141. package/node_modules/co/index.js +237 -0
  142. package/node_modules/co/package.json +67 -0
  143. package/node_modules/code-point-at/package.json +15 -50
  144. package/node_modules/combined-stream/package.json +15 -58
  145. package/node_modules/concat-map/package.json +13 -41
  146. package/node_modules/console-control-strings/package.json +15 -50
  147. package/node_modules/core-util-is/package.json +15 -47
  148. package/node_modules/cryptiles/package.json +15 -49
  149. package/node_modules/dashdash/node_modules/assert-plus/package.json +15 -47
  150. package/node_modules/dashdash/package.json +15 -72
  151. package/node_modules/debug/.coveralls.yml +1 -0
  152. package/node_modules/debug/.eslintrc +11 -0
  153. package/node_modules/debug/.npmignore +3 -0
  154. package/node_modules/debug/.travis.yml +14 -0
  155. package/node_modules/debug/CHANGELOG.md +357 -0
  156. package/node_modules/debug/LICENSE +19 -0
  157. package/node_modules/debug/Makefile +28 -14
  158. package/node_modules/debug/README.md +312 -0
  159. package/node_modules/debug/component.json +4 -4
  160. package/node_modules/debug/karma.conf.js +70 -0
  161. package/node_modules/debug/node.js +1 -209
  162. package/node_modules/debug/package.json +41 -58
  163. package/node_modules/debug/{browser.js → src/browser.js} +29 -12
  164. package/node_modules/debug/{debug.js → src/debug.js} +42 -37
  165. package/node_modules/debug/src/index.js +10 -0
  166. package/node_modules/debug/src/node.js +246 -0
  167. package/node_modules/deep-extend/README.md +1 -1
  168. package/node_modules/deep-extend/lib/deep-extend.js +2 -2
  169. package/node_modules/deep-extend/package.json +22 -48
  170. package/node_modules/delayed-stream/package.json +15 -49
  171. package/node_modules/delegates/package.json +15 -50
  172. package/node_modules/ecc-jsbn/package.json +21 -45
  173. package/node_modules/extend/.eslintrc +10 -185
  174. package/node_modules/extend/.jscs.json +75 -4
  175. package/node_modules/extend/.travis.yml +154 -19
  176. package/node_modules/extend/CHANGELOG.md +8 -0
  177. package/node_modules/extend/README.md +20 -1
  178. package/node_modules/extend/index.js +8 -8
  179. package/node_modules/extend/package.json +26 -56
  180. package/node_modules/extsprintf/package.json +12 -43
  181. package/node_modules/forever-agent/package.json +16 -53
  182. package/node_modules/form-data/README.md +4 -4
  183. package/node_modules/form-data/lib/form_data.js +4 -0
  184. package/node_modules/form-data/package.json +18 -64
  185. package/node_modules/fs.realpath/package.json +15 -49
  186. package/node_modules/fstream/lib/reader.js +4 -4
  187. package/node_modules/fstream/lib/writer.js +2 -2
  188. package/node_modules/fstream/package.json +19 -67
  189. package/node_modules/fstream-ignore/package.json +15 -57
  190. package/node_modules/gauge/CHANGELOG.md +15 -0
  191. package/node_modules/gauge/index.js +9 -6
  192. package/node_modules/gauge/package.json +18 -53
  193. package/node_modules/gauge/plumbing.js +1 -0
  194. package/node_modules/getpass/node_modules/assert-plus/package.json +15 -47
  195. package/node_modules/getpass/package.json +19 -58
  196. package/node_modules/glob/glob.js +0 -2
  197. package/node_modules/glob/package.json +19 -53
  198. package/node_modules/graceful-fs/package.json +15 -49
  199. package/node_modules/har-schema/LICENSE +13 -0
  200. package/node_modules/har-schema/README.md +49 -0
  201. package/node_modules/har-schema/lib/afterRequest.json +29 -0
  202. package/node_modules/har-schema/lib/beforeRequest.json +29 -0
  203. package/node_modules/har-schema/lib/browser.json +19 -0
  204. package/node_modules/har-schema/lib/cache.json +20 -0
  205. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/content.json +1 -0
  206. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/cookie.json +1 -0
  207. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/creator.json +1 -0
  208. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/entry.json +5 -4
  209. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/har.json +2 -1
  210. package/node_modules/har-schema/lib/header.json +19 -0
  211. package/node_modules/har-schema/lib/index.js +22 -0
  212. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/log.json +5 -4
  213. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/page.json +2 -1
  214. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/pageTimings.json +1 -0
  215. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/postData.json +1 -0
  216. package/node_modules/{har-validator/lib/schemas/record.json → har-schema/lib/query.json} +1 -0
  217. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/request.json +5 -4
  218. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/response.json +4 -3
  219. package/node_modules/{har-validator/lib/schemas → har-schema/lib}/timings.json +1 -0
  220. package/node_modules/har-schema/package.json +87 -0
  221. package/node_modules/har-validator/README.md +31 -265
  222. package/node_modules/har-validator/lib/browser/async.js +96 -0
  223. package/node_modules/har-validator/lib/browser/error.js +15 -0
  224. package/node_modules/har-validator/lib/browser/promise.js +93 -0
  225. package/node_modules/har-validator/lib/node4/async.js +136 -0
  226. package/node_modules/har-validator/lib/node4/error.js +22 -0
  227. package/node_modules/har-validator/lib/node4/promise.js +132 -0
  228. package/node_modules/har-validator/lib/node6/async.js +133 -0
  229. package/node_modules/har-validator/lib/node6/error.js +22 -0
  230. package/node_modules/har-validator/lib/node6/promise.js +130 -0
  231. package/node_modules/har-validator/lib/node7/async.js +133 -0
  232. package/node_modules/har-validator/lib/node7/error.js +22 -0
  233. package/node_modules/har-validator/lib/node7/promise.js +130 -0
  234. package/node_modules/har-validator/package.json +54 -72
  235. package/node_modules/har-validator/src/async.js +96 -0
  236. package/node_modules/har-validator/src/error.js +15 -0
  237. package/node_modules/har-validator/src/promise.js +93 -0
  238. package/node_modules/has-unicode/package.json +15 -50
  239. package/node_modules/hawk/package.json +15 -45
  240. package/node_modules/hoek/package.json +15 -55
  241. package/node_modules/http-signature/package.json +15 -53
  242. package/node_modules/inflight/package.json +15 -61
  243. package/node_modules/inherits/package.json +15 -58
  244. package/node_modules/ini/package.json +15 -45
  245. package/node_modules/is-fullwidth-code-point/package.json +16 -46
  246. package/node_modules/is-typedarray/package.json +15 -45
  247. package/node_modules/isarray/package.json +15 -46
  248. package/node_modules/isstream/package.json +15 -46
  249. package/node_modules/jodid25519/package.json +16 -44
  250. package/node_modules/jsbn/index.js +8 -9
  251. package/node_modules/jsbn/package.json +21 -54
  252. package/node_modules/json-schema/package.json +13 -41
  253. package/node_modules/{generate-function → json-stable-stringify}/.npmignore +0 -0
  254. package/node_modules/{generate-object-property → json-stable-stringify}/.travis.yml +1 -0
  255. package/node_modules/{ms → json-stable-stringify}/LICENSE +1 -3
  256. package/node_modules/json-stable-stringify/example/key_cmp.js +7 -0
  257. package/node_modules/json-stable-stringify/example/nested.js +3 -0
  258. package/node_modules/json-stable-stringify/example/str.js +3 -0
  259. package/node_modules/json-stable-stringify/example/value_cmp.js +7 -0
  260. package/node_modules/json-stable-stringify/index.js +84 -0
  261. package/node_modules/json-stable-stringify/package.json +75 -0
  262. package/node_modules/json-stable-stringify/readme.markdown +130 -0
  263. package/node_modules/json-stable-stringify/test/cmp.js +11 -0
  264. package/node_modules/json-stable-stringify/test/nested.js +35 -0
  265. package/node_modules/json-stable-stringify/test/replacer.js +74 -0
  266. package/node_modules/json-stable-stringify/test/space.js +59 -0
  267. package/node_modules/json-stable-stringify/test/str.js +32 -0
  268. package/node_modules/json-stable-stringify/test/to-json.js +20 -0
  269. package/node_modules/json-stringify-safe/package.json +15 -50
  270. package/node_modules/jsonify/README.markdown +34 -0
  271. package/node_modules/jsonify/index.js +2 -0
  272. package/node_modules/jsonify/lib/parse.js +273 -0
  273. package/node_modules/jsonify/lib/stringify.js +154 -0
  274. package/node_modules/jsonify/package.json +60 -0
  275. package/node_modules/jsonify/test/parse.js +16 -0
  276. package/node_modules/jsonify/test/stringify.js +15 -0
  277. package/node_modules/jsprim/CHANGES.md +4 -0
  278. package/node_modules/jsprim/README.md +55 -0
  279. package/node_modules/jsprim/lib/jsprim.js +248 -1
  280. package/node_modules/jsprim/node_modules/assert-plus/AUTHORS +6 -0
  281. package/node_modules/jsprim/node_modules/assert-plus/CHANGES.md +14 -0
  282. package/node_modules/jsprim/node_modules/assert-plus/README.md +162 -0
  283. package/node_modules/jsprim/node_modules/assert-plus/assert.js +211 -0
  284. package/node_modules/jsprim/node_modules/assert-plus/package.json +83 -0
  285. package/node_modules/jsprim/package.json +22 -57
  286. package/node_modules/mime-db/HISTORY.md +37 -0
  287. package/node_modules/mime-db/db.json +95 -2
  288. package/node_modules/mime-db/package.json +26 -64
  289. package/node_modules/mime-types/HISTORY.md +13 -0
  290. package/node_modules/mime-types/README.md +10 -5
  291. package/node_modules/mime-types/index.js +1 -1
  292. package/node_modules/mime-types/package.json +24 -66
  293. package/node_modules/minimatch/package.json +24 -58
  294. package/node_modules/minimist/package.json +12 -41
  295. package/node_modules/mkdirp/package.json +15 -47
  296. package/node_modules/ms/index.js +50 -23
  297. package/node_modules/{graceful-readlink/LICENSE → ms/license.md} +1 -2
  298. package/node_modules/ms/package.json +49 -61
  299. package/node_modules/ms/readme.md +51 -0
  300. package/node_modules/node-pre-gyp/CHANGELOG.md +19 -0
  301. package/node_modules/node-pre-gyp/README.md +12 -1
  302. package/node_modules/node-pre-gyp/appveyor.yml +1 -6
  303. package/node_modules/node-pre-gyp/cloudformation/travis.template +73 -0
  304. package/node_modules/node-pre-gyp/contributing.md +10 -0
  305. package/node_modules/node-pre-gyp/lib/install.js +5 -47
  306. package/node_modules/node-pre-gyp/lib/node-pre-gyp.js +1 -1
  307. package/node_modules/node-pre-gyp/lib/testbinary.js +8 -2
  308. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +124 -0
  309. package/node_modules/node-pre-gyp/package.json +30 -80
  310. package/node_modules/node-pre-gyp/template-name.diff +12 -0
  311. package/node_modules/nopt/.travis.yml +3 -4
  312. package/node_modules/nopt/CHANGELOG.md +58 -0
  313. package/node_modules/nopt/README.md +28 -26
  314. package/node_modules/nopt/lib/nopt.js +50 -29
  315. package/node_modules/nopt/package.json +22 -59
  316. package/node_modules/nopt/test/basic.js +36 -6
  317. package/node_modules/npmlog/CHANGELOG.md +5 -1
  318. package/node_modules/npmlog/log.js +2 -0
  319. package/node_modules/npmlog/package.json +21 -67
  320. package/node_modules/number-is-nan/package.json +15 -50
  321. package/node_modules/oauth-sign/package.json +15 -56
  322. package/node_modules/object-assign/index.js +11 -4
  323. package/node_modules/object-assign/package.json +23 -62
  324. package/node_modules/object-assign/readme.md +8 -3
  325. package/node_modules/once/package.json +15 -49
  326. package/node_modules/os-homedir/index.js +24 -0
  327. package/node_modules/{ansi-styles → os-homedir}/license +0 -0
  328. package/node_modules/os-homedir/package.json +74 -0
  329. package/node_modules/os-homedir/readme.md +31 -0
  330. package/node_modules/os-tmpdir/index.js +25 -0
  331. package/node_modules/{chalk → os-tmpdir}/license +0 -0
  332. package/node_modules/os-tmpdir/package.json +74 -0
  333. package/node_modules/os-tmpdir/readme.md +32 -0
  334. package/node_modules/osenv/.npmignore +13 -0
  335. package/node_modules/osenv/.travis.yml +9 -0
  336. package/node_modules/{tar-pack/node_modules/once → osenv}/LICENSE +0 -0
  337. package/node_modules/osenv/README.md +63 -0
  338. package/node_modules/osenv/osenv.js +72 -0
  339. package/node_modules/osenv/package.json +68 -0
  340. package/node_modules/osenv/test/unix.js +71 -0
  341. package/node_modules/osenv/test/windows.js +74 -0
  342. package/node_modules/osenv/x.tap +39 -0
  343. package/node_modules/path-is-absolute/package.json +15 -50
  344. package/node_modules/performance-now/.npmignore +1 -0
  345. package/node_modules/performance-now/.tm_properties +7 -0
  346. package/node_modules/{generate-function → performance-now}/.travis.yml +1 -0
  347. package/node_modules/performance-now/Makefile +25 -0
  348. package/node_modules/performance-now/README.md +30 -0
  349. package/node_modules/performance-now/lib/performance-now.js +32 -0
  350. package/node_modules/performance-now/license.txt +7 -0
  351. package/node_modules/performance-now/package.json +58 -0
  352. package/node_modules/performance-now/src/performance-now.coffee +15 -0
  353. package/node_modules/performance-now/test/mocha.opts +3 -0
  354. package/node_modules/performance-now/test/performance-now.coffee +38 -0
  355. package/node_modules/process-nextick-args/package.json +15 -51
  356. package/node_modules/punycode/package.json +14 -49
  357. package/node_modules/qs/.eslintrc +6 -7
  358. package/node_modules/qs/.jscs.json +176 -0
  359. package/node_modules/qs/CHANGELOG.md +31 -0
  360. package/node_modules/qs/README.md +44 -2
  361. package/node_modules/qs/dist/qs.js +54 -31
  362. package/node_modules/qs/lib/index.js +0 -0
  363. package/node_modules/qs/lib/parse.js +14 -13
  364. package/node_modules/qs/lib/stringify.js +36 -16
  365. package/node_modules/qs/lib/utils.js +4 -2
  366. package/node_modules/qs/package.json +24 -66
  367. package/node_modules/qs/test/.eslintrc +3 -1
  368. package/node_modules/qs/test/parse.js +66 -6
  369. package/node_modules/qs/test/stringify.js +30 -1
  370. package/node_modules/qs/test/utils.js +0 -0
  371. package/node_modules/rc/lib/utils.js +2 -1
  372. package/node_modules/rc/node_modules/minimist/package.json +15 -46
  373. package/node_modules/rc/package.json +19 -50
  374. package/node_modules/rc/test/nested-env-vars.js +31 -21
  375. package/node_modules/readable-stream/.travis.yml +2 -2
  376. package/node_modules/readable-stream/CONTRIBUTING.md +38 -0
  377. package/node_modules/readable-stream/GOVERNANCE.md +136 -0
  378. package/node_modules/readable-stream/LICENSE +29 -0
  379. package/node_modules/readable-stream/README.md +20 -3
  380. package/node_modules/readable-stream/duplex-browser.js +1 -0
  381. package/node_modules/readable-stream/duplex.js +1 -1
  382. package/node_modules/readable-stream/lib/_stream_readable.js +7 -13
  383. package/node_modules/readable-stream/lib/_stream_writable.js +18 -28
  384. package/node_modules/readable-stream/lib/internal/streams/stream-browser.js +1 -0
  385. package/node_modules/readable-stream/lib/internal/streams/stream.js +1 -0
  386. package/node_modules/readable-stream/package.json +25 -67
  387. package/node_modules/readable-stream/passthrough.js +1 -1
  388. package/node_modules/{tar-pack/node_modules/readable-stream/readable.js → readable-stream/readable-browser.js} +1 -10
  389. package/node_modules/readable-stream/readable.js +17 -14
  390. package/node_modules/readable-stream/transform.js +1 -1
  391. package/node_modules/readable-stream/writable-browser.js +1 -0
  392. package/node_modules/readable-stream/writable.js +8 -1
  393. package/node_modules/request/CHANGELOG.md +23 -11
  394. package/node_modules/request/README.md +36 -19
  395. package/node_modules/request/lib/helpers.js +2 -1
  396. package/node_modules/request/lib/multipart.js +2 -1
  397. package/node_modules/request/lib/oauth.js +2 -1
  398. package/node_modules/request/package.json +30 -74
  399. package/node_modules/request/request.js +106 -16
  400. package/node_modules/rimraf/bin.js +13 -3
  401. package/node_modules/rimraf/package.json +19 -55
  402. package/node_modules/rimraf/rimraf.js +22 -2
  403. package/node_modules/safe-buffer/.travis.yml +7 -0
  404. package/node_modules/{is-property → safe-buffer}/LICENSE +1 -2
  405. package/node_modules/safe-buffer/README.md +581 -0
  406. package/node_modules/safe-buffer/browser.js +1 -0
  407. package/node_modules/safe-buffer/index.js +58 -0
  408. package/node_modules/safe-buffer/package.json +64 -0
  409. package/node_modules/safe-buffer/test.js +99 -0
  410. package/node_modules/semver/package.json +15 -54
  411. package/node_modules/set-blocking/package.json +15 -50
  412. package/node_modules/signal-exit/package.json +15 -54
  413. package/node_modules/sntp/package.json +16 -45
  414. package/node_modules/sshpk/README.md +38 -6
  415. package/node_modules/sshpk/lib/certificate.js +88 -2
  416. package/node_modules/sshpk/lib/dhe.js +101 -2
  417. package/node_modules/sshpk/lib/formats/openssh-cert.js +34 -1
  418. package/node_modules/sshpk/lib/formats/x509.js +247 -5
  419. package/node_modules/sshpk/lib/identity.js +24 -2
  420. package/node_modules/sshpk/lib/index.js +1 -0
  421. package/node_modules/sshpk/lib/key.js +6 -2
  422. package/node_modules/sshpk/lib/private-key.js +25 -1
  423. package/node_modules/sshpk/lib/signature.js +76 -8
  424. package/node_modules/sshpk/node_modules/assert-plus/package.json +15 -47
  425. package/node_modules/sshpk/package.json +21 -53
  426. package/node_modules/string-width/package.json +15 -50
  427. package/node_modules/string_decoder/LICENSE +48 -20
  428. package/node_modules/string_decoder/README.md +25 -4
  429. package/node_modules/string_decoder/lib/string_decoder.js +272 -0
  430. package/node_modules/string_decoder/package.json +24 -55
  431. package/node_modules/stringstream/package.json +15 -48
  432. package/node_modules/strip-ansi/package.json +27 -50
  433. package/node_modules/strip-json-comments/index.js +70 -0
  434. package/node_modules/strip-json-comments/package.json +25 -62
  435. package/node_modules/strip-json-comments/readme.md +12 -28
  436. package/node_modules/tar/package.json +15 -58
  437. package/node_modules/tar-pack/package.json +28 -79
  438. package/node_modules/tough-cookie/package.json +15 -57
  439. package/node_modules/tunnel-agent/index.js +5 -4
  440. package/node_modules/tunnel-agent/package.json +22 -66
  441. package/node_modules/tweetnacl/package.json +16 -50
  442. package/node_modules/uid-number/package.json +16 -46
  443. package/node_modules/util-deprecate/package.json +15 -48
  444. package/node_modules/uuid/package.json +15 -58
  445. package/node_modules/verror/package.json +12 -41
  446. package/node_modules/wide-align/package.json +25 -51
  447. package/node_modules/wrappy/package.json +15 -54
  448. package/package.json +5 -4
  449. package/node_modules/ansi-styles/index.js +0 -65
  450. package/node_modules/ansi-styles/package.json +0 -114
  451. package/node_modules/ansi-styles/readme.md +0 -86
  452. package/node_modules/are-we-there-yet/.npmignore +0 -5
  453. package/node_modules/are-we-there-yet/test/lib/test-event.js +0 -29
  454. package/node_modules/are-we-there-yet/test/tracker.js +0 -57
  455. package/node_modules/are-we-there-yet/test/trackergroup.js +0 -96
  456. package/node_modules/are-we-there-yet/test/trackerstream.js +0 -51
  457. package/node_modules/chalk/index.js +0 -116
  458. package/node_modules/chalk/node_modules/supports-color/index.js +0 -50
  459. package/node_modules/chalk/node_modules/supports-color/license +0 -21
  460. package/node_modules/chalk/node_modules/supports-color/package.json +0 -113
  461. package/node_modules/chalk/node_modules/supports-color/readme.md +0 -36
  462. package/node_modules/chalk/package.json +0 -140
  463. package/node_modules/chalk/readme.md +0 -213
  464. package/node_modules/commander/History.md +0 -261
  465. package/node_modules/commander/Readme.md +0 -351
  466. package/node_modules/commander/index.js +0 -1110
  467. package/node_modules/commander/package.json +0 -104
  468. package/node_modules/debug/.jshintrc +0 -3
  469. package/node_modules/debug/History.md +0 -195
  470. package/node_modules/debug/Readme.md +0 -188
  471. package/node_modules/debug/bower.json +0 -28
  472. package/node_modules/escape-string-regexp/index.js +0 -11
  473. package/node_modules/escape-string-regexp/license +0 -21
  474. package/node_modules/escape-string-regexp/package.json +0 -109
  475. package/node_modules/escape-string-regexp/readme.md +0 -27
  476. package/node_modules/generate-function/README.md +0 -72
  477. package/node_modules/generate-function/example.js +0 -27
  478. package/node_modules/generate-function/index.js +0 -61
  479. package/node_modules/generate-function/package.json +0 -87
  480. package/node_modules/generate-function/test.js +0 -33
  481. package/node_modules/generate-object-property/.npmignore +0 -1
  482. package/node_modules/generate-object-property/README.md +0 -19
  483. package/node_modules/generate-object-property/index.js +0 -12
  484. package/node_modules/generate-object-property/package.json +0 -84
  485. package/node_modules/generate-object-property/test.js +0 -12
  486. package/node_modules/graceful-readlink/.npmignore +0 -3
  487. package/node_modules/graceful-readlink/.travis.yml +0 -5
  488. package/node_modules/graceful-readlink/README.md +0 -17
  489. package/node_modules/graceful-readlink/index.js +0 -12
  490. package/node_modules/graceful-readlink/package.json +0 -83
  491. package/node_modules/har-validator/bin/har-validator +0 -56
  492. package/node_modules/har-validator/lib/async.js +0 -14
  493. package/node_modules/har-validator/lib/error.js +0 -10
  494. package/node_modules/har-validator/lib/index.js +0 -22
  495. package/node_modules/har-validator/lib/runner.js +0 -29
  496. package/node_modules/har-validator/lib/schemas/cache.json +0 -13
  497. package/node_modules/har-validator/lib/schemas/cacheEntry.json +0 -31
  498. package/node_modules/har-validator/lib/schemas/index.js +0 -49
  499. package/node_modules/has-ansi/index.js +0 -4
  500. package/node_modules/has-ansi/license +0 -21
  501. package/node_modules/has-ansi/package.json +0 -118
  502. package/node_modules/has-ansi/readme.md +0 -36
  503. package/node_modules/is-my-json-valid/.npmignore +0 -2
  504. package/node_modules/is-my-json-valid/.travis.yml +0 -3
  505. package/node_modules/is-my-json-valid/LICENSE +0 -21
  506. package/node_modules/is-my-json-valid/README.md +0 -173
  507. package/node_modules/is-my-json-valid/example.js +0 -18
  508. package/node_modules/is-my-json-valid/formats.js +0 -14
  509. package/node_modules/is-my-json-valid/index.js +0 -594
  510. package/node_modules/is-my-json-valid/package.json +0 -116
  511. package/node_modules/is-my-json-valid/require.js +0 -12
  512. package/node_modules/is-my-json-valid/test/fixtures/cosmic.js +0 -84
  513. package/node_modules/is-my-json-valid/test/json-schema-draft4/additionalItems.json +0 -82
  514. package/node_modules/is-my-json-valid/test/json-schema-draft4/additionalProperties.json +0 -88
  515. package/node_modules/is-my-json-valid/test/json-schema-draft4/allOf.json +0 -112
  516. package/node_modules/is-my-json-valid/test/json-schema-draft4/anyOf.json +0 -68
  517. package/node_modules/is-my-json-valid/test/json-schema-draft4/bignum.json +0 -107
  518. package/node_modules/is-my-json-valid/test/json-schema-draft4/default.json +0 -49
  519. package/node_modules/is-my-json-valid/test/json-schema-draft4/definitions.json +0 -32
  520. package/node_modules/is-my-json-valid/test/json-schema-draft4/dependencies.json +0 -113
  521. package/node_modules/is-my-json-valid/test/json-schema-draft4/enum.json +0 -72
  522. package/node_modules/is-my-json-valid/test/json-schema-draft4/format.json +0 -143
  523. package/node_modules/is-my-json-valid/test/json-schema-draft4/items.json +0 -46
  524. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxItems.json +0 -28
  525. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxLength.json +0 -28
  526. package/node_modules/is-my-json-valid/test/json-schema-draft4/maxProperties.json +0 -28
  527. package/node_modules/is-my-json-valid/test/json-schema-draft4/maximum.json +0 -42
  528. package/node_modules/is-my-json-valid/test/json-schema-draft4/minItems.json +0 -28
  529. package/node_modules/is-my-json-valid/test/json-schema-draft4/minLength.json +0 -28
  530. package/node_modules/is-my-json-valid/test/json-schema-draft4/minProperties.json +0 -28
  531. package/node_modules/is-my-json-valid/test/json-schema-draft4/minimum.json +0 -42
  532. package/node_modules/is-my-json-valid/test/json-schema-draft4/multipleOf.json +0 -96
  533. package/node_modules/is-my-json-valid/test/json-schema-draft4/not.json +0 -96
  534. package/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndFormat.json +0 -18
  535. package/node_modules/is-my-json-valid/test/json-schema-draft4/nullAndObject.json +0 -18
  536. package/node_modules/is-my-json-valid/test/json-schema-draft4/oneOf.json +0 -68
  537. package/node_modules/is-my-json-valid/test/json-schema-draft4/pattern.json +0 -23
  538. package/node_modules/is-my-json-valid/test/json-schema-draft4/patternProperties.json +0 -110
  539. package/node_modules/is-my-json-valid/test/json-schema-draft4/properties.json +0 -92
  540. package/node_modules/is-my-json-valid/test/json-schema-draft4/ref.json +0 -128
  541. package/node_modules/is-my-json-valid/test/json-schema-draft4/refRemote.json +0 -74
  542. package/node_modules/is-my-json-valid/test/json-schema-draft4/required.json +0 -39
  543. package/node_modules/is-my-json-valid/test/json-schema-draft4/type.json +0 -330
  544. package/node_modules/is-my-json-valid/test/json-schema-draft4/uniqueItems.json +0 -79
  545. package/node_modules/is-my-json-valid/test/json-schema.js +0 -23
  546. package/node_modules/is-my-json-valid/test/misc.js +0 -471
  547. package/node_modules/is-property/.npmignore +0 -17
  548. package/node_modules/is-property/README.md +0 -28
  549. package/node_modules/is-property/is-property.js +0 -5
  550. package/node_modules/is-property/package.json +0 -92
  551. package/node_modules/jsonpointer/LICENSE.md +0 -21
  552. package/node_modules/jsonpointer/README.md +0 -39
  553. package/node_modules/jsonpointer/jsonpointer.js +0 -93
  554. package/node_modules/jsonpointer/package.json +0 -112
  555. package/node_modules/ms/.npmignore +0 -5
  556. package/node_modules/ms/History.md +0 -66
  557. package/node_modules/ms/README.md +0 -35
  558. package/node_modules/pinkie/index.js +0 -292
  559. package/node_modules/pinkie/license +0 -21
  560. package/node_modules/pinkie/package.json +0 -100
  561. package/node_modules/pinkie/readme.md +0 -83
  562. package/node_modules/pinkie-promise/index.js +0 -3
  563. package/node_modules/pinkie-promise/license +0 -21
  564. package/node_modules/pinkie-promise/package.json +0 -102
  565. package/node_modules/pinkie-promise/readme.md +0 -28
  566. package/node_modules/qs/CONTRIBUTING.md +0 -1
  567. package/node_modules/string_decoder/index.js +0 -221
  568. package/node_modules/strip-json-comments/cli.js +0 -41
  569. package/node_modules/strip-json-comments/strip-json-comments.js +0 -73
  570. package/node_modules/supports-color/cli.js +0 -28
  571. package/node_modules/supports-color/index.js +0 -32
  572. package/node_modules/supports-color/package.json +0 -112
  573. package/node_modules/supports-color/readme.md +0 -44
  574. package/node_modules/tar-pack/node_modules/once/README.md +0 -51
  575. package/node_modules/tar-pack/node_modules/once/once.js +0 -21
  576. package/node_modules/tar-pack/node_modules/once/package.json +0 -96
  577. package/node_modules/tar-pack/node_modules/readable-stream/.npmignore +0 -8
  578. package/node_modules/tar-pack/node_modules/readable-stream/.travis.yml +0 -49
  579. package/node_modules/tar-pack/node_modules/readable-stream/LICENSE +0 -18
  580. package/node_modules/tar-pack/node_modules/readable-stream/README.md +0 -36
  581. package/node_modules/tar-pack/node_modules/readable-stream/doc/stream.md +0 -2015
  582. package/node_modules/tar-pack/node_modules/readable-stream/doc/wg-meetings/2015-01-30.md +0 -60
  583. package/node_modules/tar-pack/node_modules/readable-stream/duplex.js +0 -1
  584. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_duplex.js +0 -75
  585. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_passthrough.js +0 -26
  586. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_readable.js +0 -937
  587. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_transform.js +0 -180
  588. package/node_modules/tar-pack/node_modules/readable-stream/lib/_stream_writable.js +0 -526
  589. package/node_modules/tar-pack/node_modules/readable-stream/lib/internal/streams/BufferList.js +0 -64
  590. package/node_modules/tar-pack/node_modules/readable-stream/package.json +0 -125
  591. package/node_modules/tar-pack/node_modules/readable-stream/passthrough.js +0 -1
  592. package/node_modules/tar-pack/node_modules/readable-stream/transform.js +0 -1
  593. package/node_modules/tar-pack/node_modules/readable-stream/writable.js +0 -1
  594. package/node_modules/wide-align/.npmignore +0 -5
  595. package/node_modules/wide-align/test/align.js +0 -37
  596. package/node_modules/xtend/.jshintrc +0 -30
  597. package/node_modules/xtend/.npmignore +0 -1
  598. package/node_modules/xtend/LICENCE +0 -19
  599. package/node_modules/xtend/Makefile +0 -4
  600. package/node_modules/xtend/README.md +0 -32
  601. package/node_modules/xtend/immutable.js +0 -19
  602. package/node_modules/xtend/mutable.js +0 -17
  603. package/node_modules/xtend/package.json +0 -117
  604. 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
 
@@ -116,13 +116,35 @@ Identity.prototype.toString = function () {
116
116
  }).join(', '));
117
117
  };
118
118
 
119
+ /*
120
+ * These are from X.680 -- PrintableString allowed chars are in section 37.4
121
+ * table 8. Spec for IA5Strings is "1,6 + SPACE + DEL" where 1 refers to
122
+ * ISO IR #001 (standard ASCII control characters) and 6 refers to ISO IR #006
123
+ * (the basic ASCII character set).
124
+ */
125
+ /* JSSTYLED */
126
+ var NOT_PRINTABLE = /[^a-zA-Z0-9 '(),+.\/:=?-]/;
127
+ /* JSSTYLED */
128
+ var NOT_IA5 = /[^\x00-\x7f]/;
129
+
119
130
  Identity.prototype.toAsn1 = function (der, tag) {
120
131
  der.startSequence(tag);
121
132
  this.components.forEach(function (c) {
122
133
  der.startSequence(asn1.Ber.Constructor | asn1.Ber.Set);
123
134
  der.startSequence();
124
135
  der.writeOID(c.oid);
125
- der.writeString(c.value, asn1.Ber.PrintableString);
136
+ /*
137
+ * If we fit in a PrintableString, use that. Otherwise use an
138
+ * IA5String or UTF8String.
139
+ */
140
+ if (c.value.match(NOT_IA5)) {
141
+ var v = new Buffer(c.value, 'utf8');
142
+ der.writeBuffer(v, asn1.Ber.Utf8String);
143
+ } else if (c.value.match(NOT_PRINTABLE)) {
144
+ der.writeString(c.value, asn1.Ber.IA5String);
145
+ } else {
146
+ der.writeString(c.value, asn1.Ber.PrintableString);
147
+ }
126
148
  der.endSequence();
127
149
  der.endSequence();
128
150
  });
@@ -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' ||