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.
Files changed (205) hide show
  1. package/distTs/package.json +10 -2
  2. package/distTs/src/agent/linux.js +53 -3
  3. package/distTs/src/agent/manager.js +3 -6
  4. package/distTs/src/agent/osx.js +51 -3
  5. package/distTs/src/agent/system.js +400 -21
  6. package/distTs/src/agent/windows.js +4 -7
  7. package/distTs/src/command/agent/debug.js +2 -2
  8. package/distTs/src/command/agent/install.js +37 -10
  9. package/distTs/src/command/agent/restart.js +2 -2
  10. package/distTs/src/command/agent/run.js +3 -0
  11. package/distTs/src/command/agent/start.js +2 -2
  12. package/distTs/src/command/agent/status.js +19 -0
  13. package/distTs/src/command/agent/stop.js +2 -2
  14. package/distTs/src/command/agent/uninstall.js +5 -8
  15. package/distTs/src/command/agent/update.js +2 -2
  16. package/distTs/src/command/artifact/publish.js +3 -1
  17. package/distTs/src/command/version.js +13 -5
  18. package/distTs/src/logger.js +40 -4
  19. package/distTs/src/texts.js +35 -19
  20. package/distTs/src/utils.js +98 -3
  21. package/node_modules/asn1/Jenkinsfile +65 -0
  22. package/node_modules/asn1/LICENSE +19 -0
  23. package/node_modules/asn1/README.md +50 -0
  24. package/node_modules/asn1/lib/ber/errors.js +13 -0
  25. package/node_modules/asn1/lib/ber/index.js +27 -0
  26. package/node_modules/asn1/lib/ber/reader.js +262 -0
  27. package/node_modules/asn1/lib/ber/types.js +36 -0
  28. package/node_modules/asn1/lib/ber/writer.js +317 -0
  29. package/node_modules/asn1/lib/index.js +20 -0
  30. package/node_modules/asn1/package.json +31 -0
  31. package/node_modules/bcrypt-pbkdf/CONTRIBUTING.md +13 -0
  32. package/node_modules/bcrypt-pbkdf/LICENSE +66 -0
  33. package/node_modules/bcrypt-pbkdf/README.md +45 -0
  34. package/node_modules/bcrypt-pbkdf/index.js +556 -0
  35. package/node_modules/bcrypt-pbkdf/package.json +15 -0
  36. package/node_modules/safer-buffer/LICENSE +21 -0
  37. package/node_modules/safer-buffer/Porting-Buffer.md +268 -0
  38. package/node_modules/safer-buffer/Readme.md +156 -0
  39. package/node_modules/safer-buffer/dangerous.js +58 -0
  40. package/node_modules/safer-buffer/package.json +34 -0
  41. package/node_modules/safer-buffer/safer.js +77 -0
  42. package/node_modules/safer-buffer/tests.js +406 -0
  43. package/node_modules/ssh2/.eslintignore +4 -0
  44. package/node_modules/ssh2/.eslintrc.js +5 -0
  45. package/node_modules/ssh2/.github/workflows/ci.yml +110 -0
  46. package/node_modules/ssh2/.github/workflows/lint.yml +27 -0
  47. package/node_modules/ssh2/LICENSE +19 -0
  48. package/node_modules/ssh2/README.md +1529 -0
  49. package/node_modules/ssh2/SFTP.md +413 -0
  50. package/node_modules/ssh2/examples/server-chat.js +238 -0
  51. package/node_modules/ssh2/examples/sftp-server-download-only.js +134 -0
  52. package/node_modules/ssh2/install.js +27 -0
  53. package/node_modules/ssh2/lib/Channel.js +295 -0
  54. package/node_modules/ssh2/lib/agent.js +1123 -0
  55. package/node_modules/ssh2/lib/client.js +2176 -0
  56. package/node_modules/ssh2/lib/http-agents.js +84 -0
  57. package/node_modules/ssh2/lib/index.js +44 -0
  58. package/node_modules/ssh2/lib/keygen.js +582 -0
  59. package/node_modules/ssh2/lib/protocol/Protocol.js +2136 -0
  60. package/node_modules/ssh2/lib/protocol/SFTP.js +4052 -0
  61. package/node_modules/ssh2/lib/protocol/constants.js +356 -0
  62. package/node_modules/ssh2/lib/protocol/crypto/binding.gyp +23 -0
  63. package/node_modules/ssh2/lib/protocol/crypto/poly1305.js +43 -0
  64. package/node_modules/ssh2/lib/protocol/crypto/src/binding.cc +2300 -0
  65. package/node_modules/ssh2/lib/protocol/crypto.js +1602 -0
  66. package/node_modules/ssh2/lib/protocol/handlers.js +16 -0
  67. package/node_modules/ssh2/lib/protocol/handlers.misc.js +1285 -0
  68. package/node_modules/ssh2/lib/protocol/kex.js +1908 -0
  69. package/node_modules/ssh2/lib/protocol/keyParser.js +1484 -0
  70. package/node_modules/ssh2/lib/protocol/node-fs-compat.js +115 -0
  71. package/node_modules/ssh2/lib/protocol/utils.js +356 -0
  72. package/node_modules/ssh2/lib/protocol/zlib.js +255 -0
  73. package/node_modules/ssh2/lib/server.js +1380 -0
  74. package/node_modules/ssh2/lib/utils.js +336 -0
  75. package/node_modules/ssh2/package.json +49 -0
  76. package/node_modules/ssh2/test/common.js +316 -0
  77. package/node_modules/ssh2/test/fixtures/bad_rsa_private_key +26 -0
  78. package/node_modules/ssh2/test/fixtures/https_cert.pem +33 -0
  79. package/node_modules/ssh2/test/fixtures/https_key.pem +52 -0
  80. package/node_modules/ssh2/test/fixtures/id_dsa +12 -0
  81. package/node_modules/ssh2/test/fixtures/id_ecdsa +5 -0
  82. package/node_modules/ssh2/test/fixtures/id_rsa +15 -0
  83. package/node_modules/ssh2/test/fixtures/id_rsa.ppk +26 -0
  84. package/node_modules/ssh2/test/fixtures/id_rsa_enc +30 -0
  85. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa +21 -0
  86. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.pub +1 -0
  87. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.pub.result +7 -0
  88. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa.result +7 -0
  89. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc +22 -0
  90. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.pub +1 -0
  91. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.pub.result +7 -0
  92. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc.result +7 -0
  93. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm +23 -0
  94. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.pub +1 -0
  95. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.pub.result +7 -0
  96. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_dsa_enc_gcm.result +7 -0
  97. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa +9 -0
  98. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.pub +1 -0
  99. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.pub.result +7 -0
  100. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa.result +7 -0
  101. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc +10 -0
  102. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.pub +1 -0
  103. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.pub.result +8 -0
  104. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc.result +7 -0
  105. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm +10 -0
  106. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.pub +1 -0
  107. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.pub.result +8 -0
  108. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ecdsa_enc_gcm.result +7 -0
  109. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519 +7 -0
  110. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.pub +1 -0
  111. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.pub.result +7 -0
  112. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_ed25519.result +7 -0
  113. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa +27 -0
  114. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.pub +1 -0
  115. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.pub.result +7 -0
  116. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa.result +7 -0
  117. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc +28 -0
  118. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.pub +1 -0
  119. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.pub.result +8 -0
  120. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc.result +7 -0
  121. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm +29 -0
  122. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.pub +1 -0
  123. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.pub.result +8 -0
  124. package/node_modules/ssh2/test/fixtures/keyParser/openssh_new_rsa_enc_gcm.result +7 -0
  125. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa +12 -0
  126. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.pub +1 -0
  127. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.pub.result +7 -0
  128. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa.result +7 -0
  129. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc +15 -0
  130. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.pub +1 -0
  131. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.pub.result +8 -0
  132. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_dsa_enc.result +7 -0
  133. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa +5 -0
  134. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.pub +1 -0
  135. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.pub.result +7 -0
  136. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa.result +7 -0
  137. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc +8 -0
  138. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.pub +1 -0
  139. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.pub.result +8 -0
  140. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_ecdsa_enc.result +7 -0
  141. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa +27 -0
  142. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.pub +1 -0
  143. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.pub.result +7 -0
  144. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa.result +7 -0
  145. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc +30 -0
  146. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.pub +1 -0
  147. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.pub.result +8 -0
  148. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc.result +7 -0
  149. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256 +54 -0
  150. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.pub +1 -0
  151. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.pub.result +6 -0
  152. package/node_modules/ssh2/test/fixtures/keyParser/openssh_old_rsa_enc_aes256.result +6 -0
  153. package/node_modules/ssh2/test/fixtures/keyParser/ppk_dsa_enc +17 -0
  154. package/node_modules/ssh2/test/fixtures/keyParser/ppk_dsa_enc.result +7 -0
  155. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa +26 -0
  156. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa.result +7 -0
  157. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa_enc +18 -0
  158. package/node_modules/ssh2/test/fixtures/keyParser/ppk_rsa_enc.result +7 -0
  159. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa.pub +9 -0
  160. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa.pub.result +7 -0
  161. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa2.pub +10 -0
  162. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa2.pub.result +7 -0
  163. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa3.pub +11 -0
  164. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa3.pub.result +7 -0
  165. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa4.pub +11 -0
  166. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa4.pub.result +7 -0
  167. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa5.pub +8 -0
  168. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa5.pub.result +7 -0
  169. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa6.pub +13 -0
  170. package/node_modules/ssh2/test/fixtures/keyParser/rfc4716_rsa6.pub.result +7 -0
  171. package/node_modules/ssh2/test/fixtures/openssh_new_rsa +27 -0
  172. package/node_modules/ssh2/test/fixtures/ssh_host_dsa_key +12 -0
  173. package/node_modules/ssh2/test/fixtures/ssh_host_ecdsa_key +5 -0
  174. package/node_modules/ssh2/test/fixtures/ssh_host_rsa_key +15 -0
  175. package/node_modules/ssh2/test/test-exec.js +578 -0
  176. package/node_modules/ssh2/test/test-integration-openssh.js +486 -0
  177. package/node_modules/ssh2/test/test-keygen.js +60 -0
  178. package/node_modules/ssh2/test/test-misc-client-server.js +1460 -0
  179. package/node_modules/ssh2/test/test-openssh.js +261 -0
  180. package/node_modules/ssh2/test/test-protocol-crypto.js +631 -0
  181. package/node_modules/ssh2/test/test-protocol-keyparser.js +177 -0
  182. package/node_modules/ssh2/test/test-server-hostkeys.js +138 -0
  183. package/node_modules/ssh2/test/test-sftp.js +842 -0
  184. package/node_modules/ssh2/test/test-shell.js +109 -0
  185. package/node_modules/ssh2/test/test-userauth-agent-openssh.js +110 -0
  186. package/node_modules/ssh2/test/test-userauth-agent.js +171 -0
  187. package/node_modules/ssh2/test/test-userauth.js +611 -0
  188. package/node_modules/ssh2/test/test-worker-imports.js +25 -0
  189. package/node_modules/ssh2/test/test.js +20 -0
  190. package/node_modules/ssh2/util/build_pagent.bat +2 -0
  191. package/node_modules/ssh2/util/pagent.c +88 -0
  192. package/node_modules/ssh2/util/pagent.exe +0 -0
  193. package/node_modules/tweetnacl/.npmignore +4 -0
  194. package/node_modules/tweetnacl/AUTHORS.md +28 -0
  195. package/node_modules/tweetnacl/CHANGELOG.md +221 -0
  196. package/node_modules/tweetnacl/LICENSE +24 -0
  197. package/node_modules/tweetnacl/PULL_REQUEST_TEMPLATE.md +20 -0
  198. package/node_modules/tweetnacl/README.md +459 -0
  199. package/node_modules/tweetnacl/nacl-fast.js +2388 -0
  200. package/node_modules/tweetnacl/nacl-fast.min.js +2 -0
  201. package/node_modules/tweetnacl/nacl.d.ts +98 -0
  202. package/node_modules/tweetnacl/nacl.js +1175 -0
  203. package/node_modules/tweetnacl/nacl.min.js +1 -0
  204. package/node_modules/tweetnacl/package.json +58 -0
  205. 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`.