fsevents 1.0.5 → 1.0.6

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 (360) hide show
  1. package/Readme.md +12 -13
  2. package/node_modules/ansi/package.json +1 -2
  3. package/node_modules/are-we-there-yet/package.json +1 -2
  4. package/node_modules/asn1/.travis.yml +4 -0
  5. package/node_modules/asn1/lib/ber/reader.js +27 -33
  6. package/node_modules/asn1/lib/ber/writer.js +10 -11
  7. package/node_modules/asn1/package.json +21 -19
  8. package/node_modules/asn1/tst/ber/reader.test.js +36 -0
  9. package/node_modules/asn1/tst/ber/writer.test.js +74 -0
  10. package/node_modules/assert-plus/package.json +1 -0
  11. package/node_modules/{ctype → bl/node_modules/readable-stream/node_modules/core-util-is}/LICENSE +1 -6
  12. package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +11 -11
  13. package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json +17 -12
  14. package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js +68 -0
  15. package/node_modules/boom/package.json +1 -1
  16. package/node_modules/commander/package.json +1 -1
  17. package/node_modules/core-util-is/LICENSE +19 -0
  18. package/node_modules/core-util-is/lib/util.js +11 -11
  19. package/node_modules/core-util-is/package.json +17 -12
  20. package/node_modules/core-util-is/test.js +68 -0
  21. package/node_modules/dashdash/README.md +508 -0
  22. package/node_modules/dashdash/lib/dashdash.js +813 -0
  23. package/node_modules/dashdash/package.json +87 -0
  24. package/node_modules/deep-extend/LICENSE +1 -1
  25. package/node_modules/deep-extend/README.md +89 -52
  26. package/node_modules/deep-extend/index.js +1 -90
  27. package/node_modules/deep-extend/lib/deep-extend.js +144 -0
  28. package/node_modules/deep-extend/package.json +47 -16
  29. package/node_modules/deep-extend/test/index.spec.js +168 -5
  30. package/node_modules/delegates/package.json +1 -2
  31. package/node_modules/ecc-jsbn/.npmignore +15 -0
  32. package/node_modules/ecc-jsbn/LICENSE +21 -0
  33. package/node_modules/ecc-jsbn/README.md +8 -0
  34. package/node_modules/ecc-jsbn/index.js +57 -0
  35. package/node_modules/ecc-jsbn/lib/LICENSE-jsbn +40 -0
  36. package/node_modules/ecc-jsbn/lib/ec.js +561 -0
  37. package/node_modules/ecc-jsbn/lib/sec.js +170 -0
  38. package/node_modules/ecc-jsbn/package.json +63 -0
  39. package/node_modules/ecc-jsbn/test.js +14 -0
  40. package/node_modules/extsprintf/.gitmodules +6 -0
  41. package/node_modules/{path-is-absolute/license → extsprintf/LICENSE} +2 -4
  42. package/node_modules/extsprintf/Makefile +23 -0
  43. package/node_modules/extsprintf/Makefile.deps +39 -0
  44. package/node_modules/extsprintf/Makefile.targ +285 -0
  45. package/node_modules/extsprintf/README.md +39 -0
  46. package/node_modules/extsprintf/examples/simple.js +2 -0
  47. package/node_modules/{ctype/tools/jsl.conf → extsprintf/jsl.node.conf} +71 -63
  48. package/node_modules/extsprintf/lib/extsprintf.js +166 -0
  49. package/node_modules/extsprintf/package.json +48 -0
  50. package/node_modules/fstream/package.json +1 -2
  51. package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/package.json +4 -22
  52. package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/package.json +3 -21
  53. package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/package.json +4 -23
  54. package/node_modules/fstream-ignore/node_modules/minimatch/package.json +4 -24
  55. package/node_modules/fstream-ignore/package.json +1 -2
  56. package/node_modules/gauge/package.json +1 -2
  57. package/node_modules/har-validator/package.json +15 -15
  58. package/node_modules/has-unicode/package.json +1 -2
  59. package/node_modules/hawk/dist/client.js +340 -0
  60. package/node_modules/hawk/lib/browser.js +14 -20
  61. package/node_modules/hawk/package.json +10 -10
  62. package/node_modules/hawk/test/browser.js +134 -101
  63. package/node_modules/hawk/test/index.js +61 -61
  64. package/node_modules/hawk/test/server.js +72 -84
  65. package/node_modules/hawk/test/uri.js +52 -63
  66. package/node_modules/http-signature/CHANGES.md +39 -0
  67. package/node_modules/http-signature/http_signing.md +16 -17
  68. package/node_modules/http-signature/lib/index.js +6 -4
  69. package/node_modules/http-signature/lib/parser.js +43 -29
  70. package/node_modules/http-signature/lib/signer.js +290 -74
  71. package/node_modules/http-signature/lib/utils.js +112 -0
  72. package/node_modules/http-signature/lib/verify.js +47 -15
  73. package/node_modules/http-signature/package.json +20 -14
  74. package/node_modules/is-my-json-valid/index.js +16 -14
  75. package/node_modules/is-my-json-valid/package.json +16 -12
  76. package/node_modules/is-typedarray/LICENSE.md +18 -0
  77. package/node_modules/is-typedarray/README.md +16 -0
  78. package/node_modules/is-typedarray/index.js +41 -0
  79. package/node_modules/is-typedarray/package.json +63 -0
  80. package/node_modules/is-typedarray/test.js +34 -0
  81. package/node_modules/jodid25519/.npmignore +11 -0
  82. package/node_modules/jodid25519/.travis.yml +7 -0
  83. package/node_modules/jodid25519/AUTHORS.md +3 -0
  84. package/node_modules/jodid25519/LICENSE +23 -0
  85. package/node_modules/jodid25519/README.md +51 -0
  86. package/node_modules/jodid25519/almond.0 +42 -0
  87. package/node_modules/jodid25519/almond.1 +13 -0
  88. package/node_modules/jodid25519/index.js +35 -0
  89. package/node_modules/jodid25519/jsdoc.json +19 -0
  90. package/node_modules/jodid25519/lib/core.js +481 -0
  91. package/node_modules/jodid25519/lib/curve255.js +221 -0
  92. package/node_modules/jodid25519/lib/dh.js +111 -0
  93. package/node_modules/jodid25519/lib/eddsa.js +573 -0
  94. package/node_modules/jodid25519/lib/utils.js +198 -0
  95. package/node_modules/jodid25519/package.json +77 -0
  96. package/node_modules/jsbn/.npmignore +2 -0
  97. package/node_modules/jsbn/LICENSE +40 -0
  98. package/node_modules/jsbn/README.md +175 -0
  99. package/node_modules/jsbn/example.html +12 -0
  100. package/node_modules/jsbn/example.js +3 -0
  101. package/node_modules/jsbn/index.js +1358 -0
  102. package/node_modules/jsbn/package.json +60 -0
  103. package/node_modules/json-schema/README.md +5 -0
  104. package/node_modules/json-schema/draft-00/hyper-schema +68 -0
  105. package/node_modules/json-schema/draft-00/json-ref +26 -0
  106. package/node_modules/json-schema/draft-00/links +33 -0
  107. package/node_modules/json-schema/draft-00/schema +155 -0
  108. package/node_modules/json-schema/draft-01/hyper-schema +68 -0
  109. package/node_modules/json-schema/draft-01/json-ref +26 -0
  110. package/node_modules/json-schema/draft-01/links +33 -0
  111. package/node_modules/json-schema/draft-01/schema +155 -0
  112. package/node_modules/json-schema/draft-02/hyper-schema +68 -0
  113. package/node_modules/json-schema/draft-02/json-ref +26 -0
  114. package/node_modules/json-schema/draft-02/links +35 -0
  115. package/node_modules/json-schema/draft-02/schema +166 -0
  116. package/node_modules/json-schema/draft-03/examples/address +20 -0
  117. package/node_modules/json-schema/draft-03/examples/calendar +53 -0
  118. package/node_modules/json-schema/draft-03/examples/card +105 -0
  119. package/node_modules/json-schema/draft-03/examples/geo +8 -0
  120. package/node_modules/json-schema/draft-03/examples/interfaces +23 -0
  121. package/node_modules/json-schema/draft-03/hyper-schema +60 -0
  122. package/node_modules/json-schema/draft-03/json-ref +26 -0
  123. package/node_modules/json-schema/draft-03/links +35 -0
  124. package/node_modules/json-schema/draft-03/schema +174 -0
  125. package/node_modules/json-schema/draft-04/hyper-schema +60 -0
  126. package/node_modules/json-schema/draft-04/links +41 -0
  127. package/node_modules/json-schema/draft-04/schema +189 -0
  128. package/node_modules/json-schema/draft-zyp-json-schema-03.xml +1120 -0
  129. package/node_modules/json-schema/draft-zyp-json-schema-04.xml +1072 -0
  130. package/node_modules/json-schema/lib/links.js +52 -0
  131. package/node_modules/json-schema/lib/validate.js +260 -0
  132. package/node_modules/json-schema/package.json +67 -0
  133. package/node_modules/json-schema/test/tests.js +95 -0
  134. package/node_modules/jsprim/CHANGES.md +30 -0
  135. package/node_modules/jsprim/LICENSE +19 -0
  136. package/node_modules/jsprim/README.md +228 -0
  137. package/node_modules/jsprim/lib/jsprim.js +478 -0
  138. package/node_modules/jsprim/package.json +54 -0
  139. package/node_modules/lodash._basetostring/package.json +1 -2
  140. package/node_modules/lodash._createpadding/package.json +1 -2
  141. package/node_modules/lodash.pad/package.json +1 -2
  142. package/node_modules/lodash.padleft/package.json +1 -2
  143. package/node_modules/lodash.padright/package.json +1 -2
  144. package/node_modules/lodash.repeat/package.json +1 -2
  145. package/node_modules/node-pre-gyp/CHANGELOG.md +8 -0
  146. package/node_modules/node-pre-gyp/README.md +570 -0
  147. package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +4 -0
  148. package/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js +2 -1
  149. package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/package.json +30 -37
  150. package/node_modules/node-pre-gyp/node_modules/nopt/package.json +37 -57
  151. package/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js +22 -0
  152. package/node_modules/node-pre-gyp/package.json +17 -17
  153. package/node_modules/node-uuid/.npmignore +2 -0
  154. package/node_modules/node-uuid/README.md +12 -1
  155. package/node_modules/node-uuid/bower.json +1 -1
  156. package/node_modules/node-uuid/component.json +11 -4
  157. package/node_modules/node-uuid/package.json +25 -12
  158. package/node_modules/node-uuid/test/test.js +3 -0
  159. package/node_modules/node-uuid/uuid.js +70 -45
  160. package/node_modules/npmlog/.travis.yml +14 -0
  161. package/node_modules/npmlog/log.js +3 -0
  162. package/node_modules/npmlog/package.json +23 -20
  163. package/node_modules/npmlog/test/basic.js +8 -1
  164. package/node_modules/once/package.json +2 -3
  165. package/node_modules/pinkie/index.js +23 -7
  166. package/node_modules/pinkie/package.json +22 -15
  167. package/node_modules/pinkie/readme.md +17 -9
  168. package/node_modules/pinkie-promise/package.json +16 -14
  169. package/node_modules/pinkie-promise/readme.md +5 -3
  170. package/node_modules/rc/README.md +1 -1
  171. package/node_modules/rc/index.js +1 -1
  172. package/node_modules/rc/node_modules/minimist/package.json +1 -1
  173. package/node_modules/rc/package.json +12 -12
  174. package/node_modules/request/.eslintrc +1 -1
  175. package/node_modules/request/.travis.yml +4 -4
  176. package/node_modules/request/CHANGELOG.md +25 -0
  177. package/node_modules/request/README.md +12 -13
  178. package/node_modules/request/lib/har.js +84 -75
  179. package/node_modules/request/lib/redirect.js +2 -3
  180. package/node_modules/request/lib/tunnel.js +13 -18
  181. package/node_modules/request/package.json +17 -16
  182. package/node_modules/request/request.js +16 -59
  183. package/node_modules/rimraf/README.md +7 -2
  184. package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/package.json +5 -25
  185. package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/package.json +5 -25
  186. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE +16 -0
  187. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/README.md +42 -0
  188. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits.js +1 -0
  189. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
  190. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/package.json +58 -0
  191. package/node_modules/rimraf/node_modules/glob/node_modules/inherits/test.js +25 -0
  192. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +3 -0
  193. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +122 -0
  194. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
  195. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
  196. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
  197. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +3 -0
  198. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md +21 -0
  199. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
  200. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
  201. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
  202. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
  203. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +79 -0
  204. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
  205. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
  206. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
  207. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
  208. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
  209. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
  210. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +90 -0
  211. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
  212. package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +81 -0
  213. package/node_modules/rimraf/node_modules/{minimatch → glob/node_modules/minimatch}/package.json +3 -21
  214. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
  215. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +58 -0
  216. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
  217. package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
  218. package/node_modules/rimraf/node_modules/glob/node_modules/once/package.json +70 -0
  219. package/node_modules/{path-is-absolute → rimraf/node_modules/glob/node_modules/path-is-absolute}/package.json +4 -22
  220. package/node_modules/rimraf/node_modules/glob/package.json +2 -20
  221. package/node_modules/rimraf/package.json +10 -10
  222. package/node_modules/semver/README.md +25 -1
  223. package/node_modules/semver/package.json +10 -10
  224. package/node_modules/semver/range.bnf +16 -0
  225. package/node_modules/semver/semver.js +0 -12
  226. package/node_modules/sshpk/.npmignore +8 -0
  227. package/node_modules/sshpk/.travis.yml +11 -0
  228. package/node_modules/sshpk/LICENSE +18 -0
  229. package/node_modules/sshpk/README.md +436 -0
  230. package/node_modules/sshpk/bin/sshpk-conv +183 -0
  231. package/node_modules/sshpk/lib/algs.js +168 -0
  232. package/node_modules/sshpk/lib/dhe.js +312 -0
  233. package/node_modules/sshpk/lib/ed-compat.js +94 -0
  234. package/node_modules/sshpk/lib/errors.js +58 -0
  235. package/node_modules/sshpk/lib/fingerprint.js +140 -0
  236. package/node_modules/sshpk/lib/formats/auto.js +73 -0
  237. package/node_modules/sshpk/lib/formats/pem.js +152 -0
  238. package/node_modules/sshpk/lib/formats/pkcs1.js +320 -0
  239. package/node_modules/sshpk/lib/formats/pkcs8.js +510 -0
  240. package/node_modules/sshpk/lib/formats/rfc4253.js +145 -0
  241. package/node_modules/sshpk/lib/formats/ssh-private.js +138 -0
  242. package/node_modules/sshpk/lib/formats/ssh.js +114 -0
  243. package/node_modules/sshpk/lib/index.js +25 -0
  244. package/node_modules/sshpk/lib/key.js +260 -0
  245. package/node_modules/sshpk/lib/private-key.js +224 -0
  246. package/node_modules/sshpk/lib/signature.js +237 -0
  247. package/node_modules/sshpk/lib/ssh-buffer.js +123 -0
  248. package/node_modules/sshpk/lib/utils.js +207 -0
  249. package/node_modules/sshpk/node_modules/assert-plus/AUTHORS +6 -0
  250. package/node_modules/sshpk/node_modules/assert-plus/CHANGES.md +8 -0
  251. package/node_modules/sshpk/node_modules/assert-plus/README.md +155 -0
  252. package/node_modules/sshpk/node_modules/assert-plus/assert.js +206 -0
  253. package/node_modules/sshpk/node_modules/assert-plus/package.json +88 -0
  254. package/node_modules/sshpk/package.json +92 -0
  255. package/node_modules/strip-json-comments/cli.js +2 -2
  256. package/node_modules/strip-json-comments/package.json +13 -12
  257. package/node_modules/strip-json-comments/readme.md +11 -5
  258. package/node_modules/strip-json-comments/strip-json-comments.js +16 -7
  259. package/node_modules/tar/package.json +1 -2
  260. package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/LICENSE +19 -0
  261. package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +11 -11
  262. package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json +17 -12
  263. package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/test.js +68 -0
  264. package/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json +1 -1
  265. package/node_modules/tar-pack/node_modules/rimraf/package.json +1 -2
  266. package/node_modules/tar-pack/package.json +1 -2
  267. package/node_modules/tough-cookie/lib/cookie.js +1 -1
  268. package/node_modules/tough-cookie/package.json +7 -7
  269. package/node_modules/tweetnacl/.npmignore +4 -0
  270. package/node_modules/tweetnacl/CHANGELOG.md +128 -0
  271. package/node_modules/tweetnacl/README.md +463 -0
  272. package/node_modules/tweetnacl/nacl-fast.js +2418 -0
  273. package/node_modules/tweetnacl/nacl-fast.min.js +2 -0
  274. package/node_modules/tweetnacl/nacl.js +1205 -0
  275. package/node_modules/tweetnacl/nacl.min.js +1 -0
  276. package/node_modules/tweetnacl/package.json +101 -0
  277. package/node_modules/uid-number/package.json +2 -3
  278. package/node_modules/verror/.gitmodules +0 -0
  279. package/node_modules/verror/LICENSE +19 -0
  280. package/node_modules/verror/Makefile +35 -0
  281. package/node_modules/verror/Makefile.targ +285 -0
  282. package/node_modules/verror/README.md +120 -0
  283. package/node_modules/verror/examples/levels-verror.js +36 -0
  284. package/node_modules/verror/examples/levels-werror.js +34 -0
  285. package/node_modules/verror/examples/varargs.js +6 -0
  286. package/node_modules/verror/examples/verror.js +13 -0
  287. package/node_modules/verror/examples/werror.js +14 -0
  288. package/node_modules/verror/jsl.node.conf +139 -0
  289. package/node_modules/verror/lib/verror.js +157 -0
  290. package/node_modules/verror/package.json +51 -0
  291. package/node_modules/verror/tests/tst.inherit.js +100 -0
  292. package/node_modules/verror/tests/tst.verror.js +156 -0
  293. package/node_modules/verror/tests/tst.werror.js +179 -0
  294. package/package.json +3 -3
  295. package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js +0 -106
  296. package/node_modules/core-util-is/util.js +0 -106
  297. package/node_modules/ctype/.npmignore +0 -1
  298. package/node_modules/ctype/CHANGELOG +0 -78
  299. package/node_modules/ctype/README +0 -82
  300. package/node_modules/ctype/README.old +0 -298
  301. package/node_modules/ctype/ctf.js +0 -245
  302. package/node_modules/ctype/ctio.js +0 -1485
  303. package/node_modules/ctype/ctype.js +0 -944
  304. package/node_modules/ctype/man/man3ctype/ctio.3ctype +0 -241
  305. package/node_modules/ctype/package.json +0 -51
  306. package/node_modules/ctype/tools/jsstyle +0 -839
  307. package/node_modules/http-signature/lib/util.js +0 -306
  308. package/node_modules/inflight/node_modules/once/package.json +0 -86
  309. package/node_modules/inflight/node_modules/once/test/once.js +0 -23
  310. package/node_modules/rimraf/node_modules/glob/LICENSE +0 -15
  311. package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
  312. package/node_modules/rimraf/node_modules/once/LICENSE +0 -15
  313. package/node_modules/rimraf/node_modules/once/README.md +0 -51
  314. package/node_modules/rimraf/node_modules/once/once.js +0 -21
  315. package/node_modules/rimraf/node_modules/once/package.json +0 -84
  316. package/node_modules/rimraf/node_modules/once/test/once.js +0 -23
  317. package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/util.js +0 -106
  318. package/node_modules/wrappy/LICENSE +0 -15
  319. /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/.npmignore +0 -0
  320. /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/README.md +0 -0
  321. /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/example.js +0 -0
  322. /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/index.js +0 -0
  323. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/.npmignore +0 -0
  324. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/.travis.yml +0 -0
  325. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/LICENSE.md +0 -0
  326. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/Makefile +0 -0
  327. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/README.md +0 -0
  328. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/example.js +0 -0
  329. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/index.js +0 -0
  330. /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/test/balanced.js +0 -0
  331. /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/.travis.yml +0 -0
  332. /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/LICENSE +0 -0
  333. /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/README.markdown +0 -0
  334. /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/example/map.js +0 -0
  335. /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/index.js +0 -0
  336. /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/test/map.js +0 -0
  337. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/.npmignore +0 -0
  338. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/.travis.yml +0 -0
  339. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/CONTRIBUTING.md +0 -0
  340. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/LICENSE +0 -0
  341. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/README.md +0 -0
  342. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/abbrev.js +0 -0
  343. /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/test.js +0 -0
  344. /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/.eslintrc +0 -0
  345. /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/LICENSE +0 -0
  346. /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/README.md +0 -0
  347. /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/inflight.js +0 -0
  348. /package/node_modules/{fstream-ignore/node_modules/minimatch → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/LICENSE +0 -0
  349. /package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/README.md +0 -0
  350. /package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/test/basic.js +0 -0
  351. /package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/wrappy.js +0 -0
  352. /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/test.js +0 -0
  353. /package/node_modules/rimraf/node_modules/{minimatch → glob/node_modules/minimatch}/README.md +0 -0
  354. /package/node_modules/rimraf/node_modules/{minimatch → glob/node_modules/minimatch}/minimatch.js +0 -0
  355. /package/node_modules/{inflight → rimraf/node_modules/glob}/node_modules/once/README.md +0 -0
  356. /package/node_modules/{inflight/node_modules/once → rimraf/node_modules/glob/node_modules/once/node_modules/wrappy}/LICENSE +0 -0
  357. /package/node_modules/{inflight → rimraf/node_modules/glob}/node_modules/once/once.js +0 -0
  358. /package/node_modules/{path-is-absolute → rimraf/node_modules/glob/node_modules/path-is-absolute}/index.js +0 -0
  359. /package/node_modules/{path-is-absolute → rimraf/node_modules/glob/node_modules/path-is-absolute}/readme.md +0 -0
  360. /package/node_modules/{deep-extend → verror}/.npmignore +0 -0
@@ -0,0 +1,510 @@
1
+ // Copyright 2015 Joyent, Inc.
2
+
3
+ module.exports = {
4
+ read: read,
5
+ readPkcs8: readPkcs8,
6
+ write: write,
7
+ writePkcs8: writePkcs8,
8
+
9
+ readECDSACurve: readECDSACurve,
10
+ writeECDSACurve: writeECDSACurve
11
+ };
12
+
13
+ var assert = require('assert-plus');
14
+ var asn1 = require('asn1');
15
+ var algs = require('../algs');
16
+ var utils = require('../utils');
17
+ var Key = require('../key');
18
+ var PrivateKey = require('../private-key');
19
+ var pem = require('./pem');
20
+
21
+ function read(buf) {
22
+ return (pem.read(buf, 'pkcs8'));
23
+ }
24
+
25
+ function write(key) {
26
+ return (pem.write(key, 'pkcs8'));
27
+ }
28
+
29
+ /* Helper to read in a single mpint */
30
+ function readMPInt(der, nm) {
31
+ assert.strictEqual(der.peek(), asn1.Ber.Integer,
32
+ nm + ' is not an Integer');
33
+ return (utils.mpNormalize(der.readString(asn1.Ber.Integer, true)));
34
+ }
35
+
36
+ function readPkcs8(alg, type, der) {
37
+ /* Private keys in pkcs#8 format have a weird extra int */
38
+ if (der.peek() === asn1.Ber.Integer) {
39
+ assert.strictEqual(type, 'private',
40
+ 'unexpected Integer at start of public key');
41
+ der.readString(asn1.Ber.Integer, true);
42
+ }
43
+
44
+ der.readSequence();
45
+
46
+ var oid = der.readOID();
47
+ switch (oid) {
48
+ case '1.2.840.113549.1.1.1':
49
+ if (type === 'public')
50
+ return (readPkcs8RSAPublic(der));
51
+ else
52
+ return (readPkcs8RSAPrivate(der));
53
+ case '1.2.840.10040.4.1':
54
+ if (type === 'public')
55
+ return (readPkcs8DSAPublic(der));
56
+ else
57
+ return (readPkcs8DSAPrivate(der));
58
+ case '1.2.840.10045.2.1':
59
+ if (type === 'public')
60
+ return (readPkcs8ECDSAPublic(der));
61
+ else
62
+ return (readPkcs8ECDSAPrivate(der));
63
+ default:
64
+ throw (new Error('Unknown key type OID ' + oid));
65
+ }
66
+ }
67
+
68
+ function readPkcs8RSAPublic(der) {
69
+ // Null -- XXX this probably isn't good practice
70
+ der.readByte();
71
+ der.readByte();
72
+
73
+ // bit string sequence
74
+ der.readSequence(asn1.Ber.BitString);
75
+ der.readByte();
76
+ der.readSequence();
77
+
78
+ // modulus
79
+ var n = readMPInt(der, 'modulus');
80
+ var e = readMPInt(der, 'exponent');
81
+
82
+ // now, make the key
83
+ var key = {
84
+ type: 'rsa',
85
+ source: der.originalInput,
86
+ parts: [
87
+ { name: 'e', data: e },
88
+ { name: 'n', data: n }
89
+ ]
90
+ };
91
+
92
+ return (new Key(key));
93
+ }
94
+
95
+ function readPkcs8RSAPrivate(der) {
96
+ der.readByte();
97
+ der.readByte();
98
+
99
+ der.readSequence(asn1.Ber.OctetString);
100
+ der.readSequence();
101
+
102
+ var ver = readMPInt(der, 'version');
103
+ assert.equal(ver[0], 0x0, 'unknown RSA private key version');
104
+
105
+ // modulus then public exponent
106
+ var n = readMPInt(der, 'modulus');
107
+ var e = readMPInt(der, 'public exponent');
108
+ var d = readMPInt(der, 'private exponent');
109
+ var p = readMPInt(der, 'prime1');
110
+ var q = readMPInt(der, 'prime2');
111
+ var dmodp = readMPInt(der, 'exponent1');
112
+ var dmodq = readMPInt(der, 'exponent2');
113
+ var iqmp = readMPInt(der, 'iqmp');
114
+
115
+ // now, make the key
116
+ var key = {
117
+ type: 'rsa',
118
+ parts: [
119
+ { name: 'n', data: n },
120
+ { name: 'e', data: e },
121
+ { name: 'd', data: d },
122
+ { name: 'iqmp', data: iqmp },
123
+ { name: 'p', data: p },
124
+ { name: 'q', data: q },
125
+ { name: 'dmodp', data: dmodp },
126
+ { name: 'dmodq', data: dmodq }
127
+ ]
128
+ };
129
+
130
+ return (new PrivateKey(key));
131
+ }
132
+
133
+ function readPkcs8DSAPublic(der) {
134
+ der.readSequence();
135
+
136
+ var p = readMPInt(der, 'p');
137
+ var q = readMPInt(der, 'q');
138
+ var g = readMPInt(der, 'g');
139
+
140
+ // bit string sequence
141
+ der.readSequence(asn1.Ber.BitString);
142
+ der.readByte();
143
+
144
+ var y = readMPInt(der, 'y');
145
+
146
+ // now, make the key
147
+ var key = {
148
+ type: 'dsa',
149
+ parts: [
150
+ { name: 'p', data: p },
151
+ { name: 'q', data: q },
152
+ { name: 'g', data: g },
153
+ { name: 'y', data: y }
154
+ ]
155
+ };
156
+
157
+ return (new Key(key));
158
+ }
159
+
160
+ function readPkcs8DSAPrivate(der) {
161
+ der.readSequence();
162
+
163
+ var p = readMPInt(der, 'p');
164
+ var q = readMPInt(der, 'q');
165
+ var g = readMPInt(der, 'g');
166
+
167
+ der.readSequence(asn1.Ber.OctetString);
168
+ var x = readMPInt(der, 'x');
169
+
170
+ /* The pkcs#8 format does not include the public key */
171
+ var y = utils.calculateDSAPublic(g, p, x);
172
+
173
+ var key = {
174
+ type: 'dsa',
175
+ parts: [
176
+ { name: 'p', data: p },
177
+ { name: 'q', data: q },
178
+ { name: 'g', data: g },
179
+ { name: 'y', data: y },
180
+ { name: 'x', data: x }
181
+ ]
182
+ };
183
+
184
+ return (new PrivateKey(key));
185
+ }
186
+
187
+ function readECDSACurve(der) {
188
+ var curveName, curveNames;
189
+ var j, c, cd;
190
+
191
+ if (der.peek() === asn1.Ber.OID) {
192
+ var oid = der.readOID();
193
+
194
+ curveNames = Object.keys(algs.curves);
195
+ for (j = 0; j < curveNames.length; ++j) {
196
+ c = curveNames[j];
197
+ cd = algs.curves[c];
198
+ if (cd.pkcs8oid === oid) {
199
+ curveName = c;
200
+ break;
201
+ }
202
+ }
203
+
204
+ } else {
205
+ // ECParameters sequence
206
+ der.readSequence();
207
+ var version = der.readString(asn1.Ber.Integer, true);
208
+ assert.strictEqual(version[0], 1, 'ECDSA key not version 1');
209
+
210
+ var curve = {};
211
+
212
+ // FieldID sequence
213
+ der.readSequence();
214
+ var fieldTypeOid = der.readOID();
215
+ assert.strictEqual(fieldTypeOid, '1.2.840.10045.1.1',
216
+ 'ECDSA key is not from a prime-field');
217
+ var p = curve.p = utils.mpNormalize(
218
+ der.readString(asn1.Ber.Integer, true));
219
+ /*
220
+ * p always starts with a 1 bit, so count the zeros to get its
221
+ * real size.
222
+ */
223
+ curve.size = p.length * 8 - utils.countZeros(p);
224
+
225
+ // Curve sequence
226
+ der.readSequence();
227
+ curve.a = utils.mpNormalize(
228
+ der.readString(asn1.Ber.OctetString, true));
229
+ curve.b = utils.mpNormalize(
230
+ der.readString(asn1.Ber.OctetString, true));
231
+ if (der.peek() === asn1.Ber.BitString)
232
+ curve.s = der.readString(asn1.Ber.BitString, true);
233
+
234
+ // Combined Gx and Gy
235
+ curve.G = der.readString(asn1.Ber.OctetString, true);
236
+ assert.strictEqual(curve.G[0], 0x4,
237
+ 'uncompressed G is required');
238
+
239
+ curve.n = utils.mpNormalize(
240
+ der.readString(asn1.Ber.Integer, true));
241
+ curve.h = utils.mpNormalize(
242
+ der.readString(asn1.Ber.Integer, true));
243
+ assert.strictEqual(curve.h[0], 0x1, 'a cofactor=1 curve is ' +
244
+ 'required');
245
+
246
+ curveNames = Object.keys(algs.curves);
247
+ var ks = Object.keys(curve);
248
+ for (j = 0; j < curveNames.length; ++j) {
249
+ c = curveNames[j];
250
+ cd = algs.curves[c];
251
+ var equal = true;
252
+ for (var i = 0; i < ks.length; ++i) {
253
+ var k = ks[i];
254
+ if (cd[k] === undefined)
255
+ continue;
256
+ if (typeof (cd[k]) === 'object' &&
257
+ cd[k].equals !== undefined) {
258
+ if (!cd[k].equals(curve[k])) {
259
+ equal = false;
260
+ break;
261
+ }
262
+ } else if (Buffer.isBuffer(cd[k])) {
263
+ if (cd[k].toString('binary')
264
+ !== curve[k].toString('binary')) {
265
+ equal = false;
266
+ break;
267
+ }
268
+ } else {
269
+ if (cd[k] !== curve[k]) {
270
+ equal = false;
271
+ break;
272
+ }
273
+ }
274
+ }
275
+ if (equal) {
276
+ curveName = c;
277
+ break;
278
+ }
279
+ }
280
+ }
281
+ return (curveName);
282
+ }
283
+
284
+ function readPkcs8ECDSAPrivate(der) {
285
+ var curveName = readECDSACurve(der);
286
+ assert.string(curveName, 'a known elliptic curve');
287
+
288
+ der.readSequence(asn1.Ber.OctetString);
289
+ der.readSequence();
290
+
291
+ var version = readMPInt(der, 'version');
292
+ assert.equal(version[0], 1, 'unknown version of ECDSA key');
293
+
294
+ var d = der.readString(asn1.Ber.OctetString, true);
295
+ der.readSequence(0xa1);
296
+
297
+ var Q = der.readString(asn1.Ber.BitString, true);
298
+ Q = utils.ecNormalize(Q);
299
+
300
+ var key = {
301
+ type: 'ecdsa',
302
+ parts: [
303
+ { name: 'curve', data: new Buffer(curveName) },
304
+ { name: 'Q', data: Q },
305
+ { name: 'd', data: d }
306
+ ]
307
+ };
308
+
309
+ return (new PrivateKey(key));
310
+ }
311
+
312
+ function readPkcs8ECDSAPublic(der) {
313
+ var curveName = readECDSACurve(der);
314
+ assert.string(curveName, 'a known elliptic curve');
315
+
316
+ var Q = der.readString(asn1.Ber.BitString, true);
317
+ Q = utils.ecNormalize(Q);
318
+
319
+ var key = {
320
+ type: 'ecdsa',
321
+ parts: [
322
+ { name: 'curve', data: new Buffer(curveName) },
323
+ { name: 'Q', data: Q }
324
+ ]
325
+ };
326
+
327
+ return (new Key(key));
328
+ }
329
+
330
+ function writePkcs8(der, key) {
331
+ der.startSequence();
332
+
333
+ if (PrivateKey.isPrivateKey(key)) {
334
+ var sillyInt = new Buffer(1);
335
+ sillyInt[0] = 0x0;
336
+ der.writeBuffer(sillyInt, asn1.Ber.Integer);
337
+ }
338
+
339
+ der.startSequence();
340
+ switch (key.type) {
341
+ case 'rsa':
342
+ der.writeOID('1.2.840.113549.1.1.1');
343
+ if (PrivateKey.isPrivateKey(key))
344
+ writePkcs8RSAPrivate(key, der);
345
+ else
346
+ writePkcs8RSAPublic(key, der);
347
+ break;
348
+ case 'dsa':
349
+ der.writeOID('1.2.840.10040.4.1');
350
+ if (PrivateKey.isPrivateKey(key))
351
+ writePkcs8DSAPrivate(key, der);
352
+ else
353
+ writePkcs8DSAPublic(key, der);
354
+ break;
355
+ case 'ecdsa':
356
+ der.writeOID('1.2.840.10045.2.1');
357
+ if (PrivateKey.isPrivateKey(key))
358
+ writePkcs8ECDSAPrivate(key, der);
359
+ else
360
+ writePkcs8ECDSAPublic(key, der);
361
+ break;
362
+ default:
363
+ throw (new Error('Unsupported key type: ' + key.type));
364
+ }
365
+
366
+ der.endSequence();
367
+ }
368
+
369
+ function writePkcs8RSAPrivate(key, der) {
370
+ der.writeNull();
371
+ der.endSequence();
372
+
373
+ der.startSequence(asn1.Ber.OctetString);
374
+ der.startSequence();
375
+
376
+ var version = new Buffer(1);
377
+ version[0] = 0;
378
+ der.writeBuffer(version, asn1.Ber.Integer);
379
+
380
+ der.writeBuffer(key.part.n.data, asn1.Ber.Integer);
381
+ der.writeBuffer(key.part.e.data, asn1.Ber.Integer);
382
+ der.writeBuffer(key.part.d.data, asn1.Ber.Integer);
383
+ der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
384
+ der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
385
+ if (!key.part.dmodp || !key.part.dmodq)
386
+ utils.addRSAMissing(key);
387
+ der.writeBuffer(key.part.dmodp.data, asn1.Ber.Integer);
388
+ der.writeBuffer(key.part.dmodq.data, asn1.Ber.Integer);
389
+ der.writeBuffer(key.part.iqmp.data, asn1.Ber.Integer);
390
+
391
+ der.endSequence();
392
+ der.endSequence();
393
+ }
394
+
395
+ function writePkcs8RSAPublic(key, der) {
396
+ der.writeNull();
397
+ der.endSequence();
398
+
399
+ der.startSequence(asn1.Ber.BitString);
400
+ der.writeByte(0x00);
401
+
402
+ der.startSequence();
403
+ der.writeBuffer(key.part.n.data, asn1.Ber.Integer);
404
+ der.writeBuffer(key.part.e.data, asn1.Ber.Integer);
405
+ der.endSequence();
406
+
407
+ der.endSequence();
408
+ }
409
+
410
+ function writePkcs8DSAPrivate(key, der) {
411
+ der.startSequence();
412
+ der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
413
+ der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
414
+ der.writeBuffer(key.part.g.data, asn1.Ber.Integer);
415
+ der.endSequence();
416
+
417
+ der.endSequence();
418
+
419
+ der.startSequence(asn1.Ber.OctetString);
420
+ der.writeBuffer(key.part.x.data, asn1.Ber.Integer);
421
+ der.endSequence();
422
+ }
423
+
424
+ function writePkcs8DSAPublic(key, der) {
425
+ der.startSequence();
426
+ der.writeBuffer(key.part.p.data, asn1.Ber.Integer);
427
+ der.writeBuffer(key.part.q.data, asn1.Ber.Integer);
428
+ der.writeBuffer(key.part.g.data, asn1.Ber.Integer);
429
+ der.endSequence();
430
+ der.endSequence();
431
+
432
+ der.startSequence(asn1.Ber.BitString);
433
+ der.writeByte(0x00);
434
+ der.writeBuffer(key.part.y.data, asn1.Ber.Integer);
435
+ der.endSequence();
436
+ }
437
+
438
+ function writeECDSACurve(key, der) {
439
+ var curve = algs.curves[key.curve];
440
+ if (curve.pkcs8oid) {
441
+ /* This one has a name in pkcs#8, so just write the oid */
442
+ der.writeOID(curve.pkcs8oid);
443
+
444
+ } else {
445
+ // ECParameters sequence
446
+ der.startSequence();
447
+
448
+ var version = new Buffer(1);
449
+ version.writeUInt8(1, 0);
450
+ der.writeBuffer(version, asn1.Ber.Integer);
451
+
452
+ // FieldID sequence
453
+ der.startSequence();
454
+ der.writeOID('1.2.840.10045.1.1'); // prime-field
455
+ der.writeBuffer(curve.p, asn1.Ber.Integer);
456
+ der.endSequence();
457
+
458
+ // Curve sequence
459
+ der.startSequence();
460
+ var a = curve.p;
461
+ if (a[0] === 0x0)
462
+ a = a.slice(1);
463
+ der.writeBuffer(a, asn1.Ber.OctetString);
464
+ der.writeBuffer(curve.b, asn1.Ber.OctetString);
465
+ der.writeBuffer(curve.s, asn1.Ber.BitString);
466
+ der.endSequence();
467
+
468
+ der.writeBuffer(curve.G, asn1.Ber.OctetString);
469
+ der.writeBuffer(curve.n, asn1.Ber.Integer);
470
+ var h = curve.h;
471
+ if (!h) {
472
+ h = new Buffer(1);
473
+ h[0] = 1;
474
+ }
475
+ der.writeBuffer(h, asn1.Ber.Integer);
476
+
477
+ // ECParameters
478
+ der.endSequence();
479
+ }
480
+ }
481
+
482
+ function writePkcs8ECDSAPublic(key, der) {
483
+ writeECDSACurve(key, der);
484
+ der.endSequence();
485
+
486
+ var Q = utils.ecNormalize(key.part.Q.data, true);
487
+ der.writeBuffer(Q, asn1.Ber.BitString);
488
+ }
489
+
490
+ function writePkcs8ECDSAPrivate(key, der) {
491
+ writeECDSACurve(key, der);
492
+ der.endSequence();
493
+
494
+ der.startSequence(asn1.Ber.OctetString);
495
+ der.startSequence();
496
+
497
+ var version = new Buffer(1);
498
+ version[0] = 1;
499
+ der.writeBuffer(version, asn1.Ber.Integer);
500
+
501
+ der.writeBuffer(key.part.d.data, asn1.Ber.OctetString);
502
+
503
+ der.startSequence(0xa1);
504
+ var Q = utils.ecNormalize(key.part.Q.data, true);
505
+ der.writeBuffer(Q, asn1.Ber.BitString);
506
+ der.endSequence();
507
+
508
+ der.endSequence();
509
+ der.endSequence();
510
+ }
@@ -0,0 +1,145 @@
1
+ // Copyright 2015 Joyent, Inc.
2
+
3
+ module.exports = {
4
+ read: read.bind(undefined, false, undefined),
5
+ readType: read.bind(undefined, false),
6
+ write: write,
7
+ /* semi-private api, used by sshpk-agent */
8
+ readPartial: read.bind(undefined, true),
9
+
10
+ /* shared with ssh format */
11
+ readInternal: read,
12
+ keyTypeToAlg: keyTypeToAlg,
13
+ algToKeyType: algToKeyType
14
+ };
15
+
16
+ var assert = require('assert-plus');
17
+ var algs = require('../algs');
18
+ var utils = require('../utils');
19
+ var Key = require('../key');
20
+ var PrivateKey = require('../private-key');
21
+ var SSHBuffer = require('../ssh-buffer');
22
+
23
+ function algToKeyType(alg) {
24
+ assert.string(alg);
25
+ if (alg === 'ssh-dss')
26
+ return ('dsa');
27
+ else if (alg === 'ssh-rsa')
28
+ return ('rsa');
29
+ else if (alg === 'ssh-ed25519')
30
+ return ('ed25519');
31
+ else if (alg === 'ssh-curve25519')
32
+ return ('curve25519');
33
+ else if (alg.match(/^ecdsa-sha2-/))
34
+ return ('ecdsa');
35
+ else
36
+ throw (new Error('Unknown algorithm ' + alg));
37
+ }
38
+
39
+ function keyTypeToAlg(key) {
40
+ assert.object(key);
41
+ if (key.type === 'dsa')
42
+ return ('ssh-dss');
43
+ else if (key.type === 'rsa')
44
+ return ('ssh-rsa');
45
+ else if (key.type === 'ed25519')
46
+ return ('ssh-ed25519');
47
+ else if (key.type === 'curve25519')
48
+ return ('ssh-curve25519');
49
+ else if (key.type === 'ecdsa')
50
+ return ('ecdsa-sha2-' + key.part.curve.data.toString());
51
+ else
52
+ throw (new Error('Unknown key type ' + key.type));
53
+ }
54
+
55
+ function read(partial, type, buf) {
56
+ if (typeof (buf) === 'string')
57
+ buf = new Buffer(buf);
58
+ assert.buffer(buf, 'buf');
59
+
60
+ var key = {};
61
+
62
+ var parts = key.parts = [];
63
+ var sshbuf = new SSHBuffer({buffer: buf});
64
+
65
+ var alg = sshbuf.readString();
66
+ assert.ok(!sshbuf.atEnd(), 'key must have at least one part');
67
+
68
+ key.type = algToKeyType(alg);
69
+
70
+ var partCount = algs.info[key.type].parts.length;
71
+ if (type && type === 'private')
72
+ partCount = algs.privInfo[key.type].parts.length;
73
+
74
+ while (!sshbuf.atEnd() && parts.length < partCount)
75
+ parts.push(sshbuf.readPart());
76
+ while (!partial && !sshbuf.atEnd())
77
+ parts.push(sshbuf.readPart());
78
+
79
+ assert.ok(parts.length >= 1,
80
+ 'key must have at least one part');
81
+ assert.ok(partial || sshbuf.atEnd(),
82
+ 'leftover bytes at end of key');
83
+
84
+ var Constructor = Key;
85
+ var algInfo = algs.info[key.type];
86
+ if (type === 'private' || algInfo.parts.length !== parts.length) {
87
+ algInfo = algs.privInfo[key.type];
88
+ Constructor = PrivateKey;
89
+ }
90
+ assert.strictEqual(algInfo.parts.length, parts.length);
91
+
92
+ if (key.type === 'ecdsa') {
93
+ var res = /^ecdsa-sha2-(.+)$/.exec(alg);
94
+ assert.ok(res !== null);
95
+ assert.strictEqual(res[1], parts[0].data.toString());
96
+ }
97
+
98
+ var normalized = true;
99
+ for (var i = 0; i < algInfo.parts.length; ++i) {
100
+ parts[i].name = algInfo.parts[i];
101
+ if (parts[i].name !== 'curve' &&
102
+ algInfo.normalize !== false) {
103
+ var p = parts[i];
104
+ var nd = utils.mpNormalize(p.data);
105
+ if (nd !== p.data) {
106
+ p.data = nd;
107
+ normalized = false;
108
+ }
109
+ }
110
+ }
111
+
112
+ if (normalized)
113
+ key._rfc4253Cache = sshbuf.toBuffer();
114
+
115
+ if (partial && typeof (partial) === 'object') {
116
+ partial.remainder = sshbuf.remainder();
117
+ partial.consumed = sshbuf._offset;
118
+ }
119
+
120
+ return (new Constructor(key));
121
+ }
122
+
123
+ function write(key) {
124
+ assert.object(key);
125
+
126
+ var alg = keyTypeToAlg(key);
127
+ var i;
128
+
129
+ var algInfo = algs.info[key.type];
130
+ if (PrivateKey.isPrivateKey(key))
131
+ algInfo = algs.privInfo[key.type];
132
+ var parts = algInfo.parts;
133
+
134
+ var buf = new SSHBuffer({});
135
+
136
+ buf.writeString(alg);
137
+
138
+ for (i = 0; i < parts.length; ++i) {
139
+ var data = key.part[parts[i]].data;
140
+ data = utils.mpNormalize(data);
141
+ buf.writeBuffer(data);
142
+ }
143
+
144
+ return (buf.toBuffer());
145
+ }