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.
- package/Readme.md +12 -13
- package/node_modules/ansi/package.json +1 -2
- package/node_modules/are-we-there-yet/package.json +1 -2
- package/node_modules/asn1/.travis.yml +4 -0
- package/node_modules/asn1/lib/ber/reader.js +27 -33
- package/node_modules/asn1/lib/ber/writer.js +10 -11
- package/node_modules/asn1/package.json +21 -19
- package/node_modules/asn1/tst/ber/reader.test.js +36 -0
- package/node_modules/asn1/tst/ber/writer.test.js +74 -0
- package/node_modules/assert-plus/package.json +1 -0
- package/node_modules/{ctype → bl/node_modules/readable-stream/node_modules/core-util-is}/LICENSE +1 -6
- package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +11 -11
- package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/package.json +17 -12
- package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/test.js +68 -0
- package/node_modules/boom/package.json +1 -1
- package/node_modules/commander/package.json +1 -1
- package/node_modules/core-util-is/LICENSE +19 -0
- package/node_modules/core-util-is/lib/util.js +11 -11
- package/node_modules/core-util-is/package.json +17 -12
- package/node_modules/core-util-is/test.js +68 -0
- package/node_modules/dashdash/README.md +508 -0
- package/node_modules/dashdash/lib/dashdash.js +813 -0
- package/node_modules/dashdash/package.json +87 -0
- package/node_modules/deep-extend/LICENSE +1 -1
- package/node_modules/deep-extend/README.md +89 -52
- package/node_modules/deep-extend/index.js +1 -90
- package/node_modules/deep-extend/lib/deep-extend.js +144 -0
- package/node_modules/deep-extend/package.json +47 -16
- package/node_modules/deep-extend/test/index.spec.js +168 -5
- package/node_modules/delegates/package.json +1 -2
- package/node_modules/ecc-jsbn/.npmignore +15 -0
- package/node_modules/ecc-jsbn/LICENSE +21 -0
- package/node_modules/ecc-jsbn/README.md +8 -0
- package/node_modules/ecc-jsbn/index.js +57 -0
- package/node_modules/ecc-jsbn/lib/LICENSE-jsbn +40 -0
- package/node_modules/ecc-jsbn/lib/ec.js +561 -0
- package/node_modules/ecc-jsbn/lib/sec.js +170 -0
- package/node_modules/ecc-jsbn/package.json +63 -0
- package/node_modules/ecc-jsbn/test.js +14 -0
- package/node_modules/extsprintf/.gitmodules +6 -0
- package/node_modules/{path-is-absolute/license → extsprintf/LICENSE} +2 -4
- package/node_modules/extsprintf/Makefile +23 -0
- package/node_modules/extsprintf/Makefile.deps +39 -0
- package/node_modules/extsprintf/Makefile.targ +285 -0
- package/node_modules/extsprintf/README.md +39 -0
- package/node_modules/extsprintf/examples/simple.js +2 -0
- package/node_modules/{ctype/tools/jsl.conf → extsprintf/jsl.node.conf} +71 -63
- package/node_modules/extsprintf/lib/extsprintf.js +166 -0
- package/node_modules/extsprintf/package.json +48 -0
- package/node_modules/fstream/package.json +1 -2
- package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/package.json +4 -22
- package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/package.json +3 -21
- package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/package.json +4 -23
- package/node_modules/fstream-ignore/node_modules/minimatch/package.json +4 -24
- package/node_modules/fstream-ignore/package.json +1 -2
- package/node_modules/gauge/package.json +1 -2
- package/node_modules/har-validator/package.json +15 -15
- package/node_modules/has-unicode/package.json +1 -2
- package/node_modules/hawk/dist/client.js +340 -0
- package/node_modules/hawk/lib/browser.js +14 -20
- package/node_modules/hawk/package.json +10 -10
- package/node_modules/hawk/test/browser.js +134 -101
- package/node_modules/hawk/test/index.js +61 -61
- package/node_modules/hawk/test/server.js +72 -84
- package/node_modules/hawk/test/uri.js +52 -63
- package/node_modules/http-signature/CHANGES.md +39 -0
- package/node_modules/http-signature/http_signing.md +16 -17
- package/node_modules/http-signature/lib/index.js +6 -4
- package/node_modules/http-signature/lib/parser.js +43 -29
- package/node_modules/http-signature/lib/signer.js +290 -74
- package/node_modules/http-signature/lib/utils.js +112 -0
- package/node_modules/http-signature/lib/verify.js +47 -15
- package/node_modules/http-signature/package.json +20 -14
- package/node_modules/is-my-json-valid/index.js +16 -14
- package/node_modules/is-my-json-valid/package.json +16 -12
- package/node_modules/is-typedarray/LICENSE.md +18 -0
- package/node_modules/is-typedarray/README.md +16 -0
- package/node_modules/is-typedarray/index.js +41 -0
- package/node_modules/is-typedarray/package.json +63 -0
- package/node_modules/is-typedarray/test.js +34 -0
- package/node_modules/jodid25519/.npmignore +11 -0
- package/node_modules/jodid25519/.travis.yml +7 -0
- package/node_modules/jodid25519/AUTHORS.md +3 -0
- package/node_modules/jodid25519/LICENSE +23 -0
- package/node_modules/jodid25519/README.md +51 -0
- package/node_modules/jodid25519/almond.0 +42 -0
- package/node_modules/jodid25519/almond.1 +13 -0
- package/node_modules/jodid25519/index.js +35 -0
- package/node_modules/jodid25519/jsdoc.json +19 -0
- package/node_modules/jodid25519/lib/core.js +481 -0
- package/node_modules/jodid25519/lib/curve255.js +221 -0
- package/node_modules/jodid25519/lib/dh.js +111 -0
- package/node_modules/jodid25519/lib/eddsa.js +573 -0
- package/node_modules/jodid25519/lib/utils.js +198 -0
- package/node_modules/jodid25519/package.json +77 -0
- package/node_modules/jsbn/.npmignore +2 -0
- package/node_modules/jsbn/LICENSE +40 -0
- package/node_modules/jsbn/README.md +175 -0
- package/node_modules/jsbn/example.html +12 -0
- package/node_modules/jsbn/example.js +3 -0
- package/node_modules/jsbn/index.js +1358 -0
- package/node_modules/jsbn/package.json +60 -0
- package/node_modules/json-schema/README.md +5 -0
- package/node_modules/json-schema/draft-00/hyper-schema +68 -0
- package/node_modules/json-schema/draft-00/json-ref +26 -0
- package/node_modules/json-schema/draft-00/links +33 -0
- package/node_modules/json-schema/draft-00/schema +155 -0
- package/node_modules/json-schema/draft-01/hyper-schema +68 -0
- package/node_modules/json-schema/draft-01/json-ref +26 -0
- package/node_modules/json-schema/draft-01/links +33 -0
- package/node_modules/json-schema/draft-01/schema +155 -0
- package/node_modules/json-schema/draft-02/hyper-schema +68 -0
- package/node_modules/json-schema/draft-02/json-ref +26 -0
- package/node_modules/json-schema/draft-02/links +35 -0
- package/node_modules/json-schema/draft-02/schema +166 -0
- package/node_modules/json-schema/draft-03/examples/address +20 -0
- package/node_modules/json-schema/draft-03/examples/calendar +53 -0
- package/node_modules/json-schema/draft-03/examples/card +105 -0
- package/node_modules/json-schema/draft-03/examples/geo +8 -0
- package/node_modules/json-schema/draft-03/examples/interfaces +23 -0
- package/node_modules/json-schema/draft-03/hyper-schema +60 -0
- package/node_modules/json-schema/draft-03/json-ref +26 -0
- package/node_modules/json-schema/draft-03/links +35 -0
- package/node_modules/json-schema/draft-03/schema +174 -0
- package/node_modules/json-schema/draft-04/hyper-schema +60 -0
- package/node_modules/json-schema/draft-04/links +41 -0
- package/node_modules/json-schema/draft-04/schema +189 -0
- package/node_modules/json-schema/draft-zyp-json-schema-03.xml +1120 -0
- package/node_modules/json-schema/draft-zyp-json-schema-04.xml +1072 -0
- package/node_modules/json-schema/lib/links.js +52 -0
- package/node_modules/json-schema/lib/validate.js +260 -0
- package/node_modules/json-schema/package.json +67 -0
- package/node_modules/json-schema/test/tests.js +95 -0
- package/node_modules/jsprim/CHANGES.md +30 -0
- package/node_modules/jsprim/LICENSE +19 -0
- package/node_modules/jsprim/README.md +228 -0
- package/node_modules/jsprim/lib/jsprim.js +478 -0
- package/node_modules/jsprim/package.json +54 -0
- package/node_modules/lodash._basetostring/package.json +1 -2
- package/node_modules/lodash._createpadding/package.json +1 -2
- package/node_modules/lodash.pad/package.json +1 -2
- package/node_modules/lodash.padleft/package.json +1 -2
- package/node_modules/lodash.padright/package.json +1 -2
- package/node_modules/lodash.repeat/package.json +1 -2
- package/node_modules/node-pre-gyp/CHANGELOG.md +8 -0
- package/node_modules/node-pre-gyp/README.md +570 -0
- package/node_modules/node-pre-gyp/lib/util/abi_crosswalk.json +4 -0
- package/node_modules/node-pre-gyp/node_modules/nopt/lib/nopt.js +2 -1
- package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/package.json +30 -37
- package/node_modules/node-pre-gyp/node_modules/nopt/package.json +37 -57
- package/node_modules/node-pre-gyp/node_modules/nopt/test/basic.js +22 -0
- package/node_modules/node-pre-gyp/package.json +17 -17
- package/node_modules/node-uuid/.npmignore +2 -0
- package/node_modules/node-uuid/README.md +12 -1
- package/node_modules/node-uuid/bower.json +1 -1
- package/node_modules/node-uuid/component.json +11 -4
- package/node_modules/node-uuid/package.json +25 -12
- package/node_modules/node-uuid/test/test.js +3 -0
- package/node_modules/node-uuid/uuid.js +70 -45
- package/node_modules/npmlog/.travis.yml +14 -0
- package/node_modules/npmlog/log.js +3 -0
- package/node_modules/npmlog/package.json +23 -20
- package/node_modules/npmlog/test/basic.js +8 -1
- package/node_modules/once/package.json +2 -3
- package/node_modules/pinkie/index.js +23 -7
- package/node_modules/pinkie/package.json +22 -15
- package/node_modules/pinkie/readme.md +17 -9
- package/node_modules/pinkie-promise/package.json +16 -14
- package/node_modules/pinkie-promise/readme.md +5 -3
- package/node_modules/rc/README.md +1 -1
- package/node_modules/rc/index.js +1 -1
- package/node_modules/rc/node_modules/minimist/package.json +1 -1
- package/node_modules/rc/package.json +12 -12
- package/node_modules/request/.eslintrc +1 -1
- package/node_modules/request/.travis.yml +4 -4
- package/node_modules/request/CHANGELOG.md +25 -0
- package/node_modules/request/README.md +12 -13
- package/node_modules/request/lib/har.js +84 -75
- package/node_modules/request/lib/redirect.js +2 -3
- package/node_modules/request/lib/tunnel.js +13 -18
- package/node_modules/request/package.json +17 -16
- package/node_modules/request/request.js +16 -59
- package/node_modules/rimraf/README.md +7 -2
- package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/package.json +5 -25
- package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/package.json +5 -25
- package/node_modules/rimraf/node_modules/glob/node_modules/inherits/LICENSE +16 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/inherits/README.md +42 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits.js +1 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/inherits/inherits_browser.js +23 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/inherits/package.json +58 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/inherits/test.js +25 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/.npmignore +3 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/README.md +122 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/example.js +8 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/index.js +191 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore +2 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml +3 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md +21 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile +6 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md +80 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js +5 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js +38 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json +79 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js +56 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml +4 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE +18 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown +62 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js +6 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js +13 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json +90 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js +39 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/minimatch/node_modules/brace-expansion/package.json +81 -0
- package/node_modules/rimraf/node_modules/{minimatch → glob/node_modules/minimatch}/package.json +3 -21
- package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/README.md +36 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/package.json +58 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js +51 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js +33 -0
- package/node_modules/rimraf/node_modules/glob/node_modules/once/package.json +70 -0
- package/node_modules/{path-is-absolute → rimraf/node_modules/glob/node_modules/path-is-absolute}/package.json +4 -22
- package/node_modules/rimraf/node_modules/glob/package.json +2 -20
- package/node_modules/rimraf/package.json +10 -10
- package/node_modules/semver/README.md +25 -1
- package/node_modules/semver/package.json +10 -10
- package/node_modules/semver/range.bnf +16 -0
- package/node_modules/semver/semver.js +0 -12
- package/node_modules/sshpk/.npmignore +8 -0
- package/node_modules/sshpk/.travis.yml +11 -0
- package/node_modules/sshpk/LICENSE +18 -0
- package/node_modules/sshpk/README.md +436 -0
- package/node_modules/sshpk/bin/sshpk-conv +183 -0
- package/node_modules/sshpk/lib/algs.js +168 -0
- package/node_modules/sshpk/lib/dhe.js +312 -0
- package/node_modules/sshpk/lib/ed-compat.js +94 -0
- package/node_modules/sshpk/lib/errors.js +58 -0
- package/node_modules/sshpk/lib/fingerprint.js +140 -0
- package/node_modules/sshpk/lib/formats/auto.js +73 -0
- package/node_modules/sshpk/lib/formats/pem.js +152 -0
- package/node_modules/sshpk/lib/formats/pkcs1.js +320 -0
- package/node_modules/sshpk/lib/formats/pkcs8.js +510 -0
- package/node_modules/sshpk/lib/formats/rfc4253.js +145 -0
- package/node_modules/sshpk/lib/formats/ssh-private.js +138 -0
- package/node_modules/sshpk/lib/formats/ssh.js +114 -0
- package/node_modules/sshpk/lib/index.js +25 -0
- package/node_modules/sshpk/lib/key.js +260 -0
- package/node_modules/sshpk/lib/private-key.js +224 -0
- package/node_modules/sshpk/lib/signature.js +237 -0
- package/node_modules/sshpk/lib/ssh-buffer.js +123 -0
- package/node_modules/sshpk/lib/utils.js +207 -0
- package/node_modules/sshpk/node_modules/assert-plus/AUTHORS +6 -0
- package/node_modules/sshpk/node_modules/assert-plus/CHANGES.md +8 -0
- package/node_modules/sshpk/node_modules/assert-plus/README.md +155 -0
- package/node_modules/sshpk/node_modules/assert-plus/assert.js +206 -0
- package/node_modules/sshpk/node_modules/assert-plus/package.json +88 -0
- package/node_modules/sshpk/package.json +92 -0
- package/node_modules/strip-json-comments/cli.js +2 -2
- package/node_modules/strip-json-comments/package.json +13 -12
- package/node_modules/strip-json-comments/readme.md +11 -5
- package/node_modules/strip-json-comments/strip-json-comments.js +16 -7
- package/node_modules/tar/package.json +1 -2
- package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/LICENSE +19 -0
- package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/lib/util.js +11 -11
- package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/package.json +17 -12
- package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/test.js +68 -0
- package/node_modules/tar-pack/node_modules/readable-stream/node_modules/inherits/package.json +1 -1
- package/node_modules/tar-pack/node_modules/rimraf/package.json +1 -2
- package/node_modules/tar-pack/package.json +1 -2
- package/node_modules/tough-cookie/lib/cookie.js +1 -1
- package/node_modules/tough-cookie/package.json +7 -7
- package/node_modules/tweetnacl/.npmignore +4 -0
- package/node_modules/tweetnacl/CHANGELOG.md +128 -0
- package/node_modules/tweetnacl/README.md +463 -0
- package/node_modules/tweetnacl/nacl-fast.js +2418 -0
- package/node_modules/tweetnacl/nacl-fast.min.js +2 -0
- package/node_modules/tweetnacl/nacl.js +1205 -0
- package/node_modules/tweetnacl/nacl.min.js +1 -0
- package/node_modules/tweetnacl/package.json +101 -0
- package/node_modules/uid-number/package.json +2 -3
- package/node_modules/verror/.gitmodules +0 -0
- package/node_modules/verror/LICENSE +19 -0
- package/node_modules/verror/Makefile +35 -0
- package/node_modules/verror/Makefile.targ +285 -0
- package/node_modules/verror/README.md +120 -0
- package/node_modules/verror/examples/levels-verror.js +36 -0
- package/node_modules/verror/examples/levels-werror.js +34 -0
- package/node_modules/verror/examples/varargs.js +6 -0
- package/node_modules/verror/examples/verror.js +13 -0
- package/node_modules/verror/examples/werror.js +14 -0
- package/node_modules/verror/jsl.node.conf +139 -0
- package/node_modules/verror/lib/verror.js +157 -0
- package/node_modules/verror/package.json +51 -0
- package/node_modules/verror/tests/tst.inherit.js +100 -0
- package/node_modules/verror/tests/tst.verror.js +156 -0
- package/node_modules/verror/tests/tst.werror.js +179 -0
- package/package.json +3 -3
- package/node_modules/bl/node_modules/readable-stream/node_modules/core-util-is/util.js +0 -106
- package/node_modules/core-util-is/util.js +0 -106
- package/node_modules/ctype/.npmignore +0 -1
- package/node_modules/ctype/CHANGELOG +0 -78
- package/node_modules/ctype/README +0 -82
- package/node_modules/ctype/README.old +0 -298
- package/node_modules/ctype/ctf.js +0 -245
- package/node_modules/ctype/ctio.js +0 -1485
- package/node_modules/ctype/ctype.js +0 -944
- package/node_modules/ctype/man/man3ctype/ctio.3ctype +0 -241
- package/node_modules/ctype/package.json +0 -51
- package/node_modules/ctype/tools/jsstyle +0 -839
- package/node_modules/http-signature/lib/util.js +0 -306
- package/node_modules/inflight/node_modules/once/package.json +0 -86
- package/node_modules/inflight/node_modules/once/test/once.js +0 -23
- package/node_modules/rimraf/node_modules/glob/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/once/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/once/README.md +0 -51
- package/node_modules/rimraf/node_modules/once/once.js +0 -21
- package/node_modules/rimraf/node_modules/once/package.json +0 -84
- package/node_modules/rimraf/node_modules/once/test/once.js +0 -23
- package/node_modules/tar-pack/node_modules/readable-stream/node_modules/core-util-is/util.js +0 -106
- package/node_modules/wrappy/LICENSE +0 -15
- /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/.npmignore +0 -0
- /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/README.md +0 -0
- /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/example.js +0 -0
- /package/node_modules/{brace-expansion → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion}/index.js +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/.npmignore +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/.travis.yml +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/LICENSE.md +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/Makefile +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/README.md +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/example.js +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/index.js +0 -0
- /package/node_modules/{balanced-match → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match}/test/balanced.js +0 -0
- /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/.travis.yml +0 -0
- /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/LICENSE +0 -0
- /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/README.markdown +0 -0
- /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/example/map.js +0 -0
- /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/index.js +0 -0
- /package/node_modules/{concat-map → fstream-ignore/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map}/test/map.js +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/.npmignore +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/.travis.yml +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/CONTRIBUTING.md +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/LICENSE +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/README.md +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/abbrev.js +0 -0
- /package/node_modules/{abbrev → node-pre-gyp/node_modules/nopt/node_modules/abbrev}/test.js +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/.eslintrc +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/LICENSE +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/README.md +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/inflight.js +0 -0
- /package/node_modules/{fstream-ignore/node_modules/minimatch → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/LICENSE +0 -0
- /package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/README.md +0 -0
- /package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/test/basic.js +0 -0
- /package/node_modules/{wrappy → rimraf/node_modules/glob/node_modules/inflight/node_modules/wrappy}/wrappy.js +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob/node_modules/inflight}/test.js +0 -0
- /package/node_modules/rimraf/node_modules/{minimatch → glob/node_modules/minimatch}/README.md +0 -0
- /package/node_modules/rimraf/node_modules/{minimatch → glob/node_modules/minimatch}/minimatch.js +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob}/node_modules/once/README.md +0 -0
- /package/node_modules/{inflight/node_modules/once → rimraf/node_modules/glob/node_modules/once/node_modules/wrappy}/LICENSE +0 -0
- /package/node_modules/{inflight → rimraf/node_modules/glob}/node_modules/once/once.js +0 -0
- /package/node_modules/{path-is-absolute → rimraf/node_modules/glob/node_modules/path-is-absolute}/index.js +0 -0
- /package/node_modules/{path-is-absolute → rimraf/node_modules/glob/node_modules/path-is-absolute}/readme.md +0 -0
- /package/node_modules/{deep-extend → verror}/.npmignore +0 -0
@@ -0,0 +1,224 @@
|
|
1
|
+
// Copyright 2015 Joyent, Inc.
|
2
|
+
|
3
|
+
module.exports = PrivateKey;
|
4
|
+
|
5
|
+
var assert = require('assert-plus');
|
6
|
+
var algs = require('./algs');
|
7
|
+
var crypto = require('crypto');
|
8
|
+
var Fingerprint = require('./fingerprint');
|
9
|
+
var Signature = require('./signature');
|
10
|
+
var errs = require('./errors');
|
11
|
+
var util = require('util');
|
12
|
+
var utils = require('./utils');
|
13
|
+
var edCompat;
|
14
|
+
var ed;
|
15
|
+
|
16
|
+
try {
|
17
|
+
edCompat = require('./ed-compat');
|
18
|
+
} catch (e) {
|
19
|
+
/* Just continue through, and bail out if we try to use it. */
|
20
|
+
}
|
21
|
+
|
22
|
+
var Key = require('./key');
|
23
|
+
|
24
|
+
var InvalidAlgorithmError = errs.InvalidAlgorithmError;
|
25
|
+
var KeyParseError = errs.KeyParseError;
|
26
|
+
|
27
|
+
var formats = {};
|
28
|
+
formats['auto'] = require('./formats/auto');
|
29
|
+
formats['pem'] = require('./formats/pem');
|
30
|
+
formats['pkcs1'] = require('./formats/pkcs1');
|
31
|
+
formats['pkcs8'] = require('./formats/pkcs8');
|
32
|
+
formats['rfc4253'] = require('./formats/rfc4253');
|
33
|
+
formats['ssh-private'] = require('./formats/ssh-private');
|
34
|
+
formats['openssh'] = formats['ssh-private'];
|
35
|
+
formats['ssh'] = formats['ssh-private'];
|
36
|
+
|
37
|
+
function PrivateKey(opts) {
|
38
|
+
assert.object(opts, 'options');
|
39
|
+
Key.call(this, opts);
|
40
|
+
|
41
|
+
this._pubCache = undefined;
|
42
|
+
}
|
43
|
+
util.inherits(PrivateKey, Key);
|
44
|
+
|
45
|
+
PrivateKey.formats = formats;
|
46
|
+
|
47
|
+
PrivateKey.prototype.toBuffer = function (format) {
|
48
|
+
if (format === undefined)
|
49
|
+
format = 'pkcs1';
|
50
|
+
assert.string(format, 'format');
|
51
|
+
assert.object(formats[format], 'formats[format]');
|
52
|
+
|
53
|
+
return (formats[format].write(this));
|
54
|
+
};
|
55
|
+
|
56
|
+
PrivateKey.prototype.hash = function (algo) {
|
57
|
+
return (this.toPublic().hash(algo));
|
58
|
+
};
|
59
|
+
|
60
|
+
PrivateKey.prototype.toPublic = function () {
|
61
|
+
if (this._pubCache)
|
62
|
+
return (this._pubCache);
|
63
|
+
|
64
|
+
var algInfo = algs.info[this.type];
|
65
|
+
var pubParts = [];
|
66
|
+
for (var i = 0; i < algInfo.parts.length; ++i) {
|
67
|
+
var p = algInfo.parts[i];
|
68
|
+
pubParts.push(this.part[p]);
|
69
|
+
}
|
70
|
+
|
71
|
+
this._pubCache = new Key({
|
72
|
+
type: this.type,
|
73
|
+
source: this,
|
74
|
+
parts: pubParts
|
75
|
+
});
|
76
|
+
if (this.comment)
|
77
|
+
this._pubCache.comment = this.comment;
|
78
|
+
return (this._pubCache);
|
79
|
+
};
|
80
|
+
|
81
|
+
PrivateKey.prototype.derive = function (newType, newSize) {
|
82
|
+
assert.string(newType, 'type');
|
83
|
+
assert.optionalNumber(newSize, 'size');
|
84
|
+
var priv, pub;
|
85
|
+
|
86
|
+
if (this.type === 'ed25519' && newType === 'curve25519') {
|
87
|
+
if (ed === undefined)
|
88
|
+
ed = require('jodid25519');
|
89
|
+
|
90
|
+
priv = this.part.r.data;
|
91
|
+
if (priv[0] === 0x00)
|
92
|
+
priv = priv.slice(1);
|
93
|
+
priv = priv.slice(0, 32);
|
94
|
+
|
95
|
+
pub = ed.dh.publicKey(priv);
|
96
|
+
priv = utils.mpNormalize(Buffer.concat([priv, pub]));
|
97
|
+
|
98
|
+
return (new PrivateKey({
|
99
|
+
type: 'curve25519',
|
100
|
+
parts: [
|
101
|
+
{ name: 'R', data: utils.mpNormalize(pub) },
|
102
|
+
{ name: 'r', data: priv }
|
103
|
+
]
|
104
|
+
}));
|
105
|
+
} else if (this.type === 'curve25519' && newType === 'ed25519') {
|
106
|
+
if (ed === undefined)
|
107
|
+
ed = require('jodid25519');
|
108
|
+
|
109
|
+
priv = this.part.r.data;
|
110
|
+
if (priv[0] === 0x00)
|
111
|
+
priv = priv.slice(1);
|
112
|
+
priv = priv.slice(0, 32);
|
113
|
+
|
114
|
+
pub = ed.eddsa.publicKey(priv.toString('binary'));
|
115
|
+
pub = new Buffer(pub, 'binary');
|
116
|
+
|
117
|
+
priv = utils.mpNormalize(Buffer.concat([priv, pub]));
|
118
|
+
|
119
|
+
return (new PrivateKey({
|
120
|
+
type: 'ed25519',
|
121
|
+
parts: [
|
122
|
+
{ name: 'R', data: utils.mpNormalize(pub) },
|
123
|
+
{ name: 'r', data: priv }
|
124
|
+
]
|
125
|
+
}));
|
126
|
+
}
|
127
|
+
throw (new Error('Key derivation not supported from ' + this.type +
|
128
|
+
' to ' + newType));
|
129
|
+
};
|
130
|
+
|
131
|
+
PrivateKey.prototype.createVerify = function (hashAlgo) {
|
132
|
+
return (this.toPublic().createVerify(hashAlgo));
|
133
|
+
};
|
134
|
+
|
135
|
+
PrivateKey.prototype.createSign = function (hashAlgo) {
|
136
|
+
if (hashAlgo === undefined)
|
137
|
+
hashAlgo = this.defaultHashAlgorithm();
|
138
|
+
assert.string(hashAlgo, 'hash algorithm');
|
139
|
+
|
140
|
+
/* ED25519 is not supported by OpenSSL, use a javascript impl. */
|
141
|
+
if (this.type === 'ed25519' && edCompat !== undefined)
|
142
|
+
return (new edCompat.Signer(this, hashAlgo));
|
143
|
+
if (this.type === 'curve25519')
|
144
|
+
throw (new Error('Curve25519 keys are not suitable for ' +
|
145
|
+
'signing or verification'));
|
146
|
+
|
147
|
+
var v, nm, err;
|
148
|
+
try {
|
149
|
+
nm = this.type.toUpperCase() + '-';
|
150
|
+
if (this.type === 'ecdsa')
|
151
|
+
nm = 'ecdsa-with-';
|
152
|
+
nm += hashAlgo.toUpperCase();
|
153
|
+
v = crypto.createSign(nm);
|
154
|
+
} catch (e) {
|
155
|
+
err = e;
|
156
|
+
}
|
157
|
+
if (v === undefined || (err instanceof Error &&
|
158
|
+
err.message.match(/Unknown message digest/))) {
|
159
|
+
nm = 'RSA-';
|
160
|
+
nm += hashAlgo.toUpperCase();
|
161
|
+
v = crypto.createSign(nm);
|
162
|
+
}
|
163
|
+
assert.ok(v, 'failed to create verifier');
|
164
|
+
var oldSign = v.sign.bind(v);
|
165
|
+
var key = this.toBuffer('pkcs1');
|
166
|
+
var type = this.type;
|
167
|
+
v.sign = function () {
|
168
|
+
var sig = oldSign(key);
|
169
|
+
if (typeof (sig) === 'string')
|
170
|
+
sig = new Buffer(sig, 'binary');
|
171
|
+
sig = Signature.parse(sig, type, 'asn1');
|
172
|
+
sig.hashAlgorithm = hashAlgo;
|
173
|
+
return (sig);
|
174
|
+
};
|
175
|
+
return (v);
|
176
|
+
};
|
177
|
+
|
178
|
+
PrivateKey.parse = function (data, format, name) {
|
179
|
+
if (typeof (data) !== 'string')
|
180
|
+
assert.buffer(data, 'data');
|
181
|
+
if (format === undefined)
|
182
|
+
format = 'auto';
|
183
|
+
assert.string(format, 'format');
|
184
|
+
if (name === undefined)
|
185
|
+
name = '(unnamed)';
|
186
|
+
|
187
|
+
assert.object(formats[format], 'formats[format]');
|
188
|
+
|
189
|
+
try {
|
190
|
+
var k = formats[format].read(data);
|
191
|
+
assert.ok(k instanceof PrivateKey, 'key is not a private key');
|
192
|
+
if (!k.comment)
|
193
|
+
k.comment = name;
|
194
|
+
return (k);
|
195
|
+
} catch (e) {
|
196
|
+
throw (new KeyParseError(name, format, e));
|
197
|
+
}
|
198
|
+
};
|
199
|
+
|
200
|
+
PrivateKey.isPrivateKey = function (obj, ver) {
|
201
|
+
return (utils.isCompatible(obj, PrivateKey, ver));
|
202
|
+
};
|
203
|
+
|
204
|
+
/*
|
205
|
+
* API versions for PrivateKey:
|
206
|
+
* [1,0] -- initial ver
|
207
|
+
* [1,1] -- added auto, pkcs[18], openssh/ssh-private formats
|
208
|
+
* [1,2] -- added defaultHashAlgorithm
|
209
|
+
* [1,3] -- added derive, ed, createDH
|
210
|
+
* [1,4] -- first tagged version
|
211
|
+
*/
|
212
|
+
PrivateKey.prototype._sshpkApiVersion = [1, 4];
|
213
|
+
|
214
|
+
PrivateKey._oldVersionDetect = function (obj) {
|
215
|
+
assert.func(obj.toPublic);
|
216
|
+
assert.func(obj.createSign);
|
217
|
+
if (obj.derive)
|
218
|
+
return ([1, 3]);
|
219
|
+
if (obj.defaultHashAlgorithm)
|
220
|
+
return ([1, 2]);
|
221
|
+
if (obj.formats['auto'])
|
222
|
+
return ([1, 1]);
|
223
|
+
return ([1, 0]);
|
224
|
+
};
|
@@ -0,0 +1,237 @@
|
|
1
|
+
// Copyright 2015 Joyent, Inc.
|
2
|
+
|
3
|
+
module.exports = Signature;
|
4
|
+
|
5
|
+
var assert = require('assert-plus');
|
6
|
+
var algs = require('./algs');
|
7
|
+
var crypto = require('crypto');
|
8
|
+
var errs = require('./errors');
|
9
|
+
var utils = require('./utils');
|
10
|
+
var asn1 = require('asn1');
|
11
|
+
var SSHBuffer = require('./ssh-buffer');
|
12
|
+
|
13
|
+
var InvalidAlgorithmError = errs.InvalidAlgorithmError;
|
14
|
+
var SignatureParseError = errs.SignatureParseError;
|
15
|
+
|
16
|
+
function Signature(opts) {
|
17
|
+
assert.object(opts, 'options');
|
18
|
+
assert.arrayOfObject(opts.parts, 'options.parts');
|
19
|
+
assert.string(opts.type, 'options.type');
|
20
|
+
|
21
|
+
var partLookup = {};
|
22
|
+
for (var i = 0; i < opts.parts.length; ++i) {
|
23
|
+
var part = opts.parts[i];
|
24
|
+
partLookup[part.name] = part;
|
25
|
+
}
|
26
|
+
|
27
|
+
this.type = opts.type;
|
28
|
+
this.hashAlgorithm = opts.hashAlgo;
|
29
|
+
this.parts = opts.parts;
|
30
|
+
this.part = partLookup;
|
31
|
+
}
|
32
|
+
|
33
|
+
Signature.prototype.toBuffer = function (format) {
|
34
|
+
if (format === undefined)
|
35
|
+
format = 'asn1';
|
36
|
+
assert.string(format, 'format');
|
37
|
+
|
38
|
+
var buf;
|
39
|
+
|
40
|
+
switch (this.type) {
|
41
|
+
case 'rsa':
|
42
|
+
case 'ed25519':
|
43
|
+
if (format === 'ssh') {
|
44
|
+
buf = new SSHBuffer({});
|
45
|
+
buf.writeString('ssh-' + this.type);
|
46
|
+
buf.writePart(this.part.sig);
|
47
|
+
return (buf.toBuffer());
|
48
|
+
} else {
|
49
|
+
return (this.part.sig.data);
|
50
|
+
}
|
51
|
+
|
52
|
+
case 'dsa':
|
53
|
+
case 'ecdsa':
|
54
|
+
var r, s;
|
55
|
+
if (format === 'asn1') {
|
56
|
+
var der = new asn1.BerWriter();
|
57
|
+
der.startSequence();
|
58
|
+
r = utils.mpNormalize(this.part.r.data);
|
59
|
+
s = utils.mpNormalize(this.part.s.data);
|
60
|
+
der.writeBuffer(r, asn1.Ber.Integer);
|
61
|
+
der.writeBuffer(s, asn1.Ber.Integer);
|
62
|
+
der.endSequence();
|
63
|
+
return (der.buffer);
|
64
|
+
} else if (format === 'ssh' && this.type === 'dsa') {
|
65
|
+
buf = new SSHBuffer({});
|
66
|
+
buf.writeString('ssh-dss');
|
67
|
+
r = this.part.r.data;
|
68
|
+
if (r[0] === 0x00)
|
69
|
+
r = r.slice(1);
|
70
|
+
s = this.part.s.data;
|
71
|
+
buf.writeBuffer(Buffer.concat([r, s]));
|
72
|
+
return (buf.toBuffer());
|
73
|
+
} else if (format === 'ssh' && this.type === 'ecdsa') {
|
74
|
+
var inner = new SSHBuffer({});
|
75
|
+
r = this.part.r;
|
76
|
+
if (r[0] === 0x00)
|
77
|
+
r = r.slice(1);
|
78
|
+
inner.writePart(r);
|
79
|
+
inner.writePart(this.part.s);
|
80
|
+
|
81
|
+
buf = new SSHBuffer({});
|
82
|
+
/* XXX: find a more proper way to do this? */
|
83
|
+
var curve;
|
84
|
+
var sz = this.part.r.data.length * 8;
|
85
|
+
if (sz === 256)
|
86
|
+
curve = 'nistp256';
|
87
|
+
else if (sz === 384)
|
88
|
+
curve = 'nistp384';
|
89
|
+
else if (sz === 528)
|
90
|
+
curve = 'nistp521';
|
91
|
+
buf.writeString('ecdsa-sha2-' + curve);
|
92
|
+
buf.writeBuffer(inner.toBuffer());
|
93
|
+
return (buf.toBuffer());
|
94
|
+
}
|
95
|
+
throw (new Error('Invalid signature format'));
|
96
|
+
default:
|
97
|
+
throw (new Error('Invalid signature data'));
|
98
|
+
}
|
99
|
+
};
|
100
|
+
|
101
|
+
Signature.prototype.toString = function (format) {
|
102
|
+
assert.optionalString(format, 'format');
|
103
|
+
return (this.toBuffer(format).toString('base64'));
|
104
|
+
};
|
105
|
+
|
106
|
+
Signature.parse = function (data, type, format) {
|
107
|
+
if (typeof (data) === 'string')
|
108
|
+
data = new Buffer(data, 'base64');
|
109
|
+
assert.buffer(data, 'data');
|
110
|
+
assert.string(format, 'format');
|
111
|
+
assert.string(type, 'type');
|
112
|
+
|
113
|
+
var opts = {};
|
114
|
+
opts.type = type.toLowerCase();
|
115
|
+
opts.parts = [];
|
116
|
+
|
117
|
+
try {
|
118
|
+
assert.ok(data.length > 0, 'signature must not be empty');
|
119
|
+
switch (opts.type) {
|
120
|
+
case 'rsa':
|
121
|
+
return (parseOneNum(data, type, format, opts,
|
122
|
+
'ssh-rsa'));
|
123
|
+
case 'ed25519':
|
124
|
+
return (parseOneNum(data, type, format, opts,
|
125
|
+
'ssh-ed25519'));
|
126
|
+
|
127
|
+
case 'dsa':
|
128
|
+
case 'ecdsa':
|
129
|
+
if (format === 'asn1')
|
130
|
+
return (parseDSAasn1(data, type, format, opts));
|
131
|
+
else if (opts.type === 'dsa')
|
132
|
+
return (parseDSA(data, type, format, opts));
|
133
|
+
else
|
134
|
+
return (parseECDSA(data, type, format, opts));
|
135
|
+
|
136
|
+
default:
|
137
|
+
throw (new InvalidAlgorithmError(type));
|
138
|
+
}
|
139
|
+
|
140
|
+
} catch (e) {
|
141
|
+
if (e instanceof InvalidAlgorithmError)
|
142
|
+
throw (e);
|
143
|
+
throw (new SignatureParseError(type, format, e));
|
144
|
+
}
|
145
|
+
};
|
146
|
+
|
147
|
+
function parseOneNum(data, type, format, opts, headType) {
|
148
|
+
if (format === 'ssh') {
|
149
|
+
try {
|
150
|
+
var buf = new SSHBuffer({buffer: data});
|
151
|
+
var head = buf.readString();
|
152
|
+
} catch (e) {
|
153
|
+
/* fall through */
|
154
|
+
}
|
155
|
+
if (head === headType) {
|
156
|
+
var sig = buf.readPart();
|
157
|
+
assert.ok(buf.atEnd(), 'extra trailing bytes');
|
158
|
+
sig.name = 'sig';
|
159
|
+
opts.parts.push(sig);
|
160
|
+
return (new Signature(opts));
|
161
|
+
}
|
162
|
+
}
|
163
|
+
opts.parts.push({name: 'sig', data: data});
|
164
|
+
return (new Signature(opts));
|
165
|
+
}
|
166
|
+
|
167
|
+
function parseDSAasn1(data, type, format, opts) {
|
168
|
+
var der = new asn1.BerReader(data);
|
169
|
+
der.readSequence();
|
170
|
+
var r = der.readString(asn1.Ber.Integer, true);
|
171
|
+
var s = der.readString(asn1.Ber.Integer, true);
|
172
|
+
|
173
|
+
opts.parts.push({name: 'r', data: utils.mpNormalize(r)});
|
174
|
+
opts.parts.push({name: 's', data: utils.mpNormalize(s)});
|
175
|
+
|
176
|
+
return (new Signature(opts));
|
177
|
+
}
|
178
|
+
|
179
|
+
function parseDSA(data, type, format, opts) {
|
180
|
+
if (data.length != 40) {
|
181
|
+
var buf = new SSHBuffer({buffer: data});
|
182
|
+
var d = buf.readBuffer();
|
183
|
+
if (d.toString('ascii') === 'ssh-dss')
|
184
|
+
d = buf.readBuffer();
|
185
|
+
assert.ok(buf.atEnd(), 'extra trailing bytes');
|
186
|
+
assert.strictEqual(d.length, 40, 'invalid inner length');
|
187
|
+
data = d;
|
188
|
+
}
|
189
|
+
opts.parts.push({name: 'r', data: data.slice(0, 20)});
|
190
|
+
opts.parts.push({name: 's', data: data.slice(20, 40)});
|
191
|
+
return (new Signature(opts));
|
192
|
+
}
|
193
|
+
|
194
|
+
function parseECDSA(data, type, format, opts) {
|
195
|
+
var buf = new SSHBuffer({buffer: data});
|
196
|
+
|
197
|
+
var r, s;
|
198
|
+
var inner = buf.readBuffer();
|
199
|
+
if (inner.toString('ascii').match(/^ecdsa-/)) {
|
200
|
+
inner = buf.readBuffer();
|
201
|
+
assert.ok(buf.atEnd(), 'extra trailing bytes on outer');
|
202
|
+
buf = new SSHBuffer({buffer: inner});
|
203
|
+
r = buf.readPart();
|
204
|
+
} else {
|
205
|
+
r = {data: inner};
|
206
|
+
}
|
207
|
+
|
208
|
+
s = buf.readPart();
|
209
|
+
assert.ok(buf.atEnd(), 'extra trailing bytes');
|
210
|
+
|
211
|
+
r.name = 'r';
|
212
|
+
s.name = 's';
|
213
|
+
|
214
|
+
opts.parts.push(r);
|
215
|
+
opts.parts.push(s);
|
216
|
+
return (new Signature(opts));
|
217
|
+
}
|
218
|
+
|
219
|
+
Signature.isSignature = function (obj, ver) {
|
220
|
+
return (utils.isCompatible(obj, Signature, ver));
|
221
|
+
};
|
222
|
+
|
223
|
+
/*
|
224
|
+
* API versions for Signature:
|
225
|
+
* [1,0] -- initial ver
|
226
|
+
* [2,0] -- support for rsa in full ssh format, compat with sshpk-agent
|
227
|
+
* hashAlgorithm property
|
228
|
+
* [2,1] -- first tagged version
|
229
|
+
*/
|
230
|
+
Signature.prototype._sshpkApiVersion = [2, 1];
|
231
|
+
|
232
|
+
Signature._oldVersionDetect = function (obj) {
|
233
|
+
assert.func(obj.toBuffer);
|
234
|
+
if (obj.hasOwnProperty('hashAlgorithm'))
|
235
|
+
return ([2, 0]);
|
236
|
+
return ([1, 0]);
|
237
|
+
};
|
@@ -0,0 +1,123 @@
|
|
1
|
+
// Copyright 2015 Joyent, Inc.
|
2
|
+
|
3
|
+
module.exports = SSHBuffer;
|
4
|
+
|
5
|
+
var assert = require('assert-plus');
|
6
|
+
|
7
|
+
function SSHBuffer(opts) {
|
8
|
+
assert.object(opts, 'options');
|
9
|
+
if (opts.buffer !== undefined)
|
10
|
+
assert.buffer(opts.buffer, 'options.buffer');
|
11
|
+
|
12
|
+
this._size = opts.buffer ? opts.buffer.length : 1024;
|
13
|
+
this._buffer = opts.buffer || (new Buffer(this._size));
|
14
|
+
this._offset = 0;
|
15
|
+
}
|
16
|
+
|
17
|
+
SSHBuffer.prototype.toBuffer = function () {
|
18
|
+
return (this._buffer.slice(0, this._offset));
|
19
|
+
};
|
20
|
+
|
21
|
+
SSHBuffer.prototype.atEnd = function () {
|
22
|
+
return (this._offset >= this._buffer.length);
|
23
|
+
};
|
24
|
+
|
25
|
+
SSHBuffer.prototype.remainder = function () {
|
26
|
+
return (this._buffer.slice(this._offset));
|
27
|
+
};
|
28
|
+
|
29
|
+
SSHBuffer.prototype.skip = function (n) {
|
30
|
+
this._offset += n;
|
31
|
+
};
|
32
|
+
|
33
|
+
SSHBuffer.prototype.expand = function () {
|
34
|
+
this._size *= 2;
|
35
|
+
var buf = new Buffer(this._size);
|
36
|
+
this._buffer.copy(buf, 0);
|
37
|
+
this._buffer = buf;
|
38
|
+
};
|
39
|
+
|
40
|
+
SSHBuffer.prototype.readPart = function () {
|
41
|
+
return ({data: this.readBuffer()});
|
42
|
+
};
|
43
|
+
|
44
|
+
SSHBuffer.prototype.readBuffer = function () {
|
45
|
+
var len = this._buffer.readUInt32BE(this._offset);
|
46
|
+
this._offset += 4;
|
47
|
+
assert.ok(this._offset + len <= this._buffer.length,
|
48
|
+
'length out of bounds at +0x' + this._offset.toString(16));
|
49
|
+
var buf = this._buffer.slice(this._offset, this._offset + len);
|
50
|
+
this._offset += len;
|
51
|
+
return (buf);
|
52
|
+
};
|
53
|
+
|
54
|
+
SSHBuffer.prototype.readString = function () {
|
55
|
+
return (this.readBuffer().toString());
|
56
|
+
};
|
57
|
+
|
58
|
+
SSHBuffer.prototype.readCString = function () {
|
59
|
+
var offset = this._offset;
|
60
|
+
while (offset < this._buffer.length &&
|
61
|
+
this._buffer[offset] !== 0x00)
|
62
|
+
offset++;
|
63
|
+
assert.ok(offset < this._buffer.length, 'c string does not terminate');
|
64
|
+
var str = this._buffer.slice(this._offset, offset).toString();
|
65
|
+
this._offset = offset + 1;
|
66
|
+
return (str);
|
67
|
+
};
|
68
|
+
|
69
|
+
SSHBuffer.prototype.readInt = function () {
|
70
|
+
var v = this._buffer.readUInt32BE(this._offset);
|
71
|
+
this._offset += 4;
|
72
|
+
return (v);
|
73
|
+
};
|
74
|
+
|
75
|
+
SSHBuffer.prototype.readChar = function () {
|
76
|
+
var v = this._buffer[this._offset++];
|
77
|
+
return (v);
|
78
|
+
};
|
79
|
+
|
80
|
+
SSHBuffer.prototype.writeBuffer = function (buf) {
|
81
|
+
while (this._offset + 4 + buf.length > this._size)
|
82
|
+
this.expand();
|
83
|
+
this._buffer.writeUInt32BE(buf.length, this._offset);
|
84
|
+
this._offset += 4;
|
85
|
+
buf.copy(this._buffer, this._offset);
|
86
|
+
this._offset += buf.length;
|
87
|
+
};
|
88
|
+
|
89
|
+
SSHBuffer.prototype.writeString = function (str) {
|
90
|
+
this.writeBuffer(new Buffer(str, 'utf8'));
|
91
|
+
};
|
92
|
+
|
93
|
+
SSHBuffer.prototype.writeCString = function (str) {
|
94
|
+
while (this._offset + 1 + str.length > this._size)
|
95
|
+
this.expand();
|
96
|
+
this._buffer.write(str, this._offset);
|
97
|
+
this._offset += str.length;
|
98
|
+
this._buffer[this._offset++] = 0;
|
99
|
+
};
|
100
|
+
|
101
|
+
SSHBuffer.prototype.writeInt = function (v) {
|
102
|
+
while (this._offset + 4 > this._size)
|
103
|
+
this.expand();
|
104
|
+
this._buffer.writeUInt32BE(v, this._offset);
|
105
|
+
this._offset += 4;
|
106
|
+
};
|
107
|
+
|
108
|
+
SSHBuffer.prototype.writeChar = function (v) {
|
109
|
+
while (this._offset + 1 > this._size)
|
110
|
+
this.expand();
|
111
|
+
this._buffer[this._offset++] = v;
|
112
|
+
};
|
113
|
+
|
114
|
+
SSHBuffer.prototype.writePart = function (p) {
|
115
|
+
this.writeBuffer(p.data);
|
116
|
+
};
|
117
|
+
|
118
|
+
SSHBuffer.prototype.write = function (buf) {
|
119
|
+
while (this._offset + buf.length > this._size)
|
120
|
+
this.expand();
|
121
|
+
buf.copy(this._buffer, this._offset);
|
122
|
+
this._offset += buf.length;
|
123
|
+
};
|