Files
7z-encrypt-server/unpacker.py
T

37 lines
1.2 KiB
Python

"""
解包器模块 (unpacker)
模块: 服务端 / 解包器
输入: 完整密文文件
输出: 密文主体 + 加密参数
cobblestone (C2SP chunked-encryption) 密文流自带头部+分块结构,
解包退化为前置结构检查: 非空 + 头部长度合法。真正的完整性由 decrypt 块级认证保证。
"""
from pathlib import Path
from task_manager import TaskManager
# cobblestone 头部最小长度 (magic + 版本 + 随机 nonce 等)
MIN_HEADER = 32
class UnpackError(RuntimeError):
"""密文包结构异常"""
class Unpacker:
def __init__(self, tasks: TaskManager) -> None:
self.tasks = tasks
def unpack(self, transfer_id: str, merged_path: Path) -> tuple[Path, dict]:
"""验证密文包结构, 返回 (密文路径, 加密参数)"""
transfer = self.tasks.get(transfer_id)
if transfer is None:
raise UnpackError(f"任务不存在: {transfer_id}")
size = merged_path.stat().st_size
if size < MIN_HEADER:
raise UnpackError(f"密文包过短 ({size}B < {MIN_HEADER}B), 结构损坏")
enc_params = dict(transfer["enc_params"])
return merged_path, enc_params