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