@yume-chan/adb 0.0.9 → 0.0.10

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/CHANGELOG.json +23 -0
  2. package/CHANGELOG.md +16 -0
  3. package/LICENSE +21 -21
  4. package/README.md +227 -257
  5. package/dts/adb.d.ts.map +1 -1
  6. package/dts/auth.d.ts +11 -1
  7. package/dts/auth.d.ts.map +1 -1
  8. package/dts/backend.d.ts +3 -5
  9. package/dts/backend.d.ts.map +1 -1
  10. package/dts/commands/demo-mode.d.ts +3 -3
  11. package/dts/commands/demo-mode.d.ts.map +1 -1
  12. package/dts/commands/reverse.d.ts +2 -2
  13. package/dts/commands/reverse.d.ts.map +1 -1
  14. package/dts/commands/shell/index.d.ts +31 -5
  15. package/dts/commands/shell/index.d.ts.map +1 -1
  16. package/dts/commands/shell/legacy.d.ts +13 -2
  17. package/dts/commands/shell/legacy.d.ts.map +1 -1
  18. package/dts/commands/shell/protocol.d.ts +11 -3
  19. package/dts/commands/shell/protocol.d.ts.map +1 -1
  20. package/dts/commands/shell/types.d.ts +35 -3
  21. package/dts/commands/shell/types.d.ts.map +1 -1
  22. package/dts/commands/sync/request.d.ts +1 -1
  23. package/dts/commands/sync/request.d.ts.map +1 -1
  24. package/dts/commands/sync/response.d.ts +2 -2
  25. package/dts/commands/sync/response.d.ts.map +1 -1
  26. package/dts/commands/sync/sync.d.ts.map +1 -1
  27. package/dts/crypto.d.ts +7 -0
  28. package/dts/crypto.d.ts.map +1 -1
  29. package/dts/packet.d.ts.map +1 -1
  30. package/dts/socket/close-event-emitter.d.ts.map +1 -1
  31. package/dts/socket/controller.d.ts.map +1 -1
  32. package/dts/socket/data-event-emitter.d.ts.map +1 -1
  33. package/dts/socket/dispatcher.d.ts.map +1 -1
  34. package/dts/stream/buffered-stream.d.ts +2 -4
  35. package/dts/stream/buffered-stream.d.ts.map +1 -1
  36. package/dts/utils/encoding.d.ts +3 -0
  37. package/dts/utils/encoding.d.ts.map +1 -0
  38. package/dts/utils/index.d.ts +1 -0
  39. package/dts/utils/index.d.ts.map +1 -1
  40. package/esm/adb.js +3 -2
  41. package/esm/adb.js.map +1 -1
  42. package/esm/auth.js +2 -2
  43. package/esm/auth.js.map +1 -1
  44. package/esm/commands/demo-mode.js +9 -9
  45. package/esm/commands/demo-mode.js.map +1 -1
  46. package/esm/commands/reverse.js +3 -2
  47. package/esm/commands/reverse.js.map +1 -1
  48. package/esm/commands/shell/index.js +28 -18
  49. package/esm/commands/shell/index.js.map +1 -1
  50. package/esm/commands/shell/legacy.js +16 -0
  51. package/esm/commands/shell/legacy.js.map +1 -1
  52. package/esm/commands/shell/protocol.js +36 -9
  53. package/esm/commands/shell/protocol.js.map +1 -1
  54. package/esm/commands/sync/request.js +5 -4
  55. package/esm/commands/sync/request.js.map +1 -1
  56. package/esm/commands/sync/response.js +4 -3
  57. package/esm/commands/sync/response.js.map +1 -1
  58. package/esm/commands/sync/sync.js.map +1 -1
  59. package/esm/crypto.js +7 -2
  60. package/esm/crypto.js.map +1 -1
  61. package/esm/packet.js +12 -14
  62. package/esm/packet.js.map +1 -1
  63. package/esm/socket/close-event-emitter.js.map +1 -1
  64. package/esm/socket/controller.js.map +1 -1
  65. package/esm/socket/data-event-emitter.js.map +1 -1
  66. package/esm/socket/dispatcher.js +7 -7
  67. package/esm/socket/dispatcher.js.map +1 -1
  68. package/esm/stream/buffered-stream.js +0 -6
  69. package/esm/stream/buffered-stream.js.map +1 -1
  70. package/esm/utils/encoding.js +11 -0
  71. package/esm/utils/encoding.js.map +1 -0
  72. package/esm/utils/index.js +1 -0
  73. package/esm/utils/index.js.map +1 -1
  74. package/package.json +44 -51
  75. package/src/adb.ts +243 -242
  76. package/src/auth.ts +166 -156
  77. package/src/backend.ts +20 -24
  78. package/src/commands/base.ts +11 -11
  79. package/src/commands/demo-mode.ts +160 -160
  80. package/src/commands/framebuffer.ts +73 -73
  81. package/src/commands/index.ts +8 -8
  82. package/src/commands/install.ts +21 -21
  83. package/src/commands/reverse.ts +134 -133
  84. package/src/commands/shell/index.ts +87 -68
  85. package/src/commands/shell/legacy.ts +59 -42
  86. package/src/commands/shell/protocol.ts +121 -94
  87. package/src/commands/shell/types.ts +55 -21
  88. package/src/commands/shell/utils.ts +20 -20
  89. package/src/commands/sync/index.ts +7 -7
  90. package/src/commands/sync/list.ts +39 -39
  91. package/src/commands/sync/pull.ts +34 -34
  92. package/src/commands/sync/push.ts +46 -46
  93. package/src/commands/sync/request.ts +49 -48
  94. package/src/commands/sync/response.ts +58 -57
  95. package/src/commands/sync/stat.ts +121 -121
  96. package/src/commands/sync/sync.ts +113 -113
  97. package/src/commands/tcpip.ts +21 -21
  98. package/src/crypto.ts +285 -280
  99. package/src/features.ts +5 -5
  100. package/src/index.ts +10 -10
  101. package/src/packet.ts +84 -89
  102. package/src/socket/close-event-emitter.ts +28 -28
  103. package/src/socket/controller.ts +105 -105
  104. package/src/socket/data-event-emitter.ts +27 -27
  105. package/src/socket/dispatcher.ts +269 -269
  106. package/src/socket/index.ts +6 -6
  107. package/src/socket/logger.ts +12 -12
  108. package/src/socket/socket.ts +28 -28
  109. package/src/stream/buffered-stream.ts +92 -100
  110. package/src/stream/index.ts +2 -2
  111. package/src/stream/stream.ts +50 -50
  112. package/src/utils/auto-reset-event.ts +41 -41
  113. package/src/utils/base64.ts +274 -274
  114. package/src/utils/chunk.ts +70 -70
  115. package/src/utils/encoding.ts +13 -0
  116. package/src/utils/event-queue.ts +145 -145
  117. package/src/utils/index.ts +5 -4
  118. package/cjs/adb.js +0 -205
  119. package/cjs/adb.js.map +0 -1
  120. package/cjs/auth.js +0 -141
  121. package/cjs/auth.js.map +0 -1
  122. package/cjs/backend.js +0 -3
  123. package/cjs/backend.js.map +0 -1
  124. package/cjs/commands/base.js +0 -12
  125. package/cjs/commands/base.js.map +0 -1
  126. package/cjs/commands/demo-mode.js +0 -174
  127. package/cjs/commands/demo-mode.js.map +0 -1
  128. package/cjs/commands/framebuffer.js +0 -66
  129. package/cjs/commands/framebuffer.js.map +0 -1
  130. package/cjs/commands/index.js +0 -12
  131. package/cjs/commands/index.js.map +0 -1
  132. package/cjs/commands/install.js +0 -20
  133. package/cjs/commands/install.js.map +0 -1
  134. package/cjs/commands/reverse.js +0 -105
  135. package/cjs/commands/reverse.js.map +0 -1
  136. package/cjs/commands/shell/index.js +0 -56
  137. package/cjs/commands/shell/index.js.map +0 -1
  138. package/cjs/commands/shell/legacy.js +0 -37
  139. package/cjs/commands/shell/legacy.js.map +0 -1
  140. package/cjs/commands/shell/protocol.js +0 -83
  141. package/cjs/commands/shell/protocol.js.map +0 -1
  142. package/cjs/commands/shell/types.js +0 -3
  143. package/cjs/commands/shell/types.js.map +0 -1
  144. package/cjs/commands/shell/utils.js +0 -23
  145. package/cjs/commands/shell/utils.js.map +0 -1
  146. package/cjs/commands/sync/index.js +0 -11
  147. package/cjs/commands/sync/index.js.map +0 -1
  148. package/cjs/commands/sync/list.js +0 -36
  149. package/cjs/commands/sync/list.js.map +0 -1
  150. package/cjs/commands/sync/pull.js +0 -34
  151. package/cjs/commands/sync/pull.js.map +0 -1
  152. package/cjs/commands/sync/push.js +0 -49
  153. package/cjs/commands/sync/push.js.map +0 -1
  154. package/cjs/commands/sync/request.js +0 -48
  155. package/cjs/commands/sync/request.js.map +0 -1
  156. package/cjs/commands/sync/response.js +0 -53
  157. package/cjs/commands/sync/response.js.map +0 -1
  158. package/cjs/commands/sync/stat.js +0 -109
  159. package/cjs/commands/sync/stat.js.map +0 -1
  160. package/cjs/commands/sync/sync.js +0 -118
  161. package/cjs/commands/sync/sync.js.map +0 -1
  162. package/cjs/commands/tcpip.js +0 -28
  163. package/cjs/commands/tcpip.js.map +0 -1
  164. package/cjs/crypto.js +0 -231
  165. package/cjs/crypto.js.map +0 -1
  166. package/cjs/features.js +0 -10
  167. package/cjs/features.js.map +0 -1
  168. package/cjs/index.js +0 -14
  169. package/cjs/index.js.map +0 -1
  170. package/cjs/packet.js +0 -77
  171. package/cjs/packet.js.map +0 -1
  172. package/cjs/socket/close-event-emitter.js +0 -32
  173. package/cjs/socket/close-event-emitter.js.map +0 -1
  174. package/cjs/socket/controller.js +0 -84
  175. package/cjs/socket/controller.js.map +0 -1
  176. package/cjs/socket/data-event-emitter.js +0 -29
  177. package/cjs/socket/data-event-emitter.js.map +0 -1
  178. package/cjs/socket/dispatcher.js +0 -219
  179. package/cjs/socket/dispatcher.js.map +0 -1
  180. package/cjs/socket/index.js +0 -10
  181. package/cjs/socket/index.js.map +0 -1
  182. package/cjs/socket/logger.js +0 -3
  183. package/cjs/socket/logger.js.map +0 -1
  184. package/cjs/socket/socket.js +0 -24
  185. package/cjs/socket/socket.js.map +0 -1
  186. package/cjs/stream/buffered-stream.js +0 -78
  187. package/cjs/stream/buffered-stream.js.map +0 -1
  188. package/cjs/stream/index.js +0 -6
  189. package/cjs/stream/index.js.map +0 -1
  190. package/cjs/stream/stream.js +0 -45
  191. package/cjs/stream/stream.js.map +0 -1
  192. package/cjs/utils/auto-reset-event.js +0 -37
  193. package/cjs/utils/auto-reset-event.js.map +0 -1
  194. package/cjs/utils/base64.js +0 -210
  195. package/cjs/utils/base64.js.map +0 -1
  196. package/cjs/utils/chunk.js +0 -75
  197. package/cjs/utils/chunk.js.map +0 -1
  198. package/cjs/utils/event-queue.js +0 -108
  199. package/cjs/utils/event-queue.js.map +0 -1
  200. package/cjs/utils/index.js +0 -8
  201. package/cjs/utils/index.js.map +0 -1
  202. package/tsconfig.cjs.json +0 -11
  203. package/tsconfig.esm.json +0 -28
  204. package/tsconfig.esm.tsbuildinfo +0 -1305
  205. package/tsconfig.json +0 -18
