@samlab-corp/sfm-node 0.1.2 → 0.3.0
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/dist/commands/data.d.ts +4 -4
- package/dist/commands/data.js +12 -12
- package/dist/commands/data.js.map +1 -1
- package/dist/commands/fingerprint.d.ts +23 -23
- package/dist/commands/fingerprint.d.ts.map +1 -1
- package/dist/commands/fingerprint.js +114 -114
- package/dist/commands/fingerprint.js.map +1 -1
- package/dist/commands/firmware.d.ts +5 -5
- package/dist/commands/firmware.d.ts.map +1 -1
- package/dist/commands/firmware.js +32 -32
- package/dist/commands/firmware.js.map +1 -1
- package/dist/commands/freescan.d.ts +16 -16
- package/dist/commands/freescan.d.ts.map +1 -1
- package/dist/commands/freescan.js +41 -41
- package/dist/commands/freescan.js.map +1 -1
- package/dist/commands/index.d.ts +12 -12
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +14 -14
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/system.d.ts +12 -12
- package/dist/commands/system.d.ts.map +1 -1
- package/dist/commands/system.js +14 -14
- package/dist/commands/system.js.map +1 -1
- package/dist/constants/protocol.d.ts +25 -0
- package/dist/constants/protocol.d.ts.map +1 -1
- package/dist/constants/protocol.js +26 -1
- package/dist/constants/protocol.js.map +1 -1
- package/dist/core/client.d.ts +33 -21
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +72 -52
- package/dist/core/client.js.map +1 -1
- package/dist/core/crypto.d.ts +19 -19
- package/dist/core/crypto.js +26 -26
- package/dist/core/crypto.js.map +1 -1
- package/dist/core/errors.d.ts +6 -6
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +46 -32
- package/dist/core/errors.js.map +1 -1
- package/dist/core/index.d.ts +3 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +5 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/packet.d.ts +81 -41
- package/dist/core/packet.d.ts.map +1 -1
- package/dist/core/packet.js +256 -60
- package/dist/core/packet.js.map +1 -1
- package/dist/core/serial.d.ts +37 -27
- package/dist/core/serial.d.ts.map +1 -1
- package/dist/core/serial.js +91 -62
- package/dist/core/serial.js.map +1 -1
- package/dist/core/tcp.d.ts +14 -14
- package/dist/core/tcp.js +17 -17
- package/dist/core/tcp.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/core/client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* SFM Protocol Manual V3.6.0
|
|
3
|
+
* SFM Protocol Manual V3.6.0 시리얼 통신 클라이언트
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* 패킷 프로토콜, AES256 암호화, 멀티패킷 전송,
|
|
6
|
+
* 펌웨어 업그레이드 기능을 제공한다.
|
|
7
7
|
*/
|
|
8
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
9
|
exports.SfmClient = void 0;
|
|
@@ -12,9 +12,9 @@ const crypto_js_1 = require("./crypto.js");
|
|
|
12
12
|
const packet_js_1 = require("./packet.js");
|
|
13
13
|
const index_js_1 = require("../constants/index.js");
|
|
14
14
|
const MAX_RESPONSE_RETRIES = 10;
|
|
15
|
-
const MAX_TIMEOUT_MS = 60000; //
|
|
15
|
+
const MAX_TIMEOUT_MS = 60000; // 60초, 계산된 타임아웃 상한값
|
|
16
16
|
/**
|
|
17
|
-
* SFM
|
|
17
|
+
* SFM 통합 클라이언트
|
|
18
18
|
*/
|
|
19
19
|
class SfmClient {
|
|
20
20
|
constructor(options = {}) {
|
|
@@ -32,35 +32,35 @@ class SfmClient {
|
|
|
32
32
|
this.portPath = options.portPath;
|
|
33
33
|
this.secureMode = options.secureMode ?? false;
|
|
34
34
|
this.debug = options.debug ?? false;
|
|
35
|
-
//
|
|
36
|
-
// false = 13
|
|
35
|
+
// 네트워크 프로토콜 모드 (RS422/485)
|
|
36
|
+
// false = 13바이트 일반 패킷, true = 15바이트 네트워크 패킷
|
|
37
37
|
this.networkMode = options.networkMode ?? false;
|
|
38
38
|
this.terminalId = options.terminalId ?? 0;
|
|
39
|
-
// Hex-ASCII
|
|
40
|
-
//
|
|
39
|
+
// Hex-ASCII 전송 모드
|
|
40
|
+
// 일부 시리얼 브릿지는 바이너리 대신 hex 문자열로 통신함
|
|
41
41
|
this.hexAsciiMode = options.hexAsciiMode ?? false;
|
|
42
|
-
//
|
|
42
|
+
// 타임아웃 설정
|
|
43
43
|
this.commandTimeout = options.commandTimeout ?? 20000;
|
|
44
44
|
this.readTimeout = options.readTimeout ?? 3000;
|
|
45
45
|
}
|
|
46
|
-
/**
|
|
46
|
+
/** 연결 해제 콜백 설정 */
|
|
47
47
|
setOnDisconnect(callback) {
|
|
48
48
|
this._onDisconnect = callback;
|
|
49
49
|
}
|
|
50
|
-
/**
|
|
50
|
+
/** 자동 재연결 옵션 설정 (시리얼 레이어에 위임) */
|
|
51
51
|
setAutoReconnect(options) {
|
|
52
52
|
this.serial.setAutoReconnect(options);
|
|
53
53
|
}
|
|
54
|
-
/**
|
|
54
|
+
/** 자동 재연결 콜백만 설정 */
|
|
55
55
|
setAutoReconnectCallbacks(callbacks) {
|
|
56
56
|
this.serial.setAutoReconnectCallbacks(callbacks);
|
|
57
57
|
}
|
|
58
|
-
/**
|
|
58
|
+
/** 재연결 진행 중 여부 */
|
|
59
59
|
get isReconnecting() {
|
|
60
60
|
return this.serial.isReconnecting;
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* 디바이스에 연결
|
|
64
64
|
*/
|
|
65
65
|
async connect(portPath) {
|
|
66
66
|
const path = portPath ?? this.portPath;
|
|
@@ -79,45 +79,48 @@ class SfmClient {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
/**
|
|
82
|
-
*
|
|
82
|
+
* 디바이스 연결 해제
|
|
83
83
|
*/
|
|
84
84
|
async disconnect() {
|
|
85
|
-
this.serial.setOnDisconnect(null); //
|
|
85
|
+
this.serial.setOnDisconnect(null); // 의도적 연결 해제 시 콜백 방지
|
|
86
86
|
await this.serial.close();
|
|
87
87
|
if (this.debug) {
|
|
88
88
|
console.log("[DEBUG] Disconnected");
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
/**
|
|
92
|
-
*
|
|
92
|
+
* 명령 전송 (SFM 패킷 프로토콜)
|
|
93
93
|
*/
|
|
94
94
|
async sendCommand(command, param = 0, size = 0, flag = 0) {
|
|
95
95
|
if (this.secureMode) {
|
|
96
96
|
return this._sendSecureCommand(command, param, size, flag);
|
|
97
97
|
}
|
|
98
|
-
//
|
|
98
|
+
// 네트워크 모드 자동 전환 (RS422/485)
|
|
99
99
|
if (this.networkMode) {
|
|
100
100
|
return this.sendNetworkCommand(command, param, size, flag);
|
|
101
101
|
}
|
|
102
|
+
return this.sendNormalCommend(command, param, size, flag);
|
|
103
|
+
}
|
|
104
|
+
async sendNormalCommend(command, param = 0, size = 0, flag = 0) {
|
|
102
105
|
const packet = (0, packet_js_1.buildNormalPacket)(command, param, size, flag);
|
|
103
106
|
if (this.debug) {
|
|
104
|
-
console.log(`[DEBUG] TX: ${(0, packet_js_1.packetToHex)(packet)}`);
|
|
107
|
+
console.log(`[DEBUG] TX(Host→Device): ${(0, packet_js_1.packetToHex)(packet)}`);
|
|
105
108
|
}
|
|
106
109
|
await this._writePacket(packet);
|
|
107
|
-
//
|
|
108
|
-
//
|
|
110
|
+
// 시작 바이트 스캔 후 응답 수신 (지문 스캔 대기를 위해 commandTimeout 사용)
|
|
111
|
+
// 이전 명령의 잔여 응답이 올 수 있으므로, 명령이 일치하는 유효한 패킷이 올 때까지 재수신
|
|
109
112
|
let retries = 0;
|
|
110
113
|
while (retries < MAX_RESPONSE_RETRIES) {
|
|
111
114
|
const response = await this._readWithStartByteScan(index_js_1.PACKET_SIZE.NORMAL, "normal", this.commandTimeout);
|
|
112
115
|
if (this.debug) {
|
|
113
|
-
console.log(`[DEBUG] RX: ${(0, packet_js_1.packetToHex)(response)}`);
|
|
116
|
+
console.log(`[DEBUG] RX(Device→Host): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
114
117
|
}
|
|
115
118
|
const parsed = (0, packet_js_1.parseNormalPacket)(response);
|
|
116
|
-
//
|
|
119
|
+
// 유효한 패킷 + 명령 일치 → 반환
|
|
117
120
|
if (parsed.valid && parsed.command === command) {
|
|
118
121
|
return parsed;
|
|
119
122
|
}
|
|
120
|
-
//
|
|
123
|
+
// 유효하지만 명령 불일치 → 잔여 응답, 건너뜀
|
|
121
124
|
if (parsed.valid && parsed.command !== command) {
|
|
122
125
|
if (this.debug) {
|
|
123
126
|
console.log(`[DEBUG] Response command mismatch: expected 0x${command.toString(16)}, got 0x${parsed.command?.toString(16) ?? "??"} → skip`);
|
|
@@ -125,28 +128,31 @@ class SfmClient {
|
|
|
125
128
|
retries++;
|
|
126
129
|
continue;
|
|
127
130
|
}
|
|
128
|
-
//
|
|
131
|
+
// 잘못된 패킷 → 손상된 잔여 데이터, 건너뛰고 재시도
|
|
129
132
|
if (this.debug) {
|
|
130
133
|
console.log(`[DEBUG] Invalid packet skipped (${parsed.error}), retry ${retries + 1}`);
|
|
131
134
|
}
|
|
132
135
|
retries++;
|
|
133
136
|
}
|
|
134
|
-
return {
|
|
137
|
+
return {
|
|
138
|
+
valid: false,
|
|
139
|
+
error: `Failed to receive valid response (exceeded ${MAX_RESPONSE_RETRIES} retries)`,
|
|
140
|
+
};
|
|
135
141
|
}
|
|
136
142
|
/**
|
|
137
|
-
*
|
|
143
|
+
* 네트워크 명령 전송 (15바이트 패킷, RS422/485)
|
|
138
144
|
*/
|
|
139
145
|
async sendNetworkCommand(command, param = 0, size = 0, flag = 0) {
|
|
140
146
|
const packet = (0, packet_js_1.buildNetworkPacket)(command, this.terminalId, param, size, flag);
|
|
141
147
|
if (this.debug) {
|
|
142
|
-
console.log(`[DEBUG] TX(net): ${(0, packet_js_1.packetToHex)(packet)}`);
|
|
148
|
+
console.log(`[DEBUG] TX(Host→Device,net): ${(0, packet_js_1.packetToHex)(packet)}`);
|
|
143
149
|
}
|
|
144
150
|
await this._writePacket(packet);
|
|
145
151
|
let retries = 0;
|
|
146
152
|
while (retries < MAX_RESPONSE_RETRIES) {
|
|
147
153
|
const response = await this._readWithStartByteScan(index_js_1.PACKET_SIZE.NETWORK, "network", this.commandTimeout);
|
|
148
154
|
if (this.debug) {
|
|
149
|
-
console.log(`[DEBUG] RX(net): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
155
|
+
console.log(`[DEBUG] RX(Device→Host,net): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
150
156
|
}
|
|
151
157
|
const parsed = (0, packet_js_1.parseNetworkPacket)(response);
|
|
152
158
|
if (parsed.valid && parsed.command === command) {
|
|
@@ -164,54 +170,57 @@ class SfmClient {
|
|
|
164
170
|
}
|
|
165
171
|
retries++;
|
|
166
172
|
}
|
|
167
|
-
return {
|
|
173
|
+
return {
|
|
174
|
+
valid: false,
|
|
175
|
+
error: `Failed to receive valid network response (exceeded ${MAX_RESPONSE_RETRIES} retries)`,
|
|
176
|
+
};
|
|
168
177
|
}
|
|
169
178
|
/**
|
|
170
|
-
*
|
|
179
|
+
* 응답 수신 (멀티패킷 프로토콜에서 사용)
|
|
171
180
|
*/
|
|
172
181
|
async receiveResponse(timeoutMs) {
|
|
173
182
|
const timeout = timeoutMs ?? this.readTimeout;
|
|
174
183
|
if (this.secureMode) {
|
|
175
184
|
const response = await this._readWithStartByteScan(index_js_1.PACKET_SIZE.SECURE, "secure", timeout);
|
|
176
185
|
if (this.debug) {
|
|
177
|
-
console.log(`[DEBUG] RX(secure): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
186
|
+
console.log(`[DEBUG] RX(Device→Host,secure): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
178
187
|
}
|
|
179
188
|
return this.crypto.parseSecureRecvPacket(response);
|
|
180
189
|
}
|
|
181
|
-
//
|
|
190
|
+
// 네트워크 모드 자동 전환
|
|
182
191
|
if (this.networkMode) {
|
|
183
192
|
const response = await this._readWithStartByteScan(index_js_1.PACKET_SIZE.NETWORK, "network", timeout);
|
|
184
193
|
if (this.debug) {
|
|
185
|
-
console.log(`[DEBUG] RX(net): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
194
|
+
console.log(`[DEBUG] RX(Device→Host,net): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
186
195
|
}
|
|
187
196
|
return (0, packet_js_1.parseNetworkPacket)(response);
|
|
188
197
|
}
|
|
189
198
|
const response = await this._readWithStartByteScan(index_js_1.PACKET_SIZE.NORMAL, "normal", timeout);
|
|
190
199
|
if (this.debug) {
|
|
191
|
-
console.log(`[DEBUG] RX: ${(0, packet_js_1.packetToHex)(response)}`);
|
|
200
|
+
console.log(`[DEBUG] RX(Device→Host): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
192
201
|
}
|
|
193
202
|
return (0, packet_js_1.parseNormalPacket)(response);
|
|
194
203
|
}
|
|
195
204
|
/**
|
|
196
|
-
*
|
|
205
|
+
* 보안 명령 전송 (AES256 암호화, 35바이트 패킷)
|
|
197
206
|
* @internal
|
|
198
207
|
*/
|
|
199
208
|
async _sendSecureCommand(command, param, size, flag) {
|
|
200
209
|
const packet = this.crypto.buildSecureSendPacket(command, param, size, flag);
|
|
201
210
|
if (this.debug) {
|
|
202
|
-
console.log(`[DEBUG] TX(secure): ${(0, packet_js_1.packetToHex)(packet)}`);
|
|
211
|
+
console.log(`[DEBUG] TX(Host→Device,secure): ${(0, packet_js_1.packetToHex)(packet)}`);
|
|
203
212
|
console.log(`[DEBUG] Encryption mode: ${this.crypto.getModeName()}`);
|
|
204
213
|
}
|
|
205
214
|
await this._writePacket(packet);
|
|
206
|
-
//
|
|
215
|
+
// 보안 응답 수신 (35바이트) - 0x51 마커 스캔
|
|
207
216
|
const response = await this._readWithStartByteScan(index_js_1.PACKET_SIZE.SECURE, "secure");
|
|
208
217
|
if (this.debug) {
|
|
209
|
-
console.log(`[DEBUG] RX(secure): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
218
|
+
console.log(`[DEBUG] RX(Device→Host,secure): ${(0, packet_js_1.packetToHex)(response)}`);
|
|
210
219
|
}
|
|
211
220
|
return this.crypto.parseSecureRecvPacket(response);
|
|
212
221
|
}
|
|
213
222
|
/**
|
|
214
|
-
*
|
|
223
|
+
* 보안 모드 전환
|
|
215
224
|
*/
|
|
216
225
|
setSecureMode(enabled, options = {}) {
|
|
217
226
|
this.secureMode = enabled;
|
|
@@ -225,7 +234,7 @@ class SfmClient {
|
|
|
225
234
|
this.crypto.mode = options.mode;
|
|
226
235
|
}
|
|
227
236
|
/**
|
|
228
|
-
*
|
|
237
|
+
* 네트워크 프로토콜 모드 전환 (RS422/485)
|
|
229
238
|
*/
|
|
230
239
|
setNetworkMode(enabled, terminalId) {
|
|
231
240
|
this.networkMode = enabled;
|
|
@@ -237,7 +246,7 @@ class SfmClient {
|
|
|
237
246
|
}
|
|
238
247
|
}
|
|
239
248
|
/**
|
|
240
|
-
*
|
|
249
|
+
* 패킷 쓰기 (Hex-ASCII 모드 지원)
|
|
241
250
|
* @internal
|
|
242
251
|
*/
|
|
243
252
|
async _writePacket(data) {
|
|
@@ -249,24 +258,35 @@ class SfmClient {
|
|
|
249
258
|
}
|
|
250
259
|
}
|
|
251
260
|
/**
|
|
252
|
-
*
|
|
261
|
+
* 패킷 읽기 (Hex-ASCII 모드 지원)
|
|
253
262
|
* @internal
|
|
254
263
|
*/
|
|
255
264
|
async _readPacket(size, timeoutMs) {
|
|
256
265
|
if (this.hexAsciiMode) {
|
|
257
|
-
// Hex-ASCII
|
|
266
|
+
// Hex-ASCII 모드: 2배 크기 읽기 후 디코딩
|
|
258
267
|
const hexData = await this.serial.read(size * 2, timeoutMs);
|
|
259
268
|
return (0, packet_js_1.decodeHexAscii)(hexData);
|
|
260
269
|
}
|
|
261
270
|
return this.serial.read(size, timeoutMs);
|
|
262
271
|
}
|
|
263
272
|
/**
|
|
264
|
-
*
|
|
273
|
+
* 시작 바이트 스캔 후 패킷 읽기
|
|
274
|
+
*
|
|
275
|
+
* 시리얼 수신 버퍼에는 이전 패킷의 잔여 바이트(END_CODE 0x0A 등)나
|
|
276
|
+
* 전원 인가 시 노이즈가 남아 있을 수 있다.
|
|
277
|
+
* 따라서 1바이트씩 읽으면서 유효한 시작 바이트(0x40/0x41/0x50/0x51)를
|
|
278
|
+
* 찾을 때까지 쓰레기 바이트를 버린 뒤, 나머지 패킷을 한 번에 읽는다.
|
|
279
|
+
*
|
|
280
|
+
* 횟수 기반이 아닌 시간 기반 루프를 사용하는 이유:
|
|
281
|
+
* - 쓰레기 바이트가 몇 개인지 예측할 수 없음
|
|
282
|
+
* - 지문 스캔(ES) 등 사용자 입력 대기 명령은 수 초~수십 초 소요
|
|
283
|
+
* - 디바이스가 응답하지 않으면 _readPacket 내부 타임아웃으로 자연스럽게 종료
|
|
284
|
+
*
|
|
265
285
|
* @internal
|
|
266
286
|
*/
|
|
267
287
|
async _readWithStartByteScan(packetSize, packetType, timeoutMs) {
|
|
268
288
|
const timeout = timeoutMs ?? this.readTimeout;
|
|
269
|
-
//
|
|
289
|
+
// 1바이트씩 읽어서 유효한 시작 바이트 탐색
|
|
270
290
|
const startTime = Date.now();
|
|
271
291
|
let startByte;
|
|
272
292
|
while (Date.now() - startTime < timeout) {
|
|
@@ -284,13 +304,13 @@ class SfmClient {
|
|
|
284
304
|
}
|
|
285
305
|
}
|
|
286
306
|
catch {
|
|
287
|
-
break; //
|
|
307
|
+
break; // 타임아웃
|
|
288
308
|
}
|
|
289
309
|
}
|
|
290
310
|
if (startByte === undefined) {
|
|
291
311
|
throw new Error(`Start byte scan failed (${packetType})`);
|
|
292
312
|
}
|
|
293
|
-
//
|
|
313
|
+
// 나머지 패킷 읽기
|
|
294
314
|
const remaining = timeout - (Date.now() - startTime);
|
|
295
315
|
if (remaining <= 0) {
|
|
296
316
|
throw new Error(`Timeout expired after start byte scan (${packetType})`);
|
|
@@ -299,21 +319,21 @@ class SfmClient {
|
|
|
299
319
|
if (rest.length < packetSize - 1) {
|
|
300
320
|
throw new Error(`Incomplete packet: received ${rest.length + 1}/${packetSize} bytes (${packetType})`);
|
|
301
321
|
}
|
|
302
|
-
//
|
|
322
|
+
// 시작 바이트 + 나머지 결합
|
|
303
323
|
const fullPacket = Buffer.alloc(packetSize);
|
|
304
324
|
fullPacket[0] = startByte;
|
|
305
325
|
rest.copy(fullPacket, 1);
|
|
306
326
|
return fullPacket;
|
|
307
327
|
}
|
|
308
328
|
/**
|
|
309
|
-
*
|
|
329
|
+
* 읽기 타임아웃 계산 (데이터 크기 기반)
|
|
310
330
|
* @internal
|
|
311
331
|
*/
|
|
312
332
|
_getReadTimeout(dataSize) {
|
|
313
333
|
return Math.min(MAX_TIMEOUT_MS, Math.max(this.readTimeout, Math.ceil(dataSize / 100) + 1000));
|
|
314
334
|
}
|
|
315
335
|
/**
|
|
316
|
-
*
|
|
336
|
+
* 쓰기 타임아웃 계산 (데이터 크기 기반)
|
|
317
337
|
* @internal
|
|
318
338
|
*/
|
|
319
339
|
_getWriteTimeout(dataSize) {
|
package/dist/core/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/crypto.d.ts
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SFM Protocol Manual V3.6.0
|
|
2
|
+
* SFM Protocol Manual V3.6.0 보안 패킷 프로토콜
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* 0x00 = Rijndael256 ECB (
|
|
4
|
+
* 암호화 모드:
|
|
5
|
+
* 0x00 = Rijndael256 ECB (레거시)
|
|
6
6
|
* 0x01 = AES256-ECB
|
|
7
7
|
* 0x11 = AES256-CBC
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
* Byte 0: 0x50 (
|
|
11
|
-
* Byte 1-32: AES256
|
|
12
|
-
* Byte 33:
|
|
13
|
-
* Byte 34: 0x0A (
|
|
9
|
+
* 보안 패킷 구조 (35바이트):
|
|
10
|
+
* Byte 0: 0x50 (전송) / 0x51 (수신) 마커
|
|
11
|
+
* Byte 1-32: AES256 암호화 데이터 (32바이트)
|
|
12
|
+
* Byte 33: 체크섬
|
|
13
|
+
* Byte 34: 0x0A (종료)
|
|
14
14
|
*
|
|
15
|
-
*
|
|
15
|
+
* 암호화 전 평문 구조 (32바이트) - SFM 필드 매핑:
|
|
16
16
|
* Byte offset+0: Command (1B)
|
|
17
17
|
* Byte offset+1-4: Param (4B, LE)
|
|
18
18
|
* Byte offset+5-8: Size (4B, LE)
|
|
19
19
|
* Byte offset+9: Flag (1B)
|
|
20
20
|
* Byte offset+10-17: Secure Code (8B)
|
|
21
|
-
* Byte offset+18-31:
|
|
21
|
+
* Byte offset+18-31: 패딩
|
|
22
22
|
*/
|
|
23
23
|
import type { EncryptionMode } from "../constants/index.js";
|
|
24
24
|
export { ENCRYPTION_MODE } from "../constants/index.js";
|
|
@@ -54,31 +54,31 @@ export declare class SfmCrypto {
|
|
|
54
54
|
resetIV(): void;
|
|
55
55
|
setSecureCode(code: Buffer | string): void;
|
|
56
56
|
/**
|
|
57
|
-
* AES256
|
|
57
|
+
* AES256 암호화 (32바이트 블록)
|
|
58
58
|
*/
|
|
59
59
|
encrypt(plaintext: Buffer | Uint8Array): Buffer;
|
|
60
60
|
/**
|
|
61
|
-
* AES256
|
|
61
|
+
* AES256 복호화 (32바이트 블록)
|
|
62
62
|
*/
|
|
63
63
|
decrypt(ciphertext: Buffer | Uint8Array): Buffer;
|
|
64
64
|
/**
|
|
65
|
-
* AES256
|
|
65
|
+
* AES256 암호화 (가변 크기, 멀티패킷용)
|
|
66
66
|
*/
|
|
67
67
|
encryptRaw(data: Buffer | Uint8Array): Buffer;
|
|
68
68
|
/**
|
|
69
|
-
* AES256
|
|
70
|
-
* @param originalSize -
|
|
69
|
+
* AES256 복호화 (가변 크기)
|
|
70
|
+
* @param originalSize - 암호화 전 원본 데이터 크기 (패딩 제거용)
|
|
71
71
|
*/
|
|
72
72
|
decryptRaw(data: Buffer | Uint8Array, originalSize?: number): Buffer;
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
74
|
+
* 보안 전송 패킷 생성 (SFM 필드 구조)
|
|
75
75
|
*
|
|
76
|
-
*
|
|
77
|
-
* [command(1)] [param LE(4)] [size LE(4)] [flag(1)] [secureCode(8)] [
|
|
76
|
+
* 평문 (32B):
|
|
77
|
+
* [command(1)] [param LE(4)] [size LE(4)] [flag(1)] [secureCode(8)] [패딩]
|
|
78
78
|
*/
|
|
79
79
|
buildSecureSendPacket(command: number, param?: number, size?: number, flag?: number): Buffer;
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
* 보안 수신 패킷 파싱 (SFM 필드 구조)
|
|
82
82
|
*/
|
|
83
83
|
parseSecureRecvPacket(data: Buffer | Uint8Array): SecureRecvPacketResult;
|
|
84
84
|
getModeName(): string;
|
package/dist/core/crypto.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* SFM Protocol Manual V3.6.0
|
|
3
|
+
* SFM Protocol Manual V3.6.0 보안 패킷 프로토콜
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* 0x00 = Rijndael256 ECB (
|
|
5
|
+
* 암호화 모드:
|
|
6
|
+
* 0x00 = Rijndael256 ECB (레거시)
|
|
7
7
|
* 0x01 = AES256-ECB
|
|
8
8
|
* 0x11 = AES256-CBC
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
* Byte 0: 0x50 (
|
|
12
|
-
* Byte 1-32: AES256
|
|
13
|
-
* Byte 33:
|
|
14
|
-
* Byte 34: 0x0A (
|
|
10
|
+
* 보안 패킷 구조 (35바이트):
|
|
11
|
+
* Byte 0: 0x50 (전송) / 0x51 (수신) 마커
|
|
12
|
+
* Byte 1-32: AES256 암호화 데이터 (32바이트)
|
|
13
|
+
* Byte 33: 체크섬
|
|
14
|
+
* Byte 34: 0x0A (종료)
|
|
15
15
|
*
|
|
16
|
-
*
|
|
16
|
+
* 암호화 전 평문 구조 (32바이트) - SFM 필드 매핑:
|
|
17
17
|
* Byte offset+0: Command (1B)
|
|
18
18
|
* Byte offset+1-4: Param (4B, LE)
|
|
19
19
|
* Byte offset+5-8: Size (4B, LE)
|
|
20
20
|
* Byte offset+9: Flag (1B)
|
|
21
21
|
* Byte offset+10-17: Secure Code (8B)
|
|
22
|
-
* Byte offset+18-31:
|
|
22
|
+
* Byte offset+18-31: 패딩
|
|
23
23
|
*/
|
|
24
24
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
25
25
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -29,7 +29,7 @@ exports.SfmCrypto = exports.ENCRYPTION_MODE = void 0;
|
|
|
29
29
|
const node_crypto_1 = __importDefault(require("node:crypto"));
|
|
30
30
|
const packet_js_1 = require("./packet.js");
|
|
31
31
|
const index_js_1 = require("../constants/index.js");
|
|
32
|
-
//
|
|
32
|
+
// 하위 호환 재내보내기
|
|
33
33
|
var index_js_2 = require("../constants/index.js");
|
|
34
34
|
Object.defineProperty(exports, "ENCRYPTION_MODE", { enumerable: true, get: function () { return index_js_2.ENCRYPTION_MODE; } });
|
|
35
35
|
const SECURE_PACKET_SIZE = 35;
|
|
@@ -85,7 +85,7 @@ class SfmCrypto {
|
|
|
85
85
|
this.secureCode = buf;
|
|
86
86
|
}
|
|
87
87
|
/**
|
|
88
|
-
* AES256
|
|
88
|
+
* AES256 암호화 (32바이트 블록)
|
|
89
89
|
*/
|
|
90
90
|
encrypt(plaintext) {
|
|
91
91
|
const buf = Buffer.isBuffer(plaintext) ? plaintext : Buffer.from(plaintext);
|
|
@@ -101,7 +101,7 @@ class SfmCrypto {
|
|
|
101
101
|
return Buffer.concat([cipher.update(padded), cipher.final()]);
|
|
102
102
|
}
|
|
103
103
|
/**
|
|
104
|
-
* AES256
|
|
104
|
+
* AES256 복호화 (32바이트 블록)
|
|
105
105
|
*/
|
|
106
106
|
decrypt(ciphertext) {
|
|
107
107
|
const buf = Buffer.isBuffer(ciphertext)
|
|
@@ -117,7 +117,7 @@ class SfmCrypto {
|
|
|
117
117
|
return Buffer.concat([decipher.update(buf), decipher.final()]);
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
|
-
* AES256
|
|
120
|
+
* AES256 암호화 (가변 크기, 멀티패킷용)
|
|
121
121
|
*/
|
|
122
122
|
encryptRaw(data) {
|
|
123
123
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
@@ -135,8 +135,8 @@ class SfmCrypto {
|
|
|
135
135
|
return Buffer.concat([cipher.update(padded), cipher.final()]);
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
|
-
* AES256
|
|
139
|
-
* @param originalSize -
|
|
138
|
+
* AES256 복호화 (가변 크기)
|
|
139
|
+
* @param originalSize - 암호화 전 원본 데이터 크기 (패딩 제거용)
|
|
140
140
|
*/
|
|
141
141
|
decryptRaw(data, originalSize) {
|
|
142
142
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
@@ -157,10 +157,10 @@ class SfmCrypto {
|
|
|
157
157
|
return decrypted;
|
|
158
158
|
}
|
|
159
159
|
/**
|
|
160
|
-
*
|
|
160
|
+
* 보안 전송 패킷 생성 (SFM 필드 구조)
|
|
161
161
|
*
|
|
162
|
-
*
|
|
163
|
-
* [command(1)] [param LE(4)] [size LE(4)] [flag(1)] [secureCode(8)] [
|
|
162
|
+
* 평문 (32B):
|
|
163
|
+
* [command(1)] [param LE(4)] [size LE(4)] [flag(1)] [secureCode(8)] [패딩]
|
|
164
164
|
*/
|
|
165
165
|
buildSecureSendPacket(command, param = 0, size = 0, flag = 0) {
|
|
166
166
|
const plaintext = Buffer.alloc(ENCRYPTED_DATA_SIZE);
|
|
@@ -168,21 +168,21 @@ class SfmCrypto {
|
|
|
168
168
|
if (offset < 0 || offset + 10 + SECURE_CODE_SIZE > ENCRYPTED_DATA_SIZE) {
|
|
169
169
|
throw new Error(`Invalid dataOffset: ${offset} (exceeds ${ENCRYPTED_DATA_SIZE}-byte block)`);
|
|
170
170
|
}
|
|
171
|
-
// SFM
|
|
171
|
+
// SFM 필드 매핑
|
|
172
172
|
plaintext[offset] = command;
|
|
173
173
|
plaintext.writeUInt32LE(param >>> 0, offset + 1);
|
|
174
174
|
plaintext.writeUInt32LE(size >>> 0, offset + 5);
|
|
175
175
|
plaintext[offset + 9] = flag;
|
|
176
|
-
//
|
|
176
|
+
// Secure Code 삽입
|
|
177
177
|
this.secureCode.copy(plaintext, offset + 10, 0, SECURE_CODE_SIZE);
|
|
178
|
-
//
|
|
178
|
+
// CBC IV 리셋
|
|
179
179
|
if (this.mode === index_js_1.ENCRYPTION_MODE.AES256_CBC) {
|
|
180
180
|
this.resetIV();
|
|
181
181
|
}
|
|
182
182
|
const encrypted = this.encrypt(plaintext);
|
|
183
|
-
//
|
|
183
|
+
// 보안 패킷 생성 (35바이트)
|
|
184
184
|
const packet = Buffer.alloc(SECURE_PACKET_SIZE);
|
|
185
|
-
packet[0] = 0x50; //
|
|
185
|
+
packet[0] = 0x50; // 전송 마커
|
|
186
186
|
encrypted.copy(packet, 1, 0, ENCRYPTED_DATA_SIZE);
|
|
187
187
|
packet[33] = (0, packet_js_1.calcChecksum)(packet, 33);
|
|
188
188
|
packet[34] = 0x0a;
|
|
@@ -190,7 +190,7 @@ class SfmCrypto {
|
|
|
190
190
|
return packet;
|
|
191
191
|
}
|
|
192
192
|
/**
|
|
193
|
-
*
|
|
193
|
+
* 보안 수신 패킷 파싱 (SFM 필드 구조)
|
|
194
194
|
*/
|
|
195
195
|
parseSecureRecvPacket(data) {
|
|
196
196
|
const buf = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
@@ -221,7 +221,7 @@ class SfmCrypto {
|
|
|
221
221
|
const param = decrypted.readUInt32LE(offset + 1);
|
|
222
222
|
const size = decrypted.readUInt32LE(offset + 5);
|
|
223
223
|
const flag = decrypted[offset + 9];
|
|
224
|
-
// Secure Code
|
|
224
|
+
// Secure Code 검증
|
|
225
225
|
const codeStart = offset + 10;
|
|
226
226
|
const receivedCode = decrypted.subarray(codeStart, codeStart + SECURE_CODE_SIZE);
|
|
227
227
|
const codeValid = this.secureCode.equals(receivedCode);
|