Byte Slicer
스크립트의 슬라이스 b[offset, length]처럼 바이트를 잘라 낸다. 길이를 비우면 끝까지, 음수이면 뒤에서부터 센 끝 위치(그 위치는 제외)이다
개요
내장 스크립트의 슬라이스 문법(b[offset, length])과 동일한 규칙으로 바이트 배열에서 부분 구간(Sub-array)을 추출한다.
양수·음수 오프셋(뒤에서부터 계산)과 양수 길이·빈 길이(끝까지)·음수 길이(뒤에서부터 센 끝 위치 제외)를 모두 지원한다.
사용 시점
- 결합된 패킷(예:
IV || Ciphertext || Tag)에서 앞 12바이트 Nonce, 중간 암호문, 마지막 16바이트 태그를 각각 잘라낼 때 사용한다. - 해시 다이제스트나 키 파생 출력에서 앞쪽 $N$바이트만 절단(Truncation)할 때 사용한다.
파라미터 설정
| 파라미터 (ID) | 타입 및 기본값 | 노출 조건 | 설명 및 옵션 |
|---|---|---|---|
오프셋 (시작)offset |
number기본값: 0 |
항상 노출 | 시작 바이트 인덱스이다(0 이상이면 앞에서부터, 음수이면 버퍼 끝 len + offset에서부터 계산). 외부 Offset 포트가 연결되면 포트 값이 우선한다. |
길이length |
text기본값: "" (비움) |
항상 노출 | 추출할 길이 또는 끝 위치 규칙이다. 비워 두면 끝까지 추출하고, 0 이상이면 해당 바이트 개수만큼 추출하며, 음수(-k)이면 끝에서 k바이트 앞(len - k)까지 추출한다. 외부 Length 포트가 연결되면 포트 값이 우선한다. |
포트 입출력 명세
포트 연결 규칙, 데이터 타입별 색상, 가변 포트 생성 방식은 포트 및 연결 문서를 참고한다.
입력 포트
포트 성격: 고정 입력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 필수 여부 | 노출 조건 | 설명 |
|---|---|---|---|---|---|
Data |
data |
Bytes |
필수 | 항상 노출 |
출력 포트
포트 성격: 고정 출력 포트 (총 1개).
| 포트 이름 | 포트 ID | 데이터 타입 | 노출 조건 | 설명 |
|---|---|---|---|---|
Sliced Bytes |
sliced |
Bytes |
항상 노출 |
오류 케이스
실행 중 아래 조건이 발생하면 이 노드는 ERROR 상태가 되며, 출력 포트에 연결된 하위 노드는 실행되지 않는다.
| 오류 코드 | 기본 엔진 메시지 | 발생 조건 |
|---|---|---|
BYTES_OUT_OF_RANGE |
인덱스 또는 구간이 값의 범위를 벗어났다 | 계산된 시작 위치나 끝 위치가 입력 바이트 배열 범위(0 .. len)를 벗어나거나 시작 위치가 끝 위치보다 클 때 발생한다. |
BYTES_INVALID_ARGUMENT |
인자 값이 올바르지 않는다 | 오프셋이나 길이가 유효한 정수가 아닐 때 발생한다. |
활용 예시
패킷에서 앞 12바이트 Nonce와 마지막 16바이트 Tag 분리하기
양수/음수 인덱싱으로 결합된 AEAD 패킷을 분할한다.
- 첫 번째 Byte Slicer는
offset = 0,length = 12로 설정해 앞 12바이트 Nonce를 추출한다. - 두 번째 Byte Slicer는
offset = 12,length = -16으로 설정해 마지막 16바이트를 제외한 중간 암호문을 추출한다. - 세 번째 Byte Slicer는
offset = -16,length = (비움)으로 설정해 마지막 16바이트 태그를 추출한다.