bdy 1.23.6-dev → 1.23.7-dev
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.
- package/distTs/package.json +10 -2
- package/distTs/src/agent/linux.js +53 -3
- package/distTs/src/agent/manager.js +3 -6
- package/distTs/src/agent/osx.js +51 -3
- package/distTs/src/agent/system.js +400 -21
- package/distTs/src/agent/windows.js +4 -7
- package/distTs/src/command/agent/debug.js +2 -2
- package/distTs/src/command/agent/install.js +37 -10
- package/distTs/src/command/agent/restart.js +2 -2
- package/distTs/src/command/agent/run.js +3 -0
- package/distTs/src/command/agent/start.js +2 -2
- package/distTs/src/command/agent/status.js +19 -0
- package/distTs/src/command/agent/stop.js +2 -2
- package/distTs/src/command/agent/uninstall.js +5 -8
- package/distTs/src/command/agent/update.js +2 -2
- package/distTs/src/command/artifact/publish.js +3 -1
- package/distTs/src/command/version.js +13 -5
- package/distTs/src/logger.js +40 -4
- package/distTs/src/texts.js +35 -19
- package/distTs/src/utils.js +98 -3
- package/node_modules/asn1/Jenkinsfile +65 -0
- package/node_modules/asn1/LICENSE +19 -0
- package/node_modules/asn1/README.md +50 -0
- package/node_modules/asn1/lib/ber/errors.js +13 -0
- package/node_modules/asn1/lib/ber/index.js +27 -0
- package/node_modules/asn1/lib/ber/reader.js +262 -0
- package/node_modules/asn1/lib/ber/types.js +36 -0
- package/node_modules/asn1/lib/ber/writer.js +317 -0
- package/node_modules/asn1/lib/index.js +20 -0
- package/node_modules/asn1/package.json +31 -0
- package/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +13 -0
- package/node_modules/bcrypt-pbkdf/LICENSE +66 -0
- package/node_modules/bcrypt-pbkdf/README.md +45 -0
- package/node_modules/bcrypt-pbkdf/index.js +556 -0
- package/node_modules/bcrypt-pbkdf/package.json +15 -0
- package/node_modules/safer-buffer/LICENSE +21 -0
- package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- package/node_modules/safer-buffer/Readme.md +156 -0
- package/node_modules/safer-buffer/dangerous.js +58 -0
- package/node_modules/safer-buffer/package.json +34 -0
- package/node_modules/safer-buffer/safer.js +77 -0
- package/node_modules/safer-buffer/tests.js +406 -0
- package/node_modules/ssh2/.eslintignore +4 -0
- package/node_modules/ssh2/.eslintrc.js +5 -0
- package/node_modules/ssh2/.github/workflows/ci.yml +110 -0
- package/node_modules/ssh2/.github/workflows/lint.yml +27 -0
- package/node_modules/ssh2/LICENSE +19 -0
- package/node_modules/ssh2/README.md +1529 -0
- package/node_modules/ssh2/SFTP.md +413 -0
- package/node_modules/ssh2/examples/server-chat.js +238 -0
- package/node_modules/ssh2/examples/sftp-server-download-only.js +134 -0
- package/node_modules/ssh2/install.js +27 -0
- package/node_modules/ssh2/lib/Channel.js +295 -0
- package/node_modules/ssh2/lib/agent.js +1123 -0
- package/node_modules/ssh2/lib/client.js +2176 -0
- package/node_modules/ssh2/lib/http-agents.js +84 -0
- package/node_modules/ssh2/lib/index.js +44 -0
- package/node_modules/ssh2/lib/keygen.js +582 -0
- package/node_modules/ssh2/lib/protocol/Protocol.js +2136 -0
- package/node_modules/ssh2/lib/protocol/SFTP.js +4052 -0
- package/node_modules/ssh2/lib/protocol/constants.js +356 -0
- package/node_modules/ssh2/lib/protocol/crypto/binding.gyp +23 -0
- package/node_modules/ssh2/lib/protocol/crypto/poly1305.js +43 -0
- package/node_modules/ssh2/lib/protocol/crypto/src/binding.cc +2300 -0
- package/node_modules/ssh2/lib/protocol/crypto.js +1602 -0
- package/node_modules/ssh2/lib/protocol/handlers.js +16 -0
- package/node_modules/ssh2/lib/protocol/handlers.misc.js +1285 -0
- package/node_modules/ssh2/lib/protocol/kex.js +1908 -0
- package/node_modules/ssh2/lib/protocol/keyParser.js +1484 -0
- package/node_modules/ssh2/lib/protocol/node-fs-compat.js +115 -0
- package/node_modules/ssh2/lib/protocol/utils.js +356 -0
- package/node_modules/ssh2/lib/protocol/zlib.js +255 -0
- package/node_modules/ssh2/lib/server.js +1380 -0
- package/node_modules/ssh2/lib/utils.js +336 -0
- package/node_modules/ssh2/package.json +49 -0
- package/node_modules/ssh2/test/common.js +316 -0
- package/node_modules/ssh2/test/fixtures/bad_rsa_private_key +26 -0
- package/node_modules/ssh2/test/fixtures/https_cert.pem +33 -0
- package/node_modules/ssh2/test/fixtures/https_key.pem +52 -0
- package/node_modules/ssh2/test/fixtures/id_dsa +12 -0
- package/node_modules/ssh2/test/fixtures/id_ecdsa +5 -0
- package/node_modules/ssh2/test/fixtures/id_rsa +15 -0
- package/node_modules/ssh2/test/fixtures/id_rsa.ppk +26 -0
- package/node_modules/ssh2/test/fixtures/id_rsa_enc +30 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa +21 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc +22 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm +23 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa +9 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc +10 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm +10 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519 +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa +27 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc +28 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm +29 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa +12 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc +15 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa +5 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa +27 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc +30 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.pub.result +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256 +54 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.pub +1 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.pub.result +6 -0
- package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.result +6 -0
- package/node_modules/ssh2/test/fixtures/keyParser/ppk_dsa_enc +17 -0
- package/node_modules/ssh2/test/fixtures/keyParser/ppk_dsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa +26 -0
- package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa_enc +18 -0
- package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa_enc.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa.pub +9 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa2.pub +10 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa2.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa3.pub +11 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa3.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa4.pub +11 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa4.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa5.pub +8 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa5.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa6.pub +13 -0
- package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa6.pub.result +7 -0
- package/node_modules/ssh2/test/fixtures/openssh_new_rsa +27 -0
- package/node_modules/ssh2/test/fixtures/ssh_host_dsa_key +12 -0
- package/node_modules/ssh2/test/fixtures/ssh_host_ecdsa_key +5 -0
- package/node_modules/ssh2/test/fixtures/ssh_host_rsa_key +15 -0
- package/node_modules/ssh2/test/test-exec.js +578 -0
- package/node_modules/ssh2/test/test-integration-openssh.js +486 -0
- package/node_modules/ssh2/test/test-keygen.js +60 -0
- package/node_modules/ssh2/test/test-misc-client-server.js +1460 -0
- package/node_modules/ssh2/test/test-openssh.js +261 -0
- package/node_modules/ssh2/test/test-protocol-crypto.js +631 -0
- package/node_modules/ssh2/test/test-protocol-keyparser.js +177 -0
- package/node_modules/ssh2/test/test-server-hostkeys.js +138 -0
- package/node_modules/ssh2/test/test-sftp.js +842 -0
- package/node_modules/ssh2/test/test-shell.js +109 -0
- package/node_modules/ssh2/test/test-userauth-agent-openssh.js +110 -0
- package/node_modules/ssh2/test/test-userauth-agent.js +171 -0
- package/node_modules/ssh2/test/test-userauth.js +611 -0
- package/node_modules/ssh2/test/test-worker-imports.js +25 -0
- package/node_modules/ssh2/test/test.js +20 -0
- package/node_modules/ssh2/util/build_pagent.bat +2 -0
- package/node_modules/ssh2/util/pagent.c +88 -0
- package/node_modules/ssh2/util/pagent.exe +0 -0
- package/node_modules/tweetnacl/.npmignore +4 -0
- package/node_modules/tweetnacl/AUTHORS.md +28 -0
- package/node_modules/tweetnacl/CHANGELOG.md +221 -0
- package/node_modules/tweetnacl/LICENSE +24 -0
- package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
- package/node_modules/tweetnacl/README.md +459 -0
- package/node_modules/tweetnacl/nacl-fast.js +2388 -0
- package/node_modules/tweetnacl/nacl-fast.min.js +2 -0
- package/node_modules/tweetnacl/nacl.d.ts +98 -0
- package/node_modules/tweetnacl/nacl.js +1175 -0
- package/node_modules/tweetnacl/nacl.min.js +1 -0
- package/node_modules/tweetnacl/package.json +58 -0
- package/package.json +10 -2
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
|
2
|
+
|
|
3
|
+
var assert = require('assert');
|
|
4
|
+
var Buffer = require('safer-buffer').Buffer;
|
|
5
|
+
var ASN1 = require('./types');
|
|
6
|
+
var errors = require('./errors');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
// --- Globals
|
|
10
|
+
|
|
11
|
+
var newInvalidAsn1Error = errors.newInvalidAsn1Error;
|
|
12
|
+
|
|
13
|
+
var DEFAULT_OPTS = {
|
|
14
|
+
size: 1024,
|
|
15
|
+
growthFactor: 8
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
// --- Helpers
|
|
20
|
+
|
|
21
|
+
function merge(from, to) {
|
|
22
|
+
assert.ok(from);
|
|
23
|
+
assert.equal(typeof (from), 'object');
|
|
24
|
+
assert.ok(to);
|
|
25
|
+
assert.equal(typeof (to), 'object');
|
|
26
|
+
|
|
27
|
+
var keys = Object.getOwnPropertyNames(from);
|
|
28
|
+
keys.forEach(function (key) {
|
|
29
|
+
if (to[key])
|
|
30
|
+
return;
|
|
31
|
+
|
|
32
|
+
var value = Object.getOwnPropertyDescriptor(from, key);
|
|
33
|
+
Object.defineProperty(to, key, value);
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
return to;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
// --- API
|
|
42
|
+
|
|
43
|
+
function Writer(options) {
|
|
44
|
+
options = merge(DEFAULT_OPTS, options || {});
|
|
45
|
+
|
|
46
|
+
this._buf = Buffer.alloc(options.size || 1024);
|
|
47
|
+
this._size = this._buf.length;
|
|
48
|
+
this._offset = 0;
|
|
49
|
+
this._options = options;
|
|
50
|
+
|
|
51
|
+
// A list of offsets in the buffer where we need to insert
|
|
52
|
+
// sequence tag/len pairs.
|
|
53
|
+
this._seq = [];
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
Object.defineProperty(Writer.prototype, 'buffer', {
|
|
57
|
+
get: function () {
|
|
58
|
+
if (this._seq.length)
|
|
59
|
+
throw newInvalidAsn1Error(this._seq.length + ' unended sequence(s)');
|
|
60
|
+
|
|
61
|
+
return (this._buf.slice(0, this._offset));
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
Writer.prototype.writeByte = function (b) {
|
|
66
|
+
if (typeof (b) !== 'number')
|
|
67
|
+
throw new TypeError('argument must be a Number');
|
|
68
|
+
|
|
69
|
+
this._ensure(1);
|
|
70
|
+
this._buf[this._offset++] = b;
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
Writer.prototype.writeInt = function (i, tag) {
|
|
75
|
+
if (typeof (i) !== 'number')
|
|
76
|
+
throw new TypeError('argument must be a Number');
|
|
77
|
+
if (typeof (tag) !== 'number')
|
|
78
|
+
tag = ASN1.Integer;
|
|
79
|
+
|
|
80
|
+
var sz = 4;
|
|
81
|
+
|
|
82
|
+
while ((((i & 0xff800000) === 0) || ((i & 0xff800000) === 0xff800000 >> 0)) &&
|
|
83
|
+
(sz > 1)) {
|
|
84
|
+
sz--;
|
|
85
|
+
i <<= 8;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (sz > 4)
|
|
89
|
+
throw newInvalidAsn1Error('BER ints cannot be > 0xffffffff');
|
|
90
|
+
|
|
91
|
+
this._ensure(2 + sz);
|
|
92
|
+
this._buf[this._offset++] = tag;
|
|
93
|
+
this._buf[this._offset++] = sz;
|
|
94
|
+
|
|
95
|
+
while (sz-- > 0) {
|
|
96
|
+
this._buf[this._offset++] = ((i & 0xff000000) >>> 24);
|
|
97
|
+
i <<= 8;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
Writer.prototype.writeNull = function () {
|
|
104
|
+
this.writeByte(ASN1.Null);
|
|
105
|
+
this.writeByte(0x00);
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
Writer.prototype.writeEnumeration = function (i, tag) {
|
|
110
|
+
if (typeof (i) !== 'number')
|
|
111
|
+
throw new TypeError('argument must be a Number');
|
|
112
|
+
if (typeof (tag) !== 'number')
|
|
113
|
+
tag = ASN1.Enumeration;
|
|
114
|
+
|
|
115
|
+
return this.writeInt(i, tag);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
Writer.prototype.writeBoolean = function (b, tag) {
|
|
120
|
+
if (typeof (b) !== 'boolean')
|
|
121
|
+
throw new TypeError('argument must be a Boolean');
|
|
122
|
+
if (typeof (tag) !== 'number')
|
|
123
|
+
tag = ASN1.Boolean;
|
|
124
|
+
|
|
125
|
+
this._ensure(3);
|
|
126
|
+
this._buf[this._offset++] = tag;
|
|
127
|
+
this._buf[this._offset++] = 0x01;
|
|
128
|
+
this._buf[this._offset++] = b ? 0xff : 0x00;
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
Writer.prototype.writeString = function (s, tag) {
|
|
133
|
+
if (typeof (s) !== 'string')
|
|
134
|
+
throw new TypeError('argument must be a string (was: ' + typeof (s) + ')');
|
|
135
|
+
if (typeof (tag) !== 'number')
|
|
136
|
+
tag = ASN1.OctetString;
|
|
137
|
+
|
|
138
|
+
var len = Buffer.byteLength(s);
|
|
139
|
+
this.writeByte(tag);
|
|
140
|
+
this.writeLength(len);
|
|
141
|
+
if (len) {
|
|
142
|
+
this._ensure(len);
|
|
143
|
+
this._buf.write(s, this._offset);
|
|
144
|
+
this._offset += len;
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
Writer.prototype.writeBuffer = function (buf, tag) {
|
|
150
|
+
if (typeof (tag) !== 'number')
|
|
151
|
+
throw new TypeError('tag must be a number');
|
|
152
|
+
if (!Buffer.isBuffer(buf))
|
|
153
|
+
throw new TypeError('argument must be a buffer');
|
|
154
|
+
|
|
155
|
+
this.writeByte(tag);
|
|
156
|
+
this.writeLength(buf.length);
|
|
157
|
+
this._ensure(buf.length);
|
|
158
|
+
buf.copy(this._buf, this._offset, 0, buf.length);
|
|
159
|
+
this._offset += buf.length;
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
Writer.prototype.writeStringArray = function (strings) {
|
|
164
|
+
if ((!strings instanceof Array))
|
|
165
|
+
throw new TypeError('argument must be an Array[String]');
|
|
166
|
+
|
|
167
|
+
var self = this;
|
|
168
|
+
strings.forEach(function (s) {
|
|
169
|
+
self.writeString(s);
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// This is really to solve DER cases, but whatever for now
|
|
174
|
+
Writer.prototype.writeOID = function (s, tag) {
|
|
175
|
+
if (typeof (s) !== 'string')
|
|
176
|
+
throw new TypeError('argument must be a string');
|
|
177
|
+
if (typeof (tag) !== 'number')
|
|
178
|
+
tag = ASN1.OID;
|
|
179
|
+
|
|
180
|
+
if (!/^([0-9]+\.){3,}[0-9]+$/.test(s))
|
|
181
|
+
throw new Error('argument is not a valid OID string');
|
|
182
|
+
|
|
183
|
+
function encodeOctet(bytes, octet) {
|
|
184
|
+
if (octet < 128) {
|
|
185
|
+
bytes.push(octet);
|
|
186
|
+
} else if (octet < 16384) {
|
|
187
|
+
bytes.push((octet >>> 7) | 0x80);
|
|
188
|
+
bytes.push(octet & 0x7F);
|
|
189
|
+
} else if (octet < 2097152) {
|
|
190
|
+
bytes.push((octet >>> 14) | 0x80);
|
|
191
|
+
bytes.push(((octet >>> 7) | 0x80) & 0xFF);
|
|
192
|
+
bytes.push(octet & 0x7F);
|
|
193
|
+
} else if (octet < 268435456) {
|
|
194
|
+
bytes.push((octet >>> 21) | 0x80);
|
|
195
|
+
bytes.push(((octet >>> 14) | 0x80) & 0xFF);
|
|
196
|
+
bytes.push(((octet >>> 7) | 0x80) & 0xFF);
|
|
197
|
+
bytes.push(octet & 0x7F);
|
|
198
|
+
} else {
|
|
199
|
+
bytes.push(((octet >>> 28) | 0x80) & 0xFF);
|
|
200
|
+
bytes.push(((octet >>> 21) | 0x80) & 0xFF);
|
|
201
|
+
bytes.push(((octet >>> 14) | 0x80) & 0xFF);
|
|
202
|
+
bytes.push(((octet >>> 7) | 0x80) & 0xFF);
|
|
203
|
+
bytes.push(octet & 0x7F);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
var tmp = s.split('.');
|
|
208
|
+
var bytes = [];
|
|
209
|
+
bytes.push(parseInt(tmp[0], 10) * 40 + parseInt(tmp[1], 10));
|
|
210
|
+
tmp.slice(2).forEach(function (b) {
|
|
211
|
+
encodeOctet(bytes, parseInt(b, 10));
|
|
212
|
+
});
|
|
213
|
+
|
|
214
|
+
var self = this;
|
|
215
|
+
this._ensure(2 + bytes.length);
|
|
216
|
+
this.writeByte(tag);
|
|
217
|
+
this.writeLength(bytes.length);
|
|
218
|
+
bytes.forEach(function (b) {
|
|
219
|
+
self.writeByte(b);
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
Writer.prototype.writeLength = function (len) {
|
|
225
|
+
if (typeof (len) !== 'number')
|
|
226
|
+
throw new TypeError('argument must be a Number');
|
|
227
|
+
|
|
228
|
+
this._ensure(4);
|
|
229
|
+
|
|
230
|
+
if (len <= 0x7f) {
|
|
231
|
+
this._buf[this._offset++] = len;
|
|
232
|
+
} else if (len <= 0xff) {
|
|
233
|
+
this._buf[this._offset++] = 0x81;
|
|
234
|
+
this._buf[this._offset++] = len;
|
|
235
|
+
} else if (len <= 0xffff) {
|
|
236
|
+
this._buf[this._offset++] = 0x82;
|
|
237
|
+
this._buf[this._offset++] = len >> 8;
|
|
238
|
+
this._buf[this._offset++] = len;
|
|
239
|
+
} else if (len <= 0xffffff) {
|
|
240
|
+
this._buf[this._offset++] = 0x83;
|
|
241
|
+
this._buf[this._offset++] = len >> 16;
|
|
242
|
+
this._buf[this._offset++] = len >> 8;
|
|
243
|
+
this._buf[this._offset++] = len;
|
|
244
|
+
} else {
|
|
245
|
+
throw newInvalidAsn1Error('Length too long (> 4 bytes)');
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
Writer.prototype.startSequence = function (tag) {
|
|
250
|
+
if (typeof (tag) !== 'number')
|
|
251
|
+
tag = ASN1.Sequence | ASN1.Constructor;
|
|
252
|
+
|
|
253
|
+
this.writeByte(tag);
|
|
254
|
+
this._seq.push(this._offset);
|
|
255
|
+
this._ensure(3);
|
|
256
|
+
this._offset += 3;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
Writer.prototype.endSequence = function () {
|
|
261
|
+
var seq = this._seq.pop();
|
|
262
|
+
var start = seq + 3;
|
|
263
|
+
var len = this._offset - start;
|
|
264
|
+
|
|
265
|
+
if (len <= 0x7f) {
|
|
266
|
+
this._shift(start, len, -2);
|
|
267
|
+
this._buf[seq] = len;
|
|
268
|
+
} else if (len <= 0xff) {
|
|
269
|
+
this._shift(start, len, -1);
|
|
270
|
+
this._buf[seq] = 0x81;
|
|
271
|
+
this._buf[seq + 1] = len;
|
|
272
|
+
} else if (len <= 0xffff) {
|
|
273
|
+
this._buf[seq] = 0x82;
|
|
274
|
+
this._buf[seq + 1] = len >> 8;
|
|
275
|
+
this._buf[seq + 2] = len;
|
|
276
|
+
} else if (len <= 0xffffff) {
|
|
277
|
+
this._shift(start, len, 1);
|
|
278
|
+
this._buf[seq] = 0x83;
|
|
279
|
+
this._buf[seq + 1] = len >> 16;
|
|
280
|
+
this._buf[seq + 2] = len >> 8;
|
|
281
|
+
this._buf[seq + 3] = len;
|
|
282
|
+
} else {
|
|
283
|
+
throw newInvalidAsn1Error('Sequence too long');
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
Writer.prototype._shift = function (start, len, shift) {
|
|
289
|
+
assert.ok(start !== undefined);
|
|
290
|
+
assert.ok(len !== undefined);
|
|
291
|
+
assert.ok(shift);
|
|
292
|
+
|
|
293
|
+
this._buf.copy(this._buf, start + shift, start, start + len);
|
|
294
|
+
this._offset += shift;
|
|
295
|
+
};
|
|
296
|
+
|
|
297
|
+
Writer.prototype._ensure = function (len) {
|
|
298
|
+
assert.ok(len);
|
|
299
|
+
|
|
300
|
+
if (this._size - this._offset < len) {
|
|
301
|
+
var sz = this._size * this._options.growthFactor;
|
|
302
|
+
if (sz - this._offset < len)
|
|
303
|
+
sz += len;
|
|
304
|
+
|
|
305
|
+
var buf = Buffer.alloc(sz);
|
|
306
|
+
|
|
307
|
+
this._buf.copy(buf, 0, 0, this._offset);
|
|
308
|
+
this._buf = buf;
|
|
309
|
+
this._size = sz;
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
// --- Exported API
|
|
316
|
+
|
|
317
|
+
module.exports = Writer;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright 2011 Mark Cavage <mcavage@gmail.com> All rights reserved.
|
|
2
|
+
|
|
3
|
+
// If you have no idea what ASN.1 or BER is, see this:
|
|
4
|
+
// ftp://ftp.rsa.com/pub/pkcs/ascii/layman.asc
|
|
5
|
+
|
|
6
|
+
var Ber = require('./ber/index');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
// --- Exported API
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
|
|
14
|
+
Ber: Ber,
|
|
15
|
+
|
|
16
|
+
BerReader: Ber.Reader,
|
|
17
|
+
|
|
18
|
+
BerWriter: Ber.Writer
|
|
19
|
+
|
|
20
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"author": "Joyent (joyent.com)",
|
|
3
|
+
"contributors": [
|
|
4
|
+
"Mark Cavage <mcavage@gmail.com>",
|
|
5
|
+
"David Gwynne <loki@animata.net>",
|
|
6
|
+
"Yunong Xiao <yunong@joyent.com>",
|
|
7
|
+
"Alex Wilson <alex.wilson@joyent.com>"
|
|
8
|
+
],
|
|
9
|
+
"name": "asn1",
|
|
10
|
+
"description": "Contains parsers and serializers for ASN.1 (currently BER only)",
|
|
11
|
+
"version": "0.2.6",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "https://github.com/joyent/node-asn1.git"
|
|
15
|
+
},
|
|
16
|
+
"main": "lib/index.js",
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"safer-buffer": "~2.1.0"
|
|
19
|
+
},
|
|
20
|
+
"devDependencies": {
|
|
21
|
+
"istanbul": "^0.3.6",
|
|
22
|
+
"faucet": "0.0.1",
|
|
23
|
+
"tape": "^3.5.0",
|
|
24
|
+
"eslint": "2.13.1",
|
|
25
|
+
"eslint-plugin-joyent": "~1.3.0"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"test": "./node_modules/.bin/tape ./test/ber/*.test.js"
|
|
29
|
+
},
|
|
30
|
+
"license": "MIT"
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
This repository uses [cr.joyent.us](https://cr.joyent.us) (Gerrit) for new
|
|
4
|
+
changes. Anyone can submit changes. To get started, see the [cr.joyent.us user
|
|
5
|
+
guide](https://github.com/joyent/joyent-gerrit/blob/master/docs/user/README.md).
|
|
6
|
+
This repo does not use GitHub pull requests.
|
|
7
|
+
|
|
8
|
+
See the [Joyent Engineering
|
|
9
|
+
Guidelines](https://github.com/joyent/eng/blob/master/docs/index.md) for general
|
|
10
|
+
best practices expected in this repository.
|
|
11
|
+
|
|
12
|
+
If you're changing something non-trivial or user-facing, you may want to submit
|
|
13
|
+
an issue first.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
The Blowfish portions are under the following license:
|
|
2
|
+
|
|
3
|
+
Blowfish block cipher for OpenBSD
|
|
4
|
+
Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
|
|
5
|
+
All rights reserved.
|
|
6
|
+
|
|
7
|
+
Implementation advice by David Mazieres <dm@lcs.mit.edu>.
|
|
8
|
+
|
|
9
|
+
Redistribution and use in source and binary forms, with or without
|
|
10
|
+
modification, are permitted provided that the following conditions
|
|
11
|
+
are met:
|
|
12
|
+
1. Redistributions of source code must retain the above copyright
|
|
13
|
+
notice, this list of conditions and the following disclaimer.
|
|
14
|
+
2. Redistributions in binary form must reproduce the above copyright
|
|
15
|
+
notice, this list of conditions and the following disclaimer in the
|
|
16
|
+
documentation and/or other materials provided with the distribution.
|
|
17
|
+
3. The name of the author may not be used to endorse or promote products
|
|
18
|
+
derived from this software without specific prior written permission.
|
|
19
|
+
|
|
20
|
+
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
|
21
|
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
22
|
+
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
23
|
+
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
|
24
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
|
25
|
+
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
|
29
|
+
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
The bcrypt_pbkdf portions are under the following license:
|
|
34
|
+
|
|
35
|
+
Copyright (c) 2013 Ted Unangst <tedu@openbsd.org>
|
|
36
|
+
|
|
37
|
+
Permission to use, copy, modify, and distribute this software for any
|
|
38
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
39
|
+
copyright notice and this permission notice appear in all copies.
|
|
40
|
+
|
|
41
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
42
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
43
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
44
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
45
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
46
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
47
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
Performance improvements (Javascript-specific):
|
|
52
|
+
|
|
53
|
+
Copyright 2016, Joyent Inc
|
|
54
|
+
Author: Alex Wilson <alex.wilson@joyent.com>
|
|
55
|
+
|
|
56
|
+
Permission to use, copy, modify, and distribute this software for any
|
|
57
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
58
|
+
copyright notice and this permission notice appear in all copies.
|
|
59
|
+
|
|
60
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
61
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
62
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
63
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
64
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
65
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
66
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
Port of the OpenBSD `bcrypt_pbkdf` function to pure Javascript. `npm`-ified
|
|
2
|
+
version of [Devi Mandiri's port](https://github.com/devi/tmp/blob/master/js/bcrypt_pbkdf.js),
|
|
3
|
+
with some minor performance improvements. The code is copied verbatim (and
|
|
4
|
+
un-styled) from Devi's work.
|
|
5
|
+
|
|
6
|
+
This product includes software developed by Niels Provos.
|
|
7
|
+
|
|
8
|
+
## API
|
|
9
|
+
|
|
10
|
+
### `bcrypt_pbkdf.pbkdf(pass, passlen, salt, saltlen, key, keylen, rounds)`
|
|
11
|
+
|
|
12
|
+
Derive a cryptographic key of arbitrary length from a given password and salt,
|
|
13
|
+
using the OpenBSD `bcrypt_pbkdf` function. This is a combination of Blowfish and
|
|
14
|
+
SHA-512.
|
|
15
|
+
|
|
16
|
+
See [this article](http://www.tedunangst.com/flak/post/bcrypt-pbkdf) for
|
|
17
|
+
further information.
|
|
18
|
+
|
|
19
|
+
Parameters:
|
|
20
|
+
|
|
21
|
+
* `pass`, a Uint8Array of length `passlen`
|
|
22
|
+
* `passlen`, an integer Number
|
|
23
|
+
* `salt`, a Uint8Array of length `saltlen`
|
|
24
|
+
* `saltlen`, an integer Number
|
|
25
|
+
* `key`, a Uint8Array of length `keylen`, will be filled with output
|
|
26
|
+
* `keylen`, an integer Number
|
|
27
|
+
* `rounds`, an integer Number, number of rounds of the PBKDF to run
|
|
28
|
+
|
|
29
|
+
### `bcrypt_pbkdf.hash(sha2pass, sha2salt, out)`
|
|
30
|
+
|
|
31
|
+
Calculate a Blowfish hash, given SHA2-512 output of a password and salt. Used as
|
|
32
|
+
part of the inner round function in the PBKDF.
|
|
33
|
+
|
|
34
|
+
Parameters:
|
|
35
|
+
|
|
36
|
+
* `sha2pass`, a Uint8Array of length 64
|
|
37
|
+
* `sha2salt`, a Uint8Array of length 64
|
|
38
|
+
* `out`, a Uint8Array of length 32, will be filled with output
|
|
39
|
+
|
|
40
|
+
## License
|
|
41
|
+
|
|
42
|
+
This source form is a 1:1 port from the OpenBSD `blowfish.c` and `bcrypt_pbkdf.c`.
|
|
43
|
+
As a result, it retains the original copyright and license. The two files are
|
|
44
|
+
under slightly different (but compatible) licenses, and are here combined in
|
|
45
|
+
one file. For each of the full license texts see `LICENSE`.
|