@@ -1,118 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdbSync = void 0;
4
- const tslib_1 = require("tslib");
5
- const event_1 = require("@yume-chan/event");
6
- const features_1 = require("../../features");
7
- const stream_1 = require("../../stream");
8
- const utils_1 = require("../../utils");
9
- const list_1 = require("./list");
10
- const pull_1 = require("./pull");
11
- const push_1 = require("./push");
12
- const stat_1 = require("./stat");
13
- class AdbSync extends event_1.AutoDisposable {
14
- constructor(adb, socket) {
15
- super();
16
- this.sendLock = this.addDisposable(new utils_1.AutoResetEvent());
17
- this.adb = adb;
18
- this.stream = new stream_1.AdbBufferedStream(socket);
19
- }
20
- get supportsStat() {
21
- return this.adb.features.includes(features_1.AdbFeatures.StatV2);
22
- }
23
- lstat(path) {
24
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
- yield this.sendLock.wait();
26
- try {
27
- return stat_1.adbSyncLstat(this.stream, path, this.supportsStat);
28
- }
29
- finally {
30
- this.sendLock.notify();
31
- }
32
- });
33
- }
34
- stat(path) {
35
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
36
- if (!this.supportsStat) {
37
- throw new Error('Not supported');
38
- }
39
- yield this.sendLock.wait();
40
- try {
41
- return stat_1.adbSyncStat(this.stream, path);
42
- }
43
- finally {
44
- this.sendLock.notify();
45
- }
46
- });
47
- }
48
- isDirectory(path) {
49
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
50
- try {
51
- yield this.lstat(path + '/');
52
- return true;
53
- }
54
- catch (e) {
55
- return false;
56
- }
57
- });
58
- }
59
- opendir(path) {
60
- return tslib_1.__asyncGenerator(this, arguments, function* opendir_1() {
61
- yield tslib_1.__await(this.sendLock.wait());
62
- try {
63
- yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(list_1.adbSyncOpenDir(this.stream, path))));
64
- }
65
- finally {
66
- this.sendLock.notify();
67
- }
68
- });
69
- }
70
- readdir(path) {
71
- var e_1, _a;
72
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
73
- const results = [];
74
- try {
75
- for (var _b = tslib_1.__asyncValues(this.opendir(path)), _c; _c = yield _b.next(), !_c.done;) {
76
- const entry = _c.value;
77
- results.push(entry);
78
- }
79
- }
80
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
81
- finally {
82
- try {
83
- if (_c && !_c.done && (_a = _b.return)) yield _a.call(_b);
84
- }
85
- finally { if (e_1) throw e_1.error; }
86
- }
87
- return results;
88
- });
89
- }
90
- read(filename) {
91
- return tslib_1.__asyncGenerator(this, arguments, function* read_1() {
92
- yield tslib_1.__await(this.sendLock.wait());
93
- try {
94
- yield tslib_1.__await(yield* tslib_1.__asyncDelegator(tslib_1.__asyncValues(pull_1.adbSyncPull(this.stream, filename))));
95
- }
96
- finally {
97
- this.sendLock.notify();
98
- }
99
- });
100
- }
101
- write(filename, content, mode, mtime, onProgress) {
102
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
103
- yield this.sendLock.wait();
104
- try {
105
- yield push_1.adbSyncPush(this.stream, filename, content, mode, mtime, undefined, onProgress);
106
- }
107
- finally {
108
- this.sendLock.notify();
109
- }
110
- });
111
- }
112
- dispose() {
113
- super.dispose();
114
- this.stream.close();
115
- }
116
- }
117
- exports.AdbSync = AdbSync;
118
- //# sourceMappingURL=sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/commands/sync/sync.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdbTcpIpCommand = void 0;
4
- const tslib_1 = require("tslib");
5
- const base_1 = require("./base");
6
- class AdbTcpIpCommand extends base_1.AdbCommandBase {
7
- setPort(port) {
8
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
9
- if (port <= 0) {
10
- throw new Error(`Invalid port ${port}`);
11
- }
12
- const output = yield this.adb.createSocketAndReadAll(`tcpip:${port}`);
13
- if (output !== `restarting in TCP mode port: ${port}\n`) {
14
- throw new Error('Invalid response');
15
- }
16
- });
17
- }
18
- disable() {
19
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
20
- const output = yield this.adb.createSocketAndReadAll('usb:');
21
- if (output !== 'restarting in USB mode\n') {
22
- throw new Error('Invalid response');
23
- }
24
- });
25
- }
26
- }
27
- exports.AdbTcpIpCommand = AdbTcpIpCommand;
28
- //# sourceMappingURL=tcpip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tcpip.js","sourceRoot":"","sources":["../../src/commands/tcpip.ts"],"names":[],"mappings":";;;;AAAA,iCAAwC;AAExC,MAAa,eAAgB,SAAQ,qBAAc;IAClC,OAAO,CAAC,IAAY;;YAC7B,IAAI,IAAI,IAAI,CAAC,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;aAC3C;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACtE,IAAI,MAAM,KAAK,gCAAgC,IAAI,IAAI,EAAE;gBACrD,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACvC;QACL,CAAC;KAAA;IAEY,OAAO;;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,MAAM,KAAK,0BAA0B,EAAE;gBACvC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACvC;QACL,CAAC;KAAA;CACJ;AAlBD,0CAkBC"}
package/cjs/crypto.js DELETED
@@ -1,231 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.sign = exports.Sha1DigestInfo = exports.Asn1Oid = exports.Asn1Null = exports.Asn1OctetString = exports.Asn1Sequence = exports.Sha1DigestLength = exports.powMod = exports.calculatePublicKey = exports.calculatePublicKeyLength = exports.modInverse = exports.parsePrivateKey = exports.setBigLE = exports.setBig = exports.getBig = void 0;
4
- const BigInt0 = BigInt(0);
5
- const BigInt1 = BigInt(1);
6
- const BigInt2 = BigInt(2);
7
- const BigInt2To64 = BigInt2 ** BigInt(64);
8
- function getBig(buffer, offset = 0, length = buffer.byteLength - offset) {
9
- const view = new DataView(buffer);
10
- let result = BigInt0;
11
- // Now `length` must be a multiplication of 8
12
- // Support for arbitrary length can be easily added
13
- for (let i = offset; i < offset + length; i += 8) {
14
- result *= BigInt2To64;
15
- const value = view.getBigUint64(i, false);
16
- result += value;
17
- }
18
- return result;
19
- }
20
- exports.getBig = getBig;
21
- function setBig(buffer, value, offset = 0) {
22
- const uint64Array = [];
23
- while (value > BigInt0) {
24
- uint64Array.push(BigInt.asUintN(64, value));
25
- value /= BigInt2To64;
26
- }
27
- const view = new DataView(buffer);
28
- for (let i = uint64Array.length - 1; i >= 0; i -= 1) {
29
- view.setBigUint64(offset, uint64Array[i], false);
30
- offset += 8;
31
- }
32
- }
33
- exports.setBig = setBig;
34
- function setBigLE(buffer, value, offset = 0) {
35
- const view = new DataView(buffer);
36
- while (value > BigInt0) {
37
- view.setBigUint64(offset, value, true);
38
- offset += 8;
39
- value /= BigInt2To64;
40
- }
41
- }
42
- exports.setBigLE = setBigLE;
43
- // These values are correct only if
44
- // modulus length is 2048 and
45
- // public exponent (e) is 65537
46
- // Anyway, that's how this library generates keys
47
- // To support other parameters,
48
- // a proper ASN.1 parser can be used
49
- // References:
50
- //
51
- // https://tools.ietf.org/html/rfc8017#appendix-A.1.2
52
- // PKCS #1: RSA Cryptography Specifications Version 2.2
53
- // A.1.2. RSA Private Key Syntax
54
- //
55
- // https://lapo.it/asn1js/
56
- // https://github.com/lapo-luchini/asn1js
57
- // ASN.1 JavaScript decoder
58
- //
59
- // https://www.itu.int/rec/T-REC-X.690-201508-I/en
60
- // X.690: Specification of Distinguished Encoding Rules (DER)
61
- const RsaPrivateKeyNOffset = 38;
62
- const RsaPrivateKeyNLength = 2048 / 8;
63
- const RsaPrivateKeyDOffset = 303;
64
- const RsaPrivateKeyDLength = 2048 / 8;
65
- function parsePrivateKey(key) {
66
- let n = getBig(key, RsaPrivateKeyNOffset, RsaPrivateKeyNLength);
67
- let d = getBig(key, RsaPrivateKeyDOffset, RsaPrivateKeyDLength);
68
- return [n, d];
69
- }
70
- exports.parsePrivateKey = parsePrivateKey;
71
- // Taken from https://stackoverflow.com/a/51562038
72
- // I can't understand, but it does work
73
- // Only used with numbers less than 2^32 so doesn't need BigInt
74
- function modInverse(a, m) {
75
- // validate inputs
76
- [a, m] = [Number(a), Number(m)];
77
- if (Number.isNaN(a) || Number.isNaN(m)) {
78
- return NaN; // invalid input
79
- }
80
- a = (a % m + m) % m;
81
- if (!a || m < 2) {
82
- return NaN; // invalid input
83
- }
84
- // find the gcd
85
- const s = [];
86
- let b = m;
87
- while (b) {
88
- [a, b] = [b, a % b];
89
- s.push({ a, b });
90
- }
91
- if (a !== 1) {
92
- return NaN; // inverse does not exists
93
- }
94
- // find the inverse
95
- let x = 1;
96
- let y = 0;
97
- for (let i = s.length - 2; i >= 0; --i) {
98
- [x, y] = [y, x - y * Math.floor(s[i].a / s[i].b)];
99
- }
100
- return (y % m + m) % m;
101
- }
102
- exports.modInverse = modInverse;
103
- function calculatePublicKeyLength() {
104
- return 4 + 4 + 2048 / 8 + 2048 / 8 + 4;
105
- }
106
- exports.calculatePublicKeyLength = calculatePublicKeyLength;
107
- function calculatePublicKey(privateKey, output, outputOffset = 0) {
108
- // Android has its own public key generation algorithm
109
- // See https://android.googlesource.com/platform/system/core.git/+/91784040db2b9273687f88d8b95f729d4a61ecc2/libcrypto_utils/android_pubkey.cpp#111
110
- // The public key is an array of
111
- //
112
- // [
113
- // modulusLengthInWords, // 32-bit integer, a "word" is 32-bit so it must be 2048 / 8 / 4
114
- // // Actually the comment in Android source code was wrong
115
- // n0inv, // 32-bit integer, the modular inverse of (lower 32 bits of) n
116
- // modulus, // n
117
- // rr, // Montgomery parameter R^2
118
- // exponent, // 32-bit integer, must be 65537
119
- // ]
120
- //
121
- // (All in little endian)
122
- // See https://android.googlesource.com/platform/system/core.git/+/91784040db2b9273687f88d8b95f729d4a61ecc2/libcrypto_utils/android_pubkey.cpp#38
123
- // extract `n` from private key
124
- const [n] = parsePrivateKey(privateKey);
125
- let outputType;
126
- const outputLength = calculatePublicKeyLength();
127
- if (!output) {
128
- output = new ArrayBuffer(outputLength);
129
- outputType = 'ArrayBuffer';
130
- }
131
- else {
132
- if (output.byteLength - outputOffset < outputLength) {
133
- throw new Error('output buffer is too small');
134
- }
135
- outputType = 'number';
136
- }
137
- const outputView = new DataView(output);
138
- // modulusLengthInWords
139
- outputView.setUint32(outputOffset, 2048 / 8 / 4, true);
140
- outputOffset += 4;
141
- // Calculate `n0inv`
142
- // Don't know why need to multiple -1
143
- // Didn't exist in Android codebase
144
- const n0inv = modInverse(Number(BigInt.asUintN(32, n) * BigInt(-1)), 2 ** 32);
145
- outputView.setUint32(outputOffset, n0inv, true);
146
- outputOffset += 4;
147
- // Write n
148
- setBigLE(output, n, outputOffset);
149
- outputOffset += 256;
150
- // Calculate rr = (2^(rsa_size)) ^ 2 mod n
151
- let rr = BigInt(2) ** BigInt(4096) % n;
152
- setBigLE(output, rr, outputOffset);
153
- outputOffset += 256;
154
- // exponent
155
- outputView.setUint32(outputOffset, 65537, true);
156
- outputOffset += 4;
157
- if (outputType === 'ArrayBuffer') {
158
- return output;
159
- }
160
- else {
161
- return outputLength;
162
- }
163
- }
164
- exports.calculatePublicKey = calculatePublicKey;
165
- // Modular exponentiation
166
- // See https://en.wikipedia.org/wiki/Modular_exponentiation#Implementation_in_Lua
167
- function powMod(base, exponent, modulus) {
168
- if (modulus === BigInt1) {
169
- return BigInt0;
170
- }
171
- let r = BigInt1;
172
- base = base % modulus;
173
- while (exponent > BigInt0) {
174
- if (BigInt.asUintN(1, exponent) === BigInt1) {
175
- r = r * base % modulus;
176
- }
177
- exponent >>= BigInt1;
178
- base = base ** BigInt2 % modulus;
179
- }
180
- return r;
181
- }
182
- exports.powMod = powMod;
183
- exports.Sha1DigestLength = 20;
184
- exports.Asn1Sequence = 0x30;
185
- exports.Asn1OctetString = 0x04;
186
- exports.Asn1Null = 0x05;
187
- exports.Asn1Oid = 0x06;
188
- // PKCS#1 SHA-1 hash digest info
189
- exports.Sha1DigestInfo = [
190
- exports.Asn1Sequence, 0x0d + exports.Sha1DigestLength,
191
- exports.Asn1Sequence, 0x09,
192
- // SHA-1 (1 3 14 3 2 26)
193
- exports.Asn1Oid, 0x05, 1 * 40 + 3, 14, 3, 2, 26,
194
- exports.Asn1Null, 0x00,
195
- exports.Asn1OctetString, exports.Sha1DigestLength
196
- ];
197
- // SubtleCrypto.sign() will hash the given data and sign the hash
198
- // But we don't need the hashing step
199
- // (In another word, ADB just requires the client to
200
- // encrypt the given data with its private key)
201
- // However SubtileCrypto.encrypt() doesn't accept 'RSASSA-PKCS1-v1_5' algorithm
202
- // So we need to implement the encryption by ourself
203
- function sign(privateKey, data) {
204
- const [n, d] = parsePrivateKey(privateKey);
205
- // PKCS#1 padding
206
- const padded = new Uint8Array(256);
207
- let index = 0;
208
- padded[index] = 0;
209
- index += 1;
210
- padded[index] = 1;
211
- index += 1;
212
- const fillLength = padded.length - exports.Sha1DigestInfo.length - data.byteLength - 1;
213
- while (index < fillLength) {
214
- padded[index] = 0xff;
215
- index += 1;
216
- }
217
- padded[index] = 0;
218
- index += 1;
219
- padded.set(new Uint8Array(exports.Sha1DigestInfo), index);
220
- index += exports.Sha1DigestInfo.length;
221
- padded.set(new Uint8Array(data), index);
222
- // Encryption
223
- // signature = padded ** d % n
224
- let signature = powMod(getBig(padded.buffer), d, n);
225
- // Put into an ArrayBuffer
226
- const result = new ArrayBuffer(256);
227
- setBig(result, signature);
228
- return result;
229
- }
230
- exports.sign = sign;
231
- //# sourceMappingURL=crypto.js.map
package/cjs/crypto.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"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"}
package/cjs/features.js DELETED
@@ -1,10 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdbFeatures = void 0;
4
- var AdbFeatures;
5
- (function (AdbFeatures) {
6
- AdbFeatures["StatV2"] = "stat_v2";
7
- AdbFeatures["Cmd"] = "cmd";
8
- AdbFeatures["ShellV2"] = "shell_v2";
9
- })(AdbFeatures = exports.AdbFeatures || (exports.AdbFeatures = {}));
10
- //# sourceMappingURL=features.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,iCAAkB,CAAA;IAClB,0BAAW,CAAA;IACX,mCAAoB,CAAA;AACxB,CAAC,EAJW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAItB"}
package/cjs/index.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./adb"), exports);
5
- tslib_1.__exportStar(require("./auth"), exports);
6
- tslib_1.__exportStar(require("./backend"), exports);
7
- tslib_1.__exportStar(require("./commands"), exports);
8
- tslib_1.__exportStar(require("./crypto"), exports);
9
- tslib_1.__exportStar(require("./features"), exports);
10
- tslib_1.__exportStar(require("./packet"), exports);
11
- tslib_1.__exportStar(require("./socket"), exports);
12
- tslib_1.__exportStar(require("./stream"), exports);
13
- tslib_1.__exportStar(require("./utils"), exports);
14
- //# sourceMappingURL=index.js.map
package/cjs/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,iDAAuB;AACvB,oDAA0B;AAC1B,qDAA2B;AAC3B,mDAAyB;AACzB,qDAA2B;AAC3B,mDAAyB;AACzB,mDAAyB;AACzB,mDAAyB;AACzB,kDAAwB"}
package/cjs/packet.js DELETED
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdbPacket = exports.AdbCommand = void 0;
4
- const tslib_1 = require("tslib");
5
- const struct_1 = tslib_1.__importDefault(require("@yume-chan/struct"));
6
- const stream_1 = require("./stream");
7
- var AdbCommand;
8
- (function (AdbCommand) {
9
- AdbCommand[AdbCommand["Auth"] = 1213486401] = "Auth";
10
- AdbCommand[AdbCommand["Close"] = 1163086915] = "Close";
11
- AdbCommand[AdbCommand["Connect"] = 1314410051] = "Connect";
12
- AdbCommand[AdbCommand["OK"] = 1497451343] = "OK";
13
- AdbCommand[AdbCommand["Open"] = 1313165391] = "Open";
14
- AdbCommand[AdbCommand["Write"] = 1163154007] = "Write";
15
- })(AdbCommand = exports.AdbCommand || (exports.AdbCommand = {}));
16
- const AdbPacketHeader = new struct_1.default({ littleEndian: true })
17
- .uint32('command')
18
- .uint32('arg0')
19
- .uint32('arg1')
20
- .uint32('payloadLength')
21
- .uint32('checksum')
22
- .int32('magic');
23
- const AdbPacketStruct = new struct_1.default({ littleEndian: true })
24
- .fields(AdbPacketHeader)
25
- .arrayBuffer('payload', { lengthField: 'payloadLength' });
26
- var AdbPacket;
27
- (function (AdbPacket) {
28
- function read(backend) {
29
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
30
- let buffer = yield backend.read(24);
31
- // Detect boundary
32
- // Note that it relies on the backend to only return data from one write operation
33
- while (buffer.byteLength !== 24) {
34
- // Maybe it's a payload from last connection.
35
- // Ignore and try again
36
- buffer = yield backend.read(24);
37
- }
38
- let bufferUsed = false;
39
- const stream = new stream_1.BufferedStream({
40
- read(length) {
41
- if (!bufferUsed) {
42
- bufferUsed = true;
43
- return buffer;
44
- }
45
- return backend.read(length);
46
- }
47
- });
48
- return AdbPacketStruct.deserialize({
49
- read: stream.read.bind(stream),
50
- decodeUtf8: backend.decodeUtf8.bind(backend),
51
- encodeUtf8: backend.encodeUtf8.bind(backend),
52
- });
53
- });
54
- }
55
- AdbPacket.read = read;
56
- function write(init, calculateChecksum, backend) {
57
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
58
- let checksum;
59
- if (calculateChecksum && init.payload) {
60
- const array = new Uint8Array(init.payload);
61
- checksum = array.reduce((result, item) => result + item, 0);
62
- }
63
- else {
64
- checksum = 0;
65
- }
66
- const packet = Object.assign(Object.assign({}, init), { checksum, magic: init.command ^ 0xFFFFFFFF, payloadLength: init.payload.byteLength });
67
- // Write payload separately to avoid an extra copy
68
- const header = AdbPacketHeader.serialize(packet, backend);
69
- yield backend.write(header);
70
- if (packet.payload.byteLength) {
71
- yield backend.write(packet.payload);
72
- }
73
- });
74
- }
75
- AdbPacket.write = write;
76
- })(AdbPacket = exports.AdbPacket || (exports.AdbPacket = {}));
77
- //# sourceMappingURL=packet.js.map
package/cjs/packet.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CloseEventEmitter = void 0;
4
- const event_1 = require("@yume-chan/event");
5
- const NoopRemoveEventListener = () => { };
6
- NoopRemoveEventListener.dispose = NoopRemoveEventListener;
7
- class CloseEventEmitter extends event_1.EventEmitter {
8
- constructor() {
9
- super(...arguments);
10
- this.closed = false;
11
- }
12
- addEventListener(info) {
13
- if (this.closed) {
14
- info.listener.apply(info.thisArg, [undefined, ...info.args]);
15
- return NoopRemoveEventListener;
16
- }
17
- else {
18
- return super.addEventListener(info);
19
- }
20
- }
21
- fire() {
22
- super.fire();
23
- this.closed = true;
24
- this.listeners.length = 0;
25
- }
26
- dispose() {
27
- this.fire();
28
- super.dispose();
29
- }
30
- }
31
- exports.CloseEventEmitter = CloseEventEmitter;
32
- //# sourceMappingURL=close-event-emitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"close-event-emitter.js","sourceRoot":"","sources":["../../src/socket/close-event-emitter.ts"],"names":[],"mappings":";;;AAAA,4CAAwF;AAExF,MAAM,uBAAuB,GAAwB,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/D,uBAAuB,CAAC,OAAO,GAAG,uBAAuB,CAAC;AAE1D,MAAa,iBAAkB,SAAQ,oBAAwB;IAA/D;;QACY,WAAM,GAAG,KAAK,CAAC;IAqB3B,CAAC;IAnBa,gBAAgB,CAAC,IAAmC;QAC1D,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7D,OAAO,uBAAuB,CAAC;SAClC;aAAM;YACH,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;SACvC;IACL,CAAC;IAEM,IAAI;QACP,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO;QACV,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;CACJ;AAtBD,8CAsBC"}
@@ -1,84 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AdbSocketController = void 0;
4
- const tslib_1 = require("tslib");
5
- const event_1 = require("@yume-chan/event");
6
- const packet_1 = require("../packet");
7
- const utils_1 = require("../utils");
8
- const close_event_emitter_1 = require("./close-event-emitter");
9
- const data_event_emitter_1 = require("./data-event-emitter");
10
- class AdbSocketController extends event_1.AutoDisposable {
11
- constructor(options) {
12
- super();
13
- this.writeChunkLock = this.addDisposable(new utils_1.AutoResetEvent());
14
- this.writeLock = this.addDisposable(new utils_1.AutoResetEvent());
15
- this.dataEvent = this.addDisposable(new data_event_emitter_1.DataEventEmitter());
16
- this._closed = false;
17
- this.closeEvent = this.addDisposable(new close_event_emitter_1.CloseEventEmitter());
18
- Object.assign(this, options);
19
- }
20
- get backend() { return this.dispatcher.backend; }
21
- get closed() { return this._closed; }
22
- get onClose() { return this.closeEvent.event; }
23
- writeChunk(data) {
24
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
25
- try {
26
- // Wait for an ack packet
27
- yield this.writeChunkLock.wait();
28
- }
29
- catch (_a) {
30
- // Lock has been disposed, which means the socket has been closed
31
- throw new Error('Can not write after closed');
32
- }
33
- yield this.dispatcher.sendPacket(packet_1.AdbCommand.Write, this.localId, this.remoteId, data);
34
- });
35
- }
36
- write(data) {
37
- var e_1, _a;
38
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
39
- try {
40
- // Keep write operations in order
41
- yield this.writeLock.wait();
42
- }
43
- catch (_b) {
44
- // Lock has been disposed, which means the socket has been closed
45
- throw new Error('Can not write after closed');
46
- }
47
- try {
48
- for (var _c = tslib_1.__asyncValues(utils_1.chunkArrayLike(data, this.dispatcher.maxPayloadSize)), _d; _d = yield _c.next(), !_d.done;) {
49
- const chunk = _d.value;
50
- yield this.writeChunk(chunk);
51
- }
52
- }
53
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
54
- finally {
55
- try {
56
- if (_d && !_d.done && (_a = _c.return)) yield _a.call(_c);
57
- }
58
- finally { if (e_1) throw e_1.error; }
59
- }
60
- this.writeLock.notify();
61
- });
62
- }
63
- ack() {
64
- this.writeChunkLock.notify();
65
- }
66
- close() {
67
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
68
- if (!this._closed) {
69
- // Immediately cancel all pending writes
70
- this.writeLock.dispose();
71
- this.writeChunkLock.dispose();
72
- yield this.dispatcher.sendPacket(packet_1.AdbCommand.Close, this.localId, this.remoteId);
73
- this._closed = true;
74
- }
75
- });
76
- }
77
- dispose() {
78
- this._closed = true;
79
- this.closeEvent.fire();
80
- super.dispose();
81
- }
82
- }
83
- exports.AdbSocketController = AdbSocketController;
84
- //# sourceMappingURL=controller.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/socket/controller.ts"],"names":[],"mappings":";;;;AAAA,4CAAkD;AAElD,sCAAuC;AACvC,oCAA0D;AAC1D,+DAA0D;AAC1D,6DAAwD;AA2BxD,MAAa,mBAAoB,SAAQ,sBAAc;IAoBnD,YAAmB,OAAqC;QACpD,KAAK,EAAE,CAAC;QApBK,mBAAc,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,sBAAc,EAAE,CAAC,CAAC;QAC1D,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,sBAAc,EAAE,CAAC,CAAC;QAUtD,cAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,qCAAgB,EAAe,CAAC,CAAC;QAE5E,YAAO,GAAG,KAAK,CAAC;QAGP,eAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,uCAAiB,EAAE,CAAC,CAAC;QAKtE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAlBD,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAUxD,IAAW,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAG5C,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAOxC,UAAU,CAAC,IAAiB;;YACtC,IAAI;gBACA,yBAAyB;gBACzB,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;aACpC;YAAC,WAAM;gBACJ,iEAAiE;gBACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aACjD;YAED,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,mBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1F,CAAC;KAAA;IAEY,KAAK,CAAC,IAAiB;;;YAChC,IAAI;gBACA,iCAAiC;gBACjC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;aAC/B;YAAC,WAAM;gBACJ,iEAAiE;gBACjE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;aACjD;;gBAED,KAA0B,IAAA,KAAA,sBAAA,sBAAc,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAA,IAAA;oBAAnE,MAAM,KAAK,WAAA,CAAA;oBAClB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;iBAChC;;;;;;;;;YACD,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;;KAC3B;IAEM,GAAG;QACN,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAEY,KAAK;;YACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACf,wCAAwC;gBACxC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;gBAE9B,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,mBAAU,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAChF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;QACL,CAAC;KAAA;IAEM,OAAO;QACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,KAAK,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC;CACJ;AAxED,kDAwEC"